-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
linux6.8: update to 6.8.2, backport fix for kexec regression
- Loading branch information
Showing
2 changed files
with
77 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
From c567f2948f57bdc03ed03403ae0234085f376b7d Mon Sep 17 00:00:00 2001 | ||
From: Ingo Molnar <mingo@kernel.org> | ||
Date: Mon, 25 Mar 2024 11:47:51 +0100 | ||
Subject: Revert "x86/mm/ident_map: Use gbpages only where full GB page should | ||
be mapped." | ||
|
||
This reverts commit d794734c9bbfe22f86686dc2909c25f5ffe1a572. | ||
|
||
While the original change tries to fix a bug, it also unintentionally broke | ||
existing systems, see the regressions reported at: | ||
|
||
https://lore.kernel.org/all/3a1b9909-45ac-4f97-ad68-d16ef1ce99db@pavinjoseph.com/ | ||
|
||
Since d794734c9bbf was also marked for -stable, let's back it out before | ||
causing more damage. | ||
|
||
Note that due to another upstream change the revert was not 100% automatic: | ||
|
||
0a845e0f6348 mm/treewide: replace pud_large() with pud_leaf() | ||
|
||
Signed-off-by: Ingo Molnar <mingo@kernel.org> | ||
Cc: <stable@vger.kernel.org> | ||
Cc: Russ Anderson <rja@hpe.com> | ||
Cc: Steve Wahl <steve.wahl@hpe.com> | ||
Cc: Dave Hansen <dave.hansen@linux.intel.com> | ||
Link: https://lore.kernel.org/all/3a1b9909-45ac-4f97-ad68-d16ef1ce99db@pavinjoseph.com/ | ||
Fixes: d794734c9bbf ("x86/mm/ident_map: Use gbpages only where full GB page should be mapped.") | ||
--- | ||
arch/x86/mm/ident_map.c | 23 +++++------------------ | ||
1 file changed, 5 insertions(+), 18 deletions(-) | ||
|
||
diff --git a/arch/x86/mm/ident_map.c b/arch/x86/mm/ident_map.c | ||
index a204a332c71fc5..968d7005f4a724 100644 | ||
--- a/arch/x86/mm/ident_map.c | ||
+++ b/arch/x86/mm/ident_map.c | ||
@@ -26,31 +26,18 @@ static int ident_pud_init(struct x86_mapping_info *info, pud_t *pud_page, | ||
for (; addr < end; addr = next) { | ||
pud_t *pud = pud_page + pud_index(addr); | ||
pmd_t *pmd; | ||
- bool use_gbpage; | ||
|
||
next = (addr & PUD_MASK) + PUD_SIZE; | ||
if (next > end) | ||
next = end; | ||
|
||
- /* if this is already a gbpage, this portion is already mapped */ | ||
- if (pud_large(*pud)) | ||
- continue; | ||
- | ||
- /* Is using a gbpage allowed? */ | ||
- use_gbpage = info->direct_gbpages; | ||
- | ||
- /* Don't use gbpage if it maps more than the requested region. */ | ||
- /* at the begining: */ | ||
- use_gbpage &= ((addr & ~PUD_MASK) == 0); | ||
- /* ... or at the end: */ | ||
- use_gbpage &= ((next & ~PUD_MASK) == 0); | ||
- | ||
- /* Never overwrite existing mappings */ | ||
- use_gbpage &= !pud_present(*pud); | ||
- | ||
- if (use_gbpage) { | ||
+ if (info->direct_gbpages) { | ||
pud_t pudval; | ||
|
||
+ if (pud_present(*pud)) | ||
+ continue; | ||
+ | ||
+ addr &= PUD_MASK; | ||
pudval = __pud((addr - info->offset) | info->page_flag); | ||
set_pud(pud, pudval); | ||
continue; | ||
-- | ||
cgit 1.2.3-korg | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters