[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 0/5] hvf: stability fixes for HVF
From: |
Cameron Esfahani |
Subject: |
[PATCH v3 0/5] hvf: stability fixes for HVF |
Date: |
Mon, 02 Dec 2019 15:55:36 -0800 |
The following patches fix stability issues with running QEMU on Apple
Hypervisor Framework (HVF):
- non-RAM, non-ROMD areas need to trap so accesses can be correctly
emulated.
- Current TSC synchronization implementation is insufficient: when
running with more than 1 core, TSC values can go backwards. Until
a correct implementation can be written, remove calls to
hv_vm_sync_tsc(). Pass through TSC to guest OS.
- Fix REX emulation in relation to legacy prefixes.
- More correctly match SDM when setting CR0 and PDPTE registers.
- Previous implementation in hvf_inject_interrupts() would always inject
VMCS_INTR_T_SWINTR even when VMCS_INTR_T_HWINTR was required. Now
correctly determine when VMCS_INTR_T_HWINTR is appropriate versus
VMCS_INTR_T_SWINTR. Under heavy loads, interrupts got misrouted.
Changes in v3:
- Change previous code which saved interrupt/exception type in
hvf_store_events() to inject later in hvf_inject_interrupts().
Now, hvf_inject_interrupts() will correctly determine when it's appropriate
to inject VMCS_INTR_T_HWINTR versus VMCS_INTR_T_SWINTR. From feedback by
Paolo Bonzini to make code more similar to KVM model.
Changes in v2:
- Fix code style errors.
Cameron Esfahani (5):
hvf: non-RAM, non-ROMD memory ranges are now correctly mapped in
hvf: remove TSC synchronization code because it isn't fully complete
hvf: correctly handle REX prefix in relation to legacy prefixes
hvf: more accurately match SDM when setting CR0 and PDPTE registers
hvf: correctly inject VMCS_INTR_T_HWINTR versus VMCS_INTR_T_SWINTR.
target/i386/hvf/hvf.c | 65 ++++++++++++++++++++++++++----------
target/i386/hvf/vmx.h | 18 +++++-----
target/i386/hvf/x86_decode.c | 64 +++++++++++++++++++----------------
target/i386/hvf/x86_decode.h | 20 +++++------
target/i386/hvf/x86_emu.c | 3 --
target/i386/hvf/x86hvf.c | 18 +++++-----
6 files changed, 112 insertions(+), 76 deletions(-)
--
2.24.0
- [PATCH v3 0/5] hvf: stability fixes for HVF,
Cameron Esfahani <=
- [PATCH v3 1/5] hvf: non-RAM, non-ROMD memory ranges are now correctly mapped in, Cameron Esfahani, 2019/12/02
- [PATCH v3 2/5] hvf: remove TSC synchronization code because it isn't fully complete, Cameron Esfahani, 2019/12/02
- [PATCH v3 4/5] hvf: more accurately match SDM when setting CR0 and PDPTE registers, Cameron Esfahani, 2019/12/02
- [PATCH v3 3/5] hvf: correctly handle REX prefix in relation to legacy prefixes, Cameron Esfahani, 2019/12/02
- [PATCH v3 5/5] hvf: correctly inject VMCS_INTR_T_HWINTR versus VMCS_INTR_T_SWINTR., Cameron Esfahani, 2019/12/02
- Re: [PATCH v3 0/5] hvf: stability fixes for HVF, Paolo Bonzini, 2019/12/03