[PATCH v15 05/27] riscv: usercfi state for task and save/restore of CSR_SSP on trap entry/exit

Alexandre Ghiti alex at ghiti.fr
Thu May 15 00:28:25 PDT 2025


Hi Radim,

On 06/05/2025 12:10, Radim Krčmář wrote:
> [Ah, I missed v13 and v14, feel free to Cc me on next versions.]
>
> 2025-05-02T16:30:36-07:00, Deepak Gupta <debug at rivosinc.com>:
>> diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S
>> @@ -91,6 +91,32 @@
>> +.macro save_userssp tmp, status
>> +	ALTERNATIVE("nops(4)",
>> +		__stringify(				\
>> +		andi \tmp, \status, SR_SPP;		\
>> +		bnez \tmp, skip_ssp_save;		\
>> +		csrrw \tmp, CSR_SSP, x0;		\
>> +		REG_S \tmp, TASK_TI_USER_SSP(tp);	\
>> +		skip_ssp_save:),
>> +		0,
>> +		RISCV_ISA_EXT_ZICFISS,
>> +		CONFIG_RISCV_USER_CFI)
>> +.endm
>> +
>> +.macro restore_userssp tmp
>> +	ALTERNATIVE("nops(2)",
>> +		__stringify(				\
>> +		REG_L \tmp, TASK_TI_USER_SSP(tp);	\
>> +		csrw CSR_SSP, \tmp),
>> +		0,
>> +		RISCV_ISA_EXT_ZICFISS,
>> +		CONFIG_RISCV_USER_CFI)
>> +.endm
> Do we need to emit the nops when CONFIG_RISCV_USER_CFI isn't selected?
>
> (Why not put #ifdef CONFIG_RISCV_USER_CFI around the ALTERNATIVES?)


The alternatives are used to create a generic kernel that contains the 
code for a large number of extensions and only enable it at runtime 
depending on the platform capabilities. This way distros can ship a 
single kernel that works on all platforms.

Thanks for your reviews on this series,

Alex


>
> Thanks.
>
> _______________________________________________
> linux-riscv mailing list
> linux-riscv at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-riscv



More information about the linux-riscv mailing list