This patch series introduces support for the Zhaoxin Yongfeng CPU model and includes improvements and updates specific to Zhaoxin CPUs (including vendor "Centaurhauls" and "Shanghai"). The changes ensure that QEMU can correctly identify and emulate Zhaoxin CPUs, accurately reflecting their functionality and performance characteristics.
### Summary of changes EwanHai (4): target/i386: Add support for Zhaoxin CPU vendor identification target/i386: Add CPUID leaf 0xC000_0001 EDX definitions target/i386: Introduce Zhaoxin Yongfeng CPU model target/i386: Mask CMPLegacy bit in CPUID[0x80000001].ECX for Zhaoxin CPUs target/i386/cpu.c | 131 ++++++++++++++++++++++++++++++++++++++++++++-- target/i386/cpu.h | 41 ++++++++++++++- 2 files changed, 167 insertions(+), 5 deletions(-) v4 -> v3: 1. Added "For the kernel before v6.9 ..." for more accurately describe the patch's impact on Linux Guests. v3 link: https://lore.kernel.org/all/20240809094259.119221-1-ewanhai- o...@zhaoxin.com/ v3 -> v2: 1. Added a more detailed description of the CPUID[0x80000001].ECX.CMPLegacy bit masking. v2 link: https://lore.kernel.org/all/20240704112511.184257-1-ewanhai...@zhaoxin.com/ v2 -> v1: 1. Removed VIA-related information from the patch description to avoid misunderstanding. 2. Replaced CPUID_VENDOR_VIA with CPUID_VENDOR_ZHAOXIN1 because the "Centaurhauls" vendor ID now belongs to Zhaoxin.The previous CPUID_VENDOR_VIA macro was only defined but never used in QEMU, making this change straightforward. v1 link: https://lore.kernel.org/qemu-devel/20240625091905.1325205-1-ewanhai- o...@zhaoxin.com/ ### Known Issues 1. Issue with VMX Preemption Timer Rate on Yongfeng CPU: - Description: On Yongfeng CPUs, the VMX preemption timer rate is 128, meaning that bits 4:0 of MSR_IA32_VMX_MISC_CTLS should be set to 7. However, due to Intel's rate being 5, the Linux kernel has hardcoded this value as 5: `#define VMX_MISC_EMULATED_PREEMPTION_TIMER_RATE 5`. - Impact: This discrepancy can cause incorrect behavior in the VMX preemption timer on Yongfeng CPUs. - Workaround: A patch to correct this issue in the Linux kernel is currently being prepared and will be submitted soon. -- 2.34.1