linux/arch/arm64
Ard Biesheuvel e75c4b6515 arm64: vmemmap: use virtual projection of linear region
commit dfd55ad85e upstream.

Commit dd006da216 ("arm64: mm: increase VA range of identity map") made
some changes to the memory mapping code to allow physical memory to reside
at an offset that exceeds the size of the virtual mapping.

However, since the size of the vmemmap area is proportional to the size of
the VA area, but it is populated relative to the physical space, we may
end up with the struct page array being mapped outside of the vmemmap
region. For instance, on my Seattle A0 box, I can see the following output
in the dmesg log.

   vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000   (     8 GB maximum)
             0xffffffbfc0000000 - 0xffffffbfd0000000   (   256 MB actual)

We can fix this by deciding that the vmemmap region is not a projection of
the physical space, but of the virtual space above PAGE_OFFSET, i.e., the
linear region. This way, we are guaranteed that the vmemmap region is of
sufficient size, and we can even reduce the size by half.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2016-03-09 15:34:52 -08:00
..
boot ls2080a/dts: Add little endian property for GPIO IP block 2015-12-11 16:13:03 -08:00
configs arm64 fixes and clean-ups: 2015-11-12 15:33:11 -08:00
crypto arm64: crypto: reduce priority of core AES cipher 2015-11-18 12:09:08 +00:00
include arm64: vmemmap: use virtual projection of linear region 2016-03-09 15:34:52 -08:00
kernel arm64: kernel: fix architected PMU registers unconditional access 2016-01-31 11:29:04 -08:00
kvm arm/arm64: KVM: Fix ioctl error handling 2016-03-09 15:34:51 -08:00
lib arm64: add KASAN support 2015-10-12 17:46:36 +01:00
mm arm64: vmemmap: use virtual projection of linear region 2016-03-09 15:34:52 -08:00
net arm64: bpf: add 'store immediate' instruction 2015-12-03 11:38:31 -05:00
xen arm: xen: implement multicall hypercall support. 2014-04-24 13:09:46 +01:00
Kconfig arm64 fixes: 2015-11-27 11:09:59 -08:00
Kconfig.debug arm64: remove redundant FRAME_POINTER kconfig option and force to select it 2015-11-10 10:36:00 +00:00
Kconfig.platforms ARM: DT updates for v4.4 2015-11-10 15:06:26 -08:00
Makefile arm64: errata: Add -mpc-relative-literal-loads to build flags 2016-03-03 15:07:08 -08:00