> On 24. Mar 2026, at 16:13, Mohamed Mediouni <mohamed@unpredictable.fr> wrote:
>
> On Windows 10, the paravirtualisation enlightenments aren't available.
> And neither is performance monitoring. Using the former as a gate to
> operate in a reduced-functionality mode on Windows 10.
>
> And on the performance side, some state is really expensive to fetch
> or write with Hyper-V so switch some less-essential state to on demand.
>
> The effect of this is magnified on Windows 10 because Hyper-V enlightenments
> are not available there.
>
Some performance numbers from https://gitlab.com/qemu-project/qemu/-/work_items/3349
on Windows 10:
QEMU 10.2: 2 minutes
QEMU 11.0rc0: 8 minutes
This series: back to 2 minutes
This brings us to performance parity with older QEMU using winhvemulation
on Windows 10.
> Side note: On Windows 11, use WHP with kernel-irqchip=on. On Windows 10, looks
> like issues there are still lingering, with issues #289 and #346 still problematic.
>
> v1 -> v2:
> - fix x86 HVF compatibility
> - small nits
> - added workaround for an issue that showed up during 32-bit Linux boot
> on AMD
>
> v2 -> v3:
> - Remove ad-hoc workaround in segment fetching and replace it by something
> more proper.
> The affected commits are "whpx: i386: fetch segments on-demand". The old
> workaround separate commit is no longer present (or needed)
>
> Issue number: https://gitlab.com/qemu-project/qemu/-/work_items/3349
>
> Mohamed Mediouni (12):
> whpx: i386: workaround for Windows 10 support
> whpx: i386: enable exceptions VM exit only when needed
> whpx: i386: skip TSC read for MMIO exits
> whpx: i386: skip XCRs read for MMIO exits
> whpx: i386: don't restore segment registers after MMIO handling
> target/i386: emulate: add new callbacks
> whpx: i386: add implementation of new x86_emul_ops
> target/i386: emulate: indirect access to CRs
> whpx: i386: indirect access to CRs
> target/i386: emulate: segmentation rework
> whpx: i386: fetch segments on-demand
> whpx: i386: fast runtime state reads
>
> target/i386/emulate/x86_emu.h | 6 +
> target/i386/emulate/x86_helpers.c | 83 +++++----
> target/i386/emulate/x86_mmu.c | 11 +-
> target/i386/hvf/x86.c | 11 ++
> target/i386/whpx/whpx-all.c | 280 +++++++++++++++++++++++++-----
> 5 files changed, 302 insertions(+), 89 deletions(-)
>
> --
> 2.50.1 (Apple Git-155)
>