linux-stable/tools/testing/selftests
Matthew Wilcox (Oracle) f9bff0e318 minmax: add in_range() macro
Patch series "New page table range API", v6.

This patchset changes the API used by the MM to set up page table entries.
The four APIs are:

    set_ptes(mm, addr, ptep, pte, nr)
    update_mmu_cache_range(vma, addr, ptep, nr)
    flush_dcache_folio(folio) 
    flush_icache_pages(vma, page, nr)

flush_dcache_folio() isn't technically new, but no architecture
implemented it, so I've done that for them.  The old APIs remain around
but are mostly implemented by calling the new interfaces.

The new APIs are based around setting up N page table entries at once. 
The N entries belong to the same PMD, the same folio and the same VMA, so
ptep++ is a legitimate operation, and locking is taken care of for you. 
Some architectures can do a better job of it than just a loop, but I have
hesitated to make too deep a change to architectures I don't understand
well.

One thing I have changed in every architecture is that PG_arch_1 is now a
per-folio bit instead of a per-page bit when used for dcache clean/dirty
tracking.  This was something that would have to happen eventually, and it
makes sense to do it now rather than iterate over every page involved in a
cache flush and figure out if it needs to happen.

The point of all this is better performance, and Fengwei Yin has measured
improvement on x86.  I suspect you'll see improvement on your architecture
too.  Try the new will-it-scale test mentioned here:
https://lore.kernel.org/linux-mm/20230206140639.538867-5-fengwei.yin@intel.com/
You'll need to run it on an XFS filesystem and have
CONFIG_TRANSPARENT_HUGEPAGE set.

This patchset is the basis for much of the anonymous large folio work
being done by Ryan, so it's received quite a lot of testing over the last
few months.


This patch (of 38):

Determine if a value lies within a range more efficiently (subtraction +
comparison vs two comparisons and an AND).  It also has useful (under some
circumstances) behaviour if the range exceeds the maximum value of the
type.  Convert all the conflicting definitions of in_range() within the
kernel; some can use the generic definition while others need their own
definition.

Link: https://lkml.kernel.org/r/20230802151406.3735276-1-willy@infradead.org
Link: https://lkml.kernel.org/r/20230802151406.3735276-2-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
2023-08-24 16:20:18 -07:00
..
alsa selftests: ALSA: Add test-pcmtest-driver to .gitignore 2023-07-19 15:25:03 +02:00
amd-pstate linux-kselftest-next-6.4-rc1 2023-04-24 12:28:34 -07:00
arm64 selftests/arm64: fix build failure during the "emit_tests" step 2023-07-14 12:33:35 -06:00
bpf minmax: add in_range() macro 2023-08-24 16:20:18 -07:00
breakpoints
cachestat selftests: cachestat: catch failing fsync test on tmpfs 2023-08-24 14:59:47 -07:00
capabilities
cgroup merge mm-hotfixes-stable into mm-stable to pick up depended-upon changes 2023-08-21 14:26:20 -07:00
clone3 selftests/clone3: test clone3 with exit signal in flags 2023-06-12 16:39:11 -06:00
core
cpu-hotplug
cpufreq selftests/cpufreq: Don't enable generic lock debugging options 2023-06-12 16:39:11 -06:00
damon selftests/damon/sysfs: test damon_target filter 2023-08-21 13:37:37 -07:00
dma
dmabuf-heaps
drivers selftests: mlxsw: one_armed_router: Use port MAC for bridge address 2023-06-21 14:02:52 -07:00
efivarfs
exec
filesystems
firmware
fpu
ftrace selftests/ftrace: Fix to check fprobe event eneblement 2023-07-26 12:54:17 +09:00
futex
gpio gpio updates for v6.5 2023-06-29 10:11:10 -07:00
hid selftests: hid: fix vmtests.sh not running make headers 2023-07-09 12:10:04 +02:00
ia64
intel_pstate
iommu iommufd/selftest: Cover domain unmap with huge pages and access 2023-04-04 13:11:24 -03:00
ipc
ir
kcmp
kexec
kmod
kselftest selftests: line buffer test program's stdout 2023-08-18 10:12:42 -07:00
kvm KVM: selftests: Expand x86's sregs test to cover illegal CR0 values 2023-07-29 11:05:32 -04:00
landlock selftests/landlock: Add hostfs tests 2023-06-12 21:26:23 +02:00
lib
livepatch
lkdtm
locking
media_tests selftests: media_tests: Add new subtest to video_device_test 2023-06-12 16:39:10 -06:00
membarrier
memfd selftests: improve vm.memfd_noexec sysctl tests 2023-08-21 13:38:00 -07:00
memory-hotplug
mincore selftests/mincore: fix skip condition for check_huge_pages test 2023-07-13 12:51:13 -06:00
mm selftest/mm: ksm_functional_tests: Add PROT_NONE test 2023-08-21 14:28:42 -07:00
mount
mount_setattr selftests mount: Fix mount_setattr_test builds failed 2023-03-31 09:18:45 -06:00
move_mount_set_group
mqueue
nci
net selftests: mptcp: join: only check for ip6tables if needed 2023-07-26 16:48:54 -07:00
netfilter selftests: nft_flowtable.sh: check ingress/egress chain too 2023-05-10 09:31:07 +02:00
nolibc selftests/nolibc: make sure gcc always use little endian on MIPS 2023-06-09 11:46:10 -07:00
nsfs
ntb
openat2
perf_events
pid_namespace
pidfd selftest: pidfd: Omit long and repeating outputs 2023-06-12 16:39:11 -06:00
powerpc selftests/powerpc/dexcr: Add DEXCR status utility lsdexcr 2023-06-19 17:36:28 +10:00
prctl selftests: prctl: Fix spelling mistake "anonynous" -> "anonymous" 2023-06-12 16:39:10 -06:00
proc mm,thp: fix smaps THPeligible output alignment 2023-08-21 13:38:01 -07:00
pstore
ptp ptp: Add .getmaxphase callback to ptp_clock_info 2023-06-20 09:02:33 +01:00
ptrace Update for entry and ptrace: 2023-04-25 11:05:04 -07:00
rcutorture A half-dozen late arriving docs patches. They are mostly fixes, but we 2023-07-06 22:15:38 -07:00
resctrl selftests/resctrl: Fix incorrect error return on test complete 2023-04-14 11:13:18 -06:00
riscv selftests/riscv: fix potential build failure during the "emit_tests" step 2023-07-14 12:32:42 -06:00
rlimits
rseq selftests/rseq: Play nice with binaries statically linked against glibc 2.35+ 2023-07-29 11:05:28 -04:00
rtc
safesetid
sched selftests: sched: Add more core schedule prctl calls 2023-03-28 10:27:07 -06:00
seccomp
sgx selftests/sgx: Add "test_encl.elf" to TEST_FILES 2023-05-08 11:01:03 -06:00
sigaltstack
size
sparc64
splice
static_keys
sync
syscall_user_dispatch
sysctl test_sysclt: Test for registering a mount point 2023-06-18 02:32:54 -07:00
tc-testing selftests: tc: add ConnTrack procfs kconfig 2023-07-18 16:52:12 -07:00
tdx
timens
timers tools: timers: fix freq average calculation 2023-07-13 13:32:36 -06:00
tmpfs
tpm2
tty selftests: tty: add selftest for tty timestamp updates 2023-06-15 13:45:42 +02:00
uevent
user
user_events selftests/user_events: Test struct size match cases 2023-07-12 12:04:47 -04:00
vDSO kselftest: vDSO: Fix accumulation of uninitialized ret when CLOCK_REALTIME is undefined 2023-06-12 16:39:10 -06:00
watchdog
wireguard wireguard: netlink: send staged packets when setting initial private key 2023-07-03 09:17:52 +01:00
x86 Add support for new Linear Address Masking CPU feature. This is similar 2023-04-28 09:43:49 -07:00
zram
.gitignore
Makefile TTY/Serial driver updates for 6.5-rc1. 2023-07-03 13:14:58 -07:00
gen_kselftest_tar.sh
kselftest.h selftests: line buffer test program's stdout 2023-08-18 10:12:42 -07:00
kselftest_deps.sh
kselftest_harness.h selftests/harness: allow tests to be skipped during setup 2023-06-15 22:24:01 -07:00
kselftest_install.sh
kselftest_module.h
lib.mk selftests: error out if kernel header files are not yet built 2023-06-19 16:19:03 -07:00
run_kselftest.sh kselftests: Sort the collections list to avoid duplicate tests 2023-06-12 16:39:11 -06:00