On Mon, 2 Jun 2025 16:41:05 +0100
Shameer Kolothum via <qemu-devel@nongnu.org> 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);
I'd replace this with direct field access like in smmu_base_realize

in QEMU with PCI, usually we specify bus to attach to with 'bus' property,
wouldn't it better to rename "primary-bus" to 'bus' to be consistent with
the rest of PCI code (and before "primary-bus" shows up as a CLI option,
so far (before this series) it looks like it's an internal property)?

> +    if (!bus || !object_dynamic_cast(bus->parent, TYPE_PCI_HOST_BRIDGE)) {
Also looking at smmu_base_realize, it has NULL pointer check already.
Which also rises question, shouldn't smmu_base_realize check for
TYPE_PCI_HOST_BRIDGE as well (aka can smmu be attached to anything else but a 
host bridge)?


> +        error_setg(errp, "SMMUv3 is not attached to any PCIe Root Complex!");
> +        return;
> +    }
>  
>      c->parent_realize(d, &local_err);
>      if (local_err) {


Reply via email to