Hi Shameer, On 6/2/25 1:46 PM, Shameer Kolothum wrote: > default_bus_bypass_iommu tells us whether the bypass_iommu is set > for the default PCIe root bus. Make sure we check that before adding > the "iommu-map" DT property. > > Fixes: 6d7a85483a06 ("hw/arm/virt: Add default_bus_bypass_iommu machine > option") > Suggested-by: Eric Auger <eric.au...@redhat.com> > Signed-off-by: Shameer Kolothum <shameerali.kolothum.th...@huawei.com> Reviewed-by: Eric Auger <eric.au...@redhat.com>
Thanks! Eric > --- > hw/arm/virt.c | 15 ++++++++++----- > 1 file changed, 10 insertions(+), 5 deletions(-) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 9a6cd085a3..99fde5836c 100644 > --- a/hw/arm/virt.c > +++ b/hw/arm/virt.c > @@ -1487,9 +1487,12 @@ static void > create_virtio_iommu_dt_bindings(VirtMachineState *vms) > qemu_fdt_setprop_cell(ms->fdt, node, "phandle", vms->iommu_phandle); > g_free(node); > > - qemu_fdt_setprop_cells(ms->fdt, vms->pciehb_nodename, "iommu-map", > - 0x0, vms->iommu_phandle, 0x0, bdf, > - bdf + 1, vms->iommu_phandle, bdf + 1, 0xffff - > bdf); > + if (!vms->default_bus_bypass_iommu) { > + qemu_fdt_setprop_cells(ms->fdt, vms->pciehb_nodename, "iommu-map", > + 0x0, vms->iommu_phandle, 0x0, bdf, > + bdf + 1, vms->iommu_phandle, bdf + 1, > + 0xffff - bdf); > + } > } > > static void create_pcie(VirtMachineState *vms) > @@ -1612,8 +1615,10 @@ static void create_pcie(VirtMachineState *vms) > switch (vms->iommu) { > case VIRT_IOMMU_SMMUV3: > create_smmu(vms, vms->bus); > - qemu_fdt_setprop_cells(ms->fdt, nodename, "iommu-map", > - 0x0, vms->iommu_phandle, 0x0, 0x10000); > + if (!vms->default_bus_bypass_iommu) { > + qemu_fdt_setprop_cells(ms->fdt, nodename, "iommu-map", > + 0x0, vms->iommu_phandle, 0x0, > 0x10000); > + } > break; > default: > g_assert_not_reached();