On Wed, 28 Oct 2020 at 14:01, Russell King - ARM Linux admin <linux@xxxxxxxxxxxxxxx> wrote: > > On Wed, Oct 28, 2020 at 01:52:48PM +0100, Ard Biesheuvel wrote: > > Does this help? > > > > diff --git a/arch/arm/include/asm/memory.h b/arch/arm/include/asm/memory.h > > index bb79e52aeb90..4f355bda872a 100644 > > --- a/arch/arm/include/asm/memory.h > > +++ b/arch/arm/include/asm/memory.h > > @@ -68,8 +68,8 @@ > > #define XIP_VIRT_ADDR(physaddr) (MODULES_VADDR + ((physaddr) & 0x000fffff)) > > > > #define FDT_FIXED_BASE UL(0xff800000) > > -#define FDT_FIXED_SIZE (2 * PMD_SIZE) > > -#define FDT_VIRT_ADDR(physaddr) ((void *)(FDT_FIXED_BASE | > > (physaddr) % PMD_SIZE)) > > +#define FDT_FIXED_SIZE (2 * SECTION_SIZE) > > +#define FDT_VIRT_ADDR(physaddr) ((void *)(FDT_FIXED_BASE | > > (physaddr) % SECTION_SIZE)) > > Is this correct? If the FDT fixed size is 2x, why does FDT_VIRT_ADDR() > only work for half of it? > Perhaps the naming is confusing. This is only used to obtain the start of the virtually mapped DT, which amounts to the virtual address of the section plus the physical address modulo the section size. I will rename physaddr to physbase when I respin this as a patch. Shall I rename FDT_VIRT_ADDR to FDT_VIRT_BASE as well?