On Tue, Jul 15, 2025 at 10:48:31AM +0000, Duan, Zhenzhong wrote:
> >+static const TypeInfo types[] = {
> >+ {
> >+ .name = TYPE_ARM_SMMUV3_ACCEL,
> >+ .parent = TYPE_ARM_SMMUV3,
> >+ .class_init = smmuv3_accel_class_init,
> >+ }
>
> In cover-letter, I see "-device arm-smmuv3", so where is above accel device
> created so we could use smmuv3_accel_ops?
The smmu-common.c is the shared file between accel and non-accel
instances. It has a module property:
DEFINE_PROP_BOOL("accel", SMMUState, accel, false),
where it directs to different iommu_ops:
937 static const PCIIOMMUOps *smmu_iommu_ops_by_type(SMMUState *s)
938 {
939 SMMUBaseClass *sbc;
940
941 if (s->accel) {
942 sbc = ARM_SMMU_CLASS(object_class_by_name(TYPE_ARM_SMMUV3_ACCEL));
943 } else {
944 sbc = ARM_SMMU_CLASS(object_class_by_name(TYPE_ARM_SMMU));
945 }
946 assert(sbc->iommu_ops);
947
948 return sbc->iommu_ops;
949 }
Nicolin
