[PATCH v3 0/5] powerpc: Add KCSAN support

Christophe Leroy christophe.leroy at csgroup.eu
Mon Feb 6 19:12:34 AEDT 2023



Le 06/02/2023 à 03:17, Rohan McLure a écrit :
> Add Kernel Concurrency Sanitiser support for PPC64. Doing so involves
> exclusion of a number of compilation units from instrumentation, as was
> done with KASAN.
> 
> KCSAN uses watchpoints on memory accesses to enforce the semantics of
> the Linux kernel memory model, notifying the user of observed data races
> which have not been declared to be intended in source through the
> data_race() macro, in order to remove false positives.
> 
> A number of such race conditions are identified. This patch series
> provides support for the instrumentation, with bug fixes as well as
> removal of false positives to be issued in future patches.
> 
> v3: Restrict support to PPC64 as kcsan code expects support for
> __atomic* builtins for 64-bit atomic types.

I see no reason to drop support for PPC32.

See commit 725aea873261 ("xtensa: enable KCSAN")
xtensa is a 32 bits architecture, they have implemented stubs for 64-bit 
atomics.

Maybe those stubs should be made generic by moving them into 
kernel/kcsan/ and building them for all 32 bit architectures.

Christophe


> 
> v2: Implement __smp_mb() in terms of __mb() to avoid multiple calls to
> kcsan_mb().
> Link: https://lore.kernel.org/linuxppc-dev/20230201043438.1301212-4-rmclure@linux.ibm.com/
> 
> v1: https://lore.kernel.org/linuxppc-dev/20230131234859.1275125-1-rmclure@linux.ibm.com/
> 
> Rohan McLure (5):
>    powerpc: kcsan: Add exclusions from instrumentation
>    powerpc: kcsan: Exclude udelay to prevent recursive instrumentation
>    powerpc: kcsan: Memory barriers semantics
>    powerpc: kcsan: Prevent recursive instrumentation with IRQ
>      save/restores
>    powerpc: kcsan: Add KCSAN Support
> 
>   arch/powerpc/Kconfig               |  1 +
>   arch/powerpc/include/asm/barrier.h | 12 ++++++------
>   arch/powerpc/kernel/Makefile       | 10 ++++++++++
>   arch/powerpc/kernel/irq_64.c       |  6 +++---
>   arch/powerpc/kernel/time.c         |  4 ++--
>   arch/powerpc/kernel/trace/Makefile |  1 +
>   arch/powerpc/kernel/vdso/Makefile  |  1 +
>   arch/powerpc/lib/Makefile          |  2 ++
>   arch/powerpc/purgatory/Makefile    |  1 +
>   arch/powerpc/xmon/Makefile         |  1 +
>   10 files changed, 28 insertions(+), 11 deletions(-)
> 


More information about the Linuxppc-dev mailing list