lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Sat, 23 Mar 2024 23:45:45 -0500
From: "Eric W. Biederman" <ebiederm@...ssion.com>
To: Dave Hansen <dave.hansen@...el.com>
Cc: Steve Wahl <steve.wahl@....com>,  Dave Hansen
 <dave.hansen@...ux.intel.com>,  Andy Lutomirski <luto@...nel.org>,  Peter
 Zijlstra <peterz@...radead.org>,  Thomas Gleixner <tglx@...utronix.de>,
  Ingo Molnar <mingo@...hat.com>,  Borislav Petkov <bp@...en8.de>,
  x86@...nel.org,  "H. Peter Anvin" <hpa@...or.com>,
  linux-kernel@...r.kernel.org,  Linux regressions mailing list
 <regressions@...ts.linux.dev>,  Pavin Joseph <me@...injoseph.com>,
  stable@...r.kernel.org,  Eric Hagberg <ehagberg@...il.com>,  Simon Horman
 <horms@...ge.net.au>,  Dave Young <dyoung@...hat.com>,  Sarah Brofeldt
 <srhb@....dk>,  Russ Anderson <rja@....com>,  Dimitri Sivanich
 <sivanich@....com>
Subject: Re: [PATCH] x86/mm/ident_map: Use full gbpages in identity maps
 except on UV platform.

Dave Hansen <dave.hansen@...el.com> writes:

> On 3/22/24 09:21, Steve Wahl wrote:
>> Some systems have ACPI tables that don't include everything that needs
>> to be mapped for a successful kexec.  These systems rely on identity
>> maps that include the full gigabyte surrounding any smaller region
>> requested for kexec success.  Without this, they fail to kexec and end
>> up doing a full firmware reboot.
>
> I'm still missing something here.  Which ACPI tables are we talking
> about?  What don't they map?  I normally don't think of ACPI _tables_ as
> "mapping" things.

Either E820 or ACPI lists which areas of memory are present in a
machine.  Those tables are used to build the identity memory mappings.

Those identity mapped page tables not built with GB pages cause kexec to
fail for at least 3 people.  Presumably because something using those
page tables accesses memory that is not mapped.

> It seems like there's a theory that some ACPI table isn't mapped, but
> looking through the discussion so far I don't see a smoking gun.  Let's
> say the kernel has a bug and the kernel was actively not mapping
> something that it should have mapped.  The oversized 1GB mappings made
> the bug harder to hit.  If that's the case, we'll just be adding a hack
> which papers over the bug instead of fixing it properly.
>
> I'm kind of leaning to say that we should just revert d794734c9bbf and
> have the UV folks go back to the nogbpages until we get this properly
> sorted.

That is exactly what this patch does.  It reverts the change except
on UV systems.

>> @@ -10,6 +10,7 @@ struct x86_mapping_info {
>>  	unsigned long page_flag;	 /* page flag for PMD or PUD entry */
>>  	unsigned long offset;		 /* ident mapping offset */
>>  	bool direct_gbpages;		 /* PUD level 1GB page support */
>> +	bool direct_gbpages_always;	 /* use 1GB pages exclusively */
>>  	unsigned long kernpg_flag;	 /* kernel pagetable flag override */
>>  };
>
> But let's at least talk about this patch in case we decide to go forward
> with it.  We've really got two things:
>
> 1. Can the system use gbpages in the first place?
> 2. Do the gbpages need to be exact (UV) or sloppy (everything else)?
>
> I wouldn't refer to this at all as "always" use gbpages.  It's really a
> be-sloppy-and-paper-over-bugs mode.  They might be kernel bugs or
> firmware bugs, but they're bugs _somewhere_ right?

Is it?

As far as I can tell the UV mode is be exact and avoid cpu bugs mode.

My sense is that using GB pages for everything (when we want an identity
mapping) should be much cheaper TLB wise, so we probably want to use GB
pages for everything if we can.

Personally I'd rather turn of the page tables entirely for kexec but
that is not an option in x86_64.

Eric



Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ