Re: [PATCH] drm/panfrost: fix GENERIC_ATOMIC64 dependency

From: Steven Price
Date: Wed Jan 18 2023 - 06:50:40 EST


On 17/01/2023 16:44, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> On ARMv5 and earlier, a randconfig build can still run into
>
> WARNING: unmet direct dependencies detected for IOMMU_IO_PGTABLE_LPAE
> Depends on [n]: IOMMU_SUPPORT [=y] && (ARM [=y] || ARM64 || COMPILE_TEST [=y]) && !GENERIC_ATOMIC64 [=y]
> Selected by [y]:
> - DRM_PANFROST [=y] && HAS_IOMEM [=y] && DRM [=y] && (ARM [=y] || ARM64 || COMPILE_TEST [=y] && !GENERIC_ATOMIC64 [=y]) && MMU [=y]
>
> Rework the dependencies to always require a working cmpxchg64.
>
> Fixes: db594ba3fcf9 ("drm/panfrost: depend on !GENERIC_ATOMIC64 when using COMPILE_TEST")

Looking at db594ba3fcf9 - it states:

> Since panfrost has a 'select' on IOMMU_IO_PGTABLE_LPAE we must depend on
> the same set of flags. Otherwise IOMMU_IO_PGTABLE_LPAE will be forced on
> even though it cannot build (no support for cmpxchg64).

And at the time the dependencies on IOMMU_IO_PGTABLE_LPAE were exactly
these.

However d286a58bc8f4 ("iommu: Tidy up io-pgtable dependencies")
(currently in the iommu tree) changed the depends to split the
!GENERIC_ATOMIC64 out. So we could argue that really that's the commit
that should be blamed in the fixes line.

However there's no harm in this being backported further than it
strictly needs to be, and it's clearly better having the
!GENERIC_ATOMIC64 split out. So I'll merge this to drm-misc-fixes.

Reviewed-by: Steven Price <steven.price@xxxxxxx>

Thanks!

Steve

> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
> ---
> drivers/gpu/drm/panfrost/Kconfig | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/panfrost/Kconfig b/drivers/gpu/drm/panfrost/Kconfig
> index 079600328be1..e6403a9d66ad 100644
> --- a/drivers/gpu/drm/panfrost/Kconfig
> +++ b/drivers/gpu/drm/panfrost/Kconfig
> @@ -3,7 +3,8 @@
> config DRM_PANFROST
> tristate "Panfrost (DRM support for ARM Mali Midgard/Bifrost GPUs)"
> depends on DRM
> - depends on ARM || ARM64 || (COMPILE_TEST && !GENERIC_ATOMIC64)
> + depends on ARM || ARM64 || COMPILE_TEST
> + depends on !GENERIC_ATOMIC64 # for IOMMU_IO_PGTABLE_LPAE
> depends on MMU
> select DRM_SCHED
> select IOMMU_SUPPORT