Module Name: src Committed By: msaitoh Date: Sat Jan 15 09:55:14 UTC 2022
Modified Files: src/sys/arch/x86/include: specialreg.h Log Message: No functional change. - Modify comment. Add comment. Fix typo. Mainly taken from dragonfly. - Use __BIT(). To generate a diff of this commit: cvs rdiff -u -r1.182 -r1.183 src/sys/arch/x86/include/specialreg.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/x86/include/specialreg.h diff -u src/sys/arch/x86/include/specialreg.h:1.182 src/sys/arch/x86/include/specialreg.h:1.183 --- src/sys/arch/x86/include/specialreg.h:1.182 Fri Jan 14 15:46:41 2022 +++ src/sys/arch/x86/include/specialreg.h Sat Jan 15 09:55:13 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: specialreg.h,v 1.182 2022/01/14 15:46:41 msaitoh Exp $ */ +/* $NetBSD: specialreg.h,v 1.183 2022/01/15 09:55:13 msaitoh Exp $ */ /* * Copyright (c) 2014-2020 The NetBSD Foundation, Inc. @@ -97,29 +97,29 @@ /* * CR4 */ -#define CR4_VME 0x00000001 /* virtual 8086 mode extension enable */ -#define CR4_PVI 0x00000002 /* protected mode virtual interrupt enable */ -#define CR4_TSD 0x00000004 /* restrict RDTSC instruction to cpl 0 */ -#define CR4_DE 0x00000008 /* debugging extension */ -#define CR4_PSE 0x00000010 /* large (4MB) page size enable */ -#define CR4_PAE 0x00000020 /* physical address extension enable */ -#define CR4_MCE 0x00000040 /* machine check enable */ -#define CR4_PGE 0x00000080 /* page global enable */ -#define CR4_PCE 0x00000100 /* enable RDPMC instruction for all cpls */ -#define CR4_OSFXSR 0x00000200 /* enable fxsave/fxrestor and SSE */ -#define CR4_OSXMMEXCPT 0x00000400 /* enable unmasked SSE exceptions */ -#define CR4_UMIP 0x00000800 /* user-mode instruction prevention */ +#define CR4_VME 0x00000001 /* Virtual 8086 mode extension enable */ +#define CR4_PVI 0x00000002 /* Protected mode virtual interrupt enable */ +#define CR4_TSD 0x00000004 /* Restrict RDTSC instruction to cpl 0 */ +#define CR4_DE 0x00000008 /* Debugging extension */ +#define CR4_PSE 0x00000010 /* Large (4MB) page size enable */ +#define CR4_PAE 0x00000020 /* Physical address extension enable */ +#define CR4_MCE 0x00000040 /* Machine check enable */ +#define CR4_PGE 0x00000080 /* Page global enable */ +#define CR4_PCE 0x00000100 /* Enable RDPMC instruction for all cpls */ +#define CR4_OSFXSR 0x00000200 /* Enable fxsave/fxrestor and SSE */ +#define CR4_OSXMMEXCPT 0x00000400 /* Enable unmasked SSE exceptions */ +#define CR4_UMIP 0x00000800 /* User Mode Instruction Prevention */ #define CR4_LA57 0x00001000 /* 57-bit linear addresses */ -#define CR4_VMXE 0x00002000 /* enable VMX operations */ -#define CR4_SMXE 0x00004000 /* enable SMX operations */ -#define CR4_FSGSBASE 0x00010000 /* enable *FSBASE and *GSBASE instructions */ -#define CR4_PCIDE 0x00020000 /* enable Process Context IDentifiers */ -#define CR4_OSXSAVE 0x00040000 /* enable xsave and xrestore */ -#define CR4_SMEP 0x00100000 /* enable SMEP support */ -#define CR4_SMAP 0x00200000 /* enable SMAP support */ -#define CR4_PKE 0x00400000 /* enable Protection Keys for user pages */ -#define CR4_CET 0x00800000 /* enable CET */ -#define CR4_PKS 0x01000000 /* enable Protection Keys for kern pages */ +#define CR4_VMXE 0x00002000 /* Enable VMX operations */ +#define CR4_SMXE 0x00004000 /* Enable SMX operations */ +#define CR4_FSGSBASE 0x00010000 /* Enable *FSBASE and *GSBASE instructions */ +#define CR4_PCIDE 0x00020000 /* Enable Process Context IDentifiers */ +#define CR4_OSXSAVE 0x00040000 /* Enable xsave and xrestore */ +#define CR4_SMEP 0x00100000 /* Enable SMEP support */ +#define CR4_SMAP 0x00200000 /* Enable SMAP support */ +#define CR4_PKE 0x00400000 /* Enable Protection Keys for user pages */ +#define CR4_CET 0x00800000 /* Enable CET */ +#define CR4_PKS 0x01000000 /* Enable Protection Keys for kern pages */ /* * Extended Control Register XCR0 @@ -172,17 +172,17 @@ #define XSAVE_MAX_COMPONENT XSAVE_Hi16_ZMM /* - * CPUID "features" bits + * "features" bits. + * CPUID Fn00000001 */ - -/* Fn00000001 %edx features */ +/* %edx */ #define CPUID_FPU 0x00000001 /* processor has an FPU? */ #define CPUID_VME 0x00000002 /* has virtual mode (%cr4's VME/PVI) */ #define CPUID_DE 0x00000004 /* has debugging extension */ #define CPUID_PSE 0x00000008 /* has 4MB page size extension */ #define CPUID_TSC 0x00000010 /* has time stamp counter */ #define CPUID_MSR 0x00000020 /* has model specific registers */ -#define CPUID_PAE 0x00000040 /* has phys address extension */ +#define CPUID_PAE 0x00000040 /* has physical address extension */ #define CPUID_MCE 0x00000080 /* has machine check exception */ #define CPUID_CX8 0x00000100 /* has CMPXCHG8B instruction */ #define CPUID_APIC 0x00000200 /* has enabled APIC */ @@ -193,17 +193,17 @@ #define CPUID_CMOV 0x00008000 /* has CMOVcc instruction */ #define CPUID_PAT 0x00010000 /* Page Attribute Table */ #define CPUID_PSE36 0x00020000 /* 36-bit PSE */ -#define CPUID_PSN 0x00040000 /* processor serial number */ -#define CPUID_CLFSH 0x00080000 /* CLFLUSH insn supported */ +#define CPUID_PSN 0x00040000 /* Processor Serial Number */ +#define CPUID_CLFSH 0x00080000 /* CLFLUSH instruction supported */ #define CPUID_DS 0x00200000 /* Debug Store */ #define CPUID_ACPI 0x00400000 /* ACPI performance modulation regs */ #define CPUID_MMX 0x00800000 /* MMX supported */ -#define CPUID_FXSR 0x01000000 /* fast FP/MMX save/restore */ -#define CPUID_SSE 0x02000000 /* streaming SIMD extensions */ -#define CPUID_SSE2 0x04000000 /* streaming SIMD extensions #2 */ -#define CPUID_SS 0x08000000 /* self-snoop */ +#define CPUID_FXSR 0x01000000 /* Fast FP/MMX Save/Restore */ +#define CPUID_SSE 0x02000000 /* Streaming SIMD Extensions */ +#define CPUID_SSE2 0x04000000 /* Streaming SIMD Extensions #2 */ +#define CPUID_SS 0x08000000 /* Self-Snoop */ #define CPUID_HTT 0x10000000 /* Hyper-Threading Technology */ -#define CPUID_TM 0x20000000 /* thermal monitor (TCC) */ +#define CPUID_TM 0x20000000 /* Thermal Monitor (TCC) */ #define CPUID_PBE 0x80000000 /* Pending Break Enable */ #define CPUID_FLAGS1 "\20" \ @@ -223,24 +223,21 @@ #define CPUID_FEAT_BLACKLIST 0 #endif -/* - * CPUID "features" bits in Fn00000001 %ecx - */ - +/* %ecx */ #define CPUID2_SSE3 0x00000001 /* Streaming SIMD Extensions 3 */ #define CPUID2_PCLMULQDQ 0x00000002 /* PCLMULQDQ instructions */ #define CPUID2_DTES64 0x00000004 /* 64-bit Debug Trace */ #define CPUID2_MONITOR 0x00000008 /* MONITOR/MWAIT instructions */ #define CPUID2_DS_CPL 0x00000010 /* CPL Qualified Debug Store */ -#define CPUID2_VMX 0x00000020 /* Virtual Machine Extensions */ -#define CPUID2_SMX 0x00000040 /* Safer Mode Extensions */ +#define CPUID2_VMX 0x00000020 /* Virtual Machine eXtensions */ +#define CPUID2_SMX 0x00000040 /* Safer Mode eXtensions */ #define CPUID2_EST 0x00000080 /* Enhanced SpeedStep Technology */ #define CPUID2_TM2 0x00000100 /* Thermal Monitor 2 */ #define CPUID2_SSSE3 0x00000200 /* Supplemental SSE3 */ #define CPUID2_CNXTID 0x00000400 /* Context ID */ #define CPUID2_SDBG 0x00000800 /* Silicon Debug */ -#define CPUID2_FMA 0x00001000 /* has Fused Multiply Add */ -#define CPUID2_CX16 0x00002000 /* has CMPXCHG16B instruction */ +#define CPUID2_FMA 0x00001000 /* Fused Multiply Add */ +#define CPUID2_CX16 0x00002000 /* CMPXCHG16B instruction */ #define CPUID2_XTPR 0x00004000 /* Task Priority Messages disabled? */ #define CPUID2_PDCM 0x00008000 /* Perf/Debug Capability MSR */ /* bit 16 unused 0x00010000 */ @@ -250,7 +247,7 @@ #define CPUID2_SSE42 0x00100000 /* Streaming SIMD Extensions 4.2 */ #define CPUID2_X2APIC 0x00200000 /* xAPIC Extensions */ #define CPUID2_MOVBE 0x00400000 /* MOVBE (move after byteswap) */ -#define CPUID2_POPCNT 0x00800000 /* popcount instruction available */ +#define CPUID2_POPCNT 0x00800000 /* POPCNT instruction available */ #define CPUID2_DEADLINE 0x01000000 /* APIC Timer supports TSC Deadline */ #define CPUID2_AESNI 0x02000000 /* AES instructions */ #define CPUID2_XSAVE 0x04000000 /* XSAVE instructions */ @@ -270,8 +267,7 @@ "\31" "DEADLINE" "\32" "AES" "\33" "XSAVE" "\34" "OSXSAVE" \ "\35" "AVX" "\36" "F16C" "\37" "RDRAND" "\40" "RAZ" -/* CPUID Fn00000001 %eax */ - +/* %eax */ #define CPUID_TO_BASEFAMILY(cpuid) (((cpuid) >> 8) & 0xf) #define CPUID_TO_BASEMODEL(cpuid) (((cpuid) >> 4) & 0xf) #define CPUID_TO_STEPPING(cpuid) ((cpuid) & 0xf) @@ -295,15 +291,15 @@ && (CPUID_TO_BASEFAMILY(cpuid) != 0x06) \ ? 0 : (CPUID_TO_EXTMODEL(cpuid) << 4))) -/* CPUID Fn00000001 %ebx */ +/* %ebx */ #define CPUID_BRAND_INDEX __BITS(7,0) #define CPUID_CLFLUSH_SIZE __BITS(15,8) #define CPUID_HTT_CORES __BITS(23,16) #define CPUID_LOCAL_APIC_ID __BITS(31,24) /* - * Intel Deterministic Cache Parameter Leaf - * Fn0000_0004 + * Intel Deterministic Cache Parameter. + * CPUID Fn0000_0004 */ /* %eax */ @@ -323,7 +319,7 @@ #define CPUID_DCP_PARTITIONS __BITS(21, 12) /* Physical line partitions */ #define CPUID_DCP_WAYS __BITS(31, 22) /* Ways of associativity */ -/* Number of sets: %ecx */ +/* %ecx: Number of sets */ /* %edx */ #define CPUID_DCP_INVALIDATE __BIT(0) /* WB invalidate/invalidate */ @@ -331,8 +327,8 @@ #define CPUID_DCP_COMPLEX __BIT(2) /* Complex cache indexing */ /* - * Intel/AMD MONITOR/MWAIT - * Fn0000_0005 + * Intel/AMD MONITOR/MWAIT. + * CPUID Fn0000_0005 */ /* %eax */ #define CPUID_MON_MINSIZE __BITS(15, 0) /* Smallest monitor-line size */ @@ -349,9 +345,10 @@ #define CPUID_MON_SUBSTATE(edx, cstate) (((edx) >> (cstate * 4)) & 0x0000000f) /* - * Intel/AMD Digital Thermal Sensor and - * Power Management, Fn0000_0006 - %eax. + * Intel/AMD Digital Thermal Sensor and Power Management. + * CPUID Fn0000_0006 */ +/* %eax */ #define CPUID_DSPM_DTS __BIT(0) /* Digital Thermal Sensor */ #define CPUID_DSPM_IDA __BIT(1) /* Intel Dynamic Acceleration */ #define CPUID_DSPM_ARAT __BIT(2) /* Always Running APIC Timer */ @@ -381,10 +378,7 @@ "\21" "HWP_PECI" "\22" "HWP_FLEX" "\23" "HWP_FAST" "\24HW_FEEDBACK" \ "\25" "HWP_IGNIDL" "\30" "TD" -/* - * Intel/AMD Digital Thermal Sensor and - * Power Management, Fn0000_0006 - %ecx. - */ +/* %ecx */ #define CPUID_DSPM_HWF __BIT(0) /* MSR_APERF/MSR_MPERF available */ #define CPUID_DSPM_EPB __BIT(3) /* Energy Performance Bias */ #define CPUID_DSPM_NTDC __BITS(15, 8) /* Number of Thread Director Classes */ @@ -394,7 +388,8 @@ "f\10\10NTDC\0" /* - * Intel/AMD Structured Extended Feature leaf Fn0000_0007 + * Intel/AMD Structured Extended Feature. + * CPUID Fn0000_0007 * %ecx == 0: Subleaf 0 * %eax: The Maximum input value for supported subleaf. * %ebx: Feature bits. @@ -409,12 +404,12 @@ #define CPUID_SEF_FSGSBASE __BIT(0) /* {RD,WR}{FS,GS}BASE */ #define CPUID_SEF_TSC_ADJUST __BIT(1) /* IA32_TSC_ADJUST MSR support */ #define CPUID_SEF_SGX __BIT(2) /* Software Guard Extensions */ -#define CPUID_SEF_BMI1 __BIT(3) /* advanced bit manipulation ext. 1st grp */ +#define CPUID_SEF_BMI1 __BIT(3) /* Advanced bit manipulation ext. 1st grp */ #define CPUID_SEF_HLE __BIT(4) /* Hardware Lock Elision */ #define CPUID_SEF_AVX2 __BIT(5) /* Advanced Vector Extensions 2 */ #define CPUID_SEF_FDPEXONLY __BIT(6) /* x87FPU Data ptr updated only on x87exp */ #define CPUID_SEF_SMEP __BIT(7) /* Supervisor-Mode Execution Prevention */ -#define CPUID_SEF_BMI2 __BIT(8) /* advanced bit manipulation ext. 2nd grp */ +#define CPUID_SEF_BMI2 __BIT(8) /* Advanced bit manipulation ext. 2nd grp */ #define CPUID_SEF_ERMS __BIT(9) /* Enhanced REP MOVSB/STOSB */ #define CPUID_SEF_INVPCID __BIT(10) /* INVPCID instruction */ #define CPUID_SEF_RTM __BIT(11) /* Restricted Transactional Memory */ @@ -458,13 +453,13 @@ #define CPUID_SEF_WAITPKG __BIT(5) /* TPAUSE,UMONITOR,UMWAIT */ #define CPUID_SEF_AVX512_VBMI2 __BIT(6) /* AVX-512 Vector Byte Manipulation 2 */ #define CPUID_SEF_CET_SS __BIT(7) /* CET Shadow Stack */ -#define CPUID_SEF_GFNI __BIT(8) -#define CPUID_SEF_VAES __BIT(9) -#define CPUID_SEF_VPCLMULQDQ __BIT(10) -#define CPUID_SEF_AVX512_VNNI __BIT(11) /* Vector neural Network Instruction */ -#define CPUID_SEF_AVX512_BITALG __BIT(12) +#define CPUID_SEF_GFNI __BIT(8) /* Galois Field instructions */ +#define CPUID_SEF_VAES __BIT(9) /* Vector AES instruction set */ +#define CPUID_SEF_VPCLMULQDQ __BIT(10) /* CLMUL instruction set */ +#define CPUID_SEF_AVX512_VNNI __BIT(11) /* Vector Neural Network Instruction */ +#define CPUID_SEF_AVX512_BITALG __BIT(12) /* BITALG instructions */ #define CPUID_SEF_TME_EN __BIT(13) /* Total Memory Encryption */ -#define CPUID_SEF_AVX512_VPOPCNTDQ __BIT(14) +#define CPUID_SEF_AVX512_VPOPCNTDQ __BIT(14) /* Vector Population Count D/Q */ #define CPUID_SEF_LA57 __BIT(16) /* 57bit linear addr & 5LVL paging */ #define CPUID_SEF_MAWAU __BITS(21, 17) /* MAWAU for BND{LD,ST}X */ #define CPUID_SEF_RDPID __BIT(22) /* RDPID and IA32_TSC_AUX */ @@ -473,7 +468,7 @@ #define CPUID_SEF_MOVDIRI __BIT(27) /* MOVDIRI instruction */ #define CPUID_SEF_MOVDIR64B __BIT(28) /* MOVDIR64B instruction */ #define CPUID_SEF_SGXLC __BIT(30) /* SGX Launch Configuration */ -#define CPUID_SEF_PKS __BIT(31) /* Protection Keys for Kern-mode pages */ +#define CPUID_SEF_PKS __BIT(31) /* Protection Keys for kern-mode pages */ #define CPUID_SEF_FLAGS1 "\177\20" \ "b\0PREFETCHWT1\0" "b\1AVX512_VBMI\0" "b\2UMIP\0" "b\3PKU\0" \ @@ -486,12 +481,12 @@ "b\34MOVDIR64B\0" "b\36SGXLC\0" "b\37PKS\0" /* %ecx = 0, %edx */ -#define CPUID_SEF_AVX512_4VNNIW __BIT(2) -#define CPUID_SEF_AVX512_4FMAPS __BIT(3) -#define CPUID_SEF_FSREP_MOV __BIT(4) /* Fast Short REP MOV */ -#define CPUID_SEF_AVX512_VP2INTERSECT __BIT(8) +#define CPUID_SEF_AVX512_4VNNIW __BIT(2) /* AVX512 4-reg Neural Network ins */ +#define CPUID_SEF_AVX512_4FMAPS __BIT(3) /* AVX512 4-reg Mult Accum Single precision */ +#define CPUID_SEF_FSREP_MOV __BIT(4) /* Fast Short REP MOVE */ +#define CPUID_SEF_AVX512_VP2INTERSECT __BIT(8) /* AVX512 VP2INTERSECT */ #define CPUID_SEF_SRBDS_CTRL __BIT(9) /* IA32_MCU_OPT_CTRL */ -#define CPUID_SEF_MD_CLEAR __BIT(10) +#define CPUID_SEF_MD_CLEAR __BIT(10) /* VERW clears CPU buffers */ #define CPUID_SEF_TSX_FORCE_ABORT __BIT(13) /* MSR_TSX_FORCE_ABORT bit 0 */ #define CPUID_SEF_SERIALIZE __BIT(14) /* SERIALIZE instruction */ #define CPUID_SEF_HYBRID __BIT(15) /* Hybrid part */ @@ -538,7 +533,8 @@ "\1" "PPIN" /* - * Intel CPUID Architectural Performance Monitoring Fn0000000a + * Intel CPUID Architectural Performance Monitoring. + * CPUID Fn0000000a * * See also src/usr.sbin/tprof/arch/tprof_x86.c */ @@ -575,7 +571,8 @@ "f\0\5FixedFunc\0" "f\5\10FFBitwidth\0" "b\17ANYTHREADDEPR\0" /* - * Intel CPUID Extended Topology Enumeration Fn0000000b + * Intel CPUID Extended Topology Enumeration. + * CPUID Fn0000000b * %ecx == level number * %eax: See below. * %ebx: Number of logical processors at this level. @@ -592,7 +589,8 @@ #define CPUID_TOP_LVLTYPE_CORE 2 /* Core */ /* - * Intel/AMD CPUID Processor extended state Enumeration Fn0000000d + * Intel/AMD CPUID Processor extended state Enumeration. + * CPUID Fn0000000d * * %ecx == 0: supported features info: * %eax: Valid bits of lower 32bits of XCR0 @@ -613,7 +611,7 @@ * All of %eax, %ebx, %ecx and %edx are zero for unsupported features. */ -/* %ecx=1 %eax */ +/* %ecx = 1, %eax */ #define CPUID_PES1_XSAVEOPT 0x00000001 /* xsaveopt instruction */ #define CPUID_PES1_XSAVEC 0x00000002 /* xsavec & compacted XRSTOR */ #define CPUID_PES1_XGETBV 0x00000004 /* xgetbv with ECX = 1 */ @@ -623,8 +621,8 @@ "\1" "XSAVEOPT" "\2" "XSAVEC" "\3" "XGETBV" "\4" "XSAVES" /* - * Intel Deterministic Address Translation Parameter Leaf - * Fn0000_0018 + * Intel Deterministic Address Translation Parameter. + * CPUID Fn0000_0018 */ /* %ecx=0 %eax __BITS(31, 0): the maximum input value of supported sub-leaf */ @@ -653,7 +651,11 @@ #define CPUID_DATP_SHAREING __BITS(25, 14) /* shareing */ -/* Intel Fn80000001 extended features - %edx */ +/* + * Intel extended features. + * CPUID Fn80000001 + */ +/* %edx */ #define CPUID_SYSCALL 0x00000800 /* SYSCALL/SYSRET */ #define CPUID_XD 0x00100000 /* Execute Disable (like CPUID_NOX) */ #define CPUID_PAGE1GB 0x04000000 /* 1GB Large Page Support */ @@ -664,8 +666,8 @@ "\14" "SYSCALL/SYSRET" "\25" "XD" "\33" "P1GB" \ "\34" "RDTSCP" "\36" "EM64T" -/* Intel Fn80000001 extended features - %ecx */ -#define CPUID_LAHF __BIT(0) /* LAHF/SAHF in IA-32e mode, 64bit sub*/ +/* %ecx */ +#define CPUID_LAHF __BIT(0) /* LAHF/SAHF in IA-32e mode, 64bit sub*/ /* __BIT(5) */ /* LZCNT. Same as AMD's CPUID_ABM */ #define CPUID_PREFETCHW __BIT(8) /* PREFETCHW */ @@ -675,7 +677,11 @@ "\11" "PREFETCHW" -/* AMD/VIA Fn80000001 extended features - %edx */ +/* + * AMD/VIA extended features. + * CPUID Fn80000001 + */ +/* %edx */ /* CPUID_SYSCALL SYSCALL/SYSRET */ #define CPUID_MPC 0x00080000 /* Multiprocessing Capable */ #define CPUID_NOX 0x00100000 /* No Execute Page Protection */ @@ -696,7 +702,7 @@ "\31" "FXSR" "\32" "FFXSR" "\33" "P1GB" "\34" "RDTSCP" \ "\36" "LONG" "\37" "3DNOW2" "\40" "3DNOW" -/* AMD Fn8000_0001 extended features - %ecx */ +/* %ecx (AMD) */ /* CPUID_LAHF LAHF/SAHF instruction */ #define CPUID_CMPLEGACY __BIT(1) /* Compare Legacy */ #define CPUID_SVM __BIT(2) /* Secure Virtual Machine */ @@ -737,11 +743,12 @@ "\35" "L2IPERFC" "\36" "MWAITX" "\37" "B30" "\40" "B31" /* - * Advanced Power Management - * CPUID Fn8000_0007 %edx + * Advanced Power Management. + * CPUID Fn8000_0007 * * Only ITSC is for both Intel and AMD. Others are only for AMD. */ +/* %edx */ #define CPUID_APM_TS __BIT(0) /* Temperature Sensor */ #define CPUID_APM_FID __BIT(1) /* Frequency ID control */ #define CPUID_APM_VID __BIT(2) /* Voltage ID control */ @@ -750,11 +757,11 @@ #define CPUID_APM_STC __BIT(5) /* Software thermal control (STC) */ #define CPUID_APM_100 __BIT(6) /* 100MHz multiplier control */ #define CPUID_APM_HWP __BIT(7) /* HW P-State control */ -#define CPUID_APM_ITSC __BIT(8) /* invariant TSC */ -#define CPUID_APM_CPB __BIT(9) /* Core performance boost */ +#define CPUID_APM_ITSC __BIT(8) /* Invariant TSC */ +#define CPUID_APM_CPB __BIT(9) /* Core Performance Boost */ #define CPUID_APM_EFF __BIT(10) /* Effective Frequency (read-only) */ -#define CPUID_APM_PROCFI __BIT(11) /* Proc Feedback Interface */ -#define CPUID_APM_PROCPR __BIT(12) /* Proc Power Reporting */ +#define CPUID_APM_PROCFI __BIT(11) /* Processor Feedback Interface */ +#define CPUID_APM_PROCPR __BIT(12) /* Processor Power Reporting */ #define CPUID_APM_CONNSTBY __BIT(13) /* Connected Standby */ #define CPUID_APM_RAPL __BIT(14) /* Running Average Power Limit */ @@ -765,7 +772,7 @@ "\15" "PROCPR" "\16" "CONNSTBY" "\17" "RAPL" /* - * AMD Processor Capacity Parameters and Extended Features + * AMD Processor Capacity Parameters and Extended Features. * CPUID Fn8000_0008 * %eax: Long Mode Size Identifiers * %ebx: Extended Feature Identifiers @@ -803,26 +810,31 @@ "\21IBRS_ALWAYSON" "\22STIBP_ALWAYSON" "\23PREFER_IBRS" "\24B19" \ "\31SSBD" "\32VIRT_SSBD" "\33SSB_NO" -/* AMD Fn8000_000a %eax (SVM Revision) */ +/* + * AMD SVM Revision and Feature. + * CPUID Fn8000_000a + */ + +/* %eax: SVM revision */ #define CPUID_AMD_SVM_REV __BITS(7,0) -/* AMD Fn8000_000a %edx features (SVM features) */ -#define CPUID_AMD_SVM_NP 0x00000001 -#define CPUID_AMD_SVM_LbrVirt 0x00000002 -#define CPUID_AMD_SVM_SVML 0x00000004 -#define CPUID_AMD_SVM_NRIPS 0x00000008 -#define CPUID_AMD_SVM_TSCRateCtrl 0x00000010 -#define CPUID_AMD_SVM_VMCBCleanBits 0x00000020 -#define CPUID_AMD_SVM_FlushByASID 0x00000040 -#define CPUID_AMD_SVM_DecodeAssist 0x00000080 -#define CPUID_AMD_SVM_PauseFilter 0x00000400 -#define CPUID_AMD_SVM_PFThreshold 0x00001000 /* PAUSE filter threshold */ -#define CPUID_AMD_SVM_AVIC 0x00002000 /* AMD Virtual intr. ctrl */ -#define CPUID_AMD_SVM_V_VMSAVE_VMLOAD 0x00008000 /* Virtual VM{SAVE/LOAD} */ -#define CPUID_AMD_SVM_vGIF 0x00010000 /* Virtualized GIF */ -#define CPUID_AMD_SVM_GMET 0x00020000 -#define CPUID_AMD_SVM_SPEC_CTRL __BIT(20) -#define CPUID_AMD_SVM_TLBICTL __BIT(24) /* TLB Inttercept Control */ +/* %edx: SVM features */ +#define CPUID_AMD_SVM_NP __BIT(0) /* Nested Paging */ +#define CPUID_AMD_SVM_LbrVirt __BIT(1) /* LBR virtualization */ +#define CPUID_AMD_SVM_SVML __BIT(2) /* SVM Lock */ +#define CPUID_AMD_SVM_NRIPS __BIT(3) /* NRIP Save on #VMEXIT */ +#define CPUID_AMD_SVM_TSCRateCtrl __BIT(4) /* MSR-based TSC rate ctrl */ +#define CPUID_AMD_SVM_VMCBCleanBits __BIT(5) /* VMCB Clean Bits support */ +#define CPUID_AMD_SVM_FlushByASID __BIT(6) /* Flush by ASID */ +#define CPUID_AMD_SVM_DecodeAssist __BIT(7) /* Decode Assists support */ +#define CPUID_AMD_SVM_PauseFilter __BIT(10) /* PAUSE intercept filter */ +#define CPUID_AMD_SVM_PFThreshold __BIT(12) /* PAUSE filter threshold */ +#define CPUID_AMD_SVM_AVIC __BIT(13) /* Advanced Virt. Intr. Ctrl */ +#define CPUID_AMD_SVM_V_VMSAVE_VMLOAD __BIT(15) /* Virtual VM{SAVE/LOAD} */ +#define CPUID_AMD_SVM_vGIF __BIT(16) /* Virtualized GIF */ +#define CPUID_AMD_SVM_GMET __BIT(17) /* Guest Mode Execution Trap */ +#define CPUID_AMD_SVM_SPEC_CTRL __BIT(20) /* SPEC_CTRL virtualization */ +#define CPUID_AMD_SVM_TLBICTL __BIT(24) /* TLB Intercept Control */ #define CPUID_AMD_SVM_FLAGS "\20" \ "\1" "NP" "\2" "LbrVirt" "\3" "SVML" "\4" "NRIPS" \ @@ -836,7 +848,8 @@ "\31" "TLBICTL" /* - * AMD Fn8000_001d Cache Topology Information. + * AMD Cache Topology Information. + * CPUID Fn8000_001d * It's almost the same as Intel Deterministic Cache Parameter Leaf(0x04) * except the following: * No Cores/package (%eax bit 31..26) @@ -844,7 +857,8 @@ */ /* - * AMD Fn8000_001f Encrypted Memory Capabilities. + * AMD Encrypted Memory Capabilities. + * CPUID Fn8000_001f * %eax: flags * %ebx: 5-0: Cbit Position * 11-6: PhysAddrReduction @@ -874,7 +888,7 @@ "\21" "VTE" /* - * Centaur Extended Feature flags + * Centaur Extended Feature flags. */ #define CPUID_VIA_HAS_RNG 0x00000004 /* Random number generator */ #define CPUID_VIA_DO_RNG 0x00000008