[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses
From: |
Laszlo Ersek |
Subject: |
Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses |
Date: |
Thu, 24 May 2018 15:59:17 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 |
On 05/24/18 15:07, Peter Maydell wrote:
> On 24 May 2018 at 13:59, Laszlo Ersek <address@hidden> wrote:
>> On 05/24/18 11:11, Peter Maydell wrote:
>>> Won't it also break a guest which is just Linux loaded not via
>>> firmware which is an aarch32 kernel without LPAE support?
>>
>> Does such a thing exist? (I honestly have no clue.)
>
> Yes, it does; LPAE isn't a mandatory kernel config option.
> This is why we have the machine 'highmem' option, so that
> we can run on those kernels by not putting anything above
> the 4G boundary. Looking back at the history on that, we
> opted at the time for "default to highmem on, and if you're
> running an non-lpae kernel you need to turn it off manually".
Ah, OK, I didn't know that.
> So we can handle those kernels by just not putting ECAM
> above 4G if highmem is false.
The problem is we can have a combination of 32-bit UEFI firmware (which
certainly lacks LPAE) and a 32-bit kernel which supports LPAE.
Previously, you wouldn't specify highmem=off, and things would just work
-- the firmware would simply ignore the >=4GB MMIO aperture, and use the
32-bit MMIO aperture only (and use the sole 32-bit ECAM). The kernel
could then use both low and high MMIO apertures, however (I gather?).
The difference with "high ECAM" is that it is *moved* (not *added*), so
the 32-bit firmware is left with nothing for config space access. For
booting the same combination as above, you are suddenly forced to add
highmem=off, just to keep the ECAM low -- and that, while it keeps the
firmware happy, prevents the LPAE-capable kernel from using the high
MMIO aperture.
So I think "highmem_ecam" should be computed like this:
highmem_ecam = highmem_ecam_machtype_default &&
highmem &&
(!firmware_loaded || aarch64);
Thanks,
Laszlo
- [Qemu-devel] [RFC 2/2] hw/arm/virt: Add virt-3.0 machine type, (continued)
- [Qemu-devel] [RFC 2/2] hw/arm/virt: Add virt-3.0 machine type, Eric Auger, 2018/05/23
- [Qemu-devel] [RFC 1/2] hw/arm/virt: Add a new 256MB ECAM region, Eric Auger, 2018/05/23
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Laszlo Ersek, 2018/05/23
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Auger Eric, 2018/05/23
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Laszlo Ersek, 2018/05/23
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Auger Eric, 2018/05/23
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Peter Maydell, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Laszlo Ersek, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Peter Maydell, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Auger Eric, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses,
Laszlo Ersek <=
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Auger Eric, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Laszlo Ersek, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Ard Biesheuvel, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Laszlo Ersek, 2018/05/24
- Re: [Qemu-devel] [RFC 0/2] ARM virt: Support up to 256 PCIe buses, Auger Eric, 2018/05/24