* [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12
@ 2021-01-28 1:04 Paul E. McKenney
2021-02-12 12:31 ` Ingo Molnar
0 siblings, 1 reply; 5+ messages in thread
From: Paul E. McKenney @ 2021-01-28 1:04 UTC (permalink / raw)
To: mingo
Cc: akiyks, bigeasy, elver, frederic, joel, julia, mchehab+huawei,
neeraju, paul.gortmaker, peterz, qiang.zhang, swood, urezki, w,
wangqing, linux-kernel, rcu, kernel-team, tglx
Hello, Ingo!
This pull request contains changes for RCU, KCSAN, LKMM, and nolibc.
You can pull the entire group using branch for-mingo. Or, if you prefer,
you can pull them separately, using for-mingo-rcu to pull the RCU changes,
for-mingo-kcsan to pull the KCSAN changes, for-mingo-lkmm to pull the
LKMM changes, and for-mingo-nolibc to pull the noclib changes.
The changes are as follows:
1. RCU updates (for-mingo-rcu):
a. Documentation updates.
https://lore.kernel.org/lkml/20210106005334.GA12159@paulmck-ThinkPad-P72/
b. Miscellaneous fixes.
https://lore.kernel.org/lkml/20210106005713.GA12492@paulmck-ThinkPad-P72/
c. kfree_rcu() updates from Uladzislau Rezki.
https://lore.kernel.org/lkml/20210106010102.GA12737@paulmck-ThinkPad-P72/
d. Addition of mem_dump_obj() to provide allocator return
addresses to more easily locate bugs. This has a
couple of RCU-related commits, but is mostly MM. I am
including it here because Andrew Morton pulled them in,
but then removed them stating that they were already in
a maintainer tree, namely -rcu.
https://lore.kernel.org/lkml/20210106011603.GA13180@paulmck-ThinkPad-P72/
e. Per-callback-batch tracking of numbers of callbacks,
which enables better debugging information and smarter
reactions to large numbers of callbacks.
https://lore.kernel.org/lkml/20210106012541.GA13972@paulmck-ThinkPad-P72/
f. The first round of Frederic Weisbecker's changes to allow
CPUs to be runtime switched from and to callback-offloaded
state.
https://lore.kernel.org/lkml/20210106013950.GA14663@paulmck-ThinkPad-P72/
g. CONFIG_PREEMPT_RT-related changes.
https://lore.kernel.org/lkml/20210106164746.GA19969@paulmck-ThinkPad-P72/
h. RCU CPU stall warning updates.
https://lore.kernel.org/lkml/20210106165210.GA20296@paulmck-ThinkPad-P72/
i. Addition of polling grace-period APIs for SRCU, requested
by Kent Overstreet.
https://lore.kernel.org/lkml/20210106165511.GA20555@paulmck-ThinkPad-P72/
j. Torture-test and torture-test scripting updates, including
a "torture everything" script that runs rcutorture,
locktorture, scftorture, rcuscale, and refscale.
Plus does a allmodconfig built.
https://lore.kernel.org/lkml/20210106171532.GA20769@paulmck-ThinkPad-P72/
https://lore.kernel.org/lkml/20210106172547.GA22404@paulmck-ThinkPad-P72/
https://lore.kernel.org/lkml/20210106173056.GA23035@paulmck-ThinkPad-P72/
2. Kernel concurrency sanitizer (KCSAN) updates from Marco Elver.
https://lore.kernel.org/lkml/20210106173323.GA23292@paulmck-ThinkPad-P72/
3. Linux-kernel memory model (LKMM) updates.
https://lore.kernel.org/lkml/20210106173548.GA23664@paulmck-ThinkPad-P72/
4. Fixes to nolibc that allows it to run once again on ARMv8.
https://lore.kernel.org/lkml/20210121072031.23777-1-w@1wt.eu/
All of the commits in this pull request have been subjected to subjected
to the kbuild test robot and -next testing, and are available in the
git repository based on v5.11-rc1 and v5.11-rc3 at:
git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-mingo
for you to fetch changes up to c8c430f4a2fb91b9804ed2f749364fc0dcd663fe:
Merge branch 'nolibc.2021.01.21a' into HEAD (2021-01-22 15:28:38 -0800)
----------------------------------------------------------------
Akira Yokosawa (2):
tools/memory-model: Remove redundant initialization in litmus tests
tools/memory-model: Fix typo in klitmus7 compatibility table
Frederic Weisbecker (17):
tools/rcutorture: Make identify_qemu_vcpus() independent of local language
rcu/nocb: Turn enabled/offload states into a common flag
rcu/nocb: Provide basic callback offloading state machine bits
rcu/nocb: Always init segcblist on CPU up
rcu/nocb: De-offloading CB kthread
rcu/nocb: Don't deoffload an offline CPU with pending work
rcu/nocb: De-offloading GP kthread
rcu/nocb: Re-offload support
rcu/nocb: Shutdown nocb timer on de-offloading
rcu/nocb: Flush bypass before setting SEGCBLIST_SOFTIRQ_ONLY
rcu/nocb: Set SEGCBLIST_SOFTIRQ_ONLY at the very last stage of de-offloading
rcu/nocb: Only cond_resched() from actual offloaded batch processing
rcu/nocb: Process batch locally as long as offloading isn't complete
rcu/nocb: Locally accelerate callbacks as long as offloading isn't complete
cpu/hotplug: Add lockdep_is_cpus_held()
timer: Add timer_curr_running()
tools/rcutorture: Support nocb toggle in TREE01
Joel Fernandes (Google) (6):
rcu/tree: Make rcu_do_batch count how many callbacks were executed
rcu/segcblist: Add additional comments to explain smp_mb()
rcu/segcblist: Add counters to segcblist datastructure
rcu/tree: segcblist: Remove redundant smp_mb()s
rcu/trace: Add tracing for how segcb list changes
rcu/segcblist: Add debug checks for segment lengths
Julia Cartwright (1):
rcu: Enable rcu_normal_after_boot unconditionally for RT
Marco Elver (2):
kcsan: Rewrite kcsan_prandom_u32_max() without prandom_u32_state()
random32: Re-enable KCSAN instrumentation
Mauro Carvalho Chehab (1):
list: Fix a typo at the kernel-doc markup
Neeraj Upadhyay (1):
rcu: Check and report missed fqs timer wakeup on RCU stall
Paul E. McKenney (88):
docs: Remove redundant "``" from Requirements.rst
doc: Remove obsolete RCU-bh and RCU-sched update-side API members
doc: Update RCU requirements RCU_INIT_POINTER() description
doc: Remove obsolete rcutree.rcu_idle_lazy_gp_delay boot parameter
srcu: Make Tiny SRCU use multi-bit grace-period counter
srcu: Provide internal interface to start a Tiny SRCU grace period
srcu: Provide internal interface to start a Tree SRCU grace period
srcu: Provide polling interfaces for Tiny SRCU grace periods
srcu: Provide polling interfaces for Tree SRCU grace periods
srcu: Document polling interfaces for Tree SRCU grace periods
srcu: Add comment explaining cookie overflow/wrap
rcutorture: Prepare for ->start_gp_poll and ->poll_gp_state
rcutorture: Add writer-side tests of polling grace-period API
rcutorture: Add reader-side tests of polling grace-period API
rcutorture: Add testing for RCU's global memory ordering
scftorture: Add debug output for wrong-CPU warning
rcu: Mark obtuse portion of stall warning as internal debug
rcu: For RCU grace-period kthread starvation, dump last CPU it ran on
rcu: Do not NMI offline CPUs
torture: Make --kcsan specify lockdep
torture: Make kvm.sh "--dryrun sched" summarize number of batches
torture: Make kvm.sh "--dryrun sched" summarize number of builds
torture: Allow kvm.sh --datestamp to specify subdirectories
torture: Prepare for splitting qemu execution from kvm-test-1-run.sh
torture: Add config2csv.sh script to compare torture scenarios
torture: Make kvm.sh "Test Summary" date be end of test
torture: Make kvm.sh arguments accumulate
torture: Print run duration at end of kvm.sh execution
torture: Make kvm.sh return failure upon build failure
torture: Make kvm.sh include --kconfig arguments in CPU calculation
torture: Add kvm.sh test summary to end of log file
torture: Stop hanging on panic
torture: Add --dryrun batches to help schedule a distributed run
torture: s/STOP/STOP.1/ to avoid scenario collision
torture: Simplify exit-code plumbing for kvm-recheck.sh and kvm-find-errors.sh
torture: Remove "Failed to add ttynull console" false positive
torture: Allow standalone kvm-recheck.sh run detect --trust-make
tools/memory-model: Tie acquire loads to reads-from
rcu: Add lockdep_assert_irqs_disabled() to rcu_sched_clock_irq() and callees
rcu: Add lockdep_assert_irqs_disabled() to raw_spin_unlock_rcu_node() macros
rcu: Make TASKS_TRACE_RCU select IRQ_WORK
torture: Do Kconfig analysis only once per scenario
rcutorture: Test runtime toggling of CPUs' callback offloading
rcu/nocb: Add grace period and task state to show_rcu_nocb_state() output
rcu/nocb: Add nocb CB kthread list to show_rcu_nocb_state() output
rcu/nocb: Code-style nits in callback-offloading toggling
rcu: Do any deferred nocb wakeups at CPU offline time
torture: Add torture.sh torture-everything script
torture: Make torture.sh use common time-duration bash functions
torture: Remove use of "eval" in torture.sh
torture: Add "make allmodconfig" to torture.sh
torture: Auto-size SCF and scaling runs based on number of CPUs
torture: Enable torture.sh argument checking
torture: Make torture.sh rcuscale and refscale deal with allmodconfig
torture: Make torture.sh refscale runs use verbose_batched module parameter
torture: Create doyesno helper function for torture.sh
torture: Make torture.sh allmodconfig retain and label output
torture: Make torture.sh throttle VERBOSE_TOROUT_*() for refscale
torture: Make torture.sh refuse to do zero-length runs
torture: Drop log.long generation from torture.sh
torture: Allow scenarios to be specified to torture.sh
torture: Add command and results directory to torture.sh log
torture: Add --kcsan-kmake-arg to torture.sh for KCSAN
torture: Compress KASAN vmlinux files
refscale: Allow summarization of verbose output
rcutorture: Require entire stutter period be post-boot
rcutorture: Make synctype[] and nsynctype be static global
rcutorture: Make rcu_torture_fakewriter() use blocking wait primitives
torture: Add fuzzed hrtimer-based sleep functions
rcutorture: Use torture_hrtimeout_jiffies() to avoid busy-waits
torture: Make stutter use torture_hrtimeout_*() functions
rcutorture: Use hrtimers for reader and writer delays
torture: Make refscale throttle high-rate printk()s
torture: Throttle VERBOSE_TOROUT_*() output
rcutorture: Make object_debug also double call_rcu() heap object
torture: Clean up after torture-test CPU hotplugging
torture: Maintain torture-specific set of CPUs-online books
rcutorture: Add rcutree.use_softirq=0 to RUDE01 and TASKS01
mm: Add mem_dump_obj() to print source of memory block
mm: Make mem_dump_obj() handle NULL and zero-sized pointers
mm: Make mem_dump_obj() handle vmalloc() memory
mm: Make mem_obj_dump() vmalloc() dumps include start and length
rcu: Make call_rcu() print mem_dump_obj() info for double-freed callback
percpu_ref: Dump mem_dump_obj() info upon reference-count underflow
Merge branches 'doc.2021.01.06a', 'fixes.2021.01.04b', 'kfree_rcu.2021.01.04a', 'mmdumpobj.2021.01.22a', 'nocb.2021.01.06a', 'rt.2021.01.04a', 'stall.2021.01.06a', 'torture.2021.01.12a' and 'tortureall.2021.01.06a' into HEAD
Merge branch 'kcsan.2021.01.04a' into HEAD
Merge branch 'lkmm.2021.01.04a' into HEAD
Merge branch 'nolibc.2021.01.21a' into HEAD
Paul Gortmaker (1):
docs: Fix typos and drop/fix dead links in RCU documentation
Peter Zijlstra (1):
sched/core: Allow try_invoke_on_locked_down_task() with irqs disabled
Scott Wood (1):
rcu: Unconditionally use rcuc threads on PREEMPT_RT
Sebastian Andrzej Siewior (3):
rcu: Make RCU_BOOST default on CONFIG_PREEMPT_RT
doc: Update RCU's requirements page about the PREEMPT_RT wiki
doc: Use CONFIG_PREEMPTION
Uladzislau Rezki (Sony) (3):
rcu: Introduce kfree_rcu() single-argument macro
rcu: Eliminate the __kvfree_rcu() macro
rcu-tasks: Add RCU-tasks self tests
Wang Qing (1):
locking: Remove duplicate include of percpu-rwsem.h
Willy Tarreau (10):
tools/nolibc: Add the definition for dup()
tools/nolibc: Make dup2() rely on dup3() when available
tools/nolibc: Make getpgrp() fall back to getpgid(0)
tools/nolibc: Implement fork() based on clone()
tools/nolibc: Implement poll() based on ppoll()
tools/nolibc: Get timeval, timespec and timezone from linux/time.h
tools/nolibc: Remove incorrect definitions of __ARCH_WANT_*
tools/nolibc: Emit detailed error for missing alternate syscall number definitions
tools/nolibc: Fix position of -lgcc in the documented example
tools/rcutorture: Fix position of -lgcc in mkinitrd.sh
Zqiang (1):
rcu: Record kvfree_call_rcu() call stack for KASAN
.../Expedited-Grace-Periods.rst | 4 +-
.../RCU/Design/Requirements/Requirements.rst | 732 +++++++++++----------
Documentation/RCU/checklist.rst | 10 +-
Documentation/RCU/rcubarrier.rst | 6 +-
Documentation/RCU/stallwarn.rst | 27 +-
Documentation/RCU/whatisRCU.rst | 10 +-
Documentation/admin-guide/kernel-parameters.txt | 39 +-
include/linux/cpu.h | 2 +
include/linux/list.h | 2 +-
include/linux/mm.h | 2 +
include/linux/rcu_segcblist.h | 120 +++-
include/linux/rcupdate.h | 42 +-
include/linux/slab.h | 2 +
include/linux/srcu.h | 3 +
include/linux/srcutiny.h | 7 +-
include/linux/timer.h | 2 +
include/linux/torture.h | 27 +-
include/linux/vmalloc.h | 6 +
include/trace/events/rcu.h | 26 +
kernel/cpu.c | 7 +
kernel/kcsan/core.c | 26 +-
kernel/locking/locktorture.c | 1 -
kernel/rcu/Kconfig | 5 +-
kernel/rcu/rcu.h | 16 +-
kernel/rcu/rcu_segcblist.c | 216 ++++--
kernel/rcu/rcu_segcblist.h | 57 +-
kernel/rcu/rcutorture.c | 395 +++++++++--
kernel/rcu/refscale.c | 23 +-
kernel/rcu/srcutiny.c | 77 ++-
kernel/rcu/srcutree.c | 147 ++++-
kernel/rcu/tasks.h | 79 +++
kernel/rcu/tree.c | 101 ++-
kernel/rcu/tree.h | 2 +
kernel/rcu/tree_exp.h | 2 +-
kernel/rcu/tree_plugin.h | 367 ++++++++++-
kernel/rcu/tree_stall.h | 60 +-
kernel/rcu/update.c | 4 +-
kernel/scftorture.c | 6 +-
kernel/sched/core.c | 9 +-
kernel/time/timer.c | 14 +
kernel/torture.c | 167 ++++-
lib/Makefile | 3 -
lib/percpu-refcount.c | 12 +-
mm/slab.c | 20 +
mm/slab.h | 12 +
mm/slab_common.c | 75 +++
mm/slob.c | 6 +
mm/slub.c | 40 ++
mm/util.c | 31 +
mm/vmalloc.c | 13 +
tools/include/nolibc/nolibc.h | 153 +++--
tools/memory-model/Documentation/glossary.txt | 12 +-
tools/memory-model/README | 2 +-
.../litmus-tests/CoRR+poonceonce+Once.litmus | 4 +-
.../litmus-tests/CoRW+poonceonce+Once.litmus | 4 +-
.../litmus-tests/CoWR+poonceonce+Once.litmus | 4 +-
.../litmus-tests/CoWW+poonceonce.litmus | 4 +-
.../IRIW+fencembonceonces+OnceOnce.litmus | 5 +-
.../litmus-tests/IRIW+poonceonces+OnceOnce.litmus | 5 +-
.../ISA2+pooncelock+pooncelock+pombonce.litmus | 7 +-
.../litmus-tests/ISA2+poonceonces.litmus | 6 +-
...cerelease+poacquirerelease+poacquireonce.litmus | 6 +-
.../LB+fencembonceonce+ctrlonceonce.litmus | 5 +-
.../LB+poacquireonce+pooncerelease.litmus | 5 +-
.../litmus-tests/LB+poonceonces.litmus | 5 +-
.../MP+fencewmbonceonce+fencermbonceonce.litmus | 5 +-
.../litmus-tests/MP+onceassign+derefonce.litmus | 4 +-
.../MP+polockmbonce+poacquiresilsil.litmus | 5 +-
.../MP+polockonce+poacquiresilsil.litmus | 5 +-
tools/memory-model/litmus-tests/MP+polocks.litmus | 6 +-
.../litmus-tests/MP+poonceonces.litmus | 5 +-
.../MP+pooncerelease+poacquireonce.litmus | 5 +-
.../memory-model/litmus-tests/MP+porevlocks.litmus | 6 +-
.../litmus-tests/R+fencembonceonces.litmus | 5 +-
.../memory-model/litmus-tests/R+poonceonces.litmus | 5 +-
.../S+fencewmbonceonce+poacquireonce.litmus | 5 +-
.../memory-model/litmus-tests/S+poonceonces.litmus | 5 +-
.../litmus-tests/SB+fencembonceonces.litmus | 5 +-
.../litmus-tests/SB+poonceonces.litmus | 5 +-
.../litmus-tests/SB+rfionceonce-poonceonces.litmus | 5 +-
.../litmus-tests/WRC+poonceonces+Once.litmus | 5 +-
.../WRC+pooncerelease+fencermbonceonce+Once.litmus | 5 +-
.../Z6.0+pooncelock+poonceLock+pombonce.litmus | 7 +-
.../Z6.0+pooncelock+pooncelock+pombonce.litmus | 7 +-
...release+poacquirerelease+fencembonceonce.litmus | 6 +-
.../testing/selftests/rcutorture/bin/config2csv.sh | 67 ++
.../selftests/rcutorture/bin/console-badness.sh | 1 +
.../testing/selftests/rcutorture/bin/functions.sh | 36 +-
.../selftests/rcutorture/bin/kvm-find-errors.sh | 9 +-
.../selftests/rcutorture/bin/kvm-recheck.sh | 3 +-
.../selftests/rcutorture/bin/kvm-test-1-run.sh | 12 +-
tools/testing/selftests/rcutorture/bin/kvm.sh | 103 ++-
tools/testing/selftests/rcutorture/bin/mkinitrd.sh | 2 +-
.../selftests/rcutorture/bin/parse-build.sh | 2 +-
.../selftests/rcutorture/bin/parse-console.sh | 2 +-
tools/testing/selftests/rcutorture/bin/torture.sh | 442 +++++++++++++
.../selftests/rcutorture/configs/rcu/RUDE01.boot | 1 +
.../selftests/rcutorture/configs/rcu/TASKS01.boot | 1 +
.../selftests/rcutorture/configs/rcu/TREE01.boot | 4 +-
99 files changed, 3163 insertions(+), 917 deletions(-)
create mode 100755 tools/testing/selftests/rcutorture/bin/config2csv.sh
create mode 100755 tools/testing/selftests/rcutorture/bin/torture.sh
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12
2021-01-28 1:04 [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12 Paul E. McKenney
@ 2021-02-12 12:31 ` Ingo Molnar
2021-02-12 15:07 ` Paul E. McKenney
0 siblings, 1 reply; 5+ messages in thread
From: Ingo Molnar @ 2021-02-12 12:31 UTC (permalink / raw)
To: Paul E. McKenney
Cc: akiyks, bigeasy, elver, frederic, joel, julia, mchehab+huawei,
neeraju, paul.gortmaker, peterz, qiang.zhang, swood, urezki, w,
wangqing, linux-kernel, rcu, kernel-team, tglx
* Paul E. McKenney <paulmck@kernel.org> wrote:
> Hello, Ingo!
>
> This pull request contains changes for RCU, KCSAN, LKMM, and nolibc.
> You can pull the entire group using branch for-mingo. Or, if you prefer,
> you can pull them separately, using for-mingo-rcu to pull the RCU changes,
> for-mingo-kcsan to pull the KCSAN changes, for-mingo-lkmm to pull the
> LKMM changes, and for-mingo-nolibc to pull the noclib changes.
>
> The changes are as follows:
>
> 1. RCU updates (for-mingo-rcu):
> 4. Fixes to nolibc that allows it to run once again on ARMv8.
> https://lore.kernel.org/lkml/20210121072031.23777-1-w@1wt.eu/
Pulled these two into tip:core/rcu - as nolibc's main (only?) usecase
within the kernel is torture-testing.
> 2. Kernel concurrency sanitizer (KCSAN) updates from Marco Elver.
> https://lore.kernel.org/lkml/20210106173323.GA23292@paulmck-ThinkPad-P72/
> 3. Linux-kernel memory model (LKMM) updates.
> https://lore.kernel.org/lkml/20210106173548.GA23664@paulmck-ThinkPad-P72/
Pulled these two into tip:locking/core.
Thanks Paul!
Ingo
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12
2021-02-12 12:31 ` Ingo Molnar
@ 2021-02-12 15:07 ` Paul E. McKenney
2021-02-13 12:36 ` Willy Tarreau
0 siblings, 1 reply; 5+ messages in thread
From: Paul E. McKenney @ 2021-02-12 15:07 UTC (permalink / raw)
To: Ingo Molnar
Cc: akiyks, bigeasy, elver, frederic, joel, julia, mchehab+huawei,
neeraju, paul.gortmaker, peterz, qiang.zhang, swood, urezki, w,
wangqing, linux-kernel, rcu, kernel-team, tglx
On Fri, Feb 12, 2021 at 01:31:09PM +0100, Ingo Molnar wrote:
>
> * Paul E. McKenney <paulmck@kernel.org> wrote:
>
> > Hello, Ingo!
> >
> > This pull request contains changes for RCU, KCSAN, LKMM, and nolibc.
> > You can pull the entire group using branch for-mingo. Or, if you prefer,
> > you can pull them separately, using for-mingo-rcu to pull the RCU changes,
> > for-mingo-kcsan to pull the KCSAN changes, for-mingo-lkmm to pull the
> > LKMM changes, and for-mingo-nolibc to pull the noclib changes.
> >
> > The changes are as follows:
> >
> > 1. RCU updates (for-mingo-rcu):
>
> > 4. Fixes to nolibc that allows it to run once again on ARMv8.
> > https://lore.kernel.org/lkml/20210121072031.23777-1-w@1wt.eu/
>
> Pulled these two into tip:core/rcu - as nolibc's main (only?) usecase
> within the kernel is torture-testing.
>
> > 2. Kernel concurrency sanitizer (KCSAN) updates from Marco Elver.
> > https://lore.kernel.org/lkml/20210106173323.GA23292@paulmck-ThinkPad-P72/
>
> > 3. Linux-kernel memory model (LKMM) updates.
> > https://lore.kernel.org/lkml/20210106173548.GA23664@paulmck-ThinkPad-P72/
>
> Pulled these two into tip:locking/core.
Thank you, Ingo! In the future, I will group nolibc with RCU. But there
has to be something other than RCU that needs it. I will take a look. ;-)
Thanx, Paul
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12
2021-02-12 15:07 ` Paul E. McKenney
@ 2021-02-13 12:36 ` Willy Tarreau
2021-02-13 16:44 ` "Single user mode" initrd [ Was: [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12 ] Paul E. McKenney
0 siblings, 1 reply; 5+ messages in thread
From: Willy Tarreau @ 2021-02-13 12:36 UTC (permalink / raw)
To: Paul E. McKenney
Cc: Ingo Molnar, akiyks, bigeasy, elver, frederic, joel, julia,
mchehab+huawei, neeraju, paul.gortmaker, peterz, qiang.zhang,
swood, urezki, wangqing, linux-kernel, rcu, kernel-team, tglx
Hi Paul,
On Fri, Feb 12, 2021 at 07:07:05AM -0800, Paul E. McKenney wrote:
> Thank you, Ingo! In the future, I will group nolibc with RCU. But there
> has to be something other than RCU that needs it. I will take a look. ;-)
All my kernels boot using a "preinit" that is built with nolibc and
integrated into the initramfs. Historically it used to just create /dev
entries and mount the rootfs, nowadays it's used to untar modules and
finish the boot so that I can have a clean separation between a kernel
image and a rootfs. It even allows to perform some minimal debugging as
it includes a minimalistic shell. Do you think something like this could
be of any use in your development sessions ? If so I can discuss this
with you in a separate thread so as not to annoy everyone. Just let me
know :-)
Cheers,
Willy
^ permalink raw reply [flat|nested] 5+ messages in thread
* "Single user mode" initrd [ Was: [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12 ]
2021-02-13 12:36 ` Willy Tarreau
@ 2021-02-13 16:44 ` Paul E. McKenney
0 siblings, 0 replies; 5+ messages in thread
From: Paul E. McKenney @ 2021-02-13 16:44 UTC (permalink / raw)
To: Willy Tarreau; +Cc: linux-kernel, rcu, kernel-team
[ Dropping non-list CCs. ]
On Sat, Feb 13, 2021 at 01:36:58PM +0100, Willy Tarreau wrote:
> Hi Paul,
>
> On Fri, Feb 12, 2021 at 07:07:05AM -0800, Paul E. McKenney wrote:
> > Thank you, Ingo! In the future, I will group nolibc with RCU. But there
> > has to be something other than RCU that needs it. I will take a look. ;-)
>
> All my kernels boot using a "preinit" that is built with nolibc and
> integrated into the initramfs. Historically it used to just create /dev
> entries and mount the rootfs, nowadays it's used to untar modules and
> finish the boot so that I can have a clean separation between a kernel
> image and a rootfs. It even allows to perform some minimal debugging as
> it includes a minimalistic shell. Do you think something like this could
> be of any use in your development sessions ? If so I can discuss this
> with you in a separate thread so as not to annoy everyone. Just let me
> know :-)
I currently use virtme when I need to poke around in userspace, which
has been working well so far.
I suspect that your preinit could be used to make a boot-loader that
automatically knows the needed Linux-kernel filesystems, thus avoiding
the long series of bugs due to filesystem mismatches between the Linux
kernel and the boot loader. In the old days, the larger size of the
Linux kernel would have been a problem, but given the size of firmware
these days, this should no longer be a problem.
But my guess is that this has already been tried. Plus there would have
to be someone quite excited about doing a large body of boot-loader work.
Thoughts?
Thanx, Paul
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-02-13 16:45 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-28 1:04 [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12 Paul E. McKenney
2021-02-12 12:31 ` Ingo Molnar
2021-02-12 15:07 ` Paul E. McKenney
2021-02-13 12:36 ` Willy Tarreau
2021-02-13 16:44 ` "Single user mode" initrd [ Was: [GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.12 ] Paul E. McKenney
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).