Lines Matching full:arch
40 struct gfn_to_pfn_cache *gpc = &kvm->arch.xen.shinfo_cache; in kvm_xen_shared_info_init()
67 BUILD_BUG_ON(offsetof(struct compat_shared_info, arch.wc_sec_hi) != 0x924); in kvm_xen_shared_info_init()
75 if (IS_ENABLED(CONFIG_64BIT) && kvm->arch.xen.long_mode) { in kvm_xen_shared_info_init()
85 wc_sec_hi = &shinfo->arch.wc_sec_hi; in kvm_xen_shared_info_init()
110 if (atomic_read(&vcpu->arch.xen.timer_pending) > 0) { in kvm_xen_inject_timer_irqs()
115 e.port = vcpu->arch.xen.timer_virq; in kvm_xen_inject_timer_irqs()
120 vcpu->arch.xen.timer_expires = 0; in kvm_xen_inject_timer_irqs()
121 atomic_set(&vcpu->arch.xen.timer_pending, 0); in kvm_xen_inject_timer_irqs()
128 arch.xen.timer); in xen_timer_callback()
132 if (atomic_read(&vcpu->arch.xen.timer_pending)) in xen_timer_callback()
137 e.port = vcpu->arch.xen.timer_virq; in xen_timer_callback()
142 vcpu->arch.xen.timer_expires = 0; in xen_timer_callback()
146 atomic_inc(&vcpu->arch.xen.timer_pending); in xen_timer_callback()
179 if (hv_clock->tsc_shift != vcpu->arch.pvclock_tsc_shift || in xen_get_guest_pvclock()
180 hv_clock->tsc_to_system_mul != vcpu->arch.pvclock_tsc_mul) in xen_get_guest_pvclock()
189 struct kvm_vcpu_xen *xen = &vcpu->arch.xen; in kvm_xen_start_timer()
216 !vcpu->kvm->arch.use_master_clock) in kvm_xen_start_timer()
300 if (vcpu->arch.xen.timer_expires) in kvm_xen_start_timer()
301 hrtimer_cancel(&vcpu->arch.xen.timer); in kvm_xen_start_timer()
303 atomic_set(&vcpu->arch.xen.timer_pending, 0); in kvm_xen_start_timer()
304 vcpu->arch.xen.timer_expires = guest_abs; in kvm_xen_start_timer()
307 xen_timer_callback(&vcpu->arch.xen.timer); in kvm_xen_start_timer()
309 hrtimer_start(&vcpu->arch.xen.timer, in kvm_xen_start_timer()
316 hrtimer_cancel(&vcpu->arch.xen.timer); in kvm_xen_stop_timer()
317 vcpu->arch.xen.timer_expires = 0; in kvm_xen_stop_timer()
318 atomic_set(&vcpu->arch.xen.timer_pending, 0); in kvm_xen_stop_timer()
323 struct kvm_vcpu_xen *vx = &v->arch.xen; in kvm_xen_update_runstate_guest()
393 if (IS_ENABLED(CONFIG_64BIT) && v->kvm->arch.xen.long_mode) { in kvm_xen_update_runstate_guest()
457 if (v->kvm->arch.xen.runstate_update_flag) in kvm_xen_update_runstate_guest()
521 if (v->kvm->arch.xen.runstate_update_flag) { in kvm_xen_update_runstate_guest()
589 struct kvm_vcpu_xen *vx = &v->arch.xen; in kvm_xen_update_runstate()
623 irq.vector = v->arch.xen.upcall_vector; in kvm_xen_inject_vcpu_vector()
634 * In that case, there are bits in vcpu->arch.xen.evtchn_pending_sel which
641 unsigned long evtchn_pending_sel = READ_ONCE(v->arch.xen.evtchn_pending_sel); in kvm_xen_inject_pending_events()
642 struct gfn_to_pfn_cache *gpc = &v->arch.xen.vcpu_info_cache; in kvm_xen_inject_pending_events()
664 if (IS_ENABLED(CONFIG_64BIT) && v->kvm->arch.xen.long_mode) { in kvm_xen_inject_pending_events()
672 "+m" (v->arch.xen.evtchn_pending_sel) in kvm_xen_inject_pending_events()
684 "+m" (v->arch.xen.evtchn_pending_sel) in kvm_xen_inject_pending_events()
693 if (v->arch.xen.upcall_vector) in kvm_xen_inject_pending_events()
699 struct gfn_to_pfn_cache *gpc = &v->arch.xen.vcpu_info_cache; in __kvm_xen_has_interrupt()
756 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
757 kvm->arch.xen.long_mode = !!data->u.long_mode; in kvm_xen_hvm_set_attr()
765 r = kvm->arch.xen.shinfo_cache.active ? in kvm_xen_hvm_set_attr()
767 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
775 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
783 kvm_gpc_deactivate(&kvm->arch.xen.shinfo_cache); in kvm_xen_hvm_set_attr()
786 r = kvm_gpc_activate(&kvm->arch.xen.shinfo_cache, in kvm_xen_hvm_set_attr()
795 kvm_gpc_deactivate(&kvm->arch.xen.shinfo_cache); in kvm_xen_hvm_set_attr()
798 r = kvm_gpc_activate_hva(&kvm->arch.xen.shinfo_cache, in kvm_xen_hvm_set_attr()
805 if (!r && kvm->arch.xen.shinfo_cache.active) in kvm_xen_hvm_set_attr()
808 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
815 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
816 kvm->arch.xen.upcall_vector = data->u.vector; in kvm_xen_hvm_set_attr()
817 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
827 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
828 kvm->arch.xen.xen_version = data->u.xen_version; in kvm_xen_hvm_set_attr()
829 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
838 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
839 kvm->arch.xen.runstate_update_flag = !!data->u.runstate_update_flag; in kvm_xen_hvm_set_attr()
840 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_set_attr()
855 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_get_attr()
859 data->u.long_mode = kvm->arch.xen.long_mode; in kvm_xen_hvm_get_attr()
864 if (kvm_gpc_is_gpa_active(&kvm->arch.xen.shinfo_cache)) in kvm_xen_hvm_get_attr()
865 data->u.shared_info.gfn = gpa_to_gfn(kvm->arch.xen.shinfo_cache.gpa); in kvm_xen_hvm_get_attr()
872 if (kvm_gpc_is_hva_active(&kvm->arch.xen.shinfo_cache)) in kvm_xen_hvm_get_attr()
873 data->u.shared_info.hva = kvm->arch.xen.shinfo_cache.uhva; in kvm_xen_hvm_get_attr()
880 data->u.vector = kvm->arch.xen.upcall_vector; in kvm_xen_hvm_get_attr()
885 data->u.xen_version = kvm->arch.xen.xen_version; in kvm_xen_hvm_get_attr()
894 data->u.runstate_update_flag = kvm->arch.xen.runstate_update_flag; in kvm_xen_hvm_get_attr()
902 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_get_attr()
910 mutex_lock(&vcpu->kvm->arch.xen.xen_lock); in kvm_xen_vcpu_set_attr()
924 kvm_gpc_deactivate(&vcpu->arch.xen.vcpu_info_cache); in kvm_xen_vcpu_set_attr()
929 r = kvm_gpc_activate(&vcpu->arch.xen.vcpu_info_cache, in kvm_xen_vcpu_set_attr()
933 kvm_gpc_deactivate(&vcpu->arch.xen.vcpu_info_cache); in kvm_xen_vcpu_set_attr()
938 r = kvm_gpc_activate_hva(&vcpu->arch.xen.vcpu_info_cache, in kvm_xen_vcpu_set_attr()
949 kvm_gpc_deactivate(&vcpu->arch.xen.vcpu_time_info_cache); in kvm_xen_vcpu_set_attr()
954 r = kvm_gpc_activate(&vcpu->arch.xen.vcpu_time_info_cache, in kvm_xen_vcpu_set_attr()
971 kvm_gpc_deactivate(&vcpu->arch.xen.runstate_cache); in kvm_xen_vcpu_set_attr()
972 kvm_gpc_deactivate(&vcpu->arch.xen.runstate2_cache); in kvm_xen_vcpu_set_attr()
981 if (IS_ENABLED(CONFIG_64BIT) && vcpu->kvm->arch.xen.long_mode) in kvm_xen_vcpu_set_attr()
988 r = kvm_gpc_activate(&vcpu->arch.xen.runstate_cache, in kvm_xen_vcpu_set_attr()
995 kvm_gpc_deactivate(&vcpu->arch.xen.runstate2_cache); in kvm_xen_vcpu_set_attr()
999 r = kvm_gpc_activate(&vcpu->arch.xen.runstate2_cache, in kvm_xen_vcpu_set_attr()
1045 vcpu->arch.xen.current_runstate = data->u.runstate.state; in kvm_xen_vcpu_set_attr()
1046 vcpu->arch.xen.runstate_entry_time = in kvm_xen_vcpu_set_attr()
1048 vcpu->arch.xen.runstate_times[RUNSTATE_running] = in kvm_xen_vcpu_set_attr()
1050 vcpu->arch.xen.runstate_times[RUNSTATE_runnable] = in kvm_xen_vcpu_set_attr()
1052 vcpu->arch.xen.runstate_times[RUNSTATE_blocked] = in kvm_xen_vcpu_set_attr()
1054 vcpu->arch.xen.runstate_times[RUNSTATE_offline] = in kvm_xen_vcpu_set_attr()
1056 vcpu->arch.xen.last_steal = current->sched_info.run_delay; in kvm_xen_vcpu_set_attr()
1081 (vcpu->arch.xen.runstate_entry_time + in kvm_xen_vcpu_set_attr()
1087 vcpu->arch.xen.runstate_entry_time += in kvm_xen_vcpu_set_attr()
1089 vcpu->arch.xen.runstate_times[RUNSTATE_running] += in kvm_xen_vcpu_set_attr()
1091 vcpu->arch.xen.runstate_times[RUNSTATE_runnable] += in kvm_xen_vcpu_set_attr()
1093 vcpu->arch.xen.runstate_times[RUNSTATE_blocked] += in kvm_xen_vcpu_set_attr()
1095 vcpu->arch.xen.runstate_times[RUNSTATE_offline] += in kvm_xen_vcpu_set_attr()
1100 else if (vcpu->arch.xen.runstate_cache.active) in kvm_xen_vcpu_set_attr()
1109 vcpu->arch.xen.vcpu_id = data->u.vcpu_id; in kvm_xen_vcpu_set_attr()
1123 vcpu->arch.xen.timer_virq = data->u.timer.port; in kvm_xen_vcpu_set_attr()
1136 vcpu->arch.xen.upcall_vector = data->u.vector; in kvm_xen_vcpu_set_attr()
1146 mutex_unlock(&vcpu->kvm->arch.xen.xen_lock); in kvm_xen_vcpu_set_attr()
1154 mutex_lock(&vcpu->kvm->arch.xen.xen_lock); in kvm_xen_vcpu_get_attr()
1158 if (kvm_gpc_is_gpa_active(&vcpu->arch.xen.vcpu_info_cache)) in kvm_xen_vcpu_get_attr()
1159 data->u.gpa = vcpu->arch.xen.vcpu_info_cache.gpa; in kvm_xen_vcpu_get_attr()
1166 if (kvm_gpc_is_hva_active(&vcpu->arch.xen.vcpu_info_cache)) in kvm_xen_vcpu_get_attr()
1167 data->u.hva = vcpu->arch.xen.vcpu_info_cache.uhva; in kvm_xen_vcpu_get_attr()
1174 if (vcpu->arch.xen.vcpu_time_info_cache.active) in kvm_xen_vcpu_get_attr()
1175 data->u.gpa = vcpu->arch.xen.vcpu_time_info_cache.gpa; in kvm_xen_vcpu_get_attr()
1186 if (vcpu->arch.xen.runstate_cache.active) { in kvm_xen_vcpu_get_attr()
1187 data->u.gpa = vcpu->arch.xen.runstate_cache.gpa; in kvm_xen_vcpu_get_attr()
1197 data->u.runstate.state = vcpu->arch.xen.current_runstate; in kvm_xen_vcpu_get_attr()
1206 data->u.runstate.state = vcpu->arch.xen.current_runstate; in kvm_xen_vcpu_get_attr()
1208 vcpu->arch.xen.runstate_entry_time; in kvm_xen_vcpu_get_attr()
1210 vcpu->arch.xen.runstate_times[RUNSTATE_running]; in kvm_xen_vcpu_get_attr()
1212 vcpu->arch.xen.runstate_times[RUNSTATE_runnable]; in kvm_xen_vcpu_get_attr()
1214 vcpu->arch.xen.runstate_times[RUNSTATE_blocked]; in kvm_xen_vcpu_get_attr()
1216 vcpu->arch.xen.runstate_times[RUNSTATE_offline]; in kvm_xen_vcpu_get_attr()
1225 data->u.vcpu_id = vcpu->arch.xen.vcpu_id; in kvm_xen_vcpu_get_attr()
1239 if (vcpu->arch.xen.timer_expires) { in kvm_xen_vcpu_get_attr()
1240 hrtimer_cancel(&vcpu->arch.xen.timer); in kvm_xen_vcpu_get_attr()
1244 data->u.timer.port = vcpu->arch.xen.timer_virq; in kvm_xen_vcpu_get_attr()
1246 data->u.timer.expires_ns = vcpu->arch.xen.timer_expires; in kvm_xen_vcpu_get_attr()
1256 if (vcpu->arch.xen.timer_expires) in kvm_xen_vcpu_get_attr()
1257 hrtimer_start_expires(&vcpu->arch.xen.timer, in kvm_xen_vcpu_get_attr()
1264 data->u.vector = vcpu->arch.xen.upcall_vector; in kvm_xen_vcpu_get_attr()
1272 mutex_unlock(&vcpu->kvm->arch.xen.xen_lock); in kvm_xen_vcpu_get_attr()
1284 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_write_hypercall_page()
1285 if (kvm->arch.xen.long_mode != lm) { in kvm_xen_write_hypercall_page()
1286 kvm->arch.xen.long_mode = lm; in kvm_xen_write_hypercall_page()
1292 if (kvm->arch.xen.shinfo_cache.active && in kvm_xen_write_hypercall_page()
1296 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_write_hypercall_page()
1338 hva_t blob_addr = lm ? kvm->arch.xen.hvm_config.blob_addr_64 in kvm_xen_write_hypercall_page()
1339 : kvm->arch.xen.hvm_config.blob_addr_32; in kvm_xen_write_hypercall_page()
1340 u8 blob_size = lm ? kvm->arch.xen.hvm_config.blob_size_64 in kvm_xen_write_hypercall_page()
1341 : kvm->arch.xen.hvm_config.blob_size_32; in kvm_xen_write_hypercall_page()
1391 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_config()
1393 if (xhc->msr && !kvm->arch.xen.hvm_config.msr) in kvm_xen_hvm_config()
1395 else if (!xhc->msr && kvm->arch.xen.hvm_config.msr) in kvm_xen_hvm_config()
1398 old_flags = kvm->arch.xen.hvm_config.flags; in kvm_xen_hvm_config()
1399 memcpy(&kvm->arch.xen.hvm_config, xhc, sizeof(*xhc)); in kvm_xen_hvm_config()
1401 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_hvm_config()
1419 if (unlikely(!kvm_is_linear_rip(vcpu, vcpu->arch.xen.hypercall_rip))) in kvm_xen_hypercall_complete_userspace()
1427 if (IS_ENABLED(CONFIG_64BIT) && kvm->arch.xen.long_mode) in max_evtchn_port()
1437 struct gfn_to_pfn_cache *gpc = &kvm->arch.xen.shinfo_cache; in wait_pending_event()
1449 if (IS_ENABLED(CONFIG_64BIT) && kvm->arch.xen.long_mode) { in wait_pending_event()
1480 !(vcpu->kvm->arch.xen.hvm_config.flags & KVM_XEN_HVM_CONFIG_EVTCHN_SEND)) in kvm_xen_schedop_poll()
1540 vcpu->arch.xen.poll_evtchn = port; in kvm_xen_schedop_poll()
1542 vcpu->arch.xen.poll_evtchn = -1; in kvm_xen_schedop_poll()
1544 set_bit(vcpu->vcpu_idx, vcpu->kvm->arch.xen.poll_mask); in kvm_xen_schedop_poll()
1550 mod_timer(&vcpu->arch.xen.poll_timer, in kvm_xen_schedop_poll()
1556 timer_delete(&vcpu->arch.xen.poll_timer); in kvm_xen_schedop_poll()
1561 vcpu->arch.xen.poll_evtchn = 0; in kvm_xen_schedop_poll()
1565 clear_bit(vcpu->vcpu_idx, vcpu->kvm->arch.xen.poll_mask); in kvm_xen_schedop_poll()
1575 arch.xen.poll_timer); in cancel_evtchn_poll()
1616 if (vcpu->arch.xen.vcpu_id != vcpu_id) { in kvm_xen_hcall_vcpu_op()
1648 if (vcpu->arch.xen.vcpu_id != vcpu_id) { in kvm_xen_hcall_vcpu_op()
1721 if (params[0] == XENVER_version && vcpu->kvm->arch.xen.xen_version) { in kvm_xen_hypercall()
1722 r = vcpu->kvm->arch.xen.xen_version; in kvm_xen_hypercall()
1765 vcpu->arch.xen.hypercall_rip = kvm_get_linear_rip(vcpu); in kvm_xen_hypercall()
1766 vcpu->arch.complete_userspace_io = in kvm_xen_hypercall()
1774 int poll_evtchn = vcpu->arch.xen.poll_evtchn; in kvm_xen_check_poller()
1777 test_and_clear_bit(vcpu->vcpu_idx, vcpu->kvm->arch.xen.poll_mask)) { in kvm_xen_check_poller()
1795 struct gfn_to_pfn_cache *gpc = &kvm->arch.xen.shinfo_cache; in kvm_xen_set_evtchn_fast()
1824 if (IS_ENABLED(CONFIG_64BIT) && kvm->arch.xen.long_mode) { in kvm_xen_set_evtchn_fast()
1852 gpc = &vcpu->arch.xen.vcpu_info_cache; in kvm_xen_set_evtchn_fast()
1860 if (!test_and_set_bit(port_word_bit, &vcpu->arch.xen.evtchn_pending_sel)) in kvm_xen_set_evtchn_fast()
1865 if (IS_ENABLED(CONFIG_64BIT) && kvm->arch.xen.long_mode) { in kvm_xen_set_evtchn_fast()
1881 if (kick_vcpu && vcpu->arch.xen.upcall_vector) { in kvm_xen_set_evtchn_fast()
1935 struct gfn_to_pfn_cache *gpc = &kvm->arch.xen.shinfo_cache; in kvm_xen_set_evtchn()
2072 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_update()
2073 evtchnfd = idr_find(&kvm->arch.xen.evtchn_ports, port); in kvm_xen_eventfd_update()
2103 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_update()
2166 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_assign()
2167 ret = idr_alloc(&kvm->arch.xen.evtchn_ports, evtchnfd, port, port + 1, in kvm_xen_eventfd_assign()
2169 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_assign()
2187 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_deassign()
2188 evtchnfd = idr_remove(&kvm->arch.xen.evtchn_ports, port); in kvm_xen_eventfd_deassign()
2189 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_deassign()
2207 mutex_lock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_reset()
2214 idr_for_each_entry(&kvm->arch.xen.evtchn_ports, evtchnfd, i) in kvm_xen_eventfd_reset()
2219 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_reset()
2224 idr_for_each_entry(&kvm->arch.xen.evtchn_ports, evtchnfd, i) { in kvm_xen_eventfd_reset()
2226 idr_remove(&kvm->arch.xen.evtchn_ports, evtchnfd->send_port); in kvm_xen_eventfd_reset()
2228 mutex_unlock(&kvm->arch.xen.xen_lock); in kvm_xen_eventfd_reset()
2281 evtchnfd = idr_find(&vcpu->kvm->arch.xen.evtchn_ports, send.port); in kvm_xen_hcall_evtchn_send()
2300 vcpu->arch.xen.vcpu_id = vcpu->vcpu_idx; in kvm_xen_init_vcpu()
2301 vcpu->arch.xen.poll_evtchn = 0; in kvm_xen_init_vcpu()
2303 timer_setup(&vcpu->arch.xen.poll_timer, cancel_evtchn_poll, 0); in kvm_xen_init_vcpu()
2304 hrtimer_setup(&vcpu->arch.xen.timer, xen_timer_callback, CLOCK_MONOTONIC, in kvm_xen_init_vcpu()
2307 kvm_gpc_init(&vcpu->arch.xen.runstate_cache, vcpu->kvm); in kvm_xen_init_vcpu()
2308 kvm_gpc_init(&vcpu->arch.xen.runstate2_cache, vcpu->kvm); in kvm_xen_init_vcpu()
2309 kvm_gpc_init(&vcpu->arch.xen.vcpu_info_cache, vcpu->kvm); in kvm_xen_init_vcpu()
2310 kvm_gpc_init(&vcpu->arch.xen.vcpu_time_info_cache, vcpu->kvm); in kvm_xen_init_vcpu()
2318 kvm_gpc_deactivate(&vcpu->arch.xen.runstate_cache); in kvm_xen_destroy_vcpu()
2319 kvm_gpc_deactivate(&vcpu->arch.xen.runstate2_cache); in kvm_xen_destroy_vcpu()
2320 kvm_gpc_deactivate(&vcpu->arch.xen.vcpu_info_cache); in kvm_xen_destroy_vcpu()
2321 kvm_gpc_deactivate(&vcpu->arch.xen.vcpu_time_info_cache); in kvm_xen_destroy_vcpu()
2323 timer_delete_sync(&vcpu->arch.xen.poll_timer); in kvm_xen_destroy_vcpu()
2328 mutex_init(&kvm->arch.xen.xen_lock); in kvm_xen_init_vm()
2329 idr_init(&kvm->arch.xen.evtchn_ports); in kvm_xen_init_vm()
2330 kvm_gpc_init(&kvm->arch.xen.shinfo_cache, kvm); in kvm_xen_init_vm()
2338 kvm_gpc_deactivate(&kvm->arch.xen.shinfo_cache); in kvm_xen_destroy_vm()
2340 idr_for_each_entry(&kvm->arch.xen.evtchn_ports, evtchnfd, i) { in kvm_xen_destroy_vm()
2345 idr_destroy(&kvm->arch.xen.evtchn_ports); in kvm_xen_destroy_vm()
2347 if (kvm->arch.xen.hvm_config.msr) in kvm_xen_destroy_vm()