On 6/5/25 11:53 AM, Eric Auger wrote:
> 
> 
> On 6/2/25 5:41 PM, Shameer Kolothum wrote:
>> Although this change does not affect functionality at present, it is
>> required when we add support for user-creatable SMMUv3 devices in
>> future patches.
>>
>> Signed-off-by: Shameer Kolothum <shameerali.kolothum.th...@huawei.com>
>> ---
>>  hw/arm/smmuv3.c | 8 ++++++++
>>  1 file changed, 8 insertions(+)
>>
>> diff --git a/hw/arm/smmuv3.c b/hw/arm/smmuv3.c
>> index ab67972353..7e934336c2 100644
>> --- a/hw/arm/smmuv3.c
>> +++ b/hw/arm/smmuv3.c
>> @@ -24,6 +24,7 @@
>>  #include "hw/qdev-properties.h"
>>  #include "hw/qdev-core.h"
>>  #include "hw/pci/pci.h"
>> +#include "hw/pci/pci_bridge.h"
>>  #include "cpu.h"
>>  #include "exec/target_page.h"
>>  #include "trace.h"
>> @@ -1881,6 +1882,13 @@ static void smmu_realize(DeviceState *d, Error **errp)
>>      SMMUv3Class *c = ARM_SMMUV3_GET_CLASS(s);
>>      SysBusDevice *dev = SYS_BUS_DEVICE(d);
>>      Error *local_err = NULL;
>> +    Object *bus;
>> +
>> +    bus = object_property_get_link(OBJECT(d), "primary-bus", &error_abort);
>> +    if (!bus || !object_dynamic_cast(bus->parent, TYPE_PCI_HOST_BRIDGE)) {
>> +        error_setg(errp, "SMMUv3 is not attached to any PCIe Root 
>> Complex!");
>> +        return;
>> +    }
> shouldn't you check as well that !pci_bus_bypass_iommu(bus)?

I see you do the check in 6/6 and I think this is the correct way
because in case of legacy SMMU it is allowed to have
pci_bus_bypass_iommu set on the root bus to let the SMMU apply only on
pxb buses only. So please ignore this comment.

Eric
> 
> Eric
>>  
>>      c->parent_realize(d, &local_err);
>>      if (local_err) {
> 


Reply via email to