Thread (34 messages) 34 messages, 7 authors, 2025-08-15

Re: [PATCH v4 7/7] selftests: prctl: introduce tests for disabling THPs except for madvise

From: Lorenzo Stoakes <hidden>
Date: 2025-08-14 10:54:19
Also in: linux-fsdevel, linux-mm, lkml

On Thu, Aug 14, 2025 at 11:36:51AM +0100, Usama Arif wrote:

On 13/08/2025 19:52, Lorenzo Stoakes wrote:
quoted
On Wed, Aug 13, 2025 at 06:24:11PM +0200, David Hildenbrand wrote:
quoted
quoted
quoted
+
+FIXTURE_SETUP(prctl_thp_disable_except_madvise)
+{
+	if (!thp_available())
+		SKIP(return, "Transparent Hugepages not available\n");
+
+	self->pmdsize = read_pmd_pagesize();
+	if (!self->pmdsize)
+		SKIP(return, "Unable to read PMD size\n");
+
+	if (prctl(PR_SET_THP_DISABLE, 1, PR_THP_DISABLE_EXCEPT_ADVISED, NULL, NULL))
+		SKIP(return, "Unable to set PR_THP_DISABLE_EXCEPT_ADVISED\n");
This should be a test fail I think, as the only ways this could fail are
invalid flags, or failure to obtain an mmap write lock.
Running a kernel that does not support it?
I can't see anything in the kernel to #ifdef it out so I suppose you mean
running these tests on an older kernel?
It was a fail in my previous revision
(https://lore.kernel.org/all/9bcb1dee-314e-4366-9bad-88a47d516c79@redhat.com/ (local))
Well it seems it's a debate between me and David then haha :P sorry.

This is a bit of a trivial thing I'm just keen that bugs don't get accidentally
missed because of skips, that's the most important thing I think.
I do believe people (including me :)) get the latest kernel selftest and run it on
older kernels.
It might not be the right way to run selftests, but I do think its done.
People can do unsupported things, but then if it breaks that's on them to live
with :)
quoted
But this is an unsupported way of running self-tests, they are tied to the
kernel version in which they reside, and test that specific version.

Unless I'm missing something here?
quoted
We could check the errno to distinguish I guess.
Which one? manpage says -EINVAL, but can also be due to incorrect invocation,
which would mean a typo could mean tests pass but your tests do nothing :)
Yeah I dont think we can distinguish between the prctl not being available (i.e. older kernel)
and the prctl not working as it should.

We just need to decide whether to fail or skip.
I really think it's far worse to miss a bug in the code (or testing) than to
account for people running with different kernels.
If the right way is to always run selftests from the same kernel version as the host
on which its being run on, we can just fail? I can go back to the older version of
doing things and move the failure from FIXTURE_SETUP to TEST_F?
Yeah I think it simply should just be a fail.

Why would you move things around though? Think it's fine as-is, if something on
setup fails then all tests should fail.

Cheers, Lorenzo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help