09.01.2024 16:52, Peter Maydell:
..
Oh, your kernel isn't an LPAE one (i.e. CONFIG_LPAE is not
set). That will obviously never be able to access registers
above the 4GB mark (though the kernel's error message in this
situation is a bit unhelpful and could perhaps be improved).
If I set CONFIG_LPAE on the non-working config it starts working.

I think then the answer is:
  * if you want to use the (default) highmem setup, use an LPAE kernel
  * if you want to use a non-LPAE kernel, tell QEMU to avoid
    highmem using '-machine virt,highmem=off'

It was just a bug that we were accidentally disabling highmem
for the 32-bit 'max' CPU before b8f7959f28c4f3.

Wow wow wow.  So it's a pebkac bug, not qemu bug.. :)
I didn't even know about LPAE before this email, and knew very
little about arm stuff too.

Thank you very much for your work and time!

The diagnostics here is definitely.. "interesting", so to say, it's
very "obvious" what the problem is.. from the kernel messages :)

And the author(s) of the tool used in debian to run arm guest (which
triggered this issue with qemu 8.2) didn't know this thing either,
obviously.  Also, it seems to be a little-known fact that qemu has
highmem enabled for 32bit arm by default and that one - unlike e.g
i386 - actually breaks system (with pci bus being unaccessible),
while on i386 the only outcome is not all memory is available.
That feels like unfortunate decision to enable highmem by default
on arm in qemu 2.12.

The linux-image-6.6.9-armmp-lpae_6.6.9-1_armhf.deb kernel
will probably work (though I haven't tested it).

Yes, it works.  Also -machine virt,highmem=off works.  There's
no bug per se.


Thank you for all the findings, Peter!  Much appreciated!

/mjt


Reply via email to