]> git.baikalelectronics.ru Git - kernel.git/commit
arm64: Remove fixmap include fragility
authorMark Rutland <mark.rutland@arm.com>
Fri, 26 Feb 2016 14:31:32 +0000 (14:31 +0000)
committerCatalin Marinas <catalin.marinas@arm.com>
Fri, 26 Feb 2016 15:22:53 +0000 (15:22 +0000)
commit674b1fe06a76453a0ae6f1ad8baa7e7783975ecc
tree8e1b4380409a85a922ee0d3f622b5dd4d16bcfad
parentc8328b59098eb624ff191d14963f80f7b0a1affa
arm64: Remove fixmap include fragility

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: Mark Rutland <mark.rutland@arm.com>
Reported-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Acked-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/include/asm/fixmap.h
arch/arm64/include/asm/pgtable-prot.h [new file with mode: 0644]
arch/arm64/include/asm/pgtable.h