Title : How to mask CPUID feature flags by using Intel CPUID Feature Mask Authors : Liping.ke@xxxxxxxxx Reviewer: Created : June-22-2008 Updated : July-8-2008 Backgrounds for CPUID Feature Mask ---------------------------------- Cpuid mask feature is intended to be used to limit the feature flags reported by CPUID.1.EDX:ECX such that only those user designated feature flags are reported by this processor when CPUID.EAX=1 is executed. This feature will improve guest os applications compatibility. How to turn on CPUID Feature Mask ---------------------------------- Please use cpuid_mask_ecx grub option to mask ecx reporting features and use cpuid_mask_edx grub option to mask edx reporting features. For example, you can add below cpuid_mask_ecx or cpuid_mask_edx option in grub entry: title Xen-Fedora Core (2.6.18-xen) root (hd0,0) kernel /boot/xen.gz com1=115200,8n1 console=com1 cpuid_mask_ecx = 0xFFFF7FFF cpuid_mask_edx = 0xFFFFFFFC module /boot/vmlinuz-2.6.18.8-xen root=LABEL=/ ro xencons=ttyS console=tty0 console=ttyS0 module /boot/initrd-2.6.18-xen.img In this setting, the 19th bit of ecx (SSE4.1) and 2nd bit of edx (Debugging Extensions) feature will be masked (corresponding bit is 0). When CPUID.EAX = 1 is executed, even if this cpu model supports these features, output ECX still reports the 19th bit is 0 and EDX reports the 2nd bit is 0, faking this cpu model does not suppport those features. If you don't care a feature, just let coresponding bit be 1. For detailed cx/dx bit information, please refer to Intel Software Develop Manual 2A Figure 3.7 and Figure 3.8. How to use (cpuid_mask_ecx, cpuid_mask_edx) value pair to rev_down a higher cpu model to a lower one ------------------------------------------------------- For example, E8400[Intel? Core?2 Duo Processor series] ecx = 0x0008E3FD, edx = 0xBFEBFBFF when executing CPUID.EAX = 1 normally. If you want to rev_down cpu model down to this E8400, you can just simply set cpuid_mask_ecx = 0x0008E3FD, cpuid_mask_edx = 0xBFEBFBFF in grub entry.