[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v10 10/11] xen: add new Xen cpuid node for max address width info



On 25/09/17 11:00, Juergen Gross wrote:
> On very large hosts a pv-guest needs to know whether it will have to
> handle frame numbers larger than 32 bits in order to select the
> appropriate grant interface version.
>
> Add a new Xen specific CPUID node to contain the maximum machine address
> width similar to the x86 CPUID node 0x80000008 containing the maximum
> physical address width. The maximum frame width needs to take memory
> hotplug into account.
>
> Signed-off-by: Juergen Gross <jgross@xxxxxxxx>
> ---
> V10:
> - correct comment in cpuid.h (Jan Beulich)
>
> V9:
> - make leaf pv-only (Jan Beulich)
> - use hex value for mask (Jan Beulich)
> - guest address width -> machine address width (Jan Beulich)
> ---
>  xen/arch/x86/traps.c                |  7 +++++++
>  xen/include/public/arch-x86/cpuid.h | 11 ++++++++++-
>  2 files changed, 17 insertions(+), 1 deletion(-)
>
> diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
> index d8feef2942..2b464d02ef 100644
> --- a/xen/arch/x86/traps.c
> +++ b/xen/arch/x86/traps.c
> @@ -930,6 +930,13 @@ void cpuid_hypervisor_leaves(const struct vcpu *v, 
> uint32_t leaf,
>          res->b = v->vcpu_id;
>          break;
>  
> +    case 5: /* PV-specific parameters */
> +        if ( is_hvm_domain(d) || subleaf != 0 )
> +            break;

Leaves 3 and 4 are currently broken in terms of their subleaf handling,
and can't easily be fixed (as the ABI is set in stone).  However, please
lets not propagate the brokenness into new leaves.

5/0 should report max_subleaf in res->a, in the same way as other
subleafs get handled.

~Andrew

> +
> +        res->a = generic_flsl(get_upper_mfn_bound()) + PAGE_SHIFT;
> +        break;
> +
>      default:
>          ASSERT_UNREACHABLE();
>      }
> diff --git a/xen/include/public/arch-x86/cpuid.h 
> b/xen/include/public/arch-x86/cpuid.h
> index d709340f18..2bc11bf6ef 100644
> --- a/xen/include/public/arch-x86/cpuid.h
> +++ b/xen/include/public/arch-x86/cpuid.h
> @@ -85,6 +85,15 @@
>  #define XEN_HVM_CPUID_IOMMU_MAPPINGS   (1u << 2)
>  #define XEN_HVM_CPUID_VCPU_ID_PRESENT  (1u << 3) /* vcpu id is present in 
> EBX */
>  
> -#define XEN_CPUID_MAX_NUM_LEAVES 4
> +/*
> + * Leaf 6 (0x40000x05)
> + * PV-specific parameters
> + * Sub-leaf 0: EAX: bits 0-7: max machine address width
> + */
> +
> +/* Max. address width in bits taking memory hotplug into account. */
> +#define XEN_CPUID_MACHINE_ADDRESS_WIDTH_MASK (0xffu << 0)
> +
> +#define XEN_CPUID_MAX_NUM_LEAVES 5
>  
>  #endif /* __XEN_PUBLIC_ARCH_X86_CPUID_H__ */


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.