From c46027a2972b71eea10f948b7c34a7454dead0ae Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Tue, 5 Nov 2024 17:26:29 +0100 Subject: [PATCH] 6.6-stable patches added patches: risc-v-acpi-fix-early_ioremap-to-early_memremap.patch --- ...-fix-early_ioremap-to-early_memremap.patch | 52 +++++++++++++++++++ queue-6.6/series | 1 + 2 files changed, 53 insertions(+) create mode 100644 queue-6.6/risc-v-acpi-fix-early_ioremap-to-early_memremap.patch diff --git a/queue-6.6/risc-v-acpi-fix-early_ioremap-to-early_memremap.patch b/queue-6.6/risc-v-acpi-fix-early_ioremap-to-early_memremap.patch new file mode 100644 index 00000000000..9793c34f6ca --- /dev/null +++ b/queue-6.6/risc-v-acpi-fix-early_ioremap-to-early_memremap.patch @@ -0,0 +1,52 @@ +From 1966db682f064172891275cb951aa8c98a0a809b Mon Sep 17 00:00:00 2001 +From: Yunhui Cui +Date: Mon, 14 Oct 2024 21:01:41 +0800 +Subject: RISC-V: ACPI: fix early_ioremap to early_memremap + +From: Yunhui Cui + +commit 1966db682f064172891275cb951aa8c98a0a809b upstream. + +When SVPBMT is enabled, __acpi_map_table() will directly access the +data in DDR through the IO attribute, rather than through hardware +cache consistency, resulting in incorrect data in the obtained ACPI +table. + +The log: ACPI: [ACPI:0x18] Invalid zero length. + +We do not assume whether the bootloader flushes or not. We should +access in a cacheable way instead of maintaining cache consistency +by software. + +Fixes: 3b426d4b5b14 ("RISC-V: ACPI : Fix for usage of pointers in different address space") +Cc: stable@vger.kernel.org +Reviewed-by: Alexandre Ghiti +Signed-off-by: Yunhui Cui +Reviewed-by: Sunil V L +Link: https://lore.kernel.org/r/20241014130141.86426-1-cuiyunhui@bytedance.com +Signed-off-by: Palmer Dabbelt +Signed-off-by: Greg Kroah-Hartman +--- + arch/riscv/kernel/acpi.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/arch/riscv/kernel/acpi.c ++++ b/arch/riscv/kernel/acpi.c +@@ -204,7 +204,7 @@ void __init __iomem *__acpi_map_table(un + if (!size) + return NULL; + +- return early_ioremap(phys, size); ++ return early_memremap(phys, size); + } + + void __init __acpi_unmap_table(void __iomem *map, unsigned long size) +@@ -212,7 +212,7 @@ void __init __acpi_unmap_table(void __io + if (!map || !size) + return; + +- early_iounmap(map, size); ++ early_memunmap(map, size); + } + + void __iomem *acpi_os_ioremap(acpi_physical_address phys, acpi_size size) diff --git a/queue-6.6/series b/queue-6.6/series index e2245aec8b1..2013db5d78d 100644 --- a/queue-6.6/series +++ b/queue-6.6/series @@ -99,3 +99,4 @@ iio-gts-helper-fix-memory-leaks-for-the-error-path-of-iio_gts_build_avail_scale_ iio-gts-helper-fix-memory-leaks-in-iio_gts_build_avail_scale_table.patch iio-light-veml6030-fix-microlux-value-calculation.patch nilfs2-fix-potential-deadlock-with-newly-created-symlinks.patch +risc-v-acpi-fix-early_ioremap-to-early_memremap.patch -- 2.47.3