From fd6558e676aac9d02f1cb9c205763b3dbeffb9e3 Mon Sep 17 00:00:00 2001 From: Sasha Levin Date: Sun, 6 Oct 2024 04:06:51 -0400 Subject: [PATCH] Drop xen-add-capability-to-remap-non-ram-pages-to-differe.patch Signed-off-by: Sasha Levin --- queue-4.19/series | 1 - ...ty-to-remap-non-ram-pages-to-differe.patch | 130 ------------------ queue-5.10/series | 1 - ...ty-to-remap-non-ram-pages-to-differe.patch | 130 ------------------ queue-5.15/series | 1 - ...ty-to-remap-non-ram-pages-to-differe.patch | 130 ------------------ queue-5.4/series | 1 - ...ty-to-remap-non-ram-pages-to-differe.patch | 130 ------------------ queue-6.1/series | 1 - ...ty-to-remap-non-ram-pages-to-differe.patch | 130 ------------------ 10 files changed, 655 deletions(-) delete mode 100644 queue-4.19/xen-add-capability-to-remap-non-ram-pages-to-differe.patch delete mode 100644 queue-5.10/xen-add-capability-to-remap-non-ram-pages-to-differe.patch delete mode 100644 queue-5.15/xen-add-capability-to-remap-non-ram-pages-to-differe.patch delete mode 100644 queue-5.4/xen-add-capability-to-remap-non-ram-pages-to-differe.patch delete mode 100644 queue-6.1/xen-add-capability-to-remap-non-ram-pages-to-differe.patch diff --git a/queue-4.19/series b/queue-4.19/series index 05ef90b5afb..d7478b4cce4 100644 --- a/queue-4.19/series +++ b/queue-4.19/series @@ -63,7 +63,6 @@ drm-msm-fix-s-null-argument-error.patch xen-use-correct-end-address-of-kernel-for-conflict-c.patch xen-introduce-generic-helper-checking-for-memory-map.patch xen-move-max_pfn-in-xen_memory_setup-out-of-function.patch -xen-add-capability-to-remap-non-ram-pages-to-differe.patch xen-swiotlb-simplify-range_straddles_page_boundary.patch xen-swiotlb-add-alignment-check-for-dma-buffers.patch selftests-bpf-fix-error-compiling-test_lru_map.c.patch diff --git a/queue-4.19/xen-add-capability-to-remap-non-ram-pages-to-differe.patch b/queue-4.19/xen-add-capability-to-remap-non-ram-pages-to-differe.patch deleted file mode 100644 index 592bdd75dcf..00000000000 --- a/queue-4.19/xen-add-capability-to-remap-non-ram-pages-to-differe.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 0a544f1cb96b13fc2453635d1dc9ff49852e6137 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 14 Aug 2024 16:47:25 +0200 -Subject: xen: add capability to remap non-RAM pages to different PFNs - -From: Juergen Gross - -[ Upstream commit d05208cf7f05420ad10cc7f9550f91d485523659 ] - -When running as a Xen PV dom0 it can happen that the kernel is being -loaded to a guest physical address conflicting with the host memory -map. - -In order to be able to resolve this conflict, add the capability to -remap non-RAM areas to different guest PFNs. A function to use this -remapping information for other purposes than doing the remap will be -added when needed. - -As the number of conflicts should be rather low (currently only -machines with max. 1 conflict are known), save the remap data in a -small statically allocated array. - -Signed-off-by: Juergen Gross -Reviewed-by: Jan Beulich -Signed-off-by: Juergen Gross -Stable-dep-of: be35d91c8880 ("xen: tolerate ACPI NVS memory overlapping with Xen allocated memory") -Signed-off-by: Sasha Levin ---- - arch/x86/xen/p2m.c | 63 ++++++++++++++++++++++++++++++++++++++++++ - arch/x86/xen/xen-ops.h | 3 ++ - 2 files changed, 66 insertions(+) - -diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c -index 8cbdc5e6863c3..3828271697f94 100644 ---- a/arch/x86/xen/p2m.c -+++ b/arch/x86/xen/p2m.c -@@ -78,6 +78,7 @@ - #include - #include - #include -+#include - - #include "multicalls.h" - #include "xen-ops.h" -@@ -798,6 +799,68 @@ int clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref *unmap_ops, - } - EXPORT_SYMBOL_GPL(clear_foreign_p2m_mapping); - -+/* Remapped non-RAM areas */ -+#define NR_NONRAM_REMAP 4 -+static struct nonram_remap { -+ phys_addr_t maddr; -+ phys_addr_t paddr; -+ size_t size; -+} xen_nonram_remap[NR_NONRAM_REMAP] __ro_after_init; -+static unsigned int nr_nonram_remap __ro_after_init; -+ -+/* -+ * Do the real remapping of non-RAM regions as specified in the -+ * xen_nonram_remap[] array. -+ * In case of an error just crash the system. -+ */ -+void __init xen_do_remap_nonram(void) -+{ -+ unsigned int i; -+ unsigned int remapped = 0; -+ const struct nonram_remap *remap = xen_nonram_remap; -+ unsigned long pfn, mfn, end_pfn; -+ -+ for (i = 0; i < nr_nonram_remap; i++) { -+ end_pfn = PFN_UP(remap->paddr + remap->size); -+ pfn = PFN_DOWN(remap->paddr); -+ mfn = PFN_DOWN(remap->maddr); -+ while (pfn < end_pfn) { -+ if (!set_phys_to_machine(pfn, mfn)) -+ panic("Failed to set p2m mapping for pfn=%lx mfn=%lx\n", -+ pfn, mfn); -+ -+ pfn++; -+ mfn++; -+ remapped++; -+ } -+ -+ remap++; -+ } -+ -+ pr_info("Remapped %u non-RAM page(s)\n", remapped); -+} -+ -+/* -+ * Add a new non-RAM remap entry. -+ * In case of no free entry found, just crash the system. -+ */ -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size) -+{ -+ BUG_ON((maddr & ~PAGE_MASK) != (paddr & ~PAGE_MASK)); -+ -+ if (nr_nonram_remap == NR_NONRAM_REMAP) { -+ xen_raw_console_write("Number of required E820 entry remapping actions exceed maximum value\n"); -+ BUG(); -+ } -+ -+ xen_nonram_remap[nr_nonram_remap].maddr = maddr; -+ xen_nonram_remap[nr_nonram_remap].paddr = paddr; -+ xen_nonram_remap[nr_nonram_remap].size = size; -+ -+ nr_nonram_remap++; -+} -+ - #ifdef CONFIG_XEN_DEBUG_FS - #include - #include "debugfs.h" -diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h -index 83f980867bc0b..932fb167bc990 100644 ---- a/arch/x86/xen/xen-ops.h -+++ b/arch/x86/xen/xen-ops.h -@@ -45,6 +45,9 @@ void xen_mm_unpin_all(void); - #ifdef CONFIG_X86_64 - void __init xen_relocate_p2m(void); - #endif -+void __init xen_do_remap_nonram(void); -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size); - - void __init xen_chk_is_e820_usable(phys_addr_t start, phys_addr_t size, - const char *component); --- -2.43.0 - diff --git a/queue-5.10/series b/queue-5.10/series index 6431d85143f..6a92e02a9e5 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -133,7 +133,6 @@ drivers-drm-exynos_drm_gsc-fix-wrong-assignment-in-g.patch xen-use-correct-end-address-of-kernel-for-conflict-c.patch xen-introduce-generic-helper-checking-for-memory-map.patch xen-move-max_pfn-in-xen_memory_setup-out-of-function.patch -xen-add-capability-to-remap-non-ram-pages-to-differe.patch xen-swiotlb-add-alignment-check-for-dma-buffers.patch tpm-clean-up-tpm-space-after-command-failure.patch selftests-bpf-fix-compile-error-from-rlim_t-in-sk_st.patch diff --git a/queue-5.10/xen-add-capability-to-remap-non-ram-pages-to-differe.patch b/queue-5.10/xen-add-capability-to-remap-non-ram-pages-to-differe.patch deleted file mode 100644 index 2a0339fe66d..00000000000 --- a/queue-5.10/xen-add-capability-to-remap-non-ram-pages-to-differe.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 5c0568356000a349fb130419b5d53f8f357add75 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 14 Aug 2024 16:47:25 +0200 -Subject: xen: add capability to remap non-RAM pages to different PFNs - -From: Juergen Gross - -[ Upstream commit d05208cf7f05420ad10cc7f9550f91d485523659 ] - -When running as a Xen PV dom0 it can happen that the kernel is being -loaded to a guest physical address conflicting with the host memory -map. - -In order to be able to resolve this conflict, add the capability to -remap non-RAM areas to different guest PFNs. A function to use this -remapping information for other purposes than doing the remap will be -added when needed. - -As the number of conflicts should be rather low (currently only -machines with max. 1 conflict are known), save the remap data in a -small statically allocated array. - -Signed-off-by: Juergen Gross -Reviewed-by: Jan Beulich -Signed-off-by: Juergen Gross -Stable-dep-of: be35d91c8880 ("xen: tolerate ACPI NVS memory overlapping with Xen allocated memory") -Signed-off-by: Sasha Levin ---- - arch/x86/xen/p2m.c | 63 ++++++++++++++++++++++++++++++++++++++++++ - arch/x86/xen/xen-ops.h | 3 ++ - 2 files changed, 66 insertions(+) - -diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c -index bfa972f7e8745..17df3143ae65c 100644 ---- a/arch/x86/xen/p2m.c -+++ b/arch/x86/xen/p2m.c -@@ -80,6 +80,7 @@ - #include - #include - #include -+#include - - #include "multicalls.h" - #include "xen-ops.h" -@@ -801,6 +802,68 @@ int clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref *unmap_ops, - } - EXPORT_SYMBOL_GPL(clear_foreign_p2m_mapping); - -+/* Remapped non-RAM areas */ -+#define NR_NONRAM_REMAP 4 -+static struct nonram_remap { -+ phys_addr_t maddr; -+ phys_addr_t paddr; -+ size_t size; -+} xen_nonram_remap[NR_NONRAM_REMAP] __ro_after_init; -+static unsigned int nr_nonram_remap __ro_after_init; -+ -+/* -+ * Do the real remapping of non-RAM regions as specified in the -+ * xen_nonram_remap[] array. -+ * In case of an error just crash the system. -+ */ -+void __init xen_do_remap_nonram(void) -+{ -+ unsigned int i; -+ unsigned int remapped = 0; -+ const struct nonram_remap *remap = xen_nonram_remap; -+ unsigned long pfn, mfn, end_pfn; -+ -+ for (i = 0; i < nr_nonram_remap; i++) { -+ end_pfn = PFN_UP(remap->paddr + remap->size); -+ pfn = PFN_DOWN(remap->paddr); -+ mfn = PFN_DOWN(remap->maddr); -+ while (pfn < end_pfn) { -+ if (!set_phys_to_machine(pfn, mfn)) -+ panic("Failed to set p2m mapping for pfn=%lx mfn=%lx\n", -+ pfn, mfn); -+ -+ pfn++; -+ mfn++; -+ remapped++; -+ } -+ -+ remap++; -+ } -+ -+ pr_info("Remapped %u non-RAM page(s)\n", remapped); -+} -+ -+/* -+ * Add a new non-RAM remap entry. -+ * In case of no free entry found, just crash the system. -+ */ -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size) -+{ -+ BUG_ON((maddr & ~PAGE_MASK) != (paddr & ~PAGE_MASK)); -+ -+ if (nr_nonram_remap == NR_NONRAM_REMAP) { -+ xen_raw_console_write("Number of required E820 entry remapping actions exceed maximum value\n"); -+ BUG(); -+ } -+ -+ xen_nonram_remap[nr_nonram_remap].maddr = maddr; -+ xen_nonram_remap[nr_nonram_remap].paddr = paddr; -+ xen_nonram_remap[nr_nonram_remap].size = size; -+ -+ nr_nonram_remap++; -+} -+ - #ifdef CONFIG_XEN_DEBUG_FS - #include - #include "debugfs.h" -diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h -index d205686d92054..6ea24e08c4e6c 100644 ---- a/arch/x86/xen/xen-ops.h -+++ b/arch/x86/xen/xen-ops.h -@@ -43,6 +43,9 @@ void xen_mm_unpin_all(void); - #ifdef CONFIG_X86_64 - void __init xen_relocate_p2m(void); - #endif -+void __init xen_do_remap_nonram(void); -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size); - - void __init xen_chk_is_e820_usable(phys_addr_t start, phys_addr_t size, - const char *component); --- -2.43.0 - diff --git a/queue-5.15/series b/queue-5.15/series index fd5a7ab2f5c..2ec7983dc37 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -174,7 +174,6 @@ drivers-drm-exynos_drm_gsc-fix-wrong-assignment-in-g.patch xen-use-correct-end-address-of-kernel-for-conflict-c.patch xen-introduce-generic-helper-checking-for-memory-map.patch xen-move-max_pfn-in-xen_memory_setup-out-of-function.patch -xen-add-capability-to-remap-non-ram-pages-to-differe.patch xen-swiotlb-add-alignment-check-for-dma-buffers.patch tpm-clean-up-tpm-space-after-command-failure.patch selftests-bpf-fix-compile-error-from-rlim_t-in-sk_st.patch diff --git a/queue-5.15/xen-add-capability-to-remap-non-ram-pages-to-differe.patch b/queue-5.15/xen-add-capability-to-remap-non-ram-pages-to-differe.patch deleted file mode 100644 index 3e58fbfff81..00000000000 --- a/queue-5.15/xen-add-capability-to-remap-non-ram-pages-to-differe.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 42e67170cdf91439034af299778b592a8f6dee83 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 14 Aug 2024 16:47:25 +0200 -Subject: xen: add capability to remap non-RAM pages to different PFNs - -From: Juergen Gross - -[ Upstream commit d05208cf7f05420ad10cc7f9550f91d485523659 ] - -When running as a Xen PV dom0 it can happen that the kernel is being -loaded to a guest physical address conflicting with the host memory -map. - -In order to be able to resolve this conflict, add the capability to -remap non-RAM areas to different guest PFNs. A function to use this -remapping information for other purposes than doing the remap will be -added when needed. - -As the number of conflicts should be rather low (currently only -machines with max. 1 conflict are known), save the remap data in a -small statically allocated array. - -Signed-off-by: Juergen Gross -Reviewed-by: Jan Beulich -Signed-off-by: Juergen Gross -Stable-dep-of: be35d91c8880 ("xen: tolerate ACPI NVS memory overlapping with Xen allocated memory") -Signed-off-by: Sasha Levin ---- - arch/x86/xen/p2m.c | 63 ++++++++++++++++++++++++++++++++++++++++++ - arch/x86/xen/xen-ops.h | 3 ++ - 2 files changed, 66 insertions(+) - -diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c -index 9b3a9fa4a0ade..d458f2f960ac8 100644 ---- a/arch/x86/xen/p2m.c -+++ b/arch/x86/xen/p2m.c -@@ -80,6 +80,7 @@ - #include - #include - #include -+#include - - #include "multicalls.h" - #include "xen-ops.h" -@@ -799,6 +800,68 @@ int clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref *unmap_ops, - return ret; - } - -+/* Remapped non-RAM areas */ -+#define NR_NONRAM_REMAP 4 -+static struct nonram_remap { -+ phys_addr_t maddr; -+ phys_addr_t paddr; -+ size_t size; -+} xen_nonram_remap[NR_NONRAM_REMAP] __ro_after_init; -+static unsigned int nr_nonram_remap __ro_after_init; -+ -+/* -+ * Do the real remapping of non-RAM regions as specified in the -+ * xen_nonram_remap[] array. -+ * In case of an error just crash the system. -+ */ -+void __init xen_do_remap_nonram(void) -+{ -+ unsigned int i; -+ unsigned int remapped = 0; -+ const struct nonram_remap *remap = xen_nonram_remap; -+ unsigned long pfn, mfn, end_pfn; -+ -+ for (i = 0; i < nr_nonram_remap; i++) { -+ end_pfn = PFN_UP(remap->paddr + remap->size); -+ pfn = PFN_DOWN(remap->paddr); -+ mfn = PFN_DOWN(remap->maddr); -+ while (pfn < end_pfn) { -+ if (!set_phys_to_machine(pfn, mfn)) -+ panic("Failed to set p2m mapping for pfn=%lx mfn=%lx\n", -+ pfn, mfn); -+ -+ pfn++; -+ mfn++; -+ remapped++; -+ } -+ -+ remap++; -+ } -+ -+ pr_info("Remapped %u non-RAM page(s)\n", remapped); -+} -+ -+/* -+ * Add a new non-RAM remap entry. -+ * In case of no free entry found, just crash the system. -+ */ -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size) -+{ -+ BUG_ON((maddr & ~PAGE_MASK) != (paddr & ~PAGE_MASK)); -+ -+ if (nr_nonram_remap == NR_NONRAM_REMAP) { -+ xen_raw_console_write("Number of required E820 entry remapping actions exceed maximum value\n"); -+ BUG(); -+ } -+ -+ xen_nonram_remap[nr_nonram_remap].maddr = maddr; -+ xen_nonram_remap[nr_nonram_remap].paddr = paddr; -+ xen_nonram_remap[nr_nonram_remap].size = size; -+ -+ nr_nonram_remap++; -+} -+ - #ifdef CONFIG_XEN_DEBUG_FS - #include - #include "debugfs.h" -diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h -index 55e6e7efb426e..680e26ad436ee 100644 ---- a/arch/x86/xen/xen-ops.h -+++ b/arch/x86/xen/xen-ops.h -@@ -43,6 +43,9 @@ void xen_mm_unpin_all(void); - #ifdef CONFIG_X86_64 - void __init xen_relocate_p2m(void); - #endif -+void __init xen_do_remap_nonram(void); -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size); - - void __init xen_chk_is_e820_usable(phys_addr_t start, phys_addr_t size, - const char *component); --- -2.43.0 - diff --git a/queue-5.4/series b/queue-5.4/series index 151fb2d15d1..1ee7b13cddb 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -85,7 +85,6 @@ drivers-drm-exynos_drm_gsc-fix-wrong-assignment-in-g.patch xen-use-correct-end-address-of-kernel-for-conflict-c.patch xen-introduce-generic-helper-checking-for-memory-map.patch xen-move-max_pfn-in-xen_memory_setup-out-of-function.patch -xen-add-capability-to-remap-non-ram-pages-to-differe.patch xen-swiotlb-add-alignment-check-for-dma-buffers.patch tpm-clean-up-tpm-space-after-command-failure.patch selftests-bpf-fix-compile-error-from-rlim_t-in-sk_st.patch diff --git a/queue-5.4/xen-add-capability-to-remap-non-ram-pages-to-differe.patch b/queue-5.4/xen-add-capability-to-remap-non-ram-pages-to-differe.patch deleted file mode 100644 index 5d273e44737..00000000000 --- a/queue-5.4/xen-add-capability-to-remap-non-ram-pages-to-differe.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 293d92229a4dee751519ac8bb6a07ce39e8a5259 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 14 Aug 2024 16:47:25 +0200 -Subject: xen: add capability to remap non-RAM pages to different PFNs - -From: Juergen Gross - -[ Upstream commit d05208cf7f05420ad10cc7f9550f91d485523659 ] - -When running as a Xen PV dom0 it can happen that the kernel is being -loaded to a guest physical address conflicting with the host memory -map. - -In order to be able to resolve this conflict, add the capability to -remap non-RAM areas to different guest PFNs. A function to use this -remapping information for other purposes than doing the remap will be -added when needed. - -As the number of conflicts should be rather low (currently only -machines with max. 1 conflict are known), save the remap data in a -small statically allocated array. - -Signed-off-by: Juergen Gross -Reviewed-by: Jan Beulich -Signed-off-by: Juergen Gross -Stable-dep-of: be35d91c8880 ("xen: tolerate ACPI NVS memory overlapping with Xen allocated memory") -Signed-off-by: Sasha Levin ---- - arch/x86/xen/p2m.c | 63 ++++++++++++++++++++++++++++++++++++++++++ - arch/x86/xen/xen-ops.h | 3 ++ - 2 files changed, 66 insertions(+) - -diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c -index bfe6e862e13e2..3e9b655a26cae 100644 ---- a/arch/x86/xen/p2m.c -+++ b/arch/x86/xen/p2m.c -@@ -80,6 +80,7 @@ - #include - #include - #include -+#include - - #include "multicalls.h" - #include "xen-ops.h" -@@ -806,6 +807,68 @@ int clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref *unmap_ops, - } - EXPORT_SYMBOL_GPL(clear_foreign_p2m_mapping); - -+/* Remapped non-RAM areas */ -+#define NR_NONRAM_REMAP 4 -+static struct nonram_remap { -+ phys_addr_t maddr; -+ phys_addr_t paddr; -+ size_t size; -+} xen_nonram_remap[NR_NONRAM_REMAP] __ro_after_init; -+static unsigned int nr_nonram_remap __ro_after_init; -+ -+/* -+ * Do the real remapping of non-RAM regions as specified in the -+ * xen_nonram_remap[] array. -+ * In case of an error just crash the system. -+ */ -+void __init xen_do_remap_nonram(void) -+{ -+ unsigned int i; -+ unsigned int remapped = 0; -+ const struct nonram_remap *remap = xen_nonram_remap; -+ unsigned long pfn, mfn, end_pfn; -+ -+ for (i = 0; i < nr_nonram_remap; i++) { -+ end_pfn = PFN_UP(remap->paddr + remap->size); -+ pfn = PFN_DOWN(remap->paddr); -+ mfn = PFN_DOWN(remap->maddr); -+ while (pfn < end_pfn) { -+ if (!set_phys_to_machine(pfn, mfn)) -+ panic("Failed to set p2m mapping for pfn=%lx mfn=%lx\n", -+ pfn, mfn); -+ -+ pfn++; -+ mfn++; -+ remapped++; -+ } -+ -+ remap++; -+ } -+ -+ pr_info("Remapped %u non-RAM page(s)\n", remapped); -+} -+ -+/* -+ * Add a new non-RAM remap entry. -+ * In case of no free entry found, just crash the system. -+ */ -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size) -+{ -+ BUG_ON((maddr & ~PAGE_MASK) != (paddr & ~PAGE_MASK)); -+ -+ if (nr_nonram_remap == NR_NONRAM_REMAP) { -+ xen_raw_console_write("Number of required E820 entry remapping actions exceed maximum value\n"); -+ BUG(); -+ } -+ -+ xen_nonram_remap[nr_nonram_remap].maddr = maddr; -+ xen_nonram_remap[nr_nonram_remap].paddr = paddr; -+ xen_nonram_remap[nr_nonram_remap].size = size; -+ -+ nr_nonram_remap++; -+} -+ - #ifdef CONFIG_XEN_DEBUG_FS - #include - #include "debugfs.h" -diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h -index 4e2cc1e23f843..5e398ae5943bd 100644 ---- a/arch/x86/xen/xen-ops.h -+++ b/arch/x86/xen/xen-ops.h -@@ -45,6 +45,9 @@ void xen_mm_unpin_all(void); - #ifdef CONFIG_X86_64 - void __init xen_relocate_p2m(void); - #endif -+void __init xen_do_remap_nonram(void); -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size); - - void __init xen_chk_is_e820_usable(phys_addr_t start, phys_addr_t size, - const char *component); --- -2.43.0 - diff --git a/queue-6.1/series b/queue-6.1/series index 19c1fbf419a..ad9ef63540e 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -134,7 +134,6 @@ hid-wacom-support-sequence-numbers-smaller-than-16-b.patch hid-wacom-do-not-warn-about-dropped-packets-for-firs.patch xen-introduce-generic-helper-checking-for-memory-map.patch xen-move-max_pfn-in-xen_memory_setup-out-of-function.patch -xen-add-capability-to-remap-non-ram-pages-to-differe.patch xen-swiotlb-add-alignment-check-for-dma-buffers.patch xen-swiotlb-fix-allocated-size.patch tpm-clean-up-tpm-space-after-command-failure.patch diff --git a/queue-6.1/xen-add-capability-to-remap-non-ram-pages-to-differe.patch b/queue-6.1/xen-add-capability-to-remap-non-ram-pages-to-differe.patch deleted file mode 100644 index 8ec9d0aa9a9..00000000000 --- a/queue-6.1/xen-add-capability-to-remap-non-ram-pages-to-differe.patch +++ /dev/null @@ -1,130 +0,0 @@ -From a8dfa1230459c1eb2274b6428e17472cfcf2b29b Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Wed, 14 Aug 2024 16:47:25 +0200 -Subject: xen: add capability to remap non-RAM pages to different PFNs - -From: Juergen Gross - -[ Upstream commit d05208cf7f05420ad10cc7f9550f91d485523659 ] - -When running as a Xen PV dom0 it can happen that the kernel is being -loaded to a guest physical address conflicting with the host memory -map. - -In order to be able to resolve this conflict, add the capability to -remap non-RAM areas to different guest PFNs. A function to use this -remapping information for other purposes than doing the remap will be -added when needed. - -As the number of conflicts should be rather low (currently only -machines with max. 1 conflict are known), save the remap data in a -small statically allocated array. - -Signed-off-by: Juergen Gross -Reviewed-by: Jan Beulich -Signed-off-by: Juergen Gross -Stable-dep-of: be35d91c8880 ("xen: tolerate ACPI NVS memory overlapping with Xen allocated memory") -Signed-off-by: Sasha Levin ---- - arch/x86/xen/p2m.c | 63 ++++++++++++++++++++++++++++++++++++++++++ - arch/x86/xen/xen-ops.h | 3 ++ - 2 files changed, 66 insertions(+) - -diff --git a/arch/x86/xen/p2m.c b/arch/x86/xen/p2m.c -index a02cc54338897..7376892730cd5 100644 ---- a/arch/x86/xen/p2m.c -+++ b/arch/x86/xen/p2m.c -@@ -80,6 +80,7 @@ - #include - #include - #include -+#include - - #include "multicalls.h" - #include "xen-ops.h" -@@ -799,6 +800,68 @@ int clear_foreign_p2m_mapping(struct gnttab_unmap_grant_ref *unmap_ops, - return ret; - } - -+/* Remapped non-RAM areas */ -+#define NR_NONRAM_REMAP 4 -+static struct nonram_remap { -+ phys_addr_t maddr; -+ phys_addr_t paddr; -+ size_t size; -+} xen_nonram_remap[NR_NONRAM_REMAP] __ro_after_init; -+static unsigned int nr_nonram_remap __ro_after_init; -+ -+/* -+ * Do the real remapping of non-RAM regions as specified in the -+ * xen_nonram_remap[] array. -+ * In case of an error just crash the system. -+ */ -+void __init xen_do_remap_nonram(void) -+{ -+ unsigned int i; -+ unsigned int remapped = 0; -+ const struct nonram_remap *remap = xen_nonram_remap; -+ unsigned long pfn, mfn, end_pfn; -+ -+ for (i = 0; i < nr_nonram_remap; i++) { -+ end_pfn = PFN_UP(remap->paddr + remap->size); -+ pfn = PFN_DOWN(remap->paddr); -+ mfn = PFN_DOWN(remap->maddr); -+ while (pfn < end_pfn) { -+ if (!set_phys_to_machine(pfn, mfn)) -+ panic("Failed to set p2m mapping for pfn=%lx mfn=%lx\n", -+ pfn, mfn); -+ -+ pfn++; -+ mfn++; -+ remapped++; -+ } -+ -+ remap++; -+ } -+ -+ pr_info("Remapped %u non-RAM page(s)\n", remapped); -+} -+ -+/* -+ * Add a new non-RAM remap entry. -+ * In case of no free entry found, just crash the system. -+ */ -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size) -+{ -+ BUG_ON((maddr & ~PAGE_MASK) != (paddr & ~PAGE_MASK)); -+ -+ if (nr_nonram_remap == NR_NONRAM_REMAP) { -+ xen_raw_console_write("Number of required E820 entry remapping actions exceed maximum value\n"); -+ BUG(); -+ } -+ -+ xen_nonram_remap[nr_nonram_remap].maddr = maddr; -+ xen_nonram_remap[nr_nonram_remap].paddr = paddr; -+ xen_nonram_remap[nr_nonram_remap].size = size; -+ -+ nr_nonram_remap++; -+} -+ - #ifdef CONFIG_XEN_DEBUG_FS - #include - #include "debugfs.h" -diff --git a/arch/x86/xen/xen-ops.h b/arch/x86/xen/xen-ops.h -index 35670a44ef4c5..793caab79055b 100644 ---- a/arch/x86/xen/xen-ops.h -+++ b/arch/x86/xen/xen-ops.h -@@ -43,6 +43,9 @@ void xen_mm_unpin_all(void); - #ifdef CONFIG_X86_64 - void __init xen_relocate_p2m(void); - #endif -+void __init xen_do_remap_nonram(void); -+void __init xen_add_remap_nonram(phys_addr_t maddr, phys_addr_t paddr, -+ unsigned long size); - - void __init xen_chk_is_e820_usable(phys_addr_t start, phys_addr_t size, - const char *component); --- -2.43.0 - -- 2.47.3