Skip to content

powerpc: fix some vm kernel selftests failures ( userfaultfd | userfaultfd_hugetlb | map_fixed_noreplace) [P10][DD2][Denali]

Desnes Nunes requested to merge desnesn/centos-stream-9:rh2036152 into main

BUGZILLA

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2036152

UPSTREAM STATUS

Upstream Status: Patches have been accepted on kernel/git/powerpc/linux.git

CONFLICTS

None

BUILD INFORMATION

Build Info: http://brewweb.engineering.redhat.com/brew/taskinfo?taskID=44460749

TESTING

All three kernel selftests pass with the use of a patched kernel as follows:

=====================================

cpu		: POWER10 (architected), altivec supported
clock	: 3650.000000MHz
revision	: 2.0 (pvr 0080 0200)
timebase	: 512000000
platform	: pSeries
model	: IBM,9080-HEX
machine	: CHRP IBM,9080-HEX
MMU	: Radix

==== uname ====
5.14.0-72.PATCHED_rh2036152.el9_0.ppc64le

==== cat /etc/*release ====
NAME="Red Hat Enterprise Linux"
VERSION="9.0 (Plow)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="9.0"
PLATFORM_ID="platform:el9"
PRETTY_NAME="Red Hat Enterprise Linux 9.0 Beta (Plow)"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:redhat:enterprise_linux:9::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/9/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_BUGZILLA_PRODUCT_VERSION=9.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.0 Beta"
Red Hat Enterprise Linux release 9.0 Beta (Plow)


Test Case Source :
============
linux-5.14.0-72.PATCHED_rh2036152.el9.ppc64le

# rpm -q --changelog kernel-core | grep "userfaultfd/se"
- userfaultfd/selftests: fix calculation of expected ioctls (Desnes A. Nunes do Rosario)
- userfaultfd/selftests: fix feature support detection (Desnes A. Nunes do Rosario)
- userfaultfd/selftests: don't rely on GNU extensions for random numbers (Desnes A. Nunes do Rosario)


==== test o/p ====
-------------------
running userfaultfd
-------------------
nr_pages: 320, nr_pages_per_cpu: 20
bounces: 15, mode: rnd racing ver poll, userfaults: 224 missing (51+43+44+29+26+15+10+4+2+0+0+0+0+0+0+0) 
bounces: 14, mode: racing ver poll, userfaults: 107 missing (32+17+16+9+8+5+7+1+2+2+3+3+2+0+0+0) 
bounces: 13, mode: rnd ver poll, userfaults: 206 missing (46+47+35+24+20+11+14+7+1+0+0+1+0+0+0+0) 
bounces: 12, mode: ver poll, userfaults: 158 missing (32+31+14+14+14+13+10+11+7+5+5+2+0+0+0+0) 
bounces: 11, mode: rnd racing poll, userfaults: 220 missing (50+43+35+30+24+19+12+6+1+0+0+0+0+0+0+0) 
bounces: 10, mode: racing poll, userfaults: 84 missing (17+15+7+7+3+9+7+6+8+1+2+2+0+0+0+0) 
bounces: 9, mode: rnd poll, userfaults: 210 missing (55+34+42+24+25+14+8+4+4+0+0+0+0+0+0+0) 
bounces: 8, mode: poll, userfaults: 169 missing (32+27+24+19+21+8+10+7+4+9+1+3+4+0+0+0) 
bounces: 7, mode: rnd racing ver read, userfaults: 223 missing (54+44+35+32+18+23+10+4+0+0+1+0+0+1+1+0) 
bounces: 6, mode: racing ver read, userfaults: 126 missing (34+14+14+16+7+6+13+6+2+6+5+3+0+0+0+0) 
bounces: 5, mode: rnd ver read, userfaults: 227 missing (60+47+40+28+23+7+10+7+1+2+0+2+0+0+0+0) 
bounces: 4, mode: ver read, userfaults: 191 missing (42+42+24+28+21+10+4+8+5+3+3+1+0+0+0+0) 
bounces: 3, mode: rnd racing read, userfaults: 227 missing (57+44+36+29+20+23+10+4+0+2+0+2+0+0+0+0) 
bounces: 2, mode: racing read, userfaults: 121 missing (19+29+16+15+7+7+7+9+4+2+4+1+1+0+0+0) 
bounces: 1, mode: rnd read, userfaults: 222 missing (49+47+40+31+27+9+11+2+2+1+1+1+1+0+0+0) 
bounces: 0, mode: read, userfaults: 248 missing (46+39+19+28+16+23+15+13+12+13+7+7+7+2+0+1) 
testing UFFDIO_ZEROPAGE: done.
testing signal delivery: done.
testing events (fork, remap, remove): userfaults: 320 missing (320) 
[PASS]
---------------------------
running userfaultfd_hugetlb
---------------------------
nr_pages: 64, nr_pages_per_cpu: 4
bounces: 31, mode: rnd racing ver poll, userfaults: 51 missing (18+10+10+7+5+1+0+0+0+0+0+0+0+0+0+0) 
bounces: 30, mode: racing ver poll, userfaults: 40 missing (18+2+6+8+2+3+1+0+0+0+0+0+0+0+0+0) 
bounces: 29, mode: rnd ver poll, userfaults: 52 missing (15+15+9+8+5+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 28, mode: ver poll, userfaults: 41 missing (11+7+10+1+2+3+4+2+1+0+0+0+0+0+0+0) 
bounces: 27, mode: rnd racing poll, userfaults: 51 missing (19+12+8+5+4+2+0+1+0+0+0+0+0+0+0+0) 
bounces: 26, mode: racing poll, userfaults: 37 missing (6+7+9+5+5+3+1+1+0+0+0+0+0+0+0+0) 
bounces: 25, mode: rnd poll, userfaults: 48 missing (19+14+11+3+1+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 24, mode: poll, userfaults: 46 missing (22+5+3+8+3+2+1+1+1+0+0+0+0+0+0+0) 
bounces: 23, mode: rnd racing ver read, userfaults: 50 missing (16+11+10+7+5+1+0+0+0+0+0+0+0+0+0+0) 
bounces: 22, mode: racing ver read, userfaults: 44 missing (12+6+10+4+3+1+6+2+0+0+0+0+0+0+0+0) 
bounces: 21, mode: rnd ver read, userfaults: 54 missing (21+14+8+7+3+1+0+0+0+0+0+0+0+0+0+0) 
bounces: 20, mode: ver read, userfaults: 48 missing (23+9+10+3+0+1+2+0+0+0+0+0+0+0+0+0) 
bounces: 19, mode: rnd racing read, userfaults: 54 missing (15+13+12+8+6+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 18, mode: racing read, userfaults: 51 missing (25+9+7+1+5+3+1+0+0+0+0+0+0+0+0+0) 
bounces: 17, mode: rnd read, userfaults: 51 missing (17+14+11+5+4+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 16, mode: read, userfaults: 50 missing (13+16+0+12+5+0+2+2+0+0+0+0+0+0+0+0) 
bounces: 15, mode: rnd racing ver poll, userfaults: 48 missing (13+14+8+9+4+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 14, mode: racing ver poll, userfaults: 52 missing (21+12+6+7+2+1+2+0+1+0+0+0+0+0+0+0) 
bounces: 13, mode: rnd ver poll, userfaults: 49 missing (19+12+8+8+2+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 12, mode: ver poll, userfaults: 53 missing (19+13+8+3+4+4+1+1+0+0+0+0+0+0+0+0) 
bounces: 11, mode: rnd racing poll, userfaults: 53 missing (19+13+10+7+4+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 10, mode: racing poll, userfaults: 52 missing (17+3+8+9+2+4+3+3+2+1+0+0+0+0+0+0) 
bounces: 9, mode: rnd poll, userfaults: 51 missing (17+17+12+5+0+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 8, mode: poll, userfaults: 53 missing (11+7+7+7+4+7+4+2+2+1+1+0+0+0+0+0) 
bounces: 7, mode: rnd racing ver read, userfaults: 53 missing (19+15+13+5+1+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 6, mode: racing ver read, userfaults: 59 missing (13+9+1+23+2+4+6+1+0+0+0+0+0+0+0+0) 
bounces: 5, mode: rnd ver read, userfaults: 51 missing (20+14+7+6+4+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 4, mode: ver read, userfaults: 60 missing (11+8+17+4+8+5+2+4+1+0+0+0+0+0+0+0) 
bounces: 3, mode: rnd racing read, userfaults: 51 missing (20+16+9+5+1+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 2, mode: racing read, userfaults: 62 missing (12+20+11+5+7+4+0+2+0+1+0+0+0+0+0+0) 
bounces: 1, mode: rnd read, userfaults: 53 missing (18+14+12+7+2+0+0+0+0+0+0+0+0+0+0+0) 
bounces: 0, mode: read, userfaults: 62 missing (16+12+16+6+2+5+2+3+0+0+0+0+0+0+0+0) 
testing UFFDIO_ZEROPAGE: done.
testing signal delivery: done.
testing events (fork, remap, remove): userfaults: 64 missing (64) 
[PASS]
-------------------------
running userfaultfd_shmem
-------------------------
nr_pages: 320, nr_pages_per_cpu: 20
bounces: 15, mode: rnd racing ver poll, userfaults: 213 missing (51+37+29+31+26+19+12+6+2+0+0+0+0+0+0+0) 
bounces: 14, mode: racing ver poll, userfaults: 101 missing (18+23+10+16+6+3+10+6+2+3+1+2+1+0+0+0) 
bounces: 13, mode: rnd ver poll, userfaults: 216 missing (44+48+33+29+19+20+14+5+3+1+0+0+0+0+0+0) 
bounces: 12, mode: ver poll, userfaults: 164 missing (37+20+33+18+11+12+10+4+9+4+3+3+0+0+0+0) 
bounces: 11, mode: rnd racing poll, userfaults: 214 missing (49+48+32+25+20+15+16+6+2+1+0+0+0+0+0+0) 
bounces: 10, mode: racing poll, userfaults: 87 missing (28+10+16+7+4+8+3+2+4+3+2+0+0+0+0+0) 
bounces: 9, mode: rnd poll, userfaults: 211 missing (45+44+38+25+21+16+11+10+1+0+0+0+0+0+0+0) 
bounces: 8, mode: poll, userfaults: 155 missing (36+22+23+16+16+13+5+9+9+4+1+0+1+0+0+0) 
bounces: 7, mode: rnd racing ver read, userfaults: 225 missing (57+49+36+26+23+19+7+5+3+0+0+0+0+0+0+0) 
bounces: 6, mode: racing ver read, userfaults: 110 missing (24+15+16+9+9+17+6+4+3+3+0+4+0+0+0+0) 
bounces: 5, mode: rnd ver read, userfaults: 220 missing (46+42+39+31+26+16+9+3+3+2+1+1+1+0+0+0) 
bounces: 4, mode: ver read, userfaults: 191 missing (44+36+29+23+15+12+7+6+7+3+4+4+1+0+0+0) 
bounces: 3, mode: rnd racing read, userfaults: 228 missing (54+45+48+27+27+12+10+2+1+2+0+0+0+0+0+0) 
bounces: 2, mode: racing read, userfaults: 128 missing (29+24+14+18+7+13+4+5+7+4+0+3+0+0+0+0) 
bounces: 1, mode: rnd read, userfaults: 220 missing (54+45+37+26+31+14+7+3+2+1+0+0+0+0+0+0) 
bounces: 0, mode: read, userfaults: 232 missing (36+36+26+19+17+21+20+13+9+13+8+4+7+2+1+0) 
testing UFFDIO_ZEROPAGE: done.
testing signal delivery: done.
testing events (fork, remap, remove): userfaults: 320 missing (320) 
[PASS]
-----------------------

DESCRIPTION

This series addresses three vm kernel selftests failures ( userfaultfd | userfaultfd_hugetlb | map_fixed_noreplace) due to:

  • The use of GNU libc extensions,
  • Supported features x memory type,
  • Being unable to properly compute set_test_type, due to what ioctls the kernel was actually reporting from a precomputed list, instead of examining the memory type to do so.

v2: Fixed downstream signature

Signed-off-by: Desnes A. Nunes do Rosario drosario@redhat.com

Edited by Desnes Nunes

Merge request reports