Message ID | 20190507151458.29350-6-julien.grall@arm.com |
---|---|
State | Superseded |
Headers | show |
Series | xen/arm: Properly disable M2P on Arm. | expand |
On Tue, 7 May 2019, Julien Grall wrote: > This patch rework all the arch specific macros in grant_table.h to use > the typesafe MFN/GFN. > > At the same time, some functions are renamed s/gmfn/gfn/ to match the > current naming scheme (see include/mm.h). > > No functional changes intended. > > Signed-off-by: Julien Grall <julien.grall@arm.com> > Acked-by: Jan Beulich <jbeulich@suse.com> Reviewed-by: Stefano Stabellini <sstabellini@kernel.org> > --- > Changes in v2: > - Update commit message to explain the changes made > - Fix indentation > - Adapt the code to match the new prototype of mfn_to_gfn > - Add Jan's acked-by for non-ARM parts > --- > xen/common/grant_table.c | 4 ++-- > xen/include/asm-arm/grant_table.h | 12 ++++++------ > xen/include/asm-x86/grant_table.h | 19 +++++++------------ > 3 files changed, 15 insertions(+), 20 deletions(-) > > diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c > index 80728ea57d..abc966f775 100644 > --- a/xen/common/grant_table.c > +++ b/xen/common/grant_table.c > @@ -1935,7 +1935,7 @@ gnttab_setup_table( > op.status = GNTST_okay; > for ( i = 0; i < op.nr_frames; i++ ) > { > - xen_pfn_t gmfn = gnttab_shared_gmfn(d, gt, i); > + xen_pfn_t gmfn = gfn_x(gnttab_shared_gfn(d, gt, i)); > > /* Grant tables cannot be shared */ > BUG_ON(SHARED_M2P(gmfn)); > @@ -3149,7 +3149,7 @@ gnttab_get_status_frames(XEN_GUEST_HANDLE_PARAM(gnttab_get_status_frames_t) uop, > > for ( i = 0; i < op.nr_frames; i++ ) > { > - gmfn = gnttab_status_gmfn(d, gt, i); > + gmfn = gfn_x(gnttab_status_gfn(d, gt, i)); > if ( copy_to_guest_offset(op.frame_list, i, &gmfn, 1) ) > op.status = GNTST_bad_virt_addr; > } > diff --git a/xen/include/asm-arm/grant_table.h b/xen/include/asm-arm/grant_table.h > index 051db1362b..750536184e 100644 > --- a/xen/include/asm-arm/grant_table.h > +++ b/xen/include/asm-arm/grant_table.h > @@ -65,15 +65,15 @@ void gnttab_mark_dirty(struct domain *d, mfn_t mfn); > } while ( 0 ) > > #define gnttab_get_frame_gfn(gt, st, idx) ({ \ > - _gfn((st) ? gnttab_status_gmfn(NULL, gt, idx) \ > - : gnttab_shared_gmfn(NULL, gt, idx)); \ > + (st) ? gnttab_status_gfn(NULL, gt, idx) \ > + : gnttab_shared_gfn(NULL, gt, idx); \ > }) > > -#define gnttab_shared_gmfn(d, t, i) \ > - gfn_x(((i) >= nr_grant_frames(t)) ? INVALID_GFN : (t)->arch.shared_gfn[i]) > +#define gnttab_shared_gfn(d, t, i) \ > + (((i) >= nr_grant_frames(t)) ? INVALID_GFN : (t)->arch.shared_gfn[i]) > > -#define gnttab_status_gmfn(d, t, i) \ > - gfn_x(((i) >= nr_status_frames(t)) ? INVALID_GFN : (t)->arch.status_gfn[i]) > +#define gnttab_status_gfn(d, t, i) \ > + (((i) >= nr_status_frames(t)) ? INVALID_GFN : (t)->arch.status_gfn[i]) > > #define gnttab_need_iommu_mapping(d) \ > (is_domain_direct_mapped(d) && need_iommu_pt_sync(d)) > diff --git a/xen/include/asm-x86/grant_table.h b/xen/include/asm-x86/grant_table.h > index 8b604ed51f..661228dd39 100644 > --- a/xen/include/asm-x86/grant_table.h > +++ b/xen/include/asm-x86/grant_table.h > @@ -39,24 +39,19 @@ static inline int replace_grant_host_mapping(uint64_t addr, mfn_t frame, > #define gnttab_destroy_arch(gt) do {} while ( 0 ) > #define gnttab_set_frame_gfn(gt, st, idx, gfn) do {} while ( 0 ) > #define gnttab_get_frame_gfn(gt, st, idx) ({ \ > - unsigned long mfn_ = (st) ? gnttab_status_mfn(gt, idx) \ > - : gnttab_shared_mfn(gt, idx); \ > - unsigned long gpfn_ = get_gpfn_from_mfn(mfn_); \ > + mfn_t mfn_ = (st) ? gnttab_status_mfn(gt, idx) \ > + : gnttab_shared_mfn(gt, idx); \ > + unsigned long gpfn_ = get_gpfn_from_mfn(mfn_x(mfn_)); \ > VALID_M2P(gpfn_) ? _gfn(gpfn_) : INVALID_GFN; \ > }) > > -#define gnttab_shared_mfn(t, i) \ > - ((virt_to_maddr((t)->shared_raw[i]) >> PAGE_SHIFT)) > +#define gnttab_shared_mfn(t, i) _mfn(__virt_to_mfn((t)->shared_raw[i])) > > -#define gnttab_shared_gmfn(d, t, i) \ > - (mfn_to_gmfn(d, gnttab_shared_mfn(t, i))) > +#define gnttab_shared_gfn(d, t, i) mfn_to_gfn(d, gnttab_shared_mfn(t, i)) > > +#define gnttab_status_mfn(t, i) _mfn(__virt_to_mfn((t)->status[i])) > > -#define gnttab_status_mfn(t, i) \ > - ((virt_to_maddr((t)->status[i]) >> PAGE_SHIFT)) > - > -#define gnttab_status_gmfn(d, t, i) \ > - (mfn_to_gmfn(d, gnttab_status_mfn(t, i))) > +#define gnttab_status_gfn(d, t, i) mfn_to_gfn(d, gnttab_status_mfn(t, i)) > > #define gnttab_mark_dirty(d, f) paging_mark_dirty(d, f) > > -- > 2.11.0 >
diff --git a/xen/common/grant_table.c b/xen/common/grant_table.c index 80728ea57d..abc966f775 100644 --- a/xen/common/grant_table.c +++ b/xen/common/grant_table.c @@ -1935,7 +1935,7 @@ gnttab_setup_table( op.status = GNTST_okay; for ( i = 0; i < op.nr_frames; i++ ) { - xen_pfn_t gmfn = gnttab_shared_gmfn(d, gt, i); + xen_pfn_t gmfn = gfn_x(gnttab_shared_gfn(d, gt, i)); /* Grant tables cannot be shared */ BUG_ON(SHARED_M2P(gmfn)); @@ -3149,7 +3149,7 @@ gnttab_get_status_frames(XEN_GUEST_HANDLE_PARAM(gnttab_get_status_frames_t) uop, for ( i = 0; i < op.nr_frames; i++ ) { - gmfn = gnttab_status_gmfn(d, gt, i); + gmfn = gfn_x(gnttab_status_gfn(d, gt, i)); if ( copy_to_guest_offset(op.frame_list, i, &gmfn, 1) ) op.status = GNTST_bad_virt_addr; } diff --git a/xen/include/asm-arm/grant_table.h b/xen/include/asm-arm/grant_table.h index 051db1362b..750536184e 100644 --- a/xen/include/asm-arm/grant_table.h +++ b/xen/include/asm-arm/grant_table.h @@ -65,15 +65,15 @@ void gnttab_mark_dirty(struct domain *d, mfn_t mfn); } while ( 0 ) #define gnttab_get_frame_gfn(gt, st, idx) ({ \ - _gfn((st) ? gnttab_status_gmfn(NULL, gt, idx) \ - : gnttab_shared_gmfn(NULL, gt, idx)); \ + (st) ? gnttab_status_gfn(NULL, gt, idx) \ + : gnttab_shared_gfn(NULL, gt, idx); \ }) -#define gnttab_shared_gmfn(d, t, i) \ - gfn_x(((i) >= nr_grant_frames(t)) ? INVALID_GFN : (t)->arch.shared_gfn[i]) +#define gnttab_shared_gfn(d, t, i) \ + (((i) >= nr_grant_frames(t)) ? INVALID_GFN : (t)->arch.shared_gfn[i]) -#define gnttab_status_gmfn(d, t, i) \ - gfn_x(((i) >= nr_status_frames(t)) ? INVALID_GFN : (t)->arch.status_gfn[i]) +#define gnttab_status_gfn(d, t, i) \ + (((i) >= nr_status_frames(t)) ? INVALID_GFN : (t)->arch.status_gfn[i]) #define gnttab_need_iommu_mapping(d) \ (is_domain_direct_mapped(d) && need_iommu_pt_sync(d)) diff --git a/xen/include/asm-x86/grant_table.h b/xen/include/asm-x86/grant_table.h index 8b604ed51f..661228dd39 100644 --- a/xen/include/asm-x86/grant_table.h +++ b/xen/include/asm-x86/grant_table.h @@ -39,24 +39,19 @@ static inline int replace_grant_host_mapping(uint64_t addr, mfn_t frame, #define gnttab_destroy_arch(gt) do {} while ( 0 ) #define gnttab_set_frame_gfn(gt, st, idx, gfn) do {} while ( 0 ) #define gnttab_get_frame_gfn(gt, st, idx) ({ \ - unsigned long mfn_ = (st) ? gnttab_status_mfn(gt, idx) \ - : gnttab_shared_mfn(gt, idx); \ - unsigned long gpfn_ = get_gpfn_from_mfn(mfn_); \ + mfn_t mfn_ = (st) ? gnttab_status_mfn(gt, idx) \ + : gnttab_shared_mfn(gt, idx); \ + unsigned long gpfn_ = get_gpfn_from_mfn(mfn_x(mfn_)); \ VALID_M2P(gpfn_) ? _gfn(gpfn_) : INVALID_GFN; \ }) -#define gnttab_shared_mfn(t, i) \ - ((virt_to_maddr((t)->shared_raw[i]) >> PAGE_SHIFT)) +#define gnttab_shared_mfn(t, i) _mfn(__virt_to_mfn((t)->shared_raw[i])) -#define gnttab_shared_gmfn(d, t, i) \ - (mfn_to_gmfn(d, gnttab_shared_mfn(t, i))) +#define gnttab_shared_gfn(d, t, i) mfn_to_gfn(d, gnttab_shared_mfn(t, i)) +#define gnttab_status_mfn(t, i) _mfn(__virt_to_mfn((t)->status[i])) -#define gnttab_status_mfn(t, i) \ - ((virt_to_maddr((t)->status[i]) >> PAGE_SHIFT)) - -#define gnttab_status_gmfn(d, t, i) \ - (mfn_to_gmfn(d, gnttab_status_mfn(t, i))) +#define gnttab_status_gfn(d, t, i) mfn_to_gfn(d, gnttab_status_mfn(t, i)) #define gnttab_mark_dirty(d, f) paging_mark_dirty(d, f)