On Wed, Dec 4, 2024, at 19:41, Andy Shevchenko wrote: > On Wed, Dec 4, 2024 at 12:31 PM Arnd Bergmann <arnd@xxxxxxxxxx> wrote: >> >> From: Arnd Bergmann <arnd@xxxxxxxx> >> >> Since kernels with and without CONFIG_X86_PAE are now limited >> to the low 4GB of physical address space, there is no need to >> use either swiotlb or 64-bit phys_addr_t any more, so stop >> selecting these and fix up the build warnings from that. > > ... > >> mtrr_type_lookup(addr, addr + PMD_SIZE, &uniform); >> if (!uniform) { >> pr_warn_once("%s: Cannot satisfy [mem %#010llx-%#010llx] with a huge-page mapping due to MTRR override.\n", >> - __func__, addr, addr + PMD_SIZE); >> + __func__, (u64)addr, (u64)addr + PMD_SIZE); > > Instead of castings I would rather: > 1) have addr and size (? does above have off-by-one error?) or end; > 2) use struct resource / range with the respective %p[Rr][a] specifier > or use %pa. Changed as below now. I'm still not sure whether the mtrr_type_lookup end argument is meant to be inclusive or exclusive, so I've left that alone, but the printed range should be correct now. Thanks, Arnd @@ -740,11 +740,12 @@ int pud_set_huge(pud_t *pud, phys_addr_t addr, pgprot_t prot) int pmd_set_huge(pmd_t *pmd, phys_addr_t addr, pgprot_t prot) { u8 uniform; + struct resource res = DEFINE_RES_MEM(addr, PMD_SIZE); mtrr_type_lookup(addr, addr + PMD_SIZE, &uniform); if (!uniform) { - pr_warn_once("%s: Cannot satisfy [mem %#010llx-%#010llx] with a huge-page mapping due to MTRR override.\n", - __func__, (u64)addr, (u64)addr + PMD_SIZE); + pr_warn_once("%s: Cannot satisfy %pR with a huge-page mapping due to MTRR override.\n", + __func__, &res); return 0; }