arm64: kernel: do not mark reserved memory regions as IORESOURCE_BUSY
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Tue, 24 Jan 2017 17:11:40 +0000 (17:11 +0000)
committerWill Deacon <will.deacon@arm.com>
Thu, 26 Jan 2017 12:15:13 +0000 (12:15 +0000)
Memory regions marked as NOMAP should not be used for general allocation
by the kernel, and should not even be covered by the linear mapping
(hence the name). However, drivers or other subsystems (such as ACPI)
that access the firmware directly may legally access them, which means
it is also reasonable for such drivers to claim them by invoking
request_resource(). Currently, this is prevented by the fact that arm64's
request_standard_resources() marks reserved regions as IORESOURCE_BUSY.

So drop the IORESOURCE_BUSY flag from these requests.

Reported-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
arch/arm64/kernel/setup.c

index b5222094ab52db6fb56ea196767ba45e547a5920..952e2c0dabd51e24b6b64f3d76a98dc1c3c9b53b 100644 (file)
@@ -209,7 +209,7 @@ static void __init request_standard_resources(void)
                res = alloc_bootmem_low(sizeof(*res));
                if (memblock_is_nomap(region)) {
                        res->name  = "reserved";
-                       res->flags = IORESOURCE_MEM | IORESOURCE_BUSY;
+                       res->flags = IORESOURCE_MEM;
                } else {
                        res->name  = "System RAM";
                        res->flags = IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY;