Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap
From: Andy Shevchenko
Date: Fri Jan 22 2016 - 02:08:10 EST
On Fri, Jan 22, 2016 at 12:35 AM, Andrew Morton
<akpm@xxxxxxxxxxxxxxxxxxxx> wrote:
> On Thu, 21 Jan 2016 17:22:31 +0200 Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> wrote:
>
>> From: Robert Elliott <elliott@xxxxxxx>
>>
>> Print the base in the best-fit B, KiB, MiB, etc. units rather than
>> always MiB. This avoids rounding, which can be misleading.
>>
>> Use proper IEC binary units (KiB, MiB, etc.) rather than misuse SI
>> decimal units (KB, MB, etc.).
>>
>> old:
>> efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff) (16384MB)
>>
>> new:
>> efi: mem61: [Persistent Memory | | | | | | | |WB|WT|WC|UC] range=[0x0000000880000000-0x0000000c7fffffff] (16 GiB)
>
> hm,
>
>> @@ -225,21 +235,20 @@ int __init efi_memblock_x86_reserve_range(void)
>> void __init efi_print_memmap(void)
>> {
>> #ifdef EFI_DEBUG
>> - efi_memory_desc_t *md;
>> void *p;
>> int i;
>>
>> for (p = memmap.map, i = 0;
>> p < memmap.map_end;
>> p += memmap.desc_size, i++) {
>> - char buf[64];
>> + efi_memory_desc_t *md = p;
>> + u64 size = md->num_pages << EFI_PAGE_SHIFT;
>> + char buf[64], buf3[32];
>>
>> - md = p;
>> - pr_info("mem%02u: %s range=[0x%016llx-0x%016llx] (%lluMB)\n",
>> + pr_info("mem%02u: %s range=[0x%016llx-0x%016llx] (%s)\n",
>> i, efi_md_typeattr_format(buf, sizeof(buf), md),
>> - md->phys_addr,
>> - md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT) - 1,
>
> Where did this " - 1" come from? I can't find a tree which has this.
http://git.kernel.org/cgit/linux/kernel/git/mfleming/efi.git/commit/?h=next&id=b324ee15566d9de933e7926c37a4d091904a513b
>
>> - (md->num_pages >> (20 - EFI_PAGE_SHIFT)));
>> + md->phys_addr, md->phys_addr + size - 1,
>
> So I did s/ - 1// here, but worried.
I'm pretty sure the series should go via efi tree.
>
>> + efi_size_format(buf3, sizeof(buf3), size));
>> }
>> #endif /* EFI_DEBUG */
>> }
>
--
With Best Regards,
Andy Shevchenko