[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] x86/mem: Make mem_hotadd_check() more legible
Introduce a ROUND() macro to mirror ROUNDUP(). Use both to remove all the opencoded rounding in mem_hotadd_check(). Fix other minor style issues. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> --- CC: Jan Beulich <JBeulich@xxxxxxxx> CC: Roger Pau Monné <roger.pau@xxxxxxxxxx> CC: Wei Liu <wl@xxxxxxx> The compiled binary is identical. --- xen/arch/x86/x86_64/mm.c | 31 +++++++++++++------------------ xen/include/xen/macros.h | 1 + 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/xen/arch/x86/x86_64/mm.c b/xen/arch/x86/x86_64/mm.c index 60db439af3ec..38f978cab269 100644 --- a/xen/arch/x86/x86_64/mm.c +++ b/xen/arch/x86/x86_64/mm.c @@ -1159,10 +1159,10 @@ static int mem_hotadd_check(unsigned long spfn, unsigned long epfn) { unsigned long s, e, length, sidx, eidx; - if ( (spfn >= epfn) ) + if ( spfn >= epfn ) return 0; - if (pfn_to_pdx(epfn) > FRAMETABLE_NR) + if ( pfn_to_pdx(epfn) > FRAMETABLE_NR ) return 0; if ( (spfn | epfn) & ((1UL << PAGETABLE_ORDER) - 1) ) @@ -1172,10 +1172,9 @@ static int mem_hotadd_check(unsigned long spfn, unsigned long epfn) return 0; /* Make sure the new range is not present now */ - sidx = ((pfn_to_pdx(spfn) + PDX_GROUP_COUNT - 1) & ~(PDX_GROUP_COUNT - 1)) - / PDX_GROUP_COUNT; - eidx = (pfn_to_pdx(epfn - 1) & ~(PDX_GROUP_COUNT - 1)) / PDX_GROUP_COUNT; - if (sidx >= eidx) + sidx = ROUNDUP(pfn_to_pdx(spfn), PDX_GROUP_COUNT) / PDX_GROUP_COUNT; + eidx = ROUND (pfn_to_pdx(epfn - 1), PDX_GROUP_COUNT) / PDX_GROUP_COUNT; + if ( sidx >= eidx ) return 0; s = find_next_zero_bit(pdx_group_valid, eidx, sidx); @@ -1186,28 +1185,24 @@ static int mem_hotadd_check(unsigned long spfn, unsigned long epfn) return 0; /* Caculate at most required m2p/compat m2p/frametable pages */ - s = (spfn & ~((1UL << (L2_PAGETABLE_SHIFT - 3)) - 1)); - e = (epfn + (1UL << (L2_PAGETABLE_SHIFT - 3)) - 1) & - ~((1UL << (L2_PAGETABLE_SHIFT - 3)) - 1); + s = ROUND (spfn, 1UL << (L2_PAGETABLE_SHIFT - 3)); + e = ROUNDUP(epfn, 1UL << (L2_PAGETABLE_SHIFT - 3)); length = (e - s) * sizeof(unsigned long); - s = (spfn & ~((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1)); - e = (epfn + (1UL << (L2_PAGETABLE_SHIFT - 2)) - 1) & - ~((1UL << (L2_PAGETABLE_SHIFT - 2)) - 1); - - e = min_t(unsigned long, e, + s = ROUND (spfn, 1ULL << (L2_PAGETABLE_SHIFT - 2)); + e = min(ROUNDUP(epfn, 1ULL << (L2_PAGETABLE_SHIFT - 2)), (RDWR_COMPAT_MPT_VIRT_END - RDWR_COMPAT_MPT_VIRT_START) >> 2); if ( e > s ) - length += (e -s) * sizeof(unsigned int); + length += (e - s) * sizeof(unsigned int); - s = pfn_to_pdx(spfn) & ~(PDX_GROUP_COUNT - 1); - e = ( pfn_to_pdx(epfn) + (PDX_GROUP_COUNT - 1) ) & ~(PDX_GROUP_COUNT - 1); + s = ROUND (pfn_to_pdx(spfn), PDX_GROUP_COUNT); + e = ROUNDUP(pfn_to_pdx(epfn), PDX_GROUP_COUNT); length += (e - s) * sizeof(struct page_info); - if ((length >> PAGE_SHIFT) > (epfn - spfn)) + if ( (length >> PAGE_SHIFT) > (epfn - spfn) ) return 0; return 1; diff --git a/xen/include/xen/macros.h b/xen/include/xen/macros.h index 7b92d345044d..ceeffcaa95ff 100644 --- a/xen/include/xen/macros.h +++ b/xen/include/xen/macros.h @@ -1,6 +1,7 @@ #ifndef __MACROS_H__ #define __MACROS_H__ +#define ROUND(x, a) ((x) & ~((a) - 1)) #define ROUNDUP(x, a) (((x) + (a) - 1) & ~((a) - 1)) #define IS_ALIGNED(val, align) (!((val) & ((align) - 1))) base-commit: b1c16800e52743d9afd9af62c810f03af16dd942 -- 2.30.2
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |