diff mbox series

drm/panfrost: fix GENERIC_ATOMIC64 dependency

Message ID 20230117164456.1591901-1-arnd@kernel.org (mailing list archive)
State New, archived
Headers show
Series drm/panfrost: fix GENERIC_ATOMIC64 dependency | expand

Commit Message

Arnd Bergmann Jan. 17, 2023, 4:44 p.m. UTC
From: Arnd Bergmann <arnd@arndb.de>

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")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/gpu/drm/panfrost/Kconfig | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Steven Price Jan. 18, 2023, 11:09 a.m. UTC | #1
On 17/01/2023 16:44, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@arndb.de>
> 
> 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@arm.com>

Thanks!

Steve

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  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
Robin Murphy Jan. 18, 2023, 11:19 a.m. UTC | #2
On 2023-01-18 11:09, Steven Price wrote:
> On 17/01/2023 16:44, Arnd Bergmann wrote:
>> From: Arnd Bergmann <arnd@arndb.de>
>>
>> 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.

Oh bum... indeed this is entirely my fault for forgetting about our one 
"foreign" io-pgtable user in that commit, sorry about that.

> 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.

Thanks both!

Robin.

> 
> Reviewed-by: Steven Price <steven.price@arm.com>
> 
> Thanks!
> 
> Steve
> 
>> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
>> ---
>>   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
>
diff mbox series

Patch

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