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

Re: [Xen-devel] [PATCH 2/3] VMX: allocate VMCS pages from domain heap



On 19/10/15 16:22, Jan Beulich wrote:
> -static struct vmcs_struct *vmx_alloc_vmcs(void)
> +static paddr_t vmx_alloc_vmcs(void)
>  {
> +    struct page_info *pg;
>      struct vmcs_struct *vmcs;
>  
> -    if ( (vmcs = alloc_xenheap_page()) == NULL )
> +    if ( (pg = alloc_domheap_page(NULL, 0)) == NULL )

As an observation, it would be good to pass v from the caller, and NUMA
allocate against v->domain here.

> @@ -580,7 +583,7 @@ int vmx_cpu_up_prepare(unsigned int cpu)
>  void vmx_cpu_dead(unsigned int cpu)
>  {
>      vmx_free_vmcs(per_cpu(vmxon_region, cpu));
> -    per_cpu(vmxon_region, cpu) = NULL;
> +    per_cpu(vmxon_region, cpu) = 0;

While this is currently safe (as pa 0 is not part of the available heap
allocation range), might it be worth introducing a named sentential?  I
can forsee a DMLite nested Xen scenario where we definitely don't need
to treat the low 1MB magically.

> --- a/xen/arch/x86/hvm/vmx/vvmx.c
> +++ b/xen/arch/x86/hvm/vmx/vvmx.c
> @@ -56,13 +56,14 @@ int nvmx_vcpu_initialise(struct vcpu *v)
>  {
>      struct nestedvmx *nvmx = &vcpu_2_nvmx(v);
>      struct nestedvcpu *nvcpu = &vcpu_nestedhvm(v);
> +    struct page_info *pg = alloc_domheap_page(NULL, 0);

Again - this can be NUMA allocated with v->domain.

~Andrew

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


 


Rackspace

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