@@ -153,6 +153,9 @@ static void cpuid_hypervisor_leaves(const struct vcpu *v, uint32_t leaf,
*/
res->a |= XEN_HVM_CPUID_UPCALL_VECTOR;
+ /* Indicate if the guest uses the physical addresses hypercall ABI. */
+ if ( is_hvm_physaddr_abi(v->domain) )
+ res->a |= XEN_HVM_CPUID_PHYS_ADDR_ABI;
break;
case 5: /* PV-specific parameters */
@@ -106,6 +106,8 @@
* bound to event channels.
*/
#define XEN_HVM_CPUID_UPCALL_VECTOR (1u << 6)
+/* Hypercalls are using physical addresses instead of linear ones. */
+#define XEN_HVM_CPUID_PHYS_ADDR_ABI (1u << 7)
/*
* Leaf 6 (0x40000x05)
The guest needs to know this information before attempting to make a hypercall (especially ones to fetch XENFEAT_*). Signed-off-by: Teddy Astie <teddy.astie@vates.tech> --- xen/arch/x86/cpuid.c | 3 +++ xen/include/public/arch-x86/cpuid.h | 2 ++ 2 files changed, 5 insertions(+)