On Wed, Oct 23, 2024, at 19:47, Alex Bennée wrote:
On Sun, Oct 20, 2024, at 17:39, Naresh Kamboju wrote: On non-LPAE arm32, this broke the existing behavior for large 32-bit memory sizes. The obvious fix is to change back the PAGE_MASK definition for 32-bit arm to a signed number.
Agreed. However I think we were masking a calling issue that:
/* Actual RAM size depends on initial RAM and device memory settings */ [VIRT_MEM] = { GiB, LEGACY_RAMLIMIT_BYTES },
And:
-m 4G
make no sense with no ARM_LPAE (which the kernel didn't have) but if you pass -machine virt,gic-version=3,highmem=off (the default changed awhile back) you will get a warning:
qemu-system-arm: Addressing limited to 32 bits, but memory exceeds it by 1073741824 bytes
but I guess that didn't trigger for some reason before this patch?
I did not look at the full log, but I don't think there is a problem between kernel and qemu, this is just a kernel regression that can happen on any real or virtual platform with a lot of memory.
I would guess that "highmem=off" was not even set here, so there was probably no warning, and you would still see the same kernel bug with qemu-system-aarch64 and its larger limit for highmem=off.
Arnd