From: Rohan McLure <rmclure@linux.ibm.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: Rohan McLure <rmclure@linux.ibm.com>, npiggin@gmail.com, arnd@arndb.de
Subject: [PATCH 00/12] powerpc: KCSAN fix warnings and mark accesses
Date: Mon, 8 May 2023 12:01:08 +1000 [thread overview]
Message-ID: <20230508020120.218494-1-rmclure@linux.ibm.com> (raw)
The KCSAN sanitiser notifies programmers of instances where unmarked
accesses to shared state has lead to a data race, or when the compiler
has liberty to reorder an unmarked access and so generate a data race.
This patch series deals with benign data races, which nonetheless need
annotation in order to ensure the correctness of the emitted code.
In keeping with the principles given in
tools/memory-model/Documentation/access-marking.txt, racing reads of
shared state for purely diagnostic/debug purposes are annotated with
data_race, while reads/writes that are examples of intention polling of
shared variables are performed with READ_ONCE, WRITE_ONCE.
These changes remove the majority of warnings observable on pseries and
powernv, where for development, I was able to narrow down to only power
relevant bugs by temporarily disabling sanitisation for all other files.
Future patch series will deal with the subtler bugs which persist under
this configuration.
KCSAN races addressed:
- qspinlock: assignign of qnode->locked and polling
- check_return_regs_valid [h]srr_valid
- arch_cpu_idle idle callback
- powernv idle_state paca entry (polling the bit-lock is viewed by
KCSAN as asynchronous access to the fields it protects)
- Asynchronous access to irq_data->hwirq
- Opal asynchronous event handling
- IPIs
Miscellaneous other changes:
- Annotate the asm-generic/mmiowb code, which riscv and powerpc each
consume
- Update usages of qnode->locked in powerpc's qspinlock interpretation
to reflect the comment beside this field
Rohan McLure (12):
powerpc: qspinlock: Fix qnode->locked value interpretation
powerpc: qspinlock: Mark accesses to qnode lock checks
powerpc: qspinlock: Enforce qnode writes prior to publishing to queue
asm-generic/mmiowb: Mark accesses to fix KCSAN warnings
powerpc: Mark [h]ssr_valid accesses in check_return_regs_valid
powerpc: Mark accesses to power_save callback in arch_cpu_idle
powerpc: powernv: Fix KCSAN datarace warnings on idle_state contention
powerpc: Annotate accesses to ipi message flags
powerpc: Mark writes registering ipi to host cpu through kvm
powerpc: powernv: Annotate data races in opal events
powerpc: powernv: Annotate asynchronous access to opal tokens
powerpc: Mark asynchronous accesses to irq_data
arch/powerpc/include/asm/kvm_ppc.h | 4 ++--
arch/powerpc/include/asm/paca.h | 1 +
arch/powerpc/include/asm/ptrace.h | 4 ++--
arch/powerpc/kernel/idle.c | 6 ++++--
arch/powerpc/kernel/interrupt.c | 14 ++++++-------
arch/powerpc/kernel/irq.c | 2 +-
arch/powerpc/kernel/smp.c | 2 +-
arch/powerpc/lib/qspinlock.c | 14 ++++++++-----
arch/powerpc/platforms/powernv/idle.c | 20 ++++++++++---------
arch/powerpc/platforms/powernv/opal-async.c | 6 +++---
arch/powerpc/platforms/powernv/opal-irqchip.c | 6 +++---
arch/powerpc/platforms/powernv/pci-ioda.c | 12 +++++------
include/asm-generic/mmiowb.h | 17 ++++++++++------
include/linux/irq.h | 2 +-
kernel/irq/irqdomain.c | 4 ++--
15 files changed, 63 insertions(+), 51 deletions(-)
--
2.37.2
next reply other threads:[~2023-05-08 2:07 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-08 2:01 Rohan McLure [this message]
2023-05-08 2:01 ` [PATCH 01/12] powerpc: qspinlock: Fix qnode->locked value interpretation Rohan McLure
2023-05-09 2:01 ` Nicholas Piggin
2023-05-09 4:26 ` Rohan McLure
2023-05-08 2:01 ` [PATCH 02/12] powerpc: qspinlock: Mark accesses to qnode lock checks Rohan McLure
2023-05-09 2:02 ` Nicholas Piggin
2023-05-08 2:01 ` [PATCH 03/12] powerpc: qspinlock: Enforce qnode writes prior to publishing to queue Rohan McLure
2023-05-09 2:04 ` Nicholas Piggin
2023-05-09 5:26 ` Rohan McLure
2023-05-09 6:45 ` Nicholas Piggin
2023-05-08 2:01 ` [PATCH 04/12] asm-generic/mmiowb: Mark accesses to fix KCSAN warnings Rohan McLure
2023-05-08 6:30 ` Arnd Bergmann
2023-05-08 15:44 ` [PATCH 4/12] " Gautam Menghani
2023-05-09 2:16 ` [PATCH 04/12] " Nicholas Piggin
2023-05-08 2:01 ` [PATCH 05/12] powerpc: Mark [h]ssr_valid accesses in check_return_regs_valid Rohan McLure
2023-05-09 2:17 ` Nicholas Piggin
2023-05-08 2:01 ` [PATCH 06/12] powerpc: Mark accesses to power_save callback in arch_cpu_idle Rohan McLure
2023-05-09 2:21 ` Nicholas Piggin
2023-05-08 2:01 ` [PATCH 07/12] powerpc: powernv: Fix KCSAN datarace warnings on idle_state contention Rohan McLure
2023-05-09 2:26 ` Nicholas Piggin
2023-05-10 2:00 ` Rohan McLure
2023-05-08 2:01 ` [PATCH 08/12] powerpc: Annotate accesses to ipi message flags Rohan McLure
2023-05-09 2:28 ` Nicholas Piggin
2023-05-08 2:01 ` [PATCH 09/12] powerpc: Mark writes registering ipi to host cpu through kvm Rohan McLure
2023-05-09 2:30 ` Nicholas Piggin
2023-05-08 2:01 ` [PATCH 10/12] powerpc: powernv: Annotate data races in opal events Rohan McLure
2023-05-09 2:31 ` Nicholas Piggin
2023-05-08 2:01 ` [PATCH 11/12] powerpc: powernv: Annotate asynchronous access to opal tokens Rohan McLure
2023-05-08 2:01 ` [PATCH 12/12] powerpc: Mark asynchronous accesses to irq_data Rohan McLure
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230508020120.218494-1-rmclure@linux.ibm.com \
--to=rmclure@linux.ibm.com \
--cc=arnd@arndb.de \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=npiggin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).