From: rmk@arm.linux.org.uk (Russell King) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH kexec-tools v2 24/32] arm: add support for platforms with boot memory aliases Date: Mon, 06 Jun 2016 18:00:47 +0100 [thread overview] Message-ID: <E1b9xtP-0003tk-HN@e0050434b2927.dyn.armlinux.org.uk> (raw) In-Reply-To: <20160606164129.GM1041@n2100.armlinux.org.uk> The kexec API deals with boot-view addresses, rather than normal system view addresses. This causes problems for platforms such as Keystone 2, where the boot view is substantially different from the normal system view. This is because Keystone 2 boots from a memory alias in the lower 4GiB, before switching to a high alias at 32GiB. We handle this in a generic way by introducing boot alias resources in /proc/iomem: 80000000-dfffffff : System RAM (boot alias) 9f800000-9fffffff : Crash kernel (boot alias) 800000000-85fffffff : System RAM 800008000-800790e37 : Kernel code 8007ec000-8008b856f : Kernel data 81f800000-81fffffff : Crash kernel To allow kexec to load a kernel, we need to add the boot alias of RAM to the memory ranges returned by get_memory_ranges(). Parse the system RAM boot alias into the memory ranges. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> --- kexec/arch/arm/iomem.h | 2 ++ kexec/arch/arm/kexec-arm.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/kexec/arch/arm/iomem.h b/kexec/arch/arm/iomem.h index 81c593d..85f958e 100644 --- a/kexec/arch/arm/iomem.h +++ b/kexec/arch/arm/iomem.h @@ -2,6 +2,8 @@ #define IOMEM_H #define SYSTEM_RAM "System RAM\n" +#define SYSTEM_RAM_BOOT "System RAM (boot alias)\n" #define CRASH_KERNEL "Crash kernel\n" +#define CRASH_KERNEL_BOOT "Crash kernel (boot alias)\n" #endif diff --git a/kexec/arch/arm/kexec-arm.c b/kexec/arch/arm/kexec-arm.c index eeb27b4..2194b7c 100644 --- a/kexec/arch/arm/kexec-arm.c +++ b/kexec/arch/arm/kexec-arm.c @@ -18,6 +18,7 @@ #include "kexec-arm.h" #include <arch/options.h> #include "../../fs2dt.h" +#include "iomem.h" #define MAX_MEMORY_RANGES 64 #define MAX_LINE 160 @@ -52,7 +53,8 @@ int get_memory_ranges(struct memory_range **range, int *ranges, continue; str = line + consumed; - if (memcmp(str, "System RAM\n", 11) == 0) { + if (memcmp(str, SYSTEM_RAM_BOOT, strlen(SYSTEM_RAM_BOOT)) == 0 || + memcmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) == 0) { type = RANGE_RAM; } else if (memcmp(str, "reserved\n", 9) == 0) { -- 1.9.1
WARNING: multiple messages have this Message-ID (diff)
From: Russell King <rmk@arm.linux.org.uk> To: kexec@lists.infradead.org, linux-arm-kernel@lists.infradead.org Cc: Pratyush Anand <panand@redhat.com>, Baoquan He <bhe@redhat.com> Subject: [PATCH kexec-tools v2 24/32] arm: add support for platforms with boot memory aliases Date: Mon, 06 Jun 2016 18:00:47 +0100 [thread overview] Message-ID: <E1b9xtP-0003tk-HN@e0050434b2927.dyn.armlinux.org.uk> (raw) In-Reply-To: <20160606164129.GM1041@n2100.armlinux.org.uk> The kexec API deals with boot-view addresses, rather than normal system view addresses. This causes problems for platforms such as Keystone 2, where the boot view is substantially different from the normal system view. This is because Keystone 2 boots from a memory alias in the lower 4GiB, before switching to a high alias at 32GiB. We handle this in a generic way by introducing boot alias resources in /proc/iomem: 80000000-dfffffff : System RAM (boot alias) 9f800000-9fffffff : Crash kernel (boot alias) 800000000-85fffffff : System RAM 800008000-800790e37 : Kernel code 8007ec000-8008b856f : Kernel data 81f800000-81fffffff : Crash kernel To allow kexec to load a kernel, we need to add the boot alias of RAM to the memory ranges returned by get_memory_ranges(). Parse the system RAM boot alias into the memory ranges. Reviewed-by: Pratyush Anand <panand@redhat.com> Signed-off-by: Russell King <rmk@arm.linux.org.uk> --- kexec/arch/arm/iomem.h | 2 ++ kexec/arch/arm/kexec-arm.c | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/kexec/arch/arm/iomem.h b/kexec/arch/arm/iomem.h index 81c593d..85f958e 100644 --- a/kexec/arch/arm/iomem.h +++ b/kexec/arch/arm/iomem.h @@ -2,6 +2,8 @@ #define IOMEM_H #define SYSTEM_RAM "System RAM\n" +#define SYSTEM_RAM_BOOT "System RAM (boot alias)\n" #define CRASH_KERNEL "Crash kernel\n" +#define CRASH_KERNEL_BOOT "Crash kernel (boot alias)\n" #endif diff --git a/kexec/arch/arm/kexec-arm.c b/kexec/arch/arm/kexec-arm.c index eeb27b4..2194b7c 100644 --- a/kexec/arch/arm/kexec-arm.c +++ b/kexec/arch/arm/kexec-arm.c @@ -18,6 +18,7 @@ #include "kexec-arm.h" #include <arch/options.h> #include "../../fs2dt.h" +#include "iomem.h" #define MAX_MEMORY_RANGES 64 #define MAX_LINE 160 @@ -52,7 +53,8 @@ int get_memory_ranges(struct memory_range **range, int *ranges, continue; str = line + consumed; - if (memcmp(str, "System RAM\n", 11) == 0) { + if (memcmp(str, SYSTEM_RAM_BOOT, strlen(SYSTEM_RAM_BOOT)) == 0 || + memcmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) == 0) { type = RANGE_RAM; } else if (memcmp(str, "reserved\n", 9) == 0) { -- 1.9.1 _______________________________________________ kexec mailing list kexec@lists.infradead.org http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2016-06-06 17:00 UTC|newest] Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-06-06 16:41 [PATCH kexec-tools v2 00/32] Keystone II updates for kexec tools Russell King - ARM Linux 2016-06-06 16:41 ` Russell King - ARM Linux 2016-06-06 16:58 ` [PATCH kexec-tools v2 01/32] kdump: mmap() and munmap() only work on page-aligned quantites Russell King 2016-06-06 16:58 ` Russell King 2016-06-06 16:58 ` [PATCH kexec-tools v2 02/32] kdump: fix multiple program header entries Russell King 2016-06-06 16:58 ` Russell King 2016-06-06 16:58 ` [PATCH kexec-tools v2 03/32] kdump: actually write out the memory Russell King 2016-06-06 16:58 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 04/32] kdump: fix kdump mapping Russell King 2016-06-06 16:59 ` Russell King 2016-06-07 2:05 ` Pratyush Anand 2016-06-07 2:05 ` Pratyush Anand 2016-06-06 16:59 ` [PATCH kexec-tools v2 05/32] arm: fix kdump to work on LPAE systems Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 06/32] kdump: print mmap() offset in hex Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 07/32] kexec: fix warnings caused by selecting 64-bit file IO on 32-bit platforms Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 08/32] kexec: add max_size to memory_ranges Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 09/32] kexec: phys_to_virt() must take unsigned long long Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 10/32] kexec: add generic helper to add to memory_regions Russell King 2016-06-06 16:59 ` Russell King 2016-06-08 1:13 ` Baoquan He 2016-06-08 1:13 ` Baoquan He 2016-06-08 1:22 ` Simon Horman 2016-06-08 1:22 ` Simon Horman 2016-06-09 16:18 ` [PATCH] Remove "max" parameter comment Russell King 2016-06-09 16:18 ` Russell King 2016-06-09 17:06 ` Pratyush Anand 2016-06-09 17:06 ` Pratyush Anand 2016-06-23 0:40 ` Simon Horman 2016-06-23 0:40 ` Simon Horman 2016-06-06 16:59 ` [PATCH kexec-tools v2 11/32] kexec: add mem_regions sorting implementation Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 12/32] kexec: add helper to exlude a region from a set of memory ranges Russell King 2016-06-06 16:59 ` Russell King 2016-06-07 4:55 ` Pratyush Anand 2016-06-07 4:55 ` Pratyush Anand 2016-06-06 16:59 ` [PATCH kexec-tools v2 13/32] arm: fix pointer signedness warning in kexec-uImage-arm.c Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 16:59 ` [PATCH kexec-tools v2 14/32] arm: fix off-by-one on memory end Russell King 2016-06-06 16:59 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 15/32] arm: fix get_kernel_stext_sym() to close its file Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 16/32] arm: fix ELF32/ELF64 check Russell King 2016-06-06 17:00 ` Russell King 2016-06-07 5:41 ` Pratyush Anand 2016-06-07 5:41 ` Pratyush Anand 2016-06-06 17:00 ` [PATCH kexec-tools v2 17/32] arm: return proper error for missing crash kernel Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 18/32] arm: report if crash kernel is out of bounds Russell King 2016-06-06 17:00 ` Russell King 2016-06-07 5:41 ` Pratyush Anand 2016-06-07 5:41 ` Pratyush Anand 2016-06-06 17:00 ` [PATCH kexec-tools v2 19/32] arm: add memory ranges debug Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 20/32] arm: add maximum number of memory ranges Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 21/32] arm: parse crash_reserved_mem early Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 22/32] arm: use generic mem_region sorting implementation Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 23/32] arm: move crash system RAM parsing earlier Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` Russell King [this message] 2016-06-06 17:00 ` [PATCH kexec-tools v2 24/32] arm: add support for platforms with boot memory aliases Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 25/32] arm: crashdump needs boot alias of crash kernel region Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:00 ` [PATCH kexec-tools v2 26/32] arm: rename crash_reserved_mem to crash_kernel_mem Russell King 2016-06-06 17:00 ` Russell King 2016-06-06 17:01 ` [PATCH kexec-tools v2 27/32] arm: add support for multiple reserved regions Russell King 2016-06-06 17:01 ` Russell King 2016-06-06 17:01 ` [PATCH kexec-tools v2 28/32] arm: add support for boot-time crash kernel resource Russell King 2016-06-06 17:01 ` Russell King 2016-06-06 17:01 ` [PATCH kexec-tools v2 29/32] arm: add debug of reserved and coredump memory ranges Russell King 2016-06-06 17:01 ` Russell King 2016-06-06 17:01 ` [PATCH kexec-tools v2 30/32] arm: fix type of phys_offset Russell King 2016-06-06 17:01 ` Russell King 2016-06-06 17:01 ` [PATCH kexec-tools v2 31/32] arm: clean up phys/page offset debug Russell King 2016-06-06 17:01 ` Russell King 2016-06-06 17:01 ` [PATCH kexec-tools v2 32/32] arm: report which ELF core format we will use Russell King 2016-06-06 17:01 ` Russell King 2016-06-08 0:27 ` [PATCH kexec-tools v2 00/32] Keystone II updates for kexec tools Simon Horman 2016-06-08 0:27 ` Simon Horman
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=E1b9xtP-0003tk-HN@e0050434b2927.dyn.armlinux.org.uk \ --to=rmk@arm.linux.org.uk \ --cc=linux-arm-kernel@lists.infradead.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.