diff mbox series

ARM: Do not select ARCH_HAS_KERNEL_FPU_SUPPORT

Message ID 20240509013727.648600-1-samuel.holland@sifive.com (mailing list archive)
State New
Headers show
Series ARM: Do not select ARCH_HAS_KERNEL_FPU_SUPPORT | expand

Commit Message

Samuel Holland May 9, 2024, 1:37 a.m. UTC
On 32-bit ARM, conversions between `double` and `long long` require
runtime library support. Since the kernel does not currently provide
this library support, the amdgpu driver fails to build:

  ERROR: modpost: "__aeabi_l2d" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
  ERROR: modpost: "__aeabi_d2ulz" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!

As Arnd reports, there are likely no 32-bit ARM platforms which can use
the amdgpu driver anyway, due to lack of features like 64-bit
prefetchable BARs. Since amdgpu is currently the only real user of
ARCH_HAS_KERNEL_FPU_SUPPORT, drop support for this option instead of
bothering to implement the library functions.

Fixes: 12624fe2d707 ("ARM: implement ARCH_HAS_KERNEL_FPU_SUPPORT")
Reported-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Closes: https://lore.kernel.org/lkml/87wmp4oo3y.fsf@linaro.org/
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202404042327.jRpt81kP-lkp@intel.com/
Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
---

 arch/arm/Kconfig | 1 -
 1 file changed, 1 deletion(-)

Comments

Ard Biesheuvel May 9, 2024, 7:39 a.m. UTC | #1
On Thu, 9 May 2024 at 03:37, Samuel Holland <samuel.holland@sifive.com> wrote:
>
> On 32-bit ARM, conversions between `double` and `long long` require
> runtime library support. Since the kernel does not currently provide
> this library support, the amdgpu driver fails to build:
>
>   ERROR: modpost: "__aeabi_l2d" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
>   ERROR: modpost: "__aeabi_d2ulz" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
>
> As Arnd reports, there are likely no 32-bit ARM platforms which can use
> the amdgpu driver anyway, due to lack of features like 64-bit
> prefetchable BARs. Since amdgpu is currently the only real user of
> ARCH_HAS_KERNEL_FPU_SUPPORT, drop support for this option instead of
> bothering to implement the library functions.
>
> Fixes: 12624fe2d707 ("ARM: implement ARCH_HAS_KERNEL_FPU_SUPPORT")

This commit is not in mainline yet. Could we just drop the original
patch instead?

> Reported-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
> Closes: https://lore.kernel.org/lkml/87wmp4oo3y.fsf@linaro.org/
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202404042327.jRpt81kP-lkp@intel.com/
> Suggested-by: Ard Biesheuvel <ardb@kernel.org>
> Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
> ---
>
>  arch/arm/Kconfig | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index b1751c2cab87..b14aed3a17ab 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -15,7 +15,6 @@ config ARM
>         select ARCH_HAS_FORTIFY_SOURCE
>         select ARCH_HAS_KEEPINITRD
>         select ARCH_HAS_KCOV
> -       select ARCH_HAS_KERNEL_FPU_SUPPORT if KERNEL_MODE_NEON
>         select ARCH_HAS_MEMBARRIER_SYNC_CORE
>         select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
>         select ARCH_HAS_PTE_SPECIAL if ARM_LPAE
> --
> 2.44.0
>
Samuel Holland May 14, 2024, 10:48 p.m. UTC | #2
Hello Ard,

On 2024-05-09 2:39 AM, Ard Biesheuvel wrote:
> On Thu, 9 May 2024 at 03:37, Samuel Holland <samuel.holland@sifive.com> wrote:
>>
>> On 32-bit ARM, conversions between `double` and `long long` require
>> runtime library support. Since the kernel does not currently provide
>> this library support, the amdgpu driver fails to build:
>>
>>   ERROR: modpost: "__aeabi_l2d" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
>>   ERROR: modpost: "__aeabi_d2ulz" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
>>
>> As Arnd reports, there are likely no 32-bit ARM platforms which can use
>> the amdgpu driver anyway, due to lack of features like 64-bit
>> prefetchable BARs. Since amdgpu is currently the only real user of
>> ARCH_HAS_KERNEL_FPU_SUPPORT, drop support for this option instead of
>> bothering to implement the library functions.
>>
>> Fixes: 12624fe2d707 ("ARM: implement ARCH_HAS_KERNEL_FPU_SUPPORT")
> 
> This commit is not in mainline yet. Could we just drop the original
> patch instead?

No, like I mentioned in the original thread, later patches in the series (for
example bbce5cac4f5a ("lib/raid6: use CC_FLAGS_FPU for NEON CFLAGS")) depend on
CC_FLAGS_FPU being defined for both arm and arm64.

arm can't select ARCH_HAS_KERNEL_FPU_SUPPORT because the contract of that option
is not fully implemented, but in my opinion it doesn't hurt to keep the part
that is implemented.

Regards,
Samuel

>> Reported-by: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
>> Closes: https://lore.kernel.org/lkml/87wmp4oo3y.fsf@linaro.org/
>> Reported-by: kernel test robot <lkp@intel.com>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202404042327.jRpt81kP-lkp@intel.com/
>> Suggested-by: Ard Biesheuvel <ardb@kernel.org>
>> Signed-off-by: Samuel Holland <samuel.holland@sifive.com>
>> ---
>>
>>  arch/arm/Kconfig | 1 -
>>  1 file changed, 1 deletion(-)
>>
>> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
>> index b1751c2cab87..b14aed3a17ab 100644
>> --- a/arch/arm/Kconfig
>> +++ b/arch/arm/Kconfig
>> @@ -15,7 +15,6 @@ config ARM
>>         select ARCH_HAS_FORTIFY_SOURCE
>>         select ARCH_HAS_KEEPINITRD
>>         select ARCH_HAS_KCOV
>> -       select ARCH_HAS_KERNEL_FPU_SUPPORT if KERNEL_MODE_NEON
>>         select ARCH_HAS_MEMBARRIER_SYNC_CORE
>>         select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
>>         select ARCH_HAS_PTE_SPECIAL if ARM_LPAE
>> --
>> 2.44.0
>>
Ard Biesheuvel May 15, 2024, 7:19 a.m. UTC | #3
On Wed, 15 May 2024 at 00:48, Samuel Holland <samuel.holland@sifive.com> wrote:
>
> Hello Ard,
>
> On 2024-05-09 2:39 AM, Ard Biesheuvel wrote:
> > On Thu, 9 May 2024 at 03:37, Samuel Holland <samuel.holland@sifive.com> wrote:
> >>
> >> On 32-bit ARM, conversions between `double` and `long long` require
> >> runtime library support. Since the kernel does not currently provide
> >> this library support, the amdgpu driver fails to build:
> >>
> >>   ERROR: modpost: "__aeabi_l2d" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
> >>   ERROR: modpost: "__aeabi_d2ulz" [drivers/gpu/drm/amd/amdgpu/amdgpu.ko] undefined!
> >>
> >> As Arnd reports, there are likely no 32-bit ARM platforms which can use
> >> the amdgpu driver anyway, due to lack of features like 64-bit
> >> prefetchable BARs. Since amdgpu is currently the only real user of
> >> ARCH_HAS_KERNEL_FPU_SUPPORT, drop support for this option instead of
> >> bothering to implement the library functions.
> >>
> >> Fixes: 12624fe2d707 ("ARM: implement ARCH_HAS_KERNEL_FPU_SUPPORT")
> >
> > This commit is not in mainline yet. Could we just drop the original
> > patch instead?
>
> No, like I mentioned in the original thread, later patches in the series (for
> example bbce5cac4f5a ("lib/raid6: use CC_FLAGS_FPU for NEON CFLAGS")) depend on
> CC_FLAGS_FPU being defined for both arm and arm64.
>
> arm can't select ARCH_HAS_KERNEL_FPU_SUPPORT because the contract of that option
> is not fully implemented, but in my opinion it doesn't hurt to keep the part
> that is implemented.
>

Fair enough. But that still doesn't mean we have to add the 'select
ARCH_HAS_KERNEL_FPU_SUPPORT' only to back it out again.
diff mbox series

Patch

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index b1751c2cab87..b14aed3a17ab 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -15,7 +15,6 @@  config ARM
 	select ARCH_HAS_FORTIFY_SOURCE
 	select ARCH_HAS_KEEPINITRD
 	select ARCH_HAS_KCOV
-	select ARCH_HAS_KERNEL_FPU_SUPPORT if KERNEL_MODE_NEON
 	select ARCH_HAS_MEMBARRIER_SYNC_CORE
 	select ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE
 	select ARCH_HAS_PTE_SPECIAL if ARM_LPAE