Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,38 @@
This document gives a brief rationale for the TINY_RCU test cases.
Kconfig Parameters:
CONFIG_DEBUG_LOCK_ALLOC -- Do all three and none of the three.
CONFIG_PREEMPT_COUNT
CONFIG_RCU_TRACE
The theory here is that randconfig testing will hit the other six possible
combinations of these parameters.
Kconfig Parameters Ignored:
CONFIG_DEBUG_OBJECTS_RCU_HEAD
CONFIG_PROVE_RCU
In common code tested by TREE_RCU test cases.
CONFIG_RCU_NOCB_CPU
Meaningless for TINY_RCU.
CONFIG_RCU_STALL_COMMON
CONFIG_RCU_TORTURE_TEST
Redundant with CONFIG_RCU_TRACE.
CONFIG_HOTPLUG_CPU
CONFIG_PREEMPT
CONFIG_PREEMPT_RCU
CONFIG_SMP
CONFIG_TINY_RCU
CONFIG_PREEMPT_RCU
CONFIG_TREE_RCU
All forced by CONFIG_TINY_RCU.
@@ -0,0 +1,75 @@
This document gives a brief rationale for the TREE_RCU-related test
cases, a group that includes PREEMPT_RCU.
Kconfig Parameters:
CONFIG_DEBUG_LOCK_ALLOC -- Do three, covering CONFIG_PROVE_LOCKING & not.
CONFIG_DEBUG_OBJECTS_RCU_HEAD -- Do one.
CONFIG_HZ_PERIODIC -- Do one.
CONFIG_NO_HZ_IDLE -- Do those not otherwise specified. (Groups of two.)
CONFIG_NO_HZ_FULL -- Do two, one with partial CPU enablement.
CONFIG_PREEMPT -- Do half. (First three and #8.)
CONFIG_PROVE_LOCKING -- Do several, covering CONFIG_DEBUG_LOCK_ALLOC=y and not.
CONFIG_PROVE_RCU -- Hardwired to CONFIG_PROVE_LOCKING.
CONFIG_RCU_BOOST -- one of PREEMPT_RCU.
CONFIG_RCU_FANOUT -- Cover hierarchy, but overlap with others.
CONFIG_RCU_FANOUT_LEAF -- Do one non-default.
CONFIG_RCU_NOCB_CPU -- Do three, one with no rcu_nocbs CPUs, one with
rcu_nocbs=0, and one with all rcu_nocbs CPUs.
CONFIG_RCU_TRACE -- Do half.
CONFIG_SMP -- Need one !SMP for PREEMPT_RCU.
CONFIG_RCU_EXPERT=n -- Do a few, but these have to be vanilla configurations.
CONFIG_RCU_EQS_DEBUG -- Do at least one for CONFIG_NO_HZ_FULL and not.
RCU-bh: Do one with PREEMPT and one with !PREEMPT.
RCU-sched: Do one with PREEMPT but not BOOST.
Boot parameters:
nohz_full - do at least one.
maxcpu -- do at least one.
rcupdate.rcu_self_test_bh -- Do at least one each, offloaded and not.
rcupdate.rcu_self_test_sched -- Do at least one each, offloaded and not.
rcupdate.rcu_self_test -- Do at least one each, offloaded and not.
rcutree.rcu_fanout_exact -- Do at least one.
Kconfig Parameters Ignored:
CONFIG_64BIT
Used only to check CONFIG_RCU_FANOUT value, inspection suffices.
CONFIG_PREEMPT_COUNT
CONFIG_PREEMPT_RCU
Redundant with CONFIG_PREEMPT, ignore.
CONFIG_RCU_BOOST_DELAY
Inspection suffices, ignore.
CONFIG_RCU_CPU_STALL_TIMEOUT
Inspection suffices, ignore.
CONFIG_RCU_STALL_COMMON
Implied by TREE_RCU and PREEMPT_RCU.
CONFIG_RCU_TORTURE_TEST
CONFIG_RCU_TORTURE_TEST_RUNNABLE
Always used in KVM testing.
CONFIG_PREEMPT_RCU
CONFIG_TREE_RCU
CONFIG_TINY_RCU
CONFIG_TASKS_RCU
These are controlled by CONFIG_PREEMPT and/or CONFIG_SMP.
boot parameters ignored: TBD
@@ -0,0 +1,16 @@
The rcutorture scripting tools automatically create an initrd containing
a single statically linked binary named "init" that loops over a
very long sleep() call. In both cases, this creation is done by
tools/testing/selftests/rcutorture/bin/mkinitrd.sh.
However, if you don't like the notion of statically linked bare-bones
userspace environments, you might wish to press an existing initrd
into service:
------------------------------------------------------------------------
cd tools/testing/selftests/rcutorture
zcat /initrd.img > /tmp/initrd.img.zcat
mkdir initrd
cd initrd
cpio -id < /tmp/initrd.img.zcat
# Manually verify that initrd contains needed binaries and libraries.
@@ -0,0 +1,67 @@
Normally, a minimal initrd is created automatically by the rcutorture
scripting. But minimal really does mean "minimal", namely just a single
root directory with a single statically linked executable named "init":
$ size tools/testing/selftests/rcutorture/initrd/init
text data bss dec hex filename
328 0 8 336 150 tools/testing/selftests/rcutorture/initrd/init
Suppose you need to run some scripts, perhaps to monitor or control
some aspect of the rcutorture testing. This will require a more fully
filled-out userspace, perhaps containing libraries, executables for
the shell and other utilities, and soforth. In that case, place your
desired filesystem here:
tools/testing/selftests/rcutorture/initrd
For example, your tools/testing/selftests/rcutorture/initrd/init might
be a script that does any needed mount operations and starts whatever
scripts need starting to properly monitor or control your testing.
The next rcutorture build will then incorporate this filesystem into
the kernel image that is passed to qemu.
Or maybe you need a real root filesystem for some reason, in which case
please read on!
The remainder of this document describes one way to create the
rcu-test-image file that contains the filesystem used by the guest-OS
kernel. There are probably much better ways of doing this, and this
filesystem could no doubt be smaller. It is probably also possible to
simply download an appropriate image from any number of places.
That said, here are the commands:
------------------------------------------------------------------------
dd if=/dev/zero of=rcu-test-image bs=400M count=1
mkfs.ext3 ./rcu-test-image
sudo mount -o loop ./rcu-test-image /mnt
# Replace "precise" below with your favorite Ubuntu release.
# Empirical evidence says this image will work for 64-bit, but...
# Note that debootstrap does take a few minutes to run. Or longer.
sudo debootstrap --verbose --arch i386 precise /mnt http://archive.ubuntu.com/ubuntu
cat << '___EOF___' | sudo dd of=/mnt/etc/fstab
# UNCONFIGURED FSTAB FOR BASE SYSTEM
#
/dev/vda / ext3 defaults 1 1
dev /dev tmpfs rw 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
___EOF___
sudo umount /mnt
------------------------------------------------------------------------
References:
http://sripathikodi.blogspot.com/2010/02/creating-kvm-bootable-fedora-system.html
https://help.ubuntu.com/community/KVM/CreateGuests
https://help.ubuntu.com/community/JeOSVMBuilder
http://wiki.libvirt.org/page/UbuntuKVMWalkthrough
http://www.moe.co.uk/2011/01/07/pci_add_option_rom-failed-to-find-romfile-pxe-rtl8139-bin/ -- "apt-get install kvm-pxe"
https://www.landley.net/writing/rootfs-howto.html
https://en.wikipedia.org/wiki/Initrd
https://en.wikipedia.org/wiki/Cpio
http://wiki.libvirt.org/page/UbuntuKVMWalkthrough