UPSTREAM: arm64: mm: fold alternatives into .init
authorMark Rutland <mark.rutland@arm.com>
Wed, 9 Dec 2015 12:44:38 +0000 (12:44 +0000)
committerJeff Vander Stoep <jeffv@google.com>
Sun, 18 Sep 2016 20:19:45 +0000 (13:19 -0700)
commit8ace694d891ede66ac585fa12aa76cb9c5530427
treede88e55ccea0de85c33fd5ebec759f9367130327
parent31400ef82e7ae74663e9ca8e041516ede5e617e4
UPSTREAM: arm64: mm: fold alternatives into .init

Currently we treat the alternatives separately from other data that's
only used during initialisation, using separate .altinstructions and
.altinstr_replacement linker sections. These are freed for general
allocation separately from .init*. This is problematic as:

* We do not remove execute permissions, as we do for .init, leaving the
  memory executable.

* We pad between them, making the kernel Image bianry up to PAGE_SIZE
  bytes larger than necessary.

This patch moves the two sections into the contiguous region used for
.init*. This saves some memory, ensures that we remove execute
permissions, and allows us to remove some code made redundant by this
reorganisation.

Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Cc: Andre Przywara <andre.przywara@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Jeremy Linton <jeremy.linton@arm.com>
Cc: Laura Abbott <labbott@fedoraproject.org>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: Will Deacon <will.deacon@arm.com>
Bug: 30369029
Patchset: rework-pagetable

(cherry picked from commit 9aa4ec1571da62366cfddc20f3b923609604fe63)
Signed-off-by: Jeff Vander Stoep <jeffv@google.com>
Change-Id: I3fee118ead5c73ade50ea10d436881c9424a549c
arch/arm64/include/asm/alternative.h
arch/arm64/kernel/alternative.c
arch/arm64/kernel/vmlinux.lds.S
arch/arm64/mm/init.c