From 6679819f55871e6882dac0bdc9b3b972770d5987 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 29 Mar 2021 12:10:47 +0200 Subject: [PATCH] drop broken arm64 patch --- ...-the-inside-linear-map-range-during-.patch | 75 ----------------- ...64-mm-define-arch_get_mappable_range.patch | 83 ------------------- queue-5.10/series | 2 - ...-the-inside-linear-map-range-during-.patch | 75 ----------------- ...64-mm-define-arch_get_mappable_range.patch | 83 ------------------- queue-5.11/series | 2 - 6 files changed, 320 deletions(-) delete mode 100644 queue-5.10/arm64-mm-correct-the-inside-linear-map-range-during-.patch delete mode 100644 queue-5.10/arm64-mm-define-arch_get_mappable_range.patch delete mode 100644 queue-5.11/arm64-mm-correct-the-inside-linear-map-range-during-.patch delete mode 100644 queue-5.11/arm64-mm-define-arch_get_mappable_range.patch diff --git a/queue-5.10/arm64-mm-correct-the-inside-linear-map-range-during-.patch b/queue-5.10/arm64-mm-correct-the-inside-linear-map-range-during-.patch deleted file mode 100644 index ceb103c607d..00000000000 --- a/queue-5.10/arm64-mm-correct-the-inside-linear-map-range-during-.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 6c0d0d9d497aab248d4dbe61844486545e2bab8e Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 16 Feb 2021 10:03:51 -0500 -Subject: arm64: mm: correct the inside linear map range during hotplug check - -From: Pavel Tatashin - -[ Upstream commit ee7febce051945be28ad86d16a15886f878204de ] - -Memory hotplug may fail on systems with CONFIG_RANDOMIZE_BASE because the -linear map range is not checked correctly. - -The start physical address that linear map covers can be actually at the -end of the range because of randomization. Check that and if so reduce it -to 0. - -This can be verified on QEMU with setting kaslr-seed to ~0ul: - -memstart_offset_seed = 0xffff -START: __pa(_PAGE_OFFSET(vabits_actual)) = ffff9000c0000000 -END: __pa(PAGE_END - 1) = 1000bfffffff - -Signed-off-by: Pavel Tatashin -Fixes: 58284a901b42 ("arm64/mm: Validate hotplug range before creating linear mapping") -Tested-by: Tyler Hicks -Reviewed-by: Anshuman Khandual -Link: https://lore.kernel.org/r/20210216150351.129018-2-pasha.tatashin@soleen.com -Signed-off-by: Will Deacon -Signed-off-by: Sasha Levin ---- - arch/arm64/mm/mmu.c | 21 +++++++++++++++++++-- - 1 file changed, 19 insertions(+), 2 deletions(-) - -diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c -index 0635803463a5..10938dbe1f11 100644 ---- a/arch/arm64/mm/mmu.c -+++ b/arch/arm64/mm/mmu.c -@@ -1448,6 +1448,22 @@ static void __remove_pgd_mapping(pgd_t *pgdir, unsigned long start, u64 size) - struct range arch_get_mappable_range(void) - { - struct range mhp_range; -+ u64 start_linear_pa = __pa(_PAGE_OFFSET(vabits_actual)); -+ u64 end_linear_pa = __pa(PAGE_END - 1); -+ -+ if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { -+ /* -+ * Check for a wrap, it is possible because of randomized linear -+ * mapping the start physical address is actually bigger than -+ * the end physical address. In this case set start to zero -+ * because [0, end_linear_pa] range must still be able to cover -+ * all addressable physical addresses. -+ */ -+ if (start_linear_pa > end_linear_pa) -+ start_linear_pa = 0; -+ } -+ -+ WARN_ON(start_linear_pa > end_linear_pa); - - /* - * Linear mapping region is the range [PAGE_OFFSET..(PAGE_END - 1)] -@@ -1455,8 +1471,9 @@ struct range arch_get_mappable_range(void) - * range which can be mapped inside this linear mapping range, must - * also be derived from its end points. - */ -- mhp_range.start = __pa(_PAGE_OFFSET(vabits_actual)); -- mhp_range.end = __pa(PAGE_END - 1); -+ mhp_range.start = start_linear_pa; -+ mhp_range.end = end_linear_pa; -+ - return mhp_range; - } - --- -2.30.1 - diff --git a/queue-5.10/arm64-mm-define-arch_get_mappable_range.patch b/queue-5.10/arm64-mm-define-arch_get_mappable_range.patch deleted file mode 100644 index 46f1aa2567a..00000000000 --- a/queue-5.10/arm64-mm-define-arch_get_mappable_range.patch +++ /dev/null @@ -1,83 +0,0 @@ -From 300406ce621b676cd95235171c5ea67ee0468293 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 25 Feb 2021 17:17:37 -0800 -Subject: arm64/mm: define arch_get_mappable_range() - -From: Anshuman Khandual - -[ Upstream commit 03aaf83fba6e5af08b5dd174c72edee9b7d9ed9b ] - -This overrides arch_get_mappable_range() on arm64 platform which will be -used with recently added generic framework. It drops -inside_linear_region() and subsequent check in arch_add_memory() which are -no longer required. It also adds a VM_BUG_ON() check that would ensure -that mhp_range_allowed() has already been called. - -Link: https://lkml.kernel.org/r/1612149902-7867-3-git-send-email-anshuman.khandual@arm.com -Signed-off-by: Anshuman Khandual -Reviewed-by: David Hildenbrand -Reviewed-by: Catalin Marinas -Cc: Will Deacon -Cc: Ard Biesheuvel -Cc: Mark Rutland -Cc: Heiko Carstens -Cc: Jason Wang -Cc: Jonathan Cameron -Cc: "Michael S. Tsirkin" -Cc: Michal Hocko -Cc: Oscar Salvador -Cc: Pankaj Gupta -Cc: Pankaj Gupta -Cc: teawater -Cc: Vasily Gorbik -Cc: Wei Yang -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Sasha Levin ---- - arch/arm64/mm/mmu.c | 15 +++++++-------- - 1 file changed, 7 insertions(+), 8 deletions(-) - -diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c -index 6aabf1eced31..0635803463a5 100644 ---- a/arch/arm64/mm/mmu.c -+++ b/arch/arm64/mm/mmu.c -@@ -1445,16 +1445,19 @@ static void __remove_pgd_mapping(pgd_t *pgdir, unsigned long start, u64 size) - free_empty_tables(start, end, PAGE_OFFSET, PAGE_END); - } - --static bool inside_linear_region(u64 start, u64 size) -+struct range arch_get_mappable_range(void) - { -+ struct range mhp_range; -+ - /* - * Linear mapping region is the range [PAGE_OFFSET..(PAGE_END - 1)] - * accommodating both its ends but excluding PAGE_END. Max physical - * range which can be mapped inside this linear mapping range, must - * also be derived from its end points. - */ -- return start >= __pa(_PAGE_OFFSET(vabits_actual)) && -- (start + size - 1) <= __pa(PAGE_END - 1); -+ mhp_range.start = __pa(_PAGE_OFFSET(vabits_actual)); -+ mhp_range.end = __pa(PAGE_END - 1); -+ return mhp_range; - } - - int arch_add_memory(int nid, u64 start, u64 size, -@@ -1462,11 +1465,7 @@ int arch_add_memory(int nid, u64 start, u64 size, - { - int ret, flags = 0; - -- if (!inside_linear_region(start, size)) { -- pr_err("[%llx %llx] is outside linear mapping region\n", start, start + size); -- return -EINVAL; -- } -- -+ VM_BUG_ON(!mhp_range_allowed(start, size, true)); - if (rodata_full || debug_pagealloc_enabled()) - flags = NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; - --- -2.30.1 - diff --git a/queue-5.10/series b/queue-5.10/series index 4cbfaf971d2..564ccc8f177 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -188,8 +188,6 @@ net-phy-broadcom-set-proper-1000basex-sgmii-interfac.patch net-phy-broadcom-fix-rgmii-delays-for-bcm50160-and-b.patch revert-netfilter-x_tables-switch-synchronization-to-.patch netfilter-x_tables-use-correct-memory-barriers.patch -arm64-mm-define-arch_get_mappable_range.patch -arm64-mm-correct-the-inside-linear-map-range-during-.patch dm-table-fix-zoned-model-check-and-zone-sectors-chec.patch mm-mmu_notifiers-ensure-range_end-is-paired-with-ran.patch revert-netfilter-x_tables-update-remaining-dereferen.patch diff --git a/queue-5.11/arm64-mm-correct-the-inside-linear-map-range-during-.patch b/queue-5.11/arm64-mm-correct-the-inside-linear-map-range-during-.patch deleted file mode 100644 index 66773dc48a8..00000000000 --- a/queue-5.11/arm64-mm-correct-the-inside-linear-map-range-during-.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 72b31a72819ae4245de59ab28613830148308de0 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 16 Feb 2021 10:03:51 -0500 -Subject: arm64: mm: correct the inside linear map range during hotplug check - -From: Pavel Tatashin - -[ Upstream commit ee7febce051945be28ad86d16a15886f878204de ] - -Memory hotplug may fail on systems with CONFIG_RANDOMIZE_BASE because the -linear map range is not checked correctly. - -The start physical address that linear map covers can be actually at the -end of the range because of randomization. Check that and if so reduce it -to 0. - -This can be verified on QEMU with setting kaslr-seed to ~0ul: - -memstart_offset_seed = 0xffff -START: __pa(_PAGE_OFFSET(vabits_actual)) = ffff9000c0000000 -END: __pa(PAGE_END - 1) = 1000bfffffff - -Signed-off-by: Pavel Tatashin -Fixes: 58284a901b42 ("arm64/mm: Validate hotplug range before creating linear mapping") -Tested-by: Tyler Hicks -Reviewed-by: Anshuman Khandual -Link: https://lore.kernel.org/r/20210216150351.129018-2-pasha.tatashin@soleen.com -Signed-off-by: Will Deacon -Signed-off-by: Sasha Levin ---- - arch/arm64/mm/mmu.c | 21 +++++++++++++++++++-- - 1 file changed, 19 insertions(+), 2 deletions(-) - -diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c -index 92b3be127796..3ca02e917598 100644 ---- a/arch/arm64/mm/mmu.c -+++ b/arch/arm64/mm/mmu.c -@@ -1446,6 +1446,22 @@ static void __remove_pgd_mapping(pgd_t *pgdir, unsigned long start, u64 size) - struct range arch_get_mappable_range(void) - { - struct range mhp_range; -+ u64 start_linear_pa = __pa(_PAGE_OFFSET(vabits_actual)); -+ u64 end_linear_pa = __pa(PAGE_END - 1); -+ -+ if (IS_ENABLED(CONFIG_RANDOMIZE_BASE)) { -+ /* -+ * Check for a wrap, it is possible because of randomized linear -+ * mapping the start physical address is actually bigger than -+ * the end physical address. In this case set start to zero -+ * because [0, end_linear_pa] range must still be able to cover -+ * all addressable physical addresses. -+ */ -+ if (start_linear_pa > end_linear_pa) -+ start_linear_pa = 0; -+ } -+ -+ WARN_ON(start_linear_pa > end_linear_pa); - - /* - * Linear mapping region is the range [PAGE_OFFSET..(PAGE_END - 1)] -@@ -1453,8 +1469,9 @@ struct range arch_get_mappable_range(void) - * range which can be mapped inside this linear mapping range, must - * also be derived from its end points. - */ -- mhp_range.start = __pa(_PAGE_OFFSET(vabits_actual)); -- mhp_range.end = __pa(PAGE_END - 1); -+ mhp_range.start = start_linear_pa; -+ mhp_range.end = end_linear_pa; -+ - return mhp_range; - } - --- -2.30.1 - diff --git a/queue-5.11/arm64-mm-define-arch_get_mappable_range.patch b/queue-5.11/arm64-mm-define-arch_get_mappable_range.patch deleted file mode 100644 index cbdf1add7df..00000000000 --- a/queue-5.11/arm64-mm-define-arch_get_mappable_range.patch +++ /dev/null @@ -1,83 +0,0 @@ -From c3a48fcf450b7769b5ee743f9eda4329f883b7e6 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Thu, 25 Feb 2021 17:17:37 -0800 -Subject: arm64/mm: define arch_get_mappable_range() - -From: Anshuman Khandual - -[ Upstream commit 03aaf83fba6e5af08b5dd174c72edee9b7d9ed9b ] - -This overrides arch_get_mappable_range() on arm64 platform which will be -used with recently added generic framework. It drops -inside_linear_region() and subsequent check in arch_add_memory() which are -no longer required. It also adds a VM_BUG_ON() check that would ensure -that mhp_range_allowed() has already been called. - -Link: https://lkml.kernel.org/r/1612149902-7867-3-git-send-email-anshuman.khandual@arm.com -Signed-off-by: Anshuman Khandual -Reviewed-by: David Hildenbrand -Reviewed-by: Catalin Marinas -Cc: Will Deacon -Cc: Ard Biesheuvel -Cc: Mark Rutland -Cc: Heiko Carstens -Cc: Jason Wang -Cc: Jonathan Cameron -Cc: "Michael S. Tsirkin" -Cc: Michal Hocko -Cc: Oscar Salvador -Cc: Pankaj Gupta -Cc: Pankaj Gupta -Cc: teawater -Cc: Vasily Gorbik -Cc: Wei Yang -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Sasha Levin ---- - arch/arm64/mm/mmu.c | 15 +++++++-------- - 1 file changed, 7 insertions(+), 8 deletions(-) - -diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c -index 6f0648777d34..92b3be127796 100644 ---- a/arch/arm64/mm/mmu.c -+++ b/arch/arm64/mm/mmu.c -@@ -1443,16 +1443,19 @@ static void __remove_pgd_mapping(pgd_t *pgdir, unsigned long start, u64 size) - free_empty_tables(start, end, PAGE_OFFSET, PAGE_END); - } - --static bool inside_linear_region(u64 start, u64 size) -+struct range arch_get_mappable_range(void) - { -+ struct range mhp_range; -+ - /* - * Linear mapping region is the range [PAGE_OFFSET..(PAGE_END - 1)] - * accommodating both its ends but excluding PAGE_END. Max physical - * range which can be mapped inside this linear mapping range, must - * also be derived from its end points. - */ -- return start >= __pa(_PAGE_OFFSET(vabits_actual)) && -- (start + size - 1) <= __pa(PAGE_END - 1); -+ mhp_range.start = __pa(_PAGE_OFFSET(vabits_actual)); -+ mhp_range.end = __pa(PAGE_END - 1); -+ return mhp_range; - } - - int arch_add_memory(int nid, u64 start, u64 size, -@@ -1460,11 +1463,7 @@ int arch_add_memory(int nid, u64 start, u64 size, - { - int ret, flags = 0; - -- if (!inside_linear_region(start, size)) { -- pr_err("[%llx %llx] is outside linear mapping region\n", start, start + size); -- return -EINVAL; -- } -- -+ VM_BUG_ON(!mhp_range_allowed(start, size, true)); - if (rodata_full || debug_pagealloc_enabled()) - flags = NO_BLOCK_MAPPINGS | NO_CONT_MAPPINGS; - --- -2.30.1 - diff --git a/queue-5.11/series b/queue-5.11/series index 58814c33e5f..c8b123d7ff2 100644 --- a/queue-5.11/series +++ b/queue-5.11/series @@ -222,8 +222,6 @@ netfilter-x_tables-use-correct-memory-barriers.patch bpf-fix-fexit-trampoline.patch bpf-use-nop_atomic5-instead-of-emit_nops-prog-5-for-.patch platform-x86-dell-wmi-sysman-cleanup-create_attribut.patch -arm64-mm-define-arch_get_mappable_range.patch -arm64-mm-correct-the-inside-linear-map-range-during-.patch dm-table-fix-zoned-model-check-and-zone-sectors-chec.patch mm-mmu_notifiers-ensure-range_end-is-paired-with-ran.patch revert-netfilter-x_tables-update-remaining-dereferen.patch -- 2.47.3