[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Ping: [PATCH v2 6/9] x86/p2m: avoid unnecessary calls of write_p2m_entry_pre() hook
On 06.11.2020 10:37, Jan Beulich wrote: > When shattering a large page, we first construct the new page table page > and only then hook it up. The "pre" hook in this case does nothing, for > the page starting out all blank. Avoid 512 calls into shadow code in > this case by passing in INVALID_GFN, indicating the page being updated > is (not yet) associated with any GFN. (The alternative to this change > would be to actually pass in a correct GFN, which can't be all the same > on every loop iteration.) > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > --- > v2: New. Ping? Thanks, Jan > --- a/xen/arch/x86/mm/p2m-pt.c > +++ b/xen/arch/x86/mm/p2m-pt.c > @@ -134,7 +134,7 @@ static int write_p2m_entry(struct p2m_do > > paging_lock(d); > > - if ( p2m->write_p2m_entry_pre ) > + if ( p2m->write_p2m_entry_pre && gfn != gfn_x(INVALID_GFN) ) > p2m->write_p2m_entry_pre(d, gfn, p, new, level); > > oflags = l1e_get_flags(*p); > @@ -290,7 +290,8 @@ p2m_next_level(struct p2m_domain *p2m, v > { > new_entry = l1e_from_pfn(pfn | (i << ((level - 1) * > PAGETABLE_ORDER)), > flags); > - rc = write_p2m_entry(p2m, gfn, l1_entry + i, new_entry, level); > + rc = write_p2m_entry(p2m, gfn_x(INVALID_GFN), l1_entry + i, > + new_entry, level); > if ( rc ) > { > unmap_domain_page(l1_entry); > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |