[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen master] gnttab: drop struct active_grant_entry's gfn field for release builds
commit cff9f4b5dfcc57038f63757d2fba538fd9ce0f1a Author: Jan Beulich <jbeulich@xxxxxxxx> AuthorDate: Thu Aug 17 14:44:02 2017 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Thu Aug 17 14:44:02 2017 +0200 gnttab: drop struct active_grant_entry's gfn field for release builds This shrinks the size from 48 to 40 bytes bytes on 64-bit builds. Switch to gfn_t at once. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- xen/common/grant_table.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index b522e62..fdd8e4e 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -185,7 +185,9 @@ struct active_grant_entry { grant_ref_t trans_gref; struct domain *trans_domain; unsigned long frame; /* Frame being granted. */ - unsigned long gfn; /* Guest's idea of the frame being granted. */ +#ifndef NDEBUG + gfn_t gfn; /* Guest's idea of the frame being granted. */ +#endif spinlock_t lock; /* lock to protect access of this entry. see docs/misc/grant-tables.txt for locking protocol */ @@ -195,6 +197,13 @@ struct active_grant_entry { #define _active_entry(t, e) \ ((t)->active[(e)/ACGNT_PER_PAGE][(e)%ACGNT_PER_PAGE]) +static inline void act_set_gfn(struct active_grant_entry *act, gfn_t gfn) +{ +#ifndef NDEBUG + act->gfn = gfn; +#endif +} + DEFINE_PERCPU_RWLOCK_GLOBAL(grant_rwlock); static inline void gnttab_flush_tlb(const struct domain *d) @@ -891,7 +900,7 @@ map_grant_ref( op->flags & GNTMAP_readonly, rd); if ( rc != GNTST_okay ) goto unlock_out_clear; - act->gfn = gfn; + act_set_gfn(act, _gfn(gfn)); act->domid = ld->domain_id; act->frame = frame; act->start = 0; @@ -2278,7 +2287,7 @@ acquire_grant_for_copy( act->trans_domain = td; act->trans_gref = trans_gref; act->frame = grant_frame; - act->gfn = gfn_x(INVALID_GFN); + act_set_gfn(act, INVALID_GFN); /* * The actual remote remote grant may or may not be a sub-page, * but we always treat it as one because that blocks mappings of @@ -2304,7 +2313,7 @@ acquire_grant_for_copy( rc = get_paged_frame(gfn, &grant_frame, page, readonly, rd); if ( rc != GNTST_okay ) goto unlock_out_clear; - act->gfn = gfn; + act_set_gfn(act, _gfn(gfn)); is_sub_page = false; trans_page_off = 0; trans_length = PAGE_SIZE; @@ -2315,7 +2324,7 @@ acquire_grant_for_copy( readonly, rd); if ( rc != GNTST_okay ) goto unlock_out_clear; - act->gfn = sha2->full_page.frame; + act_set_gfn(act, _gfn(sha2->full_page.frame)); is_sub_page = false; trans_page_off = 0; trans_length = PAGE_SIZE; @@ -2326,7 +2335,7 @@ acquire_grant_for_copy( readonly, rd); if ( rc != GNTST_okay ) goto unlock_out_clear; - act->gfn = sha2->sub_page.frame; + act_set_gfn(act, _gfn(sha2->sub_page.frame)); is_sub_page = true; trans_page_off = sha2->sub_page.page_off; trans_length = sha2->sub_page.length; @@ -3491,8 +3500,16 @@ void grant_table_warn_active_grants(struct domain *d) nr_active++; if ( nr_active <= WARN_GRANT_MAX ) - printk(XENLOG_G_DEBUG "Dom%d has an active grant: GFN: %lx (MFN: %lx)\n", - d->domain_id, act->gfn, act->frame); + printk(XENLOG_G_DEBUG "Dom%d has active grant %x (" +#ifndef NDEBUG + "GFN %lx, " +#endif + "MFN: %lx)\n", + d->domain_id, ref, +#ifndef NDEBUG + gfn_x(act->gfn), +#endif + act->frame); active_entry_release(act); } -- generated by git-patchbot for /home/xen/git/xen.git#master _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxx https://lists.xenproject.org/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |