On Mon, Jul 14, 2025 at 04:59:40PM +0100, Shameer Kolothum wrote: > +void smmuv3_accel_init_regs(SMMUv3State *s) > +{ > + SMMUv3AccelState *s_accel = s->s_accel; > + SMMUv3AccelDevice *accel_dev; > + uint32_t data_type; > + uint32_t val; > + int ret; > + > + if (s_accel->info.idr[0]) { > + /* We already got this */ > + return;
We can avoid duplicated HW_INFO ioctls but probably shouldn't return here, but just goto .. > + } > + > + if (!s_accel->viommu || QLIST_EMPTY(&s_accel->viommu->device_list)) { > + error_report("For arm-smmuv3,accel=on case, atleast one cold-plugged > " > + "vfio-pci dev needs to be assigned"); > + goto out_err; > + } > + > + accel_dev = QLIST_FIRST(&s_accel->viommu->device_list); > + ret = smmuv3_accel_host_hw_info(accel_dev, &data_type, > + sizeof(s_accel->info), &s_accel->info); > + if (ret) { > + error_report("Failed to get Host SMMU device info"); > + goto out_err; > + } > + > + if (data_type != IOMMU_HW_INFO_TYPE_ARM_SMMUV3) { > + error_report("Wrong data type (%d) for Host SMMU device info", > + data_type); > + goto out_err; > + } .. likely here: > + trace_smmuv3_accel_host_hw_info(s_accel->info.idr[0], > s_accel->info.idr[1], > + s_accel->info.idr[3], > s_accel->info.idr[5]); The following register initializations shouldn't be skipped. Otherwise, caps would not be the same after a system reboot. Thanks Nicolin