--- /dev/null
+From 1966db682f064172891275cb951aa8c98a0a809b Mon Sep 17 00:00:00 2001
+From: Yunhui Cui <cuiyunhui@bytedance.com>
+Date: Mon, 14 Oct 2024 21:01:41 +0800
+Subject: RISC-V: ACPI: fix early_ioremap to early_memremap
+
+From: Yunhui Cui <cuiyunhui@bytedance.com>
+
+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 <alexghiti@rivosinc.com>
+Signed-off-by: Yunhui Cui <cuiyunhui@bytedance.com>
+Reviewed-by: Sunil V L <sunilvl@ventanamicro.com>
+Link: https://lore.kernel.org/r/20241014130141.86426-1-cuiyunhui@bytedance.com
+Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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
+@@ -210,7 +210,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)
+@@ -218,7 +218,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)