The debug WARN() printing occurs after the while loop, so the 'phys_addr' reflects the last physical address rather than the actual starting physical address, which is not useful for debugging. To simplify, the WARN() statement could be moved up before the loop instead of introducing a new variable to record the original 'phys_addr' value. Additionally, swap the print order of 'slot_virt[slot]' and 'offset', as this will enhance output readability. Signed-off-by: Hou Wenlong --- mm/early_ioremap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/early_ioremap.c b/mm/early_ioremap.c index ff35b84a7b50..3fdde074c9da 100644 --- a/mm/early_ioremap.c +++ b/mm/early_ioremap.c @@ -139,6 +139,9 @@ __early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot) if (WARN_ON(nrpages > NR_FIX_BTMAPS)) return NULL; + WARN(early_ioremap_debug, "%s(%pa, %08lx) [%d] => %08lx + %08lx\n", + __func__, &phys_addr, size, slot, slot_virt[slot], offset); + /* * Ok, go for it.. */ @@ -152,8 +155,6 @@ __early_ioremap(resource_size_t phys_addr, unsigned long size, pgprot_t prot) --idx; --nrpages; } - WARN(early_ioremap_debug, "%s(%pa, %08lx) [%d] => %08lx + %08lx\n", - __func__, &phys_addr, size, slot, offset, slot_virt[slot]); prev_map[slot] = (void __iomem *)(offset + slot_virt[slot]); return prev_map[slot]; -- 2.31.1