From c03b9e32baa42b3b5c52e294b21e01035ea1305a Mon Sep 17 00:00:00 2001 From: Michael Holzheu Date: Thu, 12 Jan 2012 17:20:14 -0800 Subject: [PATCH] --- yaml --- r: 284419 b: refs/heads/master c: 6480e5a0923756b500634d9777ec4189492fbbfe h: refs/heads/master i: 284417: afc7a049765e3db567f694d06c48a31d34b100b0 284415: c7a42c4c1fd28dd74c21ce5b4306685bb41095a0 v: v3 --- [refs] | 2 +- trunk/kernel/kexec.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 5f337ce1f9a5..88aa51110bb6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a3dd3323058d281abd584b15ad4c5b65064d7a61 +refs/heads/master: 6480e5a0923756b500634d9777ec4189492fbbfe diff --git a/trunk/kernel/kexec.c b/trunk/kernel/kexec.c index 20ed47ae252f..60bf181b3eae 100644 --- a/trunk/kernel/kexec.c +++ b/trunk/kernel/kexec.c @@ -1129,6 +1129,7 @@ int crash_shrink_memory(unsigned long new_size) { int ret = 0; unsigned long start, end; + struct resource *ram_res; mutex_lock(&kexec_mutex); @@ -1146,6 +1147,12 @@ int crash_shrink_memory(unsigned long new_size) goto unlock; } + ram_res = kzalloc(sizeof(*ram_res), GFP_KERNEL); + if (!ram_res) { + ret = -ENOMEM; + goto unlock; + } + start = roundup(start, KEXEC_CRASH_MEM_ALIGN); end = roundup(start + new_size, KEXEC_CRASH_MEM_ALIGN); @@ -1154,7 +1161,15 @@ int crash_shrink_memory(unsigned long new_size) if ((start == end) && (crashk_res.parent != NULL)) release_resource(&crashk_res); + + ram_res->start = end; + ram_res->end = crashk_res.end; + ram_res->flags = IORESOURCE_BUSY | IORESOURCE_MEM; + ram_res->name = "System RAM"; + crashk_res.end = end - 1; + + insert_resource(&iomem_resource, ram_res); crash_unmap_reserved_pages(); unlock: