[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 2/8] xen: clean up grant_table.h
> -----Original Message----- > From: Xen-devel [mailto:xen-devel-bounces@xxxxxxxxxxxxx] On Behalf Of > Juergen Gross > Sent: 06 September 2017 09:26 > To: xen-devel@xxxxxxxxxxxxx > Cc: Juergen Gross <jgross@xxxxxxxx>; sstabellini@xxxxxxxxxx; Wei Liu > <wei.liu2@xxxxxxxxxx>; George Dunlap <George.Dunlap@xxxxxxxxxx>; > Andrew Cooper <Andrew.Cooper3@xxxxxxxxxx>; Ian Jackson > <Ian.Jackson@xxxxxxxxxx>; Tim (Xen.org) <tim@xxxxxxx>; > jbeulich@xxxxxxxx > Subject: [Xen-devel] [PATCH v2 2/8] xen: clean up grant_table.h > > Many definitions can be moved from xen/grant_table.h to > common/grant_table.c now, as they are no longer used in other sources. > > Signed-off-by: Juergen Gross <jgross@xxxxxxxx> Reviewed-by: Paul Durrant <paul.durrant@xxxxxxxxxx> > --- > xen/common/grant_table.c | 81 > +++++++++++++++++++++++++++++++++++++++-- > xen/include/xen/grant_table.h | 84 > ------------------------------------------- > 2 files changed, 79 insertions(+), 86 deletions(-) > > diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c > index 4c2e9e40a5..a94dfdda7b 100644 > --- a/xen/common/grant_table.c > +++ b/xen/common/grant_table.c > @@ -40,6 +40,42 @@ > #include <xsm/xsm.h> > #include <asm/flushtlb.h> > > +/* Per-domain grant information. */ > +struct grant_table { > + /* > + * Lock protecting updates to grant table state (version, active > + * entry list, etc.) > + */ > + percpu_rwlock_t lock; > + /* Table size. Number of frames shared with guest */ > + unsigned int nr_grant_frames; > + /* Shared grant table (see include/public/grant_table.h). */ > + union { > + void **shared_raw; > + struct grant_entry_v1 **shared_v1; > + union grant_entry_v2 **shared_v2; > + }; > + /* Number of grant status frames shared with guest (for version 2) */ > + unsigned int nr_status_frames; > + /* State grant table (see include/public/grant_table.h). */ > + grant_status_t **status; > + /* Active grant table. */ > + struct active_grant_entry **active; > + /* Mapping tracking table per vcpu. */ > + struct grant_mapping **maptrack; > + unsigned int maptrack_limit; > + /* Lock protecting the maptrack limit */ > + spinlock_t maptrack_lock; > + /* The defined versions are 1 and 2. Set to 0 if we don't know > + what version to use yet. */ > + unsigned gt_version; > +}; > + > +#ifndef DEFAULT_MAX_NR_GRANT_FRAMES /* to allow arch to override > */ > +/* Default maximum size of a grant table. [POLICY] */ > +#define DEFAULT_MAX_NR_GRANT_FRAMES 32 > +#endif > + > unsigned int __read_mostly max_grant_frames; > integer_param("gnttab_max_frames", max_grant_frames); > > @@ -118,6 +154,18 @@ struct grant_mapping { > uint32_t pad; /* round size to a power of 2 */ > }; > > +/* Number of grant table frames. Caller must hold d's grant table lock. */ > +static inline unsigned int nr_grant_frames(const struct grant_table *gt) > +{ > + return gt->nr_grant_frames; > +} > + > +/* Number of status grant table frames. Caller must hold d's gr. table > lock.*/ > +static inline unsigned int nr_status_frames(const struct grant_table *gt) > +{ > + return gt->nr_status_frames; > +} > + > #define MAPTRACK_PER_PAGE (PAGE_SIZE / sizeof(struct grant_mapping)) > #define maptrack_entry(t, e) \ > ((t)->maptrack[(e)/MAPTRACK_PER_PAGE][(e)%MAPTRACK_PER_PAGE]) > @@ -197,7 +245,27 @@ static inline void act_set_gfn(struct > active_grant_entry *act, gfn_t gfn) > #endif > } > > -DEFINE_PERCPU_RWLOCK_GLOBAL(grant_rwlock); > +static DEFINE_PERCPU_RWLOCK_GLOBAL(grant_rwlock); > + > +static inline void grant_read_lock(struct grant_table *gt) > +{ > + percpu_read_lock(grant_rwlock, >->lock); > +} > + > +static inline void grant_read_unlock(struct grant_table *gt) > +{ > + percpu_read_unlock(grant_rwlock, >->lock); > +} > + > +static inline void grant_write_lock(struct grant_table *gt) > +{ > + percpu_write_lock(grant_rwlock, >->lock); > +} > + > +static inline void grant_write_unlock(struct grant_table *gt) > +{ > + percpu_write_unlock(grant_rwlock, >->lock); > +} > > static inline void gnttab_flush_tlb(const struct domain *d) > { > @@ -250,6 +318,15 @@ static inline void active_entry_release(struct > active_grant_entry *act) > spin_unlock(&act->lock); > } > > +#define GRANT_STATUS_PER_PAGE (PAGE_SIZE / sizeof(grant_status_t)) > +#define GRANT_PER_PAGE (PAGE_SIZE / sizeof(grant_entry_v2_t)) > +/* Number of grant table status entries. Caller must hold d's gr. table > lock.*/ > +static inline unsigned int grant_to_status_frames(unsigned int > grant_frames) > +{ > + return (grant_frames * GRANT_PER_PAGE + GRANT_STATUS_PER_PAGE > - 1) / > + GRANT_STATUS_PER_PAGE; > +} > + > /* Check if the page has been paged out, or needs unsharing. > If rc == GNTST_okay, *page contains the page struct with a ref taken. > Caller must do put_page(*page). > @@ -1580,7 +1657,7 @@ gnttab_unpopulate_status_frames(struct domain > *d, struct grant_table *gt) > * Grow the grant table. The caller must hold the grant table's > * write lock before calling this function. > */ > -int > +static int > gnttab_grow_table(struct domain *d, unsigned int req_nr_frames) > { > struct grant_table *gt = d->grant_table; > diff --git a/xen/include/xen/grant_table.h b/xen/include/xen/grant_table.h > index 43ec6c4d80..43b07e60c5 100644 > --- a/xen/include/xen/grant_table.h > +++ b/xen/include/xen/grant_table.h > @@ -29,66 +29,9 @@ > #include <asm/page.h> > #include <asm/grant_table.h> > > -#ifndef DEFAULT_MAX_NR_GRANT_FRAMES /* to allow arch to override */ > -/* Default maximum size of a grant table. [POLICY] */ > -#define DEFAULT_MAX_NR_GRANT_FRAMES 32 > -#endif > /* The maximum size of a grant table. */ > extern unsigned int max_grant_frames; > > -DECLARE_PERCPU_RWLOCK_GLOBAL(grant_rwlock); > - > -/* Per-domain grant information. */ > -struct grant_table { > - /* > - * Lock protecting updates to grant table state (version, active > - * entry list, etc.) > - */ > - percpu_rwlock_t lock; > - /* Table size. Number of frames shared with guest */ > - unsigned int nr_grant_frames; > - /* Shared grant table (see include/public/grant_table.h). */ > - union { > - void **shared_raw; > - struct grant_entry_v1 **shared_v1; > - union grant_entry_v2 **shared_v2; > - }; > - /* Number of grant status frames shared with guest (for version 2) */ > - unsigned int nr_status_frames; > - /* State grant table (see include/public/grant_table.h). */ > - grant_status_t **status; > - /* Active grant table. */ > - struct active_grant_entry **active; > - /* Mapping tracking table per vcpu. */ > - struct grant_mapping **maptrack; > - unsigned int maptrack_limit; > - /* Lock protecting the maptrack limit */ > - spinlock_t maptrack_lock; > - /* The defined versions are 1 and 2. Set to 0 if we don't know > - what version to use yet. */ > - unsigned gt_version; > -}; > - > -static inline void grant_read_lock(struct grant_table *gt) > -{ > - percpu_read_lock(grant_rwlock, >->lock); > -} > - > -static inline void grant_read_unlock(struct grant_table *gt) > -{ > - percpu_read_unlock(grant_rwlock, >->lock); > -} > - > -static inline void grant_write_lock(struct grant_table *gt) > -{ > - percpu_write_lock(grant_rwlock, >->lock); > -} > - > -static inline void grant_write_unlock(struct grant_table *gt) > -{ > - percpu_write_unlock(grant_rwlock, >->lock); > -} > - > /* Create/destroy per-domain grant table context. */ > int grant_table_create( > struct domain *d); > @@ -106,33 +49,6 @@ void > gnttab_release_mappings( > struct domain *d); > > -/* Increase the size of a domain's grant table. > - * Caller must hold d's grant table write lock. > - */ > -int > -gnttab_grow_table(struct domain *d, unsigned int req_nr_frames); > - > -/* Number of grant table frames. Caller must hold d's grant table lock. */ > -static inline unsigned int nr_grant_frames(struct grant_table *gt) > -{ > - return gt->nr_grant_frames; > -} > - > -/* Number of status grant table frames. Caller must hold d's gr. table > lock.*/ > -static inline unsigned int nr_status_frames(struct grant_table *gt) > -{ > - return gt->nr_status_frames; > -} > - > -#define GRANT_STATUS_PER_PAGE (PAGE_SIZE / sizeof(grant_status_t)) > -#define GRANT_PER_PAGE (PAGE_SIZE / sizeof(grant_entry_v2_t)) > -/* Number of grant table status entries. Caller must hold d's gr. table > lock.*/ > -static inline unsigned int grant_to_status_frames(int grant_frames) > -{ > - return (grant_frames * GRANT_PER_PAGE + GRANT_STATUS_PER_PAGE > - 1) / > - GRANT_STATUS_PER_PAGE; > -} > - > int mem_sharing_gref_to_gfn(struct grant_table *gt, grant_ref_t ref, > gfn_t *gfn, uint16_t *status); > > -- > 2.12.3 > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > https://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |