lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <26afad1a-bee0-498b-8213-aea87167dedd@ghiti.fr>
Date: Fri, 28 Mar 2025 14:00:01 +0100
From: Alexandre Ghiti <alex@...ti.fr>
To: Clément Léger <cleger@...osinc.com>,
 Alexandre Ghiti <alexghiti@...osinc.com>
Cc: kernel test robot <lkp@...el.com>,
 Paul Walmsley <paul.walmsley@...ive.com>, linux-riscv@...ts.infradead.org,
 linux-kernel@...r.kernel.org, Palmer Dabbelt <palmer@...belt.com>
Subject: Re: [PATCH] riscv: Make sure toolchain supports zba before using zba
 instructions

On 28/03/2025 13:51, Clément Léger wrote:
>
> On 28/03/2025 12:54, Alexandre Ghiti wrote:
>> Old toolchain like gcc 8.5.0 does not support zba, so we must check that
>> the toolchain supports this extension before using it in the kernel.
>>
>> Reported-by: kernel test robot <lkp@...el.com>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202503281836.8pntHm6I-lkp@intel.com/
>> Signed-off-by: Alexandre Ghiti <alexghiti@...osinc.com>
>> ---
>>   arch/riscv/Kconfig                     | 8 ++++++++
>>   arch/riscv/include/asm/runtime-const.h | 5 +++--
>>   2 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig
>> index 0d8def968a7e..ae6303f15b28 100644
>> --- a/arch/riscv/Kconfig
>> +++ b/arch/riscv/Kconfig
>> @@ -735,6 +735,14 @@ config TOOLCHAIN_HAS_VECTOR_CRYPTO
>>   	def_bool $(as-instr, .option arch$(comma) +v$(comma) +zvkb)
>>   	depends on AS_HAS_OPTION_ARCH
>>   
>> +config TOOLCHAIN_HAS_ZBA
>> +	bool
>> +	default y
>> +	depends on !64BIT || $(cc-option,-mabi=lp64 -march=rv64ima_zba)
>> +	depends on !32BIT || $(cc-option,-mabi=ilp32 -march=rv32ima_zba)
>> +	depends on LLD_VERSION >= 150000 || LD_VERSION >= 23900
>> +	depends on AS_HAS_OPTION_ARCH
>> +
>>   config RISCV_ISA_ZBA
> Hi Alex,
>
> Why not add a "depends on TOOLCHAIN_HAS_ZBA" here so you don't have to
> check for that config option when using CONFIG_RISCV_ISA_ZBA ? This is
> done like that for ZBB and ZBC.


Actually Conor changed that for Zbb in 
https://lore.kernel.org/lkml/20241024-aspire-rectify-9982da6943e5@spud/T/#m89d45ba3cbc6c2f953516c0e9977fecf397809b0 
which is queued for 6.15.

Zba is also used in BPF, so we should not require that the toolchain 
supports zba but instead just that the platform supports it.

Thanks,

Alex


>
> Thanks,
>
> Clément
>
>>   	bool "Zba extension support for bit manipulation instructions"
>>   	default y
>> diff --git a/arch/riscv/include/asm/runtime-const.h b/arch/riscv/include/asm/runtime-const.h
>> index ea2e49c7149c..c07d049fdd5d 100644
>> --- a/arch/riscv/include/asm/runtime-const.h
>> +++ b/arch/riscv/include/asm/runtime-const.h
>> @@ -77,7 +77,8 @@
>>   	".long 1b - .\n\t"					\
>>   	".popsection"						\
>>   
>> -#if defined(CONFIG_RISCV_ISA_ZBA) && defined(CONFIG_RISCV_ISA_ZBKB)
>> +#if defined(CONFIG_RISCV_ISA_ZBA) && defined(CONFIG_TOOLCHAIN_HAS_ZBA)	\
>> +	&& defined(CONFIG_RISCV_ISA_ZBKB)
>
>>   #define runtime_const_ptr(sym)						\
>>   ({									\
>>   	typeof(sym) __ret, __tmp;					\
>> @@ -93,7 +94,7 @@
>>   		: [__ret] "=r" (__ret), [__tmp] "=r" (__tmp));		\
>>   	__ret;								\
>>   })
>> -#elif defined(CONFIG_RISCV_ISA_ZBA)
>> +#elif defined(CONFIG_RISCV_ISA_ZBA) && defined(CONFIG_TOOLCHAIN_HAS_ZBA)
>>   #define runtime_const_ptr(sym)						\
>>   ({									\
>>   	typeof(sym) __ret, __tmp;					\

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ