On 30/08/2019 19:16, Krishna Reddy wrote:
+ARM_SMMU_MATCH_DATA(nvidia_smmuv2, ARM_SMMU_V2, NVIDIA_SMMUV2);
From the previous discussions, I got the impression that other than the
'novel' way they're integrated, the actual SMMU implementations were unmodified
Arm MMU-500s. Is that the case, or have I misread something?
The ARM MMU-500 implementation is unmodified. It is the way the are integrated
and used together(for interleaved accesses) is different from regular ARM
MMU-500.
I have added it to get the model number and to be able differentiate the SMMU
implementation in arm-smmu-impl.c.
In that case, I would rather keep smmu->model representing the MMU-500
microarchitecture - since you'll still want to pick up errata
workarounds etc. for that - and detect the Tegra integration via an
explicit of_device_is_compatible() check in arm_smmu_impl_init(). For
comparison, under ACPI we'd probably have to detect integration details
by looking at table headers, separately from the IORT "Model" field, so
I'd prefer if the DT vs. ACPI handling didn't diverge more than necessary.
Of course, that immediately opens the question of how best to combine
arm_mmu500_impl with nsmmu_impl, but hey, one step at a time :)
Robin.