[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aCsjZW15Wh2lRC1q@smile.fi.intel.com>
Date: Mon, 19 May 2025 15:26:13 +0300
From: Andy Shevchenko <andy@...nel.org>
To: Ingo Molnar <mingo@...nel.org>
Cc: linux-kernel@...r.kernel.org, Arnd Bergmann <arnd@...nel.org>,
Borislav Petkov <bp@...en8.de>, Juergen Gross <jgross@...e.com>,
"H . Peter Anvin" <hpa@...or.com>,
Kees Cook <keescook@...omium.org>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Mike Rapoport <rppt@...nel.org>,
Paul Menzel <pmenzel@...gen.mpg.de>,
Peter Zijlstra <peterz@...radead.org>,
Thomas Gleixner <tglx@...utronix.de>,
David Woodhouse <dwmw@...zon.co.uk>
Subject: Re: [PATCH 07/32] x86/boot/e820: Print out sizes of E820 memory
ranges
On Thu, May 15, 2025 at 02:05:23PM +0200, Ingo Molnar wrote:
> Before:
>
> BIOS-provided physical RAM map:
> BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
> BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
> BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
> BIOS-e820: [mem 0x0000000000100000-0x000000007ffdbfff] usable
> BIOS-e820: [mem 0x000000007ffdc000-0x000000007fffffff] reserved
> BIOS-e820: [mem 0x00000000b0000000-0x00000000bfffffff] reserved
> BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] reserved
> BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
> BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
> BIOS-e820: [mem 0x000000fd00000000-0x000000ffffffffff] reserved
>
> After:
>
> BIOS-provided physical RAM map:
> BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] 639 KB kernel usable RAM
> BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] 1 KB reserved
> BIOS-e820: [gap 0x00000000000a0000-0x00000000000effff] 320 KB ...
> BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] 64 KB reserved
> BIOS-e820: [mem 0x0000000000100000-0x000000007ffdbfff] 1.9 GB kernel usable RAM
> BIOS-e820: [mem 0x000000007ffdc000-0x000000007fffffff] 144 KB reserved
> BIOS-e820: [gap 0x0000000080000000-0x00000000afffffff] 768 MB ...
> BIOS-e820: [mem 0x00000000b0000000-0x00000000bfffffff] 256 MB reserved
> BIOS-e820: [gap 0x00000000c0000000-0x00000000fed1bfff] 1005.1 MB ...
> BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] 16 KB reserved
> BIOS-e820: [gap 0x00000000fed20000-0x00000000feffbfff] 2.8 MB ...
> BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] 16 KB reserved
> BIOS-e820: [gap 0x00000000ff000000-0x00000000fffbffff] 15.7 MB ...
> BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] 256 KB reserved
> BIOS-e820: [gap 0x0000000100000000-0x000000fcffffffff] 1008 GB ...
> BIOS-e820: [mem 0x000000fd00000000-0x000000ffffffffff] 12 GB reserved
>
> Note how a 1-digit precision field is printed out if a range is
> fractional in its largest-enclosing natural size unit.
>
> So the "256 MB" and "12 GB" fields above denote exactly 256 MB and
> 12 GB regions, while "1.9 GB" signals the region's fractional nature
> and it being just below 2GB.
>
> Printing E820 maps with such details visualizes 'weird' ranges
> at a glance, and gives users a better understanding of how
> large the various ranges are, without having to perform hexadecimal
> subtraction in their minds.
Returning to the v1 discussion for sring_get_size(). Looking at its code
it seems to me that you haven't tried to use it. It should give no .0 for
the exact numbers. If it's not the case, please confirm that we have a
bug/feature. If it's documented (read: we have a test case), then we would
need an additional flag to avoid this behaviour for your case. No need
to reinvent a wheel here.
--
With Best Regards,
Andy Shevchenko
Powered by blists - more mailing lists