Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1314266 > unrolled thread

[PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap

Started byAndy Shevchenko <andriy.shevchenko@linux.intel.com>
First post2016-01-21 16:30 +0100
Last post2016-01-22 21:20 +0100
Articles 5 — 4 participants

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap Andy Shevchenko <andriy.shevchenko@linux.intel.com> - 2016-01-21 16:30 +0100
    Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in  efi_print_memmap Andrew Morton <akpm@linux-foundation.org> - 2016-01-21 23:40 +0100
      Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap Andy Shevchenko <andy.shevchenko@gmail.com> - 2016-01-22 08:10 +0100
        Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in  efi_print_memmap Matt Fleming <matt@codeblueprint.co.uk> - 2016-01-22 16:20 +0100
          Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in  efi_print_memmap Andrew Morton <akpm@linux-foundation.org> - 2016-01-22 21:20 +0100

#1314266 — [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap

FromAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Date2016-01-21 16:30 +0100
Subject[PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap
Message-ID<qTplo-76i-1@gated-at.bofh.it>
From: Robert Elliott <elliott@hpe.com>

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)

Signed-off-by: Robert Elliott <elliott@hpe.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 arch/x86/platform/efi/efi.c | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index e0846b5..3badc8a 100644
--- a/arch/x86/platform/efi/efi.c
+++ b/arch/x86/platform/efi/efi.c
@@ -35,10 +35,12 @@
 #include <linux/efi.h>
 #include <linux/efi-bgrt.h>
 #include <linux/export.h>
+#include <linux/bitops.h>
 #include <linux/bootmem.h>
 #include <linux/slab.h>
 #include <linux/memblock.h>
 #include <linux/spinlock.h>
+#include <linux/string_helpers.h>
 #include <linux/uaccess.h>
 #include <linux/time.h>
 #include <linux/io.h>
@@ -117,6 +119,14 @@ void efi_get_time(struct timespec *now)
 	now->tv_nsec = 0;
 }
 
+static char * __init efi_size_format(char *buf, size_t size, u64 bytes)
+{
+	unsigned long i = bytes ? __ffs64(bytes) / 10 : 0;
+
+	snprintf(buf, size, "%llu %s", bytes >> (i * 10), string_units_2[i]);
+	return buf;
+}
+
 void __init efi_find_mirror(void)
 {
 	void *p;
@@ -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,
-			(md->num_pages >> (20 - EFI_PAGE_SHIFT)));
+			md->phys_addr, md->phys_addr + size - 1,
+			efi_size_format(buf3, sizeof(buf3), size));
 	}
 #endif  /*  EFI_DEBUG  */
 }
-- 
2.7.0.rc3

[toc] | [next] | [standalone]


#1314580 — Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap

FromAndrew Morton <akpm@linux-foundation.org>
Date2016-01-21 23:40 +0100
SubjectRe: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap
Message-ID<qTw3w-3gm-13@gated-at.bofh.it>
In reply to#1314266
On Thu, 21 Jan 2016 17:22:31 +0200 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:

> From: Robert Elliott <elliott@hpe.com>
> 
> 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.

> -			(md->num_pages >> (20 - EFI_PAGE_SHIFT)));
> +			md->phys_addr, md->phys_addr + size - 1,

So I did s/ - 1// here, but worried.

> +			efi_size_format(buf3, sizeof(buf3), size));
>  	}
>  #endif  /*  EFI_DEBUG  */
>  }

[toc] | [prev] | [next] | [standalone]


#1314786

FromAndy Shevchenko <andy.shevchenko@gmail.com>
Date2016-01-22 08:10 +0100
Message-ID<qTE14-BU-3@gated-at.bofh.it>
In reply to#1314580
On Fri, Jan 22, 2016 at 12:35 AM, Andrew Morton
<akpm@linux-foundation.org> wrote:
> On Thu, 21 Jan 2016 17:22:31 +0200 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
>
>> From: Robert Elliott <elliott@hpe.com>
>>
>> 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

[toc] | [prev] | [next] | [standalone]


#1315066 — Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap

FromMatt Fleming <matt@codeblueprint.co.uk>
Date2016-01-22 16:20 +0100
SubjectRe: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap
Message-ID<qTLFf-5N3-7@gated-at.bofh.it>
In reply to#1314786
On Fri, 22 Jan, at 09:08:00AM, Andy Shevchenko wrote:
> On Fri, Jan 22, 2016 at 12:35 AM, Andrew Morton
> <akpm@linux-foundation.org> wrote:
> > On Thu, 21 Jan 2016 17:22:31 +0200 Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> >
> >> From: Robert Elliott <elliott@hpe.com>
> >>
> >> 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.

Right, because of the prerequisite patches sat in my tree it makes
sense for them to all be grouped together.

Andrew, would you mind dropping these from your tree and I'll take
everything through the EFI tree?

Additionally, if you and Rasmus wanted to throw a couple of Acked-by
or Reviewed-by tags my way, I'd feel better about the string_helpers
patches.

[toc] | [prev] | [next] | [standalone]


#1315251 — Re: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap

FromAndrew Morton <akpm@linux-foundation.org>
Date2016-01-22 21:20 +0100
SubjectRe: [PATCH v2 3/4] x86/efi: print size and base in binary units in efi_print_memmap
Message-ID<qTQlB-Ac-11@gated-at.bofh.it>
In reply to#1315066
On Fri, 22 Jan 2016 15:11:00 +0000 Matt Fleming <matt@codeblueprint.co.uk> wrote:

> > >> +                     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.
> 
> Right, because of the prerequisite patches sat in my tree it makes
> sense for them to all be grouped together.
> 
> Andrew, would you mind dropping these from your tree and I'll take
> everything through the EFI tree?
> 
> Additionally, if you and Rasmus wanted to throw a couple of Acked-by
> or Reviewed-by tags my way, I'd feel better about the string_helpers
> patches.

No probs.  Please add Acked-by: Andrew Morton
<akpm@linux-foundation.org> to [1/4] and [2/4].

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web