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

Reply via email to