On Tue, 9 Jan 2024 at 14:21, Alex Bennée <[email protected]> wrote: > > Peter Maydell <[email protected]> writes: > > > On Tue, 9 Jan 2024 at 11:33, Peter Maydell <[email protected]> wrote: > >> On Mon, 8 Jan 2024 at 17:38, Michael Tokarev <[email protected]> wrote: > >> > Speaking of config. This is standard debian config, I'm attaching one > >> > to this email. It can be found in the package, eg > >> > http://deb.debian.org/debian/pool/main/l/linux/linux-image-6.6.9-armmp_6.6.9-1_armhf.deb > >> > in /boot/config-$(uname -r). > >> > >> It does seem to be a config thing -- on a plain upstream > >> v6.6.9 my config works and that debian default one does > >> not. Now to try to identify which particular config > >> difference is at fault. (It's not the CONFIG_VMSPLIT one, > >> I just tried that.) > > > > 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' > > Could we expand the "highmem" description in > https://www.qemu.org/docs/master/system/arm/virt.html to make it > clearer. I'm sure this isn't the first time there have been 32bit > difficulties with non-LPAE kernels?
Sure. We could make the highmem property description read: # Set on/off to enable/disable placing devices and RAM in physical # address space above 32 bits. The default is on for machine types # later than virt-2.12 when the CPU supports an address space # bigger than 32 bits (i.e. 64-bit CPUs, and 32-bit CPUs with the # Large Physical Address Extension (LPAE) feature). If you want to # boot a 32-bit kernel which does not have CONFIG_LPAE enabled on # a CPU type which implements LPAE, you will need to manually set # this to 'off'; otherwise some devices, such as the PCI controller, # will not be accessible. How's that ? thanks -- PMM
