On Tue, May 09, 2023 at 09:41:42PM +0100, Conor Dooley wrote:
On Tue, May 09, 2023 at 12:57:58PM -0700, Guenter Roeck wrote:
On Tue, May 09, 2023 at 05:26:31AM +0200, Greg Kroah-Hartman wrote:
This is the start of the stable review cycle for the 6.1.28 release. There are 610 patches in this series, all will be posted as a response to this one. If anyone has any issues with these being applied, please let me know.
Responses should be made by Thu, 11 May 2023 03:05:05 +0000. Anything received after that time might be too late.
Build results: total: 155 pass: 155 fail: 0 Qemu test results: total: 519 pass: 519 fail: 0
New persistent runtime warning when booting riscv32/64 images:
You sure this is new? I seem to be able to reproduce for QEMU (which I
New for my tests, yes.
don't usually test) in several versions of 6.1. Don't see it in (my) hardware though, as the particular platform doesn't end up calling the offending function. Out of curiosity, what's your QEMU invocation?
Example boot from initrd:
qemu-system-riscv64 -M virt -m 512M \ -no-reboot -kernel arch/riscv/boot/Image \ -initrd rootfs.cpio \ -device e1000,netdev=net0 \ -netdev user,id=net0 -bios default \ -append "panic=-1 rdinit=/sbin/init console=ttyS0,115200 earlycon=uart8250,mmio,0x10000000,115200" \ -nographic -monitor none
qemu version is 8.0, but I don't think that makes a difference. What does your command line look like ?
Anyways, looks like a partial backport is the cause. How's it look with:
diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 694267d1fe81..fd1238df6149 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -9,6 +9,7 @@ #include <linux/bitmap.h> #include <linux/ctype.h> #include <linux/libfdt.h> +#include <linux/memory.h> #include <linux/module.h> #include <linux/of.h> #include <asm/alternative.h> @@ -316,8 +317,11 @@ void __init_or_module riscv_cpufeature_patch_func(struct alt_entry *begin, } tmp = (1U << alt->errata_id);
if (cpu_req_feature & tmp)
if (cpu_req_feature & tmp) {
mutex_lock(&text_mutex); patch_text_nosync(alt->old_ptr, alt->alt_ptr, alt->alt_len);
mutex_unlock(&text_mutex);
}}
} #endif
This fixes the problem for me.
Thanks, Guenter