mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-19 20:22:46 +00:00
HV: Use NMI to replace INIT signal for lapic-pt VMs S5
We have implemented a new notification method using NMI. So replace the INIT notification method with the NMI one. Then we can remove INIT notification related code later. Tracked-On: #3886 Signed-off-by: Kaige Fu <kaige.fu@intel.com>
This commit is contained in:
parent
29b7aff59f
commit
d7eb14c511
@ -606,10 +606,11 @@ void switch_apicv_mode_x2apic(struct acrn_vcpu *vcpu)
|
||||
update_msr_bitmap_x2apic_passthru(vcpu);
|
||||
|
||||
/*
|
||||
* After passthroughing lapic to guest, we should use INIT signal to
|
||||
* notify vcpu thread instead of IPI
|
||||
* After passthroughing lapic to guest, we should use NMI signal to
|
||||
* notify vcpu thread instead of IPI. Because the IPI will be delivered
|
||||
* the guest directly without vmexit.
|
||||
*/
|
||||
vcpu->thread_obj.notify_mode = SCHED_NOTIFY_INIT;
|
||||
vcpu->thread_obj.notify_mode = SCHED_NOTIFY_NMI;
|
||||
} else {
|
||||
value32 = exec_vmread32(VMX_PROC_VM_EXEC_CONTROLS2);
|
||||
value32 &= ~VMX_PROCBASED_CTLS2_VAPIC;
|
||||
|
@ -202,8 +202,8 @@ void sleep_thread(struct thread_object *obj)
|
||||
scheduler->sleep(obj);
|
||||
}
|
||||
if (is_running(obj)) {
|
||||
if (obj->notify_mode == SCHED_NOTIFY_INIT) {
|
||||
make_reschedule_request(pcpu_id, DEL_MODE_INIT);
|
||||
if (obj->notify_mode == SCHED_NOTIFY_NMI) {
|
||||
make_reschedule_request(pcpu_id, DEL_MODE_NMI);
|
||||
} else {
|
||||
make_reschedule_request(pcpu_id, DEL_MODE_IPI);
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ enum thread_object_state {
|
||||
|
||||
enum sched_notify_mode {
|
||||
SCHED_NOTIFY_INIT,
|
||||
SCHED_NOTIFY_NMI,
|
||||
SCHED_NOTIFY_IPI
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user