RE: [PATCH v3 3/4] x86/efi: print size in binary units in efi_print_memmap

From: Elliott, Robert (Persistent Memory)
Date: Mon Jan 25 2016 - 15:38:38 EST




---
Robert Elliott, HPE Persistent Memory


> -----Original Message-----
> From: Andy Shevchenko [mailto:andy.shevchenko@xxxxxxxxx]
> Sent: Monday, January 25, 2016 2:01 PM
> To: James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx>
> Cc: Elliott, Robert (Persistent Memory) <elliott@xxxxxxx>; Andy Shevchenko
> <andriy.shevchenko@xxxxxxxxxxxxxxx>; Matt Fleming
> <matt@xxxxxxxxxxxxxxxxxxx>; Thomas Gleixner <tglx@xxxxxxxxxxxxx>; Ingo
> Molnar <mingo@xxxxxxxxxx>; H . Peter Anvin <hpa@xxxxxxxxx>; linux-
> efi@xxxxxxxxxxxxxxx; Rasmus Villemoes <linux@xxxxxxxxxxxxxxxxxx>; Andrew
> Morton <akpm@xxxxxxxxxxxxxxxxxxxx>; linux-kernel @ vger . kernel . org
> <linux-kernel@xxxxxxxxxxxxxxx>
> Subject: Re: [PATCH v3 3/4] x86/efi: print size in binary units in
> efi_print_memmap
>
> On Mon, Jan 25, 2016 at 9:45 PM, James Bottomley
> <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> wrote:
> > On Mon, 2016-01-25 at 21:28 +0200, Andy Shevchenko wrote:
> >> On Mon, Jan 25, 2016 at 8:56 PM, James Bottomley
> >> <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> wrote:
> >> > On Mon, 2016-01-25 at 18:02 +0000, Elliott, Robert (Persistent
> >> > Memory)
> >> > wrote:
> >>
> >> > Using ffs leads to precision runaway
> >>
> >> How exactly?!
> >
> > Off by one. A size of 0xffffffffffffffff prints 18446744073709551615 B
> > rather than 20 GiB.
>
> Because it's not a 20 GiB. It's exactly 20 GiB - 1 B.
>
> AFAIU, the intention was to show _exact_ size.

For the UEFI memory map, that was indeed my intention. I
don't want it silently round to "20 GiB". Even rounding
to "19.999 GiB" is imprecise.

Another option could be to use a "~" prefix for imperfect
values, like "~20 GiB". That would serve as a warning
that something's not quite right.