[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v6 1/5] x86/p2m: pass the p2m to write_p2m_entry handlers
Gah -- sorry, Juergen, I pushed this series to staging erroneously; it wasn't targeted for 4.12 and doesn't have your release ack. Should I revert it? -George On Wed, Feb 27, 2019 at 11:10 AM Roger Pau Monne <roger.pau@xxxxxxxxxx> wrote: > > Current callers pass the p2m to paging_write_p2m_entry, but the > implementation specific handlers of the write_p2m_entry hook instead > of a p2m get a domain struct due to the handling done in > paging_write_p2m_entry. > > Change the code so that the implementations of write_p2m_entry take a > p2m instead of a domain. > > This is a non-functional change, but will be used by follow up > patches. > > Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx> > Reviewed-by: Wei Liu <wei.liu2@xxxxxxxxxx> > Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxxx> > --- > Cc: George Dunlap <george.dunlap@xxxxxxxxxxxxx> > Cc: Jan Beulich <jbeulich@xxxxxxxx> > Cc: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > Cc: Wei Liu <wei.liu2@xxxxxxxxxx> > Cc: Tim Deegan <tim@xxxxxxx> > --- > Changes since v4: > - New in this version. > --- > xen/arch/x86/mm/hap/hap.c | 3 ++- > xen/arch/x86/mm/paging.c | 2 +- > xen/arch/x86/mm/shadow/common.c | 4 +++- > xen/arch/x86/mm/shadow/none.c | 2 +- > xen/arch/x86/mm/shadow/private.h | 2 +- > xen/include/asm-x86/paging.h | 3 ++- > 6 files changed, 10 insertions(+), 6 deletions(-) > > diff --git a/xen/arch/x86/mm/hap/hap.c b/xen/arch/x86/mm/hap/hap.c > index 3d651b94c3..28fe48d158 100644 > --- a/xen/arch/x86/mm/hap/hap.c > +++ b/xen/arch/x86/mm/hap/hap.c > @@ -709,9 +709,10 @@ static void hap_update_paging_modes(struct vcpu *v) > } > > static void > -hap_write_p2m_entry(struct domain *d, unsigned long gfn, l1_pgentry_t *p, > +hap_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn, l1_pgentry_t > *p, > l1_pgentry_t new, unsigned int level) > { > + struct domain *d = p2m->domain; > uint32_t old_flags; > bool_t flush_nestedp2m = 0; > > diff --git a/xen/arch/x86/mm/paging.c b/xen/arch/x86/mm/paging.c > index d5836eb688..e6ed3006fe 100644 > --- a/xen/arch/x86/mm/paging.c > +++ b/xen/arch/x86/mm/paging.c > @@ -941,7 +941,7 @@ void paging_write_p2m_entry(struct p2m_domain *p2m, > unsigned long gfn, > if ( v->domain != d ) > v = d->vcpu ? d->vcpu[0] : NULL; > if ( likely(v && paging_mode_enabled(d) && paging_get_hostmode(v) != > NULL) ) > - paging_get_hostmode(v)->write_p2m_entry(d, gfn, p, new, level); > + paging_get_hostmode(v)->write_p2m_entry(p2m, gfn, p, new, level); > else > safe_write_pte(p, new); > } > diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c > index 07840ff727..6c67ef4996 100644 > --- a/xen/arch/x86/mm/shadow/common.c > +++ b/xen/arch/x86/mm/shadow/common.c > @@ -3177,10 +3177,12 @@ static void sh_unshadow_for_p2m_change(struct domain > *d, unsigned long gfn, > } > > void > -shadow_write_p2m_entry(struct domain *d, unsigned long gfn, > +shadow_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn, > l1_pgentry_t *p, l1_pgentry_t new, > unsigned int level) > { > + struct domain *d = p2m->domain; > + > paging_lock(d); > > /* If there are any shadows, update them. But if shadow_teardown() > diff --git a/xen/arch/x86/mm/shadow/none.c b/xen/arch/x86/mm/shadow/none.c > index 4de645a433..316002771d 100644 > --- a/xen/arch/x86/mm/shadow/none.c > +++ b/xen/arch/x86/mm/shadow/none.c > @@ -60,7 +60,7 @@ static void _update_paging_modes(struct vcpu *v) > ASSERT_UNREACHABLE(); > } > > -static void _write_p2m_entry(struct domain *d, unsigned long gfn, > +static void _write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn, > l1_pgentry_t *p, l1_pgentry_t new, > unsigned int level) > { > diff --git a/xen/arch/x86/mm/shadow/private.h > b/xen/arch/x86/mm/shadow/private.h > index e8ed7ac714..0aaed1edfc 100644 > --- a/xen/arch/x86/mm/shadow/private.h > +++ b/xen/arch/x86/mm/shadow/private.h > @@ -372,7 +372,7 @@ extern int sh_remove_write_access(struct domain *d, mfn_t > readonly_mfn, > unsigned long fault_addr); > > /* Functions that atomically write PT/P2M entries and update state */ > -void shadow_write_p2m_entry(struct domain *d, unsigned long gfn, > +void shadow_write_p2m_entry(struct p2m_domain *p2m, unsigned long gfn, > l1_pgentry_t *p, l1_pgentry_t new, > unsigned int level); > > diff --git a/xen/include/asm-x86/paging.h b/xen/include/asm-x86/paging.h > index fdcc22844b..7ec09d7b11 100644 > --- a/xen/include/asm-x86/paging.h > +++ b/xen/include/asm-x86/paging.h > @@ -124,7 +124,8 @@ struct paging_mode { > void (*update_cr3 )(struct vcpu *v, int do_locking, > bool noflush); > void (*update_paging_modes )(struct vcpu *v); > - void (*write_p2m_entry )(struct domain *d, unsigned long > gfn, > + void (*write_p2m_entry )(struct p2m_domain *p2m, > + unsigned long gfn, > l1_pgentry_t *p, l1_pgentry_t > new, > unsigned int level); > > -- > 2.17.2 (Apple Git-113) > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/mailman/listinfo/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |