Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lazy call_rcu() updates for v6.2 #24

Open
wants to merge 92 commits into
base: rcu-dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
d078eb7
tools/memory-model: Document locking corner cases
paulmckrcu Aug 14, 2020
d55a79c
tools/memory-model: Make judgelitmus.sh note timeouts
paulmckrcu Mar 18, 2019
3e0e0d9
tools/memory-model: Make cmplitmushist.sh note timeouts
paulmckrcu Mar 18, 2019
ce26c0d
tools/memory-model: Make judgelitmus.sh identify bad macros
paulmckrcu Mar 18, 2019
e450f7e
tools/memory-model: Make judgelitmus.sh detect hard deadlocks
paulmckrcu Mar 19, 2019
c82c61e
tools/memory-model: Fix paulmck email address on pre-existing scripts
paulmckrcu Apr 11, 2019
4be1396
tools/memory-model: Update parseargs.sh for hardware verification
paulmckrcu Mar 19, 2019
a0ef691
tools/memory-model: Make judgelitmus.sh handle hardware verifications
paulmckrcu Mar 19, 2019
8fca8d0
tools/memory-model: Add simpletest.sh to check locking, RCU, and SRCU
paulmckrcu Mar 19, 2019
b483d17
tools/memory-model: Fix checkalllitmus.sh comment
paulmckrcu Mar 19, 2019
415343c
tools/memory-model: Hardware checking for check{,all}litmus.sh
paulmckrcu Mar 20, 2019
a4da1dc
tools/memory-model: Make judgelitmus.sh ransack .litmus.out files
paulmckrcu Mar 20, 2019
b8e2918
tools/memory-model: Split runlitmus.sh out of checklitmus.sh
paulmckrcu Mar 20, 2019
92e93ba
tools/memory-model: Make runlitmus.sh generate .litmus.out for --hw
paulmckrcu Mar 20, 2019
07492ae
tools/memory-model: Move from .AArch64.litmus.out to .litmus.AArch.out
paulmckrcu Mar 21, 2019
1585dd5
tools/memory-model: Keep assembly-language litmus tests
paulmckrcu Mar 21, 2019
199d988
tools/memory-model: Allow herd to deduce CPU type
paulmckrcu Mar 22, 2019
f85c750
tools/memory-model: Make runlitmus.sh check for jingle errors
paulmckrcu Mar 26, 2019
d0dc9d3
tools/memory-model: Add -v flag to jingle7 runs
paulmckrcu Apr 5, 2019
660959d
tools/memory-model: Implement --hw support for checkghlitmus.sh
paulmckrcu Mar 23, 2019
935d88f
tools/memory-model: Fix scripting --jobs argument
paulmckrcu Mar 27, 2019
8061f85
tools/memory-model: Make checkghlitmus.sh use mselect7
paulmckrcu Apr 8, 2019
ce208b6
tools/memory-model: Make history-check scripts use mselect7
paulmckrcu Apr 8, 2019
c5cdcac
tools/memory-model: Add "--" to parseargs.sh for additional arguments
paulmckrcu May 2, 2019
8fe3019
tools/memory-model: Repair parseargs.sh header comment
paulmckrcu May 2, 2019
b53862d
tools/memory-model: Add checktheselitmus.sh to run specified litmus t…
paulmckrcu May 2, 2019
7458b3b
tools/memory-model: Add data-race capabilities to judgelitmus.sh
paulmckrcu May 3, 2019
40652cf
tools/memory-model: Make judgelitmus.sh handle scripted Result: tag
paulmckrcu Jun 6, 2019
5e12d26
tools/memory-model: Use "-unroll 0" to keep --hw runs finite
paulmckrcu Jun 25, 2019
3d5bfdc
Merge branch 'nolibc.2022.08.31b' into HEAD
paulmckrcu Sep 1, 2022
d3d8f70
Merge branch 'lkmm.2022.08.31b' into HEAD
paulmckrcu Sep 1, 2022
b468343
srcu: Convert ->srcu_lock_count and ->srcu_unlock_count to atomic
paulmckrcu Sep 15, 2022
9dfbe74
srcu: Create an srcu_read_lock_nmisafe() and srcu_read_unlock_nmisafe()
paulmckrcu Sep 15, 2022
6b8c22e
srcu: Check for consistent per-CPU per-srcu_struct NMI safety
paulmckrcu Sep 19, 2022
f944bb4
srcu: Check for consistent global per-srcu_struct NMI safety
paulmckrcu Sep 20, 2022
73fb4e7
arch/x86: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
paulmckrcu Sep 28, 2022
26a861b
arch/arm64: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
paulmckrcu Sep 28, 2022
839fc1e
arch/loongarch: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
paulmckrcu Sep 28, 2022
83ddb5e
arch/s390: Add ARCH_HAS_NMI_SAFE_THIS_CPU_OPS Kconfig option
paulmckrcu Sep 28, 2022
6c06699
Merge branch 'srcunmisafe.2022.10.03a' into HEAD
paulmckrcu Oct 3, 2022
9f3bbbe
Merge branch 'lkmm-dev.2022.08.31b' into HEAD
paulmckrcu Oct 3, 2022
6a08a86
memory-model: Prohibit nested SRCU read-side critical sections
paulmckrcu Apr 27, 2022
ef1e00c
rcutorture: Verify NUM_ACTIVE_RCU_POLL_FULL_OLDSTATE
paulmckrcu Aug 25, 2022
fa95bca
rcutorture: Verify NUM_ACTIVE_RCU_POLL_OLDSTATE
paulmckrcu Aug 25, 2022
66d6105
rcutorture: Add --bootargs parameter to kvm-again.sh
paulmckrcu Aug 26, 2022
5010647
torture: Use mktemp instead of guessing at unique names
paulmckrcu Aug 27, 2022
de8d9a3
rcutorture: Make kvm-test-1-run-qemu.sh check for alternative output
paulmckrcu Aug 29, 2022
9cfd8c6
rcutorture: Make kvm-recheck.sh export TORTURE_SUITE
paulmckrcu Aug 29, 2022
e04ff9b
rcutorture: Add --datestamp parameter to kvm-again.sh
paulmckrcu Aug 29, 2022
7d0b63c
rcutorture: Avoid redundant builds for rcuscale and refscale in tortu…
paulmckrcu Aug 29, 2022
89ab485
rcutorture: Avoid torture.sh compressing identical files
paulmckrcu Aug 30, 2022
ef9801b
rcu: Remove duplicate RCU exp QS report from rcu_report_dead()
qiangzh3 Aug 30, 2022
802f2ea
tools/memory-model: Weaken ctrl dependency definition in explanation.txt
paulhdk Sep 3, 2022
7785e3e
torture: Make torture.sh create a properly formated log file
paulmckrcu Sep 4, 2022
af6b746
rcu: Synchronize ->qsmaskinitnext in rcu_boost_kthread_setaffinity()
liupingfan Sep 6, 2022
a9f1197
doc: Remove arrayRCU.rst
paulmckrcu Sep 8, 2022
d7d4582
doc: Update checklist.txt
paulmckrcu Sep 9, 2022
b778877
doc: Update listRCU.rst
paulmckrcu Sep 11, 2022
86d5d4d
kcsan: Instrument memcpy/memset/memmove with newer Clang
melver Sep 12, 2022
0661550
objtool, kcsan: Add volatile read/write instrumentation to whitelist
melver Sep 12, 2022
d8c746c
rcu: Simplify rcu_init_nohz() cpumask handling
Sep 13, 2022
f3706cb
rcu: Remove unused 'cpu' in rcu_virt_note_context_switch()
henryZe Sep 15, 2022
b1dfe79
rcu: Use READ_ONCE() for lockless read of rnp->qsmask
joelagnel Sep 17, 2022
083088b
rcu: Fix late wakeup when flush of bypass cblist happens (v6)
joelagnel Sep 17, 2022
52d7c5b
rcu: Let non-offloaded idle CPUs with callbacks defer tick
paulmckrcu Sep 21, 2022
33f3f2d
slab: Explain why SLAB_DESTROY_BY_RCU reference before locking
paulmckrcu Sep 26, 2022
4702119
rcu: Remove rcu_is_idle_cpu()
Sep 26, 2022
c69f94b
rcu-tasks: Make grace-period-age message human-readable
paulmckrcu Sep 29, 2022
ec68deb
clocksource: Reject bogus watchdog clocksource measurements
paulmckrcu Oct 5, 2022
4b9dfbb
docs/memory-barriers.txt: Add a missed closing parenthesis
sjp38 Oct 8, 2022
1b6ddb7
docs/memory-barriers.txt/kokr: introduce io_stop_wc() and add impleme…
sjp38 Oct 11, 2022
ad39253
docs/memory-barriers.txt/kokr: Add memory barrier dma_mb()
sjp38 Oct 11, 2022
55b66cc
docs/memory-barriers.txt/kokr: Fix confusing name of 'data dependency…
sjp38 Oct 11, 2022
f965c82
rcu: Fix __this_cpu_read() lockdep warning in rcu_force_quiescent_sta…
qiangzh3 Oct 13, 2022
2eac2f7
rcu-tasks: Provide rcu_trace_implies_rcu_gp()
paulmckrcu Oct 13, 2022
6558b91
srcu: Warn when NMI-unsafe API is used in NMI
Oct 13, 2022
5dc7886
srcu: Explain the reason behind the read side critical section on GP …
Oct 13, 2022
54a118f
srcu: Debug NMI safety even on archs that don't require it
Oct 13, 2022
0bd818d
adding/updating ci files
chantra Oct 16, 2022
da314e0
adding/updating ci files
chantra Oct 17, 2022
266663d
rcu: Fix missing nocb gp wake on rcu_barrier()
Oct 19, 2022
bd3c443
rcu: Make call_rcu() lazy to save power
joelagnel Oct 19, 2022
e075618
rcu: Refactor code a bit in rcu_nocb_do_flush_bypass()
joelagnel Oct 19, 2022
ec31536
rcu: Shrinker for lazy rcu
Oct 19, 2022
5635844
rcuscale: Add laziness and kfree tests
joelagnel Oct 19, 2022
b4515a3
percpu-refcount: Use call_rcu_flush() for atomic switch
joelagnel Oct 19, 2022
032a3b3
rcu/sync: Use call_rcu_flush() instead of call_rcu
joelagnel Oct 19, 2022
1d6e5e9
rcu/rcuscale: Use call_rcu_flush() for async reader test
joelagnel Oct 19, 2022
9a1f034
rcu/rcutorture: Use call_rcu_flush() where needed
joelagnel Oct 19, 2022
32e826f
scsi/scsi_error: Use call_rcu_flush() instead of call_rcu()
urezki Oct 19, 2022
cbce0ac
workqueue: Make queue_rcu_work() use call_rcu_flush()
urezki Oct 19, 2022
8c87f0f
rxrpc: Use call_rcu_flush() instead of call_rcu()
joelagnel Oct 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 177 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
name: bpf-ci

on:
pull_request:

concurrency:
group: ci-test-${{ github.head_ref }}
cancel-in-progress: true

jobs:
llvm-toolchain:
runs-on: ubuntu-latest
outputs:
llvm: ${{ steps.llvm-toolchain-impl.outputs.version }}
steps:
- id: llvm-version
uses: libbpf/ci/get-llvm-version@master
- id: llvm-toolchain-impl
shell: bash
run: echo "version=llvm-${{ steps.llvm-version.outputs.version }}" >> $GITHUB_OUTPUT
set-matrix:
needs: llvm-toolchain
runs-on: ubuntu-latest
outputs:
build-matrix: ${{ steps.set-matrix-impl.outputs.build_matrix }}
test-matrix: ${{ steps.set-matrix-impl.outputs.test_matrix }}
steps:
- id: set-matrix-impl
shell: python3 -I {0}
run: |
from json import dumps
import os

def set_output(name, value):
"""Write an output variable to the GitHub output file."""
with open(os.getenv("GITHUB_OUTPUT"), "a") as f:
f.write(f"{name}={value}\n")

matrix = [
{"kernel": "LATEST", "runs_on": ["ubuntu-latest", "self-hosted"], "arch": "x86_64", "toolchain": "gcc"},
{"kernel": "LATEST", "runs_on": ["ubuntu-latest", "self-hosted"], "arch": "x86_64", "toolchain": "${{ needs.llvm-toolchain.outputs.llvm }}"},
{"kernel": "LATEST", "runs_on": ["z15", "self-hosted"], "arch": "s390x", "toolchain": "gcc"},
]
self_hosted_repos = [
"kernel-patches/bpf",
"kernel-patches/vmtest",
]

# Only a few repository within "kernel-patches" use self-hosted runners.
if "${{ github.repository_owner }}" != "kernel-patches" or "${{ github.repository }}" not in self_hosted_repos:
# Outside of those repositories, remove the self-hosted label and skip
# any testing on s390x, as no suitable runners will be available.
for idx in range(len(matrix) - 1, -1, -1):
if "z15" in matrix[idx]["runs_on"]:
del matrix[idx]
else:
matrix[idx]["runs_on"].remove("self-hosted")

build_matrix = {"include": matrix}
set_output("build_matrix", dumps(build_matrix))

tests = ["test_progs", "test_progs_no_alu32", "test_maps", "test_verifier"]
test_matrix = {"include": [{**config, **{"test": test}}
for config in matrix
for test in tests]}
set_output("test_matrix", dumps(test_matrix))
build:
name: build for ${{ matrix.arch }} with ${{ matrix.toolchain }}
needs: set-matrix
runs-on: ${{ matrix.runs_on }}
timeout-minutes: 100
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.set-matrix.outputs.build-matrix) }}
env:
KERNEL: ${{ matrix.kernel }}
REPO_ROOT: ${{ github.workspace }}
REPO_PATH: ""
steps:
- uses: actions/checkout@v3
- if: ${{ github.repository == 'kernel-patches/vmtest' }}
name: Download bpf-next tree
uses: libbpf/ci/get-linux-source@master
with:
dest: '.kernel'
- if: ${{ github.repository == 'kernel-patches/vmtest' }}
name: Move linux source in place
shell: bash
run: |
rm -rf .kernel/.git
cp -rf .kernel/. .
rm -rf .kernel
- uses: libbpf/ci/patch-kernel@master
with:
patches-root: '${{ github.workspace }}/ci/diffs'
repo-root: '${{ github.workspace }}'
- name: Setup build environment
uses: libbpf/ci/setup-build-env@master
- name: Build kernel image
uses: libbpf/ci/build-linux@master
with:
arch: ${{ matrix.arch }}
toolchain: ${{ matrix.toolchain }}
- name: Build selftests
uses: libbpf/ci/build-selftests@master
with:
vmlinux_btf: ${{ github.workspace }}/vmlinux
toolchain: ${{ matrix.toolchain }}
- name: Build samples
uses: libbpf/ci/build-samples@master
with:
vmlinux_btf: ${{ github.workspace }}/vmlinux
toolchain: ${{ matrix.toolchain }}
- name: Tar artifacts
run: |
file_list=""
if [ "${{ github.repository }}" == "kernel-patches/vmtest" ]; then
# Package up a bunch of additional infrastructure to support running
# 'make kernelrelease' and bpf tool checks later on.
file_list="$(find . -iname Makefile | xargs) \
scripts/ \
tools/testing/selftests/bpf/ \
tools/include/ \
tools/bpf/bpftool/";
fi
# zstd is installed by default in the runner images.
tar -cf - \
.config \
arch/*/boot/bzImage \
include/config/auto.conf \
include/generated/autoconf.h \
${file_list} \
--exclude '*.h' \
selftests/bpf/ \
vmlinux | zstd -T0 -19 -o vmlinux-${{ matrix.arch }}-${{ matrix.toolchain }}.tar.zst
- uses: actions/upload-artifact@v3
with:
name: vmlinux-${{ matrix.arch }}-${{ matrix.toolchain }}
if-no-files-found: error
path: vmlinux-${{ matrix.arch }}-${{ matrix.toolchain }}.tar.zst
test:
name: ${{ matrix.test }} on ${{ matrix.arch }} with ${{ matrix.toolchain }}
needs: [set-matrix, build]
strategy:
fail-fast: false
matrix: ${{ fromJSON(needs.set-matrix.outputs.test-matrix) }}
runs-on: ${{ matrix.runs_on }}
timeout-minutes: 100
env:
KERNEL: ${{ matrix.kernel }}
REPO_ROOT: ${{ github.workspace }}
REPO_PATH: ""
steps:
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
name: vmlinux-${{ matrix.arch }}-${{ matrix.toolchain }}
path: .
- name: Untar artifacts
# zstd is installed by default in the runner images.
run: zstd -d -T0 vmlinux-${{ matrix.arch }}-${{ matrix.toolchain }}.tar.zst --stdout | tar -xf -
- name: Prepare rootfs
uses: libbpf/ci/prepare-rootfs@master
with:
project-name: 'libbpf'
arch: ${{ matrix.arch }}
kernel: ${{ matrix.kernel }}
kernel-root: '.'
image-output: '/tmp/root.img'
test: ${{ matrix.test }}
- name: Run selftests
uses: libbpf/ci/run-qemu@master
with:
arch: ${{ matrix.arch}}
img: '/tmp/root.img'
vmlinuz: '${{ github.workspace }}/vmlinuz'
kernel-root: '.'
165 changes: 0 additions & 165 deletions Documentation/RCU/arrayRCU.rst

This file was deleted.

Loading