[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/2] x86/paging: tidy paging_mfn_is_dirty()
On 01/12/2021 10:35, Jan Beulich wrote: > The function returning a boolean indicator, make it return bool. Also > constify its struct domain parameter, albeit requiring to also adjust > mm_locked_by_me(). Furthermore the function is used by shadow code only. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > > --- a/xen/arch/x86/mm/mm-locks.h > +++ b/xen/arch/x86/mm/mm-locks.h > @@ -40,7 +40,7 @@ static inline void mm_lock_init(mm_lock_ > l->unlock_level = 0; > } > > -static inline int mm_locked_by_me(mm_lock_t *l) > +static inline int mm_locked_by_me(const mm_lock_t *l) bool too? > { > return (l->lock.recurse_cpu == current->processor); > } > --- a/xen/arch/x86/mm/paging.c > +++ b/xen/arch/x86/mm/paging.c > @@ -351,14 +351,14 @@ void paging_mark_dirty(struct domain *d, > paging_mark_pfn_dirty(d, pfn); > } > > - > +#ifdef CONFIG_SHADOW_PAGING > /* Is this guest page dirty? */ > -int paging_mfn_is_dirty(struct domain *d, mfn_t gmfn) > +bool paging_mfn_is_dirty(const struct domain *d, mfn_t gmfn) > { > pfn_t pfn; > mfn_t mfn, *l4, *l3, *l2; > unsigned long *l1; > - int rv; > + bool dirty; > > ASSERT(paging_locked_by_me(d)); > ASSERT(paging_mode_log_dirty(d)); > @@ -367,36 +367,37 @@ int paging_mfn_is_dirty(struct domain *d > pfn = _pfn(get_gpfn_from_mfn(mfn_x(gmfn))); There's nothing inherently paging.c related about this function. Thoughts on moving the implementation across, rather than #ifdef-ing it? If not, can we at least correct gmfn to mfn here and in the prototype? Alternatively, do we want to start putting things like this in a real library so we can have the toolchain figure this out automatically? > /* Invalid pages can't be dirty. */ > if ( unlikely(!VALID_M2P(pfn_x(pfn))) ) > - return 0; > + return false; > > mfn = d->arch.paging.log_dirty.top; > if ( !mfn_valid(mfn) ) These don't need to be mfn_valid(). They can be checks against MFN_INVALID instead, because the logdirty bitmap is a Xen internal structure. In response to your comment in the previous patch, this would substantially reduce the overhead of paging_mark_pfn_dirty() and paging_mfn_is_dirty(). ~Andrew
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |