arm64: use both ZONE_DMA and ZONE_DMA32
authorNicolas Saenz Julienne <nsaenzjulienne@suse.de>
Wed, 11 Sep 2019 18:25:45 +0000 (20:25 +0200)
committerCatalin Marinas <catalin.marinas@arm.com>
Mon, 14 Oct 2019 09:56:28 +0000 (10:56 +0100)
commit1a8e1cef7603e218339ac63cb3178b25554524e5
tree99551151197c340df1954232793d142149717b72
parenta573cdd7973dedd87e62196c400332896bb236c8
arm64: use both ZONE_DMA and ZONE_DMA32

So far all arm64 devices have supported 32 bit DMA masks for their
peripherals. This is not true anymore for the Raspberry Pi 4 as most of
it's peripherals can only address the first GB of memory on a total of
up to 4 GB.

This goes against ZONE_DMA32's intent, as it's expected for ZONE_DMA32
to be addressable with a 32 bit mask. So it was decided to re-introduce
ZONE_DMA in arm64.

ZONE_DMA will contain the lower 1G of memory, which is currently the
memory area addressable by any peripheral on an arm64 device.
ZONE_DMA32 will contain the rest of the 32 bit addressable memory.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
arch/arm64/Kconfig
arch/arm64/include/asm/page.h
arch/arm64/mm/init.c