[prev in list] [next in list] [prev in thread] [next in thread]
List: kexec
Subject: Re: [PATCH v2] kexec: support parsing the string "Reserved" to get the correct e820 reserved region
From: lijiang <lijiang () redhat ! com>
Date: 2020-02-24 13:14:52
Message-ID: c88eacdf-4116-edc7-d2c3-945c269708be () redhat ! com
[Download RAW message or body]
在 2020年02月24日 14:48, Baoquan He 写道:
> On 02/24/20 at 02:36pm, Lianbo Jiang wrote:
>> When loading kernel and initramfs for kexec, kexec-tools could get the
>> e820 reserved region from "/proc/iomem" in order to rebuild the e820
>> ranges for kexec kernel, but there may be the string "Reserved" in the
>> "/proc/iomem", which caused the failure of parsing. For example:
>>
>> #cat /proc/iomem|grep -i reserved
>> 00000000-00000fff : Reserved
>> 7f338000-7f34dfff : Reserved
>> 7f3cd000-8fffffff : Reserved
>> f17f0000-f17f1fff : Reserved
>> fe000000-ffffffff : Reserved
>
> This looks good to me. However, is it investigated why there are two
> different names for reserved e820 regions? Can we unify them with one
> name in kernel, 'Reserved' or 'reserved'?
>
Thanks for your comment.
As we discussed in IRC, for the kexec-tools, we have to consider the
compatibility because of an old "reserved" and a new "Reserved".
Please refer to this commit: 640e1b38b005 ("x86/boot/e820: Basic cleanup
of e820.c")
In addition, I will check kernel code carefully to see if it needs to be
fixed in upstream.
Thanks.
Lianbo
>
>>
>> Currently, kexec-tools can not handle the above case because the memcmp()
>> is case sensitive when comparing the string.
>>
>> So, let's fix this corner and make sure that the string "reserved" and
>> "Reserved" in the "/proc/iomem" are both parsed appropriately.
>>
>> Signed-off-by: Lianbo Jiang <lijiang@redhat.com>
>> ---
>> Note:
>> Please follow up this commit below about kdump fix.
>> 1ac3e4a57000 ("kdump: fix an error that can not parse the e820 reserved region")
>>
>> Changes since v1:
>> [1] use strncasecmp() instead of introducing another 'else-if'(
>> suggested by Bhupesh)
>>
>> kexec/arch/i386/kexec-x86-common.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/kexec/arch/i386/kexec-x86-common.c b/kexec/arch/i386/kexec-x86-common.c
>> index 61ea19380ab2..9303704a0714 100644
>> --- a/kexec/arch/i386/kexec-x86-common.c
>> +++ b/kexec/arch/i386/kexec-x86-common.c
>> @@ -90,7 +90,7 @@ static int get_memory_ranges_proc_iomem(struct memory_range **range, int *ranges
>> if (memcmp(str, "System RAM\n", 11) == 0) {
>> type = RANGE_RAM;
>> }
>> - else if (memcmp(str, "reserved\n", 9) == 0) {
>> + else if (strncasecmp(str, "reserved\n", 9) == 0) {
>> type = RANGE_RESERVED;
>> }
>> else if (memcmp(str, "ACPI Tables\n", 12) == 0) {
>> --
>> 2.17.1
>>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic