Messages in this thread | ![/](/images/icornerl.gif) | | Date | Thu, 25 Apr 2024 10:27:48 -0700 | Subject | Re: [PATCH v9 1/8] x86/vmware: Correct macro names | From | Alexey Makhalov <> |
| |
On 4/25/24 8:21 AM, Borislav Petkov wrote: > On Wed, Apr 24, 2024 at 04:14:06PM -0700, Alexey Makhalov wrote: >> VCPU_RESERVED and LEGACY_X2APIC are not VMware hypercall commands. >> These are bits in return value of VMWARE_CMD_GETVCPU_INFO command. >> Change VMWARE_CMD_ prefix to GETVCPU_INFO_ one. And move bit-shift >> operation to the macro body. > > I don't understand: > > $ git grep GETVCPU_INFO > arch/x86/kernel/cpu/vmware.c:51:#define VMWARE_CMD_GETVCPU_INFO 68 > arch/x86/kernel/cpu/vmware.c:478: VMWARE_CMD(GETVCPU_INFO, eax, ebx, ecx, edx); > > so that's a VMWARE_CMD 68, at least the prefix says so. > > And those two are *bits* in that eax which that hypercall returns. > > Or are those two bits generic but defined in a vmware-specific > hypercall? > > Hm. >
These are VMware hypercall commands: #define VMWARE_CMD_GETVERSION 10 #define VMWARE_CMD_GETHZ 45 #define VMWARE_CMD_GETVCPU_INFO 68 #define VMWARE_CMD_STEALCLOCK 91
These are VMware-specific macros to analyze return values of corresponding commands. They are prefixed with command name. #define GETVCPU_INFO_LEGACY_X2APIC BIT(3) #define GETVCPU_INFO_VCPU_RESERVED BIT(31)
#define STEALCLOCK_NOT_AVAILABLE (-1) #define STEALCLOCK_DISABLED 0 #define STEALCLOCK_ENABLED 1
Name VMWARE_CMD_LEGACY_X2APIC was not correct as LEGACY_X2APIC is not a command but the meaning of 3rd bit of a return value of VMWARE_CMD_GETVCPU_INFO. So, change it to GETVCPU_INFO_LEGACY_X2APIC. The same change with GETVCPU_INFO_VCPU_RESERVED. Both these bits are not generic.
--Alexey
| ![\](/images/icornerr.gif) |