Lines Matching refs:loaded_vmcs
547 evmcs = (struct hv_enlightened_vmcs *)to_vmx(vcpu)->loaded_vmcs->vmcs;
772 struct loaded_vmcs *v;
794 struct loaded_vmcs *loaded_vmcs = arg;
797 if (loaded_vmcs->cpu != cpu)
799 if (per_cpu(current_vmcs, cpu) == loaded_vmcs->vmcs)
802 vmcs_clear(loaded_vmcs->vmcs);
803 if (loaded_vmcs->shadow_vmcs && loaded_vmcs->launched)
804 vmcs_clear(loaded_vmcs->shadow_vmcs);
806 list_del(&loaded_vmcs->loaded_vmcss_on_cpu_link);
809 * Ensure all writes to loaded_vmcs, including deleting it from its
810 * current percpu list, complete before setting loaded_vmcs->cpu to
811 * -1, otherwise a different cpu can see loaded_vmcs->cpu == -1 first
812 * and add loaded_vmcs to its percpu list before it's deleted from this
817 loaded_vmcs->cpu = -1;
818 loaded_vmcs->launched = 0;
821 void loaded_vmcs_clear(struct loaded_vmcs *loaded_vmcs)
823 int cpu = loaded_vmcs->cpu;
827 __loaded_vmcs_clear, loaded_vmcs, 1);
948 return vmx_test_msr_bitmap_write(vmx->loaded_vmcs->msr_bitmap, msr);
955 if (vmx->loaded_vmcs->launched)
1325 host_state = &vmx->loaded_vmcs->host_state;
1370 host_state = &vmx->loaded_vmcs->host_state;
1423 struct loaded_vmcs *buddy)
1426 bool already_loaded = vmx->loaded_vmcs->cpu == cpu;
1430 loaded_vmcs_clear(vmx->loaded_vmcs);
1434 * Ensure loaded_vmcs->cpu is read before adding loaded_vmcs to
1441 list_add(&vmx->loaded_vmcs->loaded_vmcss_on_cpu_link,
1447 if (prev != vmx->loaded_vmcs->vmcs) {
1448 per_cpu(current_vmcs, cpu) = vmx->loaded_vmcs->vmcs;
1449 vmcs_load(vmx->loaded_vmcs->vmcs);
1485 vmx->loaded_vmcs->cpu = cpu;
2848 struct loaded_vmcs *v, *n;
2898 void free_loaded_vmcs(struct loaded_vmcs *loaded_vmcs)
2900 if (!loaded_vmcs->vmcs)
2902 loaded_vmcs_clear(loaded_vmcs);
2903 free_vmcs(loaded_vmcs->vmcs);
2904 loaded_vmcs->vmcs = NULL;
2905 if (loaded_vmcs->msr_bitmap)
2906 free_page((unsigned long)loaded_vmcs->msr_bitmap);
2907 WARN_ON(loaded_vmcs->shadow_vmcs != NULL);
2910 int alloc_loaded_vmcs(struct loaded_vmcs *loaded_vmcs)
2912 loaded_vmcs->vmcs = alloc_vmcs(false);
2913 if (!loaded_vmcs->vmcs)
2916 vmcs_clear(loaded_vmcs->vmcs);
2918 loaded_vmcs->shadow_vmcs = NULL;
2919 loaded_vmcs->hv_timer_soft_disabled = false;
2920 loaded_vmcs->cpu = -1;
2921 loaded_vmcs->launched = 0;
2924 loaded_vmcs->msr_bitmap = (unsigned long *)
2926 if (!loaded_vmcs->msr_bitmap)
2928 memset(loaded_vmcs->msr_bitmap, 0xff, PAGE_SIZE);
2931 memset(&loaded_vmcs->host_state, 0, sizeof(struct vmcs_host_state));
2932 memset(&loaded_vmcs->controls_shadow, 0,
2938 free_loaded_vmcs(loaded_vmcs);
4316 vmx->loaded_vmcs->host_state.cr3 = cr3;
4321 vmx->loaded_vmcs->host_state.cr4 = cr4;
4974 vmx->loaded_vmcs->soft_vnmi_blocked = 1;
4975 vmx->loaded_vmcs->vnmi_blocked_time = 0;
4979 vmx->loaded_vmcs->nmi_known_unmasked = false;
4998 return vmx->loaded_vmcs->soft_vnmi_blocked;
4999 if (vmx->loaded_vmcs->nmi_known_unmasked)
5002 vmx->loaded_vmcs->nmi_known_unmasked = !masked;
5011 if (vmx->loaded_vmcs->soft_vnmi_blocked != masked) {
5012 vmx->loaded_vmcs->soft_vnmi_blocked = masked;
5013 vmx->loaded_vmcs->vnmi_blocked_time = 0;
5016 vmx->loaded_vmcs->nmi_known_unmasked = !masked;
5031 if (!enable_vnmi && to_vmx(vcpu)->loaded_vmcs->soft_vnmi_blocked)
6009 !unlikely(vmx->loaded_vmcs->hv_timer_soft_disabled)) {
6264 vmx->loaded_vmcs->vmcs, vcpu->arch.last_vmentry_cpu);
6533 vmx->loaded_vmcs->soft_vnmi_blocked)) {
6535 vmx->loaded_vmcs->soft_vnmi_blocked = 0;
6536 } else if (vmx->loaded_vmcs->vnmi_blocked_time > 1000000000LL &&
6547 vmx->loaded_vmcs->soft_vnmi_blocked = 0;
7036 if (vmx->loaded_vmcs->nmi_known_unmasked)
7057 vmx->loaded_vmcs->nmi_known_unmasked =
7060 } else if (unlikely(vmx->loaded_vmcs->soft_vnmi_blocked))
7061 vmx->loaded_vmcs->vnmi_blocked_time +=
7063 vmx->loaded_vmcs->entry_time));
7168 vmx->loaded_vmcs->hv_timer_soft_disabled = false;
7179 vmx->loaded_vmcs->hv_timer_soft_disabled = false;
7180 } else if (!vmx->loaded_vmcs->hv_timer_soft_disabled) {
7182 vmx->loaded_vmcs->hv_timer_soft_disabled = true;
7188 if (unlikely(host_rsp != vmx->loaded_vmcs->host_state.rsp)) {
7189 vmx->loaded_vmcs->host_state.rsp = host_rsp;
7292 vmx->loaded_vmcs->soft_vnmi_blocked))
7293 vmx->loaded_vmcs->entry_time = ktime_get();
7339 if (unlikely(cr3 != vmx->loaded_vmcs->host_state.cr3)) {
7341 vmx->loaded_vmcs->host_state.cr3 = cr3;
7345 if (unlikely(cr4 != vmx->loaded_vmcs->host_state.cr4)) {
7347 vmx->loaded_vmcs->host_state.cr4 = cr4;
7430 vmx->loaded_vmcs->launched = 1;
7449 free_loaded_vmcs(vmx->loaded_vmcs);
7529 vmx->loaded_vmcs = &vmx->vmcs01;
7550 free_loaded_vmcs(vmx->loaded_vmcs);