[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen master] x86/boot: Simplify address calculations in move_memory()
commit c960871c7c43c67e9fad0ac84ab5adca1401ef84 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Tue Oct 22 21:08:53 2024 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Wed Oct 23 10:27:36 2024 +0100 x86/boot: Simplify address calculations in move_memory() Given that soffs is the offset into the 2M superpage, start = (src - soffs) >> PAGE_SIFT is a complicated expression for the frame address of the containing superpage. Except, start is converted straight back to a byte address to use, so the shifting is unnecessary too. The only thing done with the mapped pointer is to have soffs added back on for the memmove() call. bootstrap_map_addr() passes through the offset, so we can pass src directly in and simplify the memmove() call too. For the end mapping address, this simplifies to just src + sz too. The same reasoning holds for dst and doffs. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Daniel P. Smith <dpsmith@xxxxxxxxxxxxxxxxxxxx> --- xen/arch/x86/setup.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/xen/arch/x86/setup.c b/xen/arch/x86/setup.c index 1199df988d..ce28e77060 100644 --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -492,31 +492,26 @@ static void __init move_memory( while ( size ) { - unsigned int start /* frame */; unsigned int end /* mapsz */; unsigned int soffs = src & mask; unsigned int doffs = dst & mask; unsigned int sz; void *d, *s; - start = (src - soffs) >> PAGE_SHIFT; end = soffs + size; if ( end > blksz ) end = blksz; sz = end - soffs; - s = bootstrap_map_addr(pfn_to_paddr(start), - pfn_to_paddr(start) + end); + s = bootstrap_map_addr(src, src + sz); - start = (dst - doffs) >> PAGE_SHIFT; end = doffs + size; if ( end > blksz ) end = blksz; if ( sz > end - doffs ) sz = end - doffs; - d = bootstrap_map_addr(pfn_to_paddr(start), - pfn_to_paddr(start) + end); + d = bootstrap_map_addr(dst, dst + sz); - memmove(d + doffs, s + soffs, sz); + memmove(d, s, sz); dst += sz; src += sz; -- generated by git-patchbot for /home/xen/git/xen.git#master
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |