Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1715402

[PATCH 01/14] efi: arm: Don't mark ACPI reclaim memory as MEMBLOCK_NOMAP

From Ard Biesheuvel <ard.biesheuvel@linaro.org>
Newsgroups linux.kernel
Subject [PATCH 01/14] efi: arm: Don't mark ACPI reclaim memory as MEMBLOCK_NOMAP
Date 2017-08-18 22:00 +0200
Message-ID <ufVB0-89n-15@gated-at.bofh.it> (permalink)
References <ufVB0-89n-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On ARM, regions of memory that are described by UEFI as having special
significance to the firmware itself are omitted from the linear mapping.
This is necessary since we cannot guarantee that alternate mappings of
the same physical region will use attributes that are compatible with
the ones we use for the linear mapping, and aliases with mismatched
attributes are prohibited by the architecture.

The above does not apply to ACPI reclaim regions: such regions have no
special significance to the firmware, and it is up to the OS to decide
whether or not to preserve them after it has consumed their contents,
and for how long, after which time the OS can use the memory in any way
it likes. In the Linux case, such regions are preserved indefinitely,
and are simply treated the same way as other 'reserved' memory types.

Punching holes into the linear mapping causes page table fragmentation,
which increases TLB pressure, and so we should avoid doing so if we can.
So add a special case for regions of type EFI_ACPI_RECLAIM_MEMORY, and
memblock_reserve() them instead of marking them MEMBLOCK_NOMAP.

Acked-by: Mark Rutland <mark.rutland@arm.com>
Cc: Matt Fleming <matt@codeblueprint.co.uk>
Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
---
 drivers/firmware/efi/arm-init.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/firmware/efi/arm-init.c b/drivers/firmware/efi/arm-init.c
index 1027d7b44358..0aa4ce7b4fbb 100644
--- a/drivers/firmware/efi/arm-init.c
+++ b/drivers/firmware/efi/arm-init.c
@@ -159,6 +159,7 @@ static __init int is_usable_memory(efi_memory_desc_t *md)
 	switch (md->type) {
 	case EFI_LOADER_CODE:
 	case EFI_LOADER_DATA:
+	case EFI_ACPI_RECLAIM_MEMORY:
 	case EFI_BOOT_SERVICES_CODE:
 	case EFI_BOOT_SERVICES_DATA:
 	case EFI_CONVENTIONAL_MEMORY:
@@ -211,6 +212,10 @@ static __init void reserve_regions(void)
 
 			if (!is_usable_memory(md))
 				memblock_mark_nomap(paddr, size);
+
+			/* keep ACPI reclaim memory intact for kexec etc. */
+			if (md->type == EFI_ACPI_RECLAIM_MEMORY)
+				memblock_reserve(paddr, size);
 		}
 	}
 }
-- 
2.11.0

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[GIT PULL 00/14] EFI changes for v4.14 Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
  [PATCH 03/14] efi/libstub: arm64: force 'hidden' visibility for section markers Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] efi/libstub/arm64: Force 'hidden' visibility for  section markers tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 05/14] efi: arm/arm64: Add missing assignment of efi.config_table Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] efi/arm/arm64: Add missing assignment of  efi.config_table tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 01/14] efi: arm: Don't mark ACPI reclaim memory as MEMBLOCK_NOMAP Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] efi/arm: Don't mark ACPI reclaim memory as  MEMBLOCK_NOMAP tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 06/14] efi/reboot: Fall back to original power-off method if EFI_RESET_SHUTDOWN returns Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] efi/reboot: Fall back to original power-off method  if EFI_RESET_SHUTDOWN returns tip-bot for Hans de Goede <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 04/14] efi/libstub: arm64: set -fpie when building the EFI stub Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] efi/libstub/arm64: Set -fpie when building the EFI  stub tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 09/14] arm: efi: remove pointless dummy .reloc section Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] arm/efi: Remove pointless dummy .reloc section tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 07/14] drivers/fbdev: efifb: allow BAR to be moved instead of claiming it Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] drivers/fbdev/efifb: Allow BAR to be moved instead  of claiming it tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 11/14] arm: efi: split zImage code and data into separate PE/COFF sections Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] arm/efi: Split zImage code and data into separate  PE/COFF sections tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 02/14] efi/libstub: arm64: use hidden attribute for struct screen_info reference Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] efi/libstub/arm64: Use hidden attribute for struct  screen_info reference tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 12/14] firmware: dcdbas: constify attribute_group structures. Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] firmware/dcdbas: Constify attribute_group structures tip-bot for Arvind Yadav <tipbot@zytor.com> - 2017-08-21 11:40 +0200
  [PATCH 13/14] firmware: efi: constify attribute_group structures. Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] firmware/efi: Constify attribute_group structures tip-bot for Arvind Yadav <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 14/14] firmware: efi: esrt: constify attribute_group structures. Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] firmware/efi/esrt: Constify attribute_group  structures tip-bot for Arvind Yadav <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 10/14] arm: efi: replace open coded constants with symbolic ones Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] arm/efi: Replace open coded constants with symbolic  ones tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  [PATCH 08/14] arm: efi: remove forbidden values from the PE/COFF header Ard Biesheuvel <ard.biesheuvel@linaro.org> - 2017-08-18 22:00 +0200
    [tip:efi/core] arm/efi: Remove forbidden values from the PE/COFF  header tip-bot for Ard Biesheuvel <tipbot@zytor.com> - 2017-08-21 11:30 +0200
  Re: [GIT PULL 00/14] EFI changes for v4.14 Ingo Molnar <mingo@kernel.org> - 2017-08-21 11:40 +0200

csiph-web