Re: [PATCH v9 3/8] x86/vmware: Introduce VMware hypercall API
From: Simon Horman <horms@kernel.org>
Date: 2024-05-11 15:02:34
Also in:
dri-devel, linux-input, lkml, virtualization
On Mon, May 06, 2024 at 02:53:00PM -0700, Alexey Makhalov wrote:
Introduce vmware_hypercall family of functions. It is a common
implementation to be used by the VMware guest code and virtual
device drivers in architecture independent manner.
The API consists of vmware_hypercallX and vmware_hypercall_hb_{out,in}
set of functions by analogy with KVM hypercall API. Architecture
specific implementation is hidden inside.
It will simplify future enhancements in VMware hypercalls such
as SEV-ES and TDX related changes without needs to modify a
caller in device drivers code.
Current implementation extends an idea from commit bac7b4e84323
("x86/vmware: Update platform detection code for VMCALL/VMMCALL
hypercalls") to have a slow, but safe path in VMWARE_HYPERCALL
earlier during the boot when alternatives are not yet applied.
This logic was inherited from VMWARE_CMD from the commit mentioned
above. Default alternative code was optimized by size to reduce
excessive nop alignment once alternatives are applied. Total
default code size is 26 bytes, in worse case (3 bytes alternative)
remaining 23 bytes will be aligned by only 3 long NOP instructions.
Signed-off-by: Alexey Makhalov <alexey.makhalov@broadcom.com>
Reviewed-by: Nadav Amit <redacted>
Reviewed-by: Jeff Sipek <redacted>...
quoted hunk ↗ jump to hunk
diff --git a/arch/x86/include/asm/vmware.h b/arch/x86/include/asm/vmware.h
...
+static inline +unsigned long vmware_hypercall3(unsigned long cmd, unsigned long in1, + uint32_t *out1, uint32_t *out2)
nit: u32 is preferred over uint32_t.
Likewise elsewhere in this patch-set.
...
/* - * The high bandwidth in call. The low word of edx is presumed to have the - * HB bit set. + * High bandwidth calls are not supported on encrypted memory guests. + * The caller should check cc_platform_has(CC_ATTR_MEM_ENCRYPT) and use + * low bandwidth hypercall it memory encryption is set. + * This assumption simplifies HB hypercall impementation to just I/O port
nit: implementation
checkpatch.pl --codespell is your friend
+ * based approach without alternative patching. */
...