Re: [PATCH] iommu/tegra-smmu: Fix mc errors on tegra124-nyan

Nicolin Chen
2021-03-12T01:12:22Z

On Thu, Mar 11, 2021 at 03:06:25PM +0300, Dmitry Osipenko wrote:
> 11.03.2021 01:17, Nicolin Chen пишет:
> > On Wed, Mar 10, 2021 at 11:22:57PM +0300, Dmitry Osipenko wrote:
> >> 10.03.2021 22:13, Dmitry Osipenko пишет:
> >>> I found that this patch introduced a serious regression on Tegra30 using
> >>> today's linux-next. Tegra30 has two 3d h/w blocks connected in SLI and
> >>> only one of the blocks is now attached to IOMMU domain, meaning that GPU
> >>> is unusable now. All 3d, 2d and display devices share the same "DRM"
> >>> group on Tegra30.
> >>>
> >>> Nicolin, please let me know if have any suggestions. I may take a closer
> >>> look a day later, for now I'll just revert this patch locally. Thanks in
> >>> advance.
> >>>
> >>
> >> Actually, this was easy to fix:
> >>
> >> diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c
> >> index 97eb62f667d2..639d5ceab60b 100644
> >> --- a/drivers/iommu/tegra-smmu.c
> >> +++ b/drivers/iommu/tegra-smmu.c
> >> @@ -853,8 +853,6 @@ static struct iommu_device
> >> *tegra_smmu_probe_device(struct device *dev)
> >>
> >> if (err < 0)
> >> return ERR_PTR(err);
> >> -
> >> - break;
> >
> > Hmm..I don't understand why this "break" causes problems on Tegra30.
> > The older versions that used _find()+configure() had it also, e.g.:
> > https://elixir.bootlin.com/linux/v5.9.16/source/drivers/iommu/tegra-smmu.c#L760
> >
> > Dmitry, do you have any idea?
> >
>
> The older variant of tegra_smmu_attach_dev() didn't use fwspec [1], that
> makes the difference. In other words, the older variant of
> tegra_smmu_probe_device() was already buggy, but the bug was masked by
> the tegra_smmu_attach_dev() that didn't use the fwspec.
>
> [1]
> https://elixir.bootlin.com/linux/v5.10.22/source/drivers/iommu/tegra-smmu.c#L476

Hmm...would you mind submitting a fix from your side? I think it'd
be more appropriate to do so, as you can definitely write a better
commit message than I can for this bug.

Thanks!