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

Re: [Xen-devel] [PATCH 3/3] x86/mm: Consolidate all Xen L4 slot writing into init_xen_l4_slots()



>>> On 12.10.17 at 15:54, <andrew.cooper3@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/mm/hap/hap.c
> +++ b/xen/arch/x86/mm/hap/hap.c
> @@ -391,41 +391,24 @@ int hap_set_allocation(struct domain *d, unsigned int 
> pages, bool *preempted)
>      return 0;
>  }
>  
> -static void hap_install_xen_entries_in_l4(struct vcpu *v, mfn_t l4mfn)
> -{
> -    struct domain *d = v->domain;
> -    l4_pgentry_t *l4e;
> -
> -    l4e = map_domain_page(l4mfn);
> -
> -    /* Copy the common Xen mappings from the idle domain */
> -    memcpy(&l4e[ROOT_PAGETABLE_FIRST_XEN_SLOT],
> -           &idle_pg_table[ROOT_PAGETABLE_FIRST_XEN_SLOT],
> -           ROOT_PAGETABLE_XEN_SLOTS * sizeof(l4_pgentry_t));
> -
> -    /* Install the per-domain mappings for this domain */
> -    l4e[l4_table_offset(PERDOMAIN_VIRT_START)] =
> -        l4e_from_page(d->arch.perdomain_l3_pg, __PAGE_HYPERVISOR_RW);
> -
> -    /* Install a linear mapping */
> -    l4e[l4_table_offset(LINEAR_PT_VIRT_START)] =
> -        l4e_from_mfn(l4mfn, __PAGE_HYPERVISOR_RW);
> -
> -    unmap_domain_page(l4e);
> -}
> -
>  static mfn_t hap_make_monitor_table(struct vcpu *v)
>  {
>      struct domain *d = v->domain;
>      struct page_info *pg;
> +    l4_pgentry_t *l4e;
>      mfn_t m4mfn;
>  
>      ASSERT(pagetable_get_pfn(v->arch.monitor_table) == 0);
>  
>      if ( (pg = hap_alloc(d)) == NULL )
>          goto oom;
> +
>      m4mfn = page_to_mfn(pg);
> -    hap_install_xen_entries_in_l4(v, m4mfn);
> +    l4e = __map_domain_page(pg);

If you obtain the MFN anyway, map_domain_page() is cheaper
generated code wise.

> --- a/xen/arch/x86/pv/domain.c
> +++ b/xen/arch/x86/pv/domain.c
> @@ -35,7 +35,7 @@ static int setup_compat_l4(struct vcpu *v)
>  
>      l4tab = __map_domain_page(pg);
>      clear_page(l4tab);
> -    init_guest_l4_table(l4tab, v->domain, 1);
> +    init_xen_l4_slots(l4tab, page_to_mfn(pg), v->domain, INVALID_MFN, false);

Perhaps worth avoiding the double translation here too.

In any event
Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx>

Jan


_______________________________________________
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®.