• Mark Rutland's avatar
    arm64: Remove fixmap include fragility · 3eca86e7
    Mark Rutland authored
    The asm-generic fixmap.h depends on each architecture's fixmap.h to pull
    in the definition of PAGE_KERNEL_RO, if this exists. In the absence of
    this, FIXMAP_PAGE_RO will not be defined. In mm/early_ioremap.c the
    definition of early_memremap_ro is predicated on FIXMAP_PAGE_RO being
    defined.
    
    Currently, the arm64 fixmap.h doesn't include pgtable.h for the
    definition of PAGE_KERNEL_RO, and as a knock-on effect early_memremap_ro
    is not always defined, leading to link-time failures when it is used.
    This has been observed with defconfig on next-20160226.
    
    Unfortunately, as pgtable.h includes fixmap.h, adding the include
    introduces a circular dependency, which is just as fragile.
    
    Instead, this patch factors out PAGE_KERNEL_RO and other prot
    definitions into a new pgtable-prot header which can be included by poth
    pgtable.h and fixmap.h, avoiding the  circular dependency, and ensuring
    that early_memremap_ro is alwyas defined where it is used.
    Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
    Reported-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Acked-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Will Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    3eca86e7
pgtable-prot.h 4.03 KB