acrn-hypervisor/hypervisor/include
Yuanyuan Zhao 0a4c76357e hv: hide mwait from guest.
When CPU support MONITOR/MWAIT, OS prefer to use it enter
deeper C-state.

Now ACRN pass through MONITOR/MWAIT to guest.

For vCPUs (ie vCPU A and vCPU B) share a pCPU, if vCPU A uses MWait to enter C state,
vCPU B could run only after the time slice of vCPU A is expired. This time slice of
vCPU A is gone to waste.

For Local APIC pass-through (used for RTVM), the guest pay more attention to
timeliness than power saving.

So this patch hides MONITOR/MWAIT by:
    1. Clear vCPUID.05H, vCPUID.01H:ECX.[bit 3] and
    MSR_IA32_MISC_ENABLE_MONITOR_ENA to tell the guest VM's vCPU
    does not support MONITOR/MAIT.
    2. Enable MSR_IA32_MISC_ENABLE_MONITOR_ENA bit for
    MSR_IA32_MISC_ENABLE inject 'GP'.
    3. Trap instruction 'MONITOR' and 'MWAIT' and inject 'UD'.
    4. Clear vCPUID.07H:ECX.[bit 5] to hide 'UMONITOR/UMWAIT'.
    5. Clear  "enable user wait and pause" VM-execution control, so
    UMONITOR/MWAIT causes an 'UD'.

Tracked-On: #8253
Signed-off-by: Yuanyuan Zhao <yuanyuan.zhao@linux.intel.com>
Reviewed-by: Fei Li <fei1.li@intel.com>
2022-11-04 18:55:52 +08:00
..
arch/x86/asm hv: hide mwait from guest. 2022-11-04 18:55:52 +08:00
common hv: add hypercall to register asyncio 2022-09-27 10:26:42 +08:00
debug hv: change sbuf to a common infrastructure 2022-09-27 10:26:42 +08:00
dm hv: vPCI: fix large bar base update 2022-10-28 05:55:20 +08:00
hw ACRN:HV:VPCI: Forward access of PCI ROM bar_reg to DM for passthru device 2022-09-23 18:12:01 +08:00
lib hv: shell: improve console to modify input easier 2022-07-28 23:31:43 +08:00
public hv: add ACRN CPU frequency initializer 2022-10-08 11:13:21 +08:00