On 12/11/25 08:09, Zhao Liu wrote:
Hi,
This series adds APX (Advanced Performance Extensions) support in QEMU
to enable APX in Guest based on KVM (RFC v1 [1]).
This series is based on CET v5:
https://lore.kernel.org/qemu-devel/[email protected]/
And you can also find the code here:
https://gitlab.com/zhao.liu/qemu/-/commits/i386-all-for-dmr-v2.1-12-10-2025
Compared with v1 [2], v2 adds:
* HMP support ("print" & "info registers").
* gdbstub support.
Thanks for your review!
Great, thanks! Just one question, should the CPUID feature be "apx" or
"apxf" (and therefore CPUID_7_1_EDX_APXF)? I can fix that myself of course.
Thanks,
Paolo
Overview
========
Intel Advanced Performance Extensions (Intel APX) expands the Intel 64
instruction set architecture with access to more registers (16
additional general-purpose registers (GPRs) R16–R31) and adds various
new features that improve general-purpose performance. The extensions
are designed to provide efficient performance gains across a variety of
workloads without significantly increasing silicon area or power
consumption of the core.
APX spec link (rev.07) is:
https://cdrdv2.intel.com/v1/dl/getContent/861610
At QEMU side, the enabling work mainly includes three parts:
1. save/restore/migrate the xstate of APX.
* APX xstate is a user xstate, but it reuses MPX xstate area in
un-compacted XSAVE buffer.
* To address this, QEMU will reject both APX and MPX if their CPUID
feature bits are set at the same (in Patch 1).
2. add related CPUIDs support in feature words.
3. debug support, including HMP & gdbstub.
Change Log
==========
Changes sicne v1:
* Expend current GPR array (CPUX86State.regs) to 32 elements instead of
a new array.
* HMP support ("print" & "info registers").
* gdbstub support.
[1]: KVM RFC:
https://lore.kernel.org/kvm/[email protected]/
[2]: QEMU APX v1:
https://lore.kernel.org/qemu-devel/[email protected]/
Thanks and Best Regards,
Zhao
---
Zhao Liu (6):
i386/machine: Use VMSTATE_UINTTL_SUB_ARRAY for vmstate of
CPUX86State.regs
i386/gdbstub: Add APX support for gdbstub
i386/cpu-dump: Dump entended GPRs for APX supported guest
i386/monitor: Support EGPRs in hmp_print
i386/cpu: Support APX CPUIDs
i386/cpu: Mark APX xstate as migratable
Zide Chen (3):
i386/cpu: Add APX EGPRs into xsave area
i386/cpu: Cache EGPRs in CPUX86State
i386/cpu: Add APX migration support
configs/targets/x86_64-softmmu.mak | 2 +-
gdb-xml/i386-64bit-apx.xml | 26 +++++++++++
include/migration/cpu.h | 4 ++
target/i386/cpu-dump.c | 30 +++++++++++--
target/i386/cpu.c | 68 ++++++++++++++++++++++++++++-
target/i386/cpu.h | 48 +++++++++++++++++++--
target/i386/gdbstub.c | 69 +++++++++++++++++++++++++++++-
target/i386/machine.c | 27 +++++++++++-
target/i386/monitor.c | 16 +++++++
target/i386/xsave_helper.c | 16 +++++++
10 files changed, 293 insertions(+), 13 deletions(-)
create mode 100644 gdb-xml/i386-64bit-apx.xml