If a module's length is an exact multiple of PAGE_SIZE, the 2nd argument passed to set_pdx_range() would be one larger than intended. Use PFN_{UP,DOWN}() there instead.
Fixes: cd7cc5320bb2 ("x86/boot: add start and size fields to struct boot_module") Signed-off-by: Jan Beulich <jbeul...@suse.com> --- a/xen/arch/x86/setup.c +++ b/xen/arch/x86/setup.c @@ -1730,7 +1730,7 @@ void asmlinkage __init noreturn __start_ { unsigned long s = bi->mods[i].start, l = bi->mods[i].size; - set_pdx_range(paddr_to_pfn(s), paddr_to_pfn(s + l) + 1); + set_pdx_range(PFN_DOWN(s), PFN_UP(s + l)); map_pages_to_xen((unsigned long)maddr_to_virt(s), maddr_to_mfn(s), PFN_UP(l), PAGE_HYPERVISOR); }