[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