* [PATCH 0/2] Stable-6.6 backport x86/xen: fix memblock_reserve() usage on PVH
@ 2025-04-11 16:51 Jason Andryuk
2025-04-11 16:51 ` [PATCH 1/2] x86/xen: move xen_reserve_extra_memory() Jason Andryuk
2025-04-11 16:51 ` [PATCH 2/2] x86/xen: fix memblock_reserve() usage on PVH Jason Andryuk
0 siblings, 2 replies; 5+ messages in thread
From: Jason Andryuk @ 2025-04-11 16:51 UTC (permalink / raw)
To: stable; +Cc: Jason Andryuk
For stable-6.6.
("x86/xen: fix memblock_reserve() usage on PVH") is the fix, but it
depends on ("x86/xen: move xen_reserve_extra_memory()") as a
prerequisite. Both need fixups as they predate the removal of the Xen
hypercall_page.
Roger Pau Monne (2):
x86/xen: move xen_reserve_extra_memory()
x86/xen: fix memblock_reserve() usage on PVH
arch/x86/include/asm/xen/hypervisor.h | 5 --
arch/x86/platform/pvh/enlighten.c | 3 -
arch/x86/xen/enlighten_pvh.c | 93 +++++++++++++++------------
3 files changed, 51 insertions(+), 50 deletions(-)
--
2.49.0
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/2] x86/xen: move xen_reserve_extra_memory()
2025-04-11 16:51 [PATCH 0/2] Stable-6.6 backport x86/xen: fix memblock_reserve() usage on PVH Jason Andryuk
@ 2025-04-11 16:51 ` Jason Andryuk
2025-04-13 16:47 ` Sasha Levin
2025-04-11 16:51 ` [PATCH 2/2] x86/xen: fix memblock_reserve() usage on PVH Jason Andryuk
1 sibling, 1 reply; 5+ messages in thread
From: Jason Andryuk @ 2025-04-11 16:51 UTC (permalink / raw)
To: stable; +Cc: Roger Pau Monne, Juergen Gross, Jason Andryuk
From: Roger Pau Monne <roger.pau@citrix.com>
commit fc05ea89c9ab45e70cb73e70bc0b9cdd403e0ee1 upstream
In preparation for making the function static.
No functional change.
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Message-ID: <20240725073116.14626-2-roger.pau@citrix.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
[ Stable backport - move the code as it exists ]
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
For stable-6.6
This patch is code movement, but it doesn't directly apply since it
predates the removal of the Xen hypercall_page. This version moves
the code as it exists in 6.6.
Pre-req for 4c006734898a113a64a528027274a571b04af95a backport
---
arch/x86/xen/enlighten_pvh.c | 82 ++++++++++++++++++------------------
1 file changed, 41 insertions(+), 41 deletions(-)
diff --git a/arch/x86/xen/enlighten_pvh.c b/arch/x86/xen/enlighten_pvh.c
index 60b358c2f434..89984018141c 100644
--- a/arch/x86/xen/enlighten_pvh.c
+++ b/arch/x86/xen/enlighten_pvh.c
@@ -26,47 +26,6 @@
bool __ro_after_init xen_pvh;
EXPORT_SYMBOL_GPL(xen_pvh);
-void __init xen_pvh_init(struct boot_params *boot_params)
-{
- xen_pvh = 1;
- xen_domain_type = XEN_HVM_DOMAIN;
- xen_start_flags = pvh_start_info.flags;
-
- if (xen_initial_domain())
- x86_init.oem.arch_setup = xen_add_preferred_consoles;
- x86_init.oem.banner = xen_banner;
-
- xen_efi_init(boot_params);
-
- if (xen_initial_domain()) {
- struct xen_platform_op op = {
- .cmd = XENPF_get_dom0_console,
- };
- int ret = HYPERVISOR_platform_op(&op);
-
- if (ret > 0)
- xen_init_vga(&op.u.dom0_console,
- min(ret * sizeof(char),
- sizeof(op.u.dom0_console)),
- &boot_params->screen_info);
- }
-}
-
-void __init mem_map_via_hcall(struct boot_params *boot_params_p)
-{
- struct xen_memory_map memmap;
- int rc;
-
- memmap.nr_entries = ARRAY_SIZE(boot_params_p->e820_table);
- set_xen_guest_handle(memmap.buffer, boot_params_p->e820_table);
- rc = HYPERVISOR_memory_op(XENMEM_memory_map, &memmap);
- if (rc) {
- xen_raw_printk("XENMEM_memory_map failed (%d)\n", rc);
- BUG();
- }
- boot_params_p->e820_entries = memmap.nr_entries;
-}
-
/*
* Reserve e820 UNUSABLE regions to inflate the memory balloon.
*
@@ -133,3 +92,44 @@ void __init xen_reserve_extra_memory(struct boot_params *bootp)
xen_add_extra_mem(PFN_UP(e->addr), pages);
}
}
+
+void __init xen_pvh_init(struct boot_params *boot_params)
+{
+ xen_pvh = 1;
+ xen_domain_type = XEN_HVM_DOMAIN;
+ xen_start_flags = pvh_start_info.flags;
+
+ if (xen_initial_domain())
+ x86_init.oem.arch_setup = xen_add_preferred_consoles;
+ x86_init.oem.banner = xen_banner;
+
+ xen_efi_init(boot_params);
+
+ if (xen_initial_domain()) {
+ struct xen_platform_op op = {
+ .cmd = XENPF_get_dom0_console,
+ };
+ int ret = HYPERVISOR_platform_op(&op);
+
+ if (ret > 0)
+ xen_init_vga(&op.u.dom0_console,
+ min(ret * sizeof(char),
+ sizeof(op.u.dom0_console)),
+ &boot_params->screen_info);
+ }
+}
+
+void __init mem_map_via_hcall(struct boot_params *boot_params_p)
+{
+ struct xen_memory_map memmap;
+ int rc;
+
+ memmap.nr_entries = ARRAY_SIZE(boot_params_p->e820_table);
+ set_xen_guest_handle(memmap.buffer, boot_params_p->e820_table);
+ rc = HYPERVISOR_memory_op(XENMEM_memory_map, &memmap);
+ if (rc) {
+ xen_raw_printk("XENMEM_memory_map failed (%d)\n", rc);
+ BUG();
+ }
+ boot_params_p->e820_entries = memmap.nr_entries;
+}
--
2.49.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH 2/2] x86/xen: fix memblock_reserve() usage on PVH
2025-04-11 16:51 [PATCH 0/2] Stable-6.6 backport x86/xen: fix memblock_reserve() usage on PVH Jason Andryuk
2025-04-11 16:51 ` [PATCH 1/2] x86/xen: move xen_reserve_extra_memory() Jason Andryuk
@ 2025-04-11 16:51 ` Jason Andryuk
2025-04-13 16:46 ` Sasha Levin
1 sibling, 1 reply; 5+ messages in thread
From: Jason Andryuk @ 2025-04-11 16:51 UTC (permalink / raw)
To: stable; +Cc: Roger Pau Monne, Juergen Gross, Jason Andryuk
From: Roger Pau Monne <roger.pau@citrix.com>
commit 4c006734898a113a64a528027274a571b04af95a upstream
The current usage of memblock_reserve() in init_pvh_bootparams() is done before
the .bss is zeroed, and that used to be fine when
memblock_reserved_init_regions implicitly ended up in the .meminit.data
section. However after commit 73db3abdca58c memblock_reserved_init_regions
ends up in the .bss section, thus breaking it's usage before the .bss is
cleared.
Move and rename the call to xen_reserve_extra_memory() so it's done in the
x86_init.oem.arch_setup hook, which gets executed after the .bss has been
zeroed, but before calling e820__memory_setup().
Fixes: 73db3abdca58c ("init/modpost: conditionally check section mismatch to __meminit*")
Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
Reviewed-by: Juergen Gross <jgross@suse.com>
Message-ID: <20240725073116.14626-3-roger.pau@citrix.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
[ Context fixup for hypercall_page removal ]
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
---
For stable-6.6
Context fixup is needed to cherry-pick after Xen hypercall_page removal.
The Fixes commit was backported to 6.6, so this is needed to fix booting
for Xen PVH.
---
arch/x86/include/asm/xen/hypervisor.h | 5 -----
arch/x86/platform/pvh/enlighten.c | 3 ---
arch/x86/xen/enlighten_pvh.c | 15 ++++++++++++---
3 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/arch/x86/include/asm/xen/hypervisor.h b/arch/x86/include/asm/xen/hypervisor.h
index 64fbd2dbc5b7..a9088250770f 100644
--- a/arch/x86/include/asm/xen/hypervisor.h
+++ b/arch/x86/include/asm/xen/hypervisor.h
@@ -62,11 +62,6 @@ void xen_arch_unregister_cpu(int num);
#ifdef CONFIG_PVH
void __init xen_pvh_init(struct boot_params *boot_params);
void __init mem_map_via_hcall(struct boot_params *boot_params_p);
-#ifdef CONFIG_XEN_PVH
-void __init xen_reserve_extra_memory(struct boot_params *bootp);
-#else
-static inline void xen_reserve_extra_memory(struct boot_params *bootp) { }
-#endif
#endif
/* Lazy mode for batching updates / context switch */
diff --git a/arch/x86/platform/pvh/enlighten.c b/arch/x86/platform/pvh/enlighten.c
index a12117f3d4de..00a92cb2c814 100644
--- a/arch/x86/platform/pvh/enlighten.c
+++ b/arch/x86/platform/pvh/enlighten.c
@@ -74,9 +74,6 @@ static void __init init_pvh_bootparams(bool xen_guest)
} else
xen_raw_printk("Warning: Can fit ISA range into e820\n");
- if (xen_guest)
- xen_reserve_extra_memory(&pvh_bootparams);
-
pvh_bootparams.hdr.cmd_line_ptr =
pvh_start_info.cmdline_paddr;
diff --git a/arch/x86/xen/enlighten_pvh.c b/arch/x86/xen/enlighten_pvh.c
index 89984018141c..ac0a8adb2c50 100644
--- a/arch/x86/xen/enlighten_pvh.c
+++ b/arch/x86/xen/enlighten_pvh.c
@@ -8,6 +8,7 @@
#include <asm/io_apic.h>
#include <asm/hypervisor.h>
#include <asm/e820/api.h>
+#include <asm/setup.h>
#include <xen/xen.h>
#include <asm/xen/interface.h>
@@ -40,8 +41,9 @@ EXPORT_SYMBOL_GPL(xen_pvh);
* hypervisor should notify us which memory ranges are suitable for creating
* foreign mappings, but that's not yet implemented.
*/
-void __init xen_reserve_extra_memory(struct boot_params *bootp)
+static void __init pvh_reserve_extra_memory(void)
{
+ struct boot_params *bootp = &boot_params;
unsigned int i, ram_pages = 0, extra_pages;
for (i = 0; i < bootp->e820_entries; i++) {
@@ -93,14 +95,21 @@ void __init xen_reserve_extra_memory(struct boot_params *bootp)
}
}
+static void __init pvh_arch_setup(void)
+{
+ pvh_reserve_extra_memory();
+
+ if (xen_initial_domain())
+ xen_add_preferred_consoles();
+}
+
void __init xen_pvh_init(struct boot_params *boot_params)
{
xen_pvh = 1;
xen_domain_type = XEN_HVM_DOMAIN;
xen_start_flags = pvh_start_info.flags;
- if (xen_initial_domain())
- x86_init.oem.arch_setup = xen_add_preferred_consoles;
+ x86_init.oem.arch_setup = pvh_arch_setup;
x86_init.oem.banner = xen_banner;
xen_efi_init(boot_params);
--
2.49.0
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 2/2] x86/xen: fix memblock_reserve() usage on PVH
2025-04-11 16:51 ` [PATCH 2/2] x86/xen: fix memblock_reserve() usage on PVH Jason Andryuk
@ 2025-04-13 16:46 ` Sasha Levin
0 siblings, 0 replies; 5+ messages in thread
From: Sasha Levin @ 2025-04-13 16:46 UTC (permalink / raw)
To: stable; +Cc: Jason Andryuk, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected.
No action required from the submitter.
The upstream commit SHA1 provided is correct: 4c006734898a113a64a528027274a571b04af95a
WARNING: Author mismatch between patch and upstream commit:
Backport author: Jason Andryuk<jason.andryuk@amd.com>
Commit author: Roger Pau Monne<roger.pau@citrix.com>
Note: The patch differs from the upstream commit:
---
1: 4c006734898a1 < -: ------------- x86/xen: fix memblock_reserve() usage on PVH
-: ------------- > 1: 9bc5c94e278f7 Linux 6.14.2
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.4.y | Success | Success |
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/2] x86/xen: move xen_reserve_extra_memory()
2025-04-11 16:51 ` [PATCH 1/2] x86/xen: move xen_reserve_extra_memory() Jason Andryuk
@ 2025-04-13 16:47 ` Sasha Levin
0 siblings, 0 replies; 5+ messages in thread
From: Sasha Levin @ 2025-04-13 16:47 UTC (permalink / raw)
To: stable; +Cc: Jason Andryuk, Sasha Levin
[ Sasha's backport helper bot ]
Hi,
✅ All tests passed successfully. No issues detected.
No action required from the submitter.
The upstream commit SHA1 provided is correct: fc05ea89c9ab45e70cb73e70bc0b9cdd403e0ee1
WARNING: Author mismatch between patch and upstream commit:
Backport author: Jason Andryuk<jason.andryuk@amd.com>
Commit author: Roger Pau Monne<roger.pau@citrix.com>
Note: The patch differs from the upstream commit:
---
1: fc05ea89c9ab4 < -: ------------- x86/xen: move xen_reserve_extra_memory()
-: ------------- > 1: 9bc5c94e278f7 Linux 6.14.2
---
Results of testing on various branches:
| Branch | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| stable/linux-5.4.y | Success | Success |
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-04-13 16:47 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-11 16:51 [PATCH 0/2] Stable-6.6 backport x86/xen: fix memblock_reserve() usage on PVH Jason Andryuk
2025-04-11 16:51 ` [PATCH 1/2] x86/xen: move xen_reserve_extra_memory() Jason Andryuk
2025-04-13 16:47 ` Sasha Levin
2025-04-11 16:51 ` [PATCH 2/2] x86/xen: fix memblock_reserve() usage on PVH Jason Andryuk
2025-04-13 16:46 ` Sasha Levin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).