On 10/27/2026 11:14 AM, Shameer Kolothum Thodi wrote:
> 
> 
>> -----Original Message-----
>> From: Tushar Dave <[email protected]>
>> Sent: 16 September 2026 19:56
>> To: [email protected]
>> Cc: [email protected]; [email protected]; [email protected];
>> [email protected]; [email protected]; Alex Williamson
>> <[email protected]>; Jason Gunthorpe <[email protected]>; Shameer
>> Kolothum Thodi <[email protected]>
>> Subject: [PATCH 4/5] hw/arm/virt: export fixed BAR metadata via fw_cfg
>>
>> Export fixed BAR metadata from the virt machine through the
>> "etc/fixed-bars" fw_cfg file during machine initialization.
>>
>> Fixed BAR placement requires firmware to preserve the PCI resource
>> configuration established by QEMU. ACPI provides this via the PCI
>> boot configuration preservation mechanism, _DSM function 5.
>>
>> Reject fixed BAR configuration when ACPI is disabled, and request PCI
>> boot configuration preservation when ACPI is enabled.
>>
>> Signed-off-by: Tushar Dave <[email protected]>
>> ---
>>  hw/arm/virt.c | 16 ++++++++++++++++
>>  1 file changed, 16 insertions(+)
>>
>> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
>> index 3eecf094bc..c5db663858 100644
>> --- a/hw/arm/virt.c
>> +++ b/hw/arm/virt.c
>> @@ -95,6 +95,7 @@
>>  #include "hw/cxl/cxl_host.h"
>>  #include "qemu/guest-random.h"
>>  #include "hw/watchdog/sbsa_gwdt.h"
>> +#include "hw/pci/pci-fixed-bar.h"
>>
>>  static GlobalProperty arm_virt_compat_defaults[] = {
>>      { TYPE_VIRTIO_IOMMU_PCI, "aw-bits", "48" },
>> @@ -2438,6 +2439,21 @@ void virt_machine_done(Notifier *notifier, void
>> *data)
>>                                         vms->memmap[VIRT_PLATFORM_BUS].size,
>>                                         vms->irqmap[VIRT_PLATFORM_BUS]);
>>      }
>> +    if (fixed_bars_write_blob(vms->fw_cfg,
>> +                              vms->memmap[VIRT_PCIE_MMIO].base,
>> +                              vms->memmap[VIRT_PCIE_MMIO].size,
>> +                              vms->memmap[VIRT_HIGH_PCIE_MMIO].base,
>> +                              vms->memmap[VIRT_HIGH_PCIE_MMIO].size)) {
> 
> Should we check for vms->highmem_mmio here? The memmap entry still
> contains a base and size when highmem-mmio=off, but the aperture is
> not mapped or advertised in ACPI.

You are right, we should.
> 
>> +        if (!virt_is_acpi_enabled(vms)) {
> virt_is_acpi_enabled() merely checks that ACPI is not explicitly disabled. 
> With the
> default acpi=auto, it returns true even for direct kernel boot without 
> firmware.
> 
> Should check vms->bootinfo.firmware_loaded as well.

Okay. I will add the check in V2.

-Tushar

> 
> Thanks,
> Shameer


Reply via email to