Thread (112 messages) 112 messages, 9 authors, 2016-05-29
STALE3667d REVIEWED: 1 (0M)

[PATCH kexec-tools 28/32] arm: add support for boot-time crash kernel resource

From: Pratyush Anand <hidden>
Date: 2016-05-27 11:37:46
Also in: kexec

On Tue, May 3, 2016 at 3:53 PM, Russell King [off-list ref] wrote:
Add support for detecting and using the boot-time crash kernel
resource, which is needed for systems which have special boot-time
memory views, such as Keystone 2.

Signed-off-by: Russell King <redacted>
Reviewed-by: Pratyush Anand <redacted>
quoted hunk ↗ jump to hunk
---
 kexec/arch/arm/crashdump-arm.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/kexec/arch/arm/crashdump-arm.c b/kexec/arch/arm/crashdump-arm.c
index 9113f5e..25fdbe9 100644
--- a/kexec/arch/arm/crashdump-arm.c
+++ b/kexec/arch/arm/crashdump-arm.c
@@ -52,7 +52,7 @@ struct memory_ranges usablemem_rgns = {
        .ranges = crash_memory_ranges,
 };

-/* memory range reserved for crashkernel */
+/* The boot-time physical memory range reserved for crashkernel region */
 static struct memory_range crash_kernel_mem;

 /* reserved regions */
@@ -366,13 +366,22 @@ static int iomem_range_callback(void *UNUSED(data), int UNUSED(nr),
                                char *str, unsigned long long base,
                                unsigned long long length)
 {
-       if (strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)) == 0) {
+       if (strncmp(str, CRASH_KERNEL_BOOT, strlen(CRASH_KERNEL_BOOT)) == 0) {
                crash_kernel_mem.start = base;
                crash_kernel_mem.end = base + length - 1;
                crash_kernel_mem.type = RANGE_RAM;
                return mem_regions_add(&crash_reserved_rgns,
                                       base, length, RANGE_RAM);
        }
+       else if (strncmp(str, CRASH_KERNEL, strlen(CRASH_KERNEL)) == 0) {
+               if (crash_kernel_mem.start == crash_kernel_mem.end) {
+                       crash_kernel_mem.start = base;
+                       crash_kernel_mem.end = base + length - 1;
+                       crash_kernel_mem.type = RANGE_RAM;
+               }
+               return mem_regions_add(&crash_reserved_rgns,
+                                      base, length, RANGE_RAM);
+       }
        else if (strncmp(str, SYSTEM_RAM, strlen(SYSTEM_RAM)) == 0) {
                return mem_regions_add(&usablemem_rgns,
                                       base, length, RANGE_RAM);
--
1.9.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help