From: Shuah Khan <skhan@linuxfoundation.org>
To: John Hubbard <jhubbard@nvidia.com>,
Peter Zijlstra <peterz@infradead.org>
Cc: Shuah Khan <shuah@kernel.org>,
"Liam R . Howlett" <Liam.Howlett@oracle.com>,
Suren Baghdasaryan <surenb@google.com>,
Vlastimil Babka <vbabka@suse.cz>,
pedro.falcato@gmail.com, linux-kselftest@vger.kernel.org,
linux-mm@kvack.org, linux-fsdevel@vger.kernel.org,
linux-api@vger.kernel.org, linux-kernel@vger.kernel.org,
Oliver Sang <oliver.sang@intel.com>,
Christian Brauner <christian@brauner.io>,
Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Subject: Re: The "make headers" requirement, revisited: [PATCH v3 3/3] selftests: pidfd: add tests for PIDFD_SELF_*
Date: Wed, 7 May 2025 14:50:53 -0600 [thread overview]
Message-ID: <e87bbc68-0403-4d67-ae2d-64065e36a011@linuxfoundation.org> (raw)
In-Reply-To: <3687348f-7ee0-4fe1-a953-d5a2edd02ce8@nvidia.com>
On 10/17/24 10:47, John Hubbard wrote:
> On 10/17/24 9:33 AM, Shuah Khan wrote:
>> On 10/16/24 20:01, John Hubbard wrote:
>>> On 10/16/24 1:00 PM, Shuah Khan wrote:
>>>> On 10/16/24 04:20, Lorenzo Stoakes wrote:
> ...
>>> The requirement to do "make headers" is not a keeper. Really.
>>
>> The reason we added the requirement to avoid duplicate defines
>> such as this one added to kselftest source files. These are
>> error prone and hard to resolve.
>>
>> In some cases, these don't become uapi and don't make it into
>> system headers. selftests are in a category of depending on
>> kernel headers to be able to test some features.
>>
>> Getting rid of this dependency mean, tests will be full of local
>> defines such as this one which will become unmanageable overtime.
>
> Not if we do it correctly...Please do look at the reference I provided
> for how that works. Here is is again: [1].
>
> The basic idea, which has been discussed and reviewed, is to take
> very occasional snapshots and drop them into a static location where
> they are available for kselftests, without disurbing other things:
> $(top_srcdir)/tools/include/uapi
>
> This has worked well so far.
>
>>
>> The discussion should be: "How do we get rid of the dependency without
>> introducing local defines?" not just "Let's get rid of the dependency"
>>
>
> Yes. Good. We are apparently in violent agreement, because a few lines above,
> I wrote:
>
> The requirement to do "make headers" is not a keeper.
>
> The "make headers" is the problem, not the fact that we need to depend
> on various includes. And so the solution stops requiring "make headers".
> It gets the includes from a less volatile location.
>
> Yes?
>
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e076eaca5906
>
> thanks,
Posting this on this thread as well -
Peter, John,
There seems to be confusion regarding KHDR_INCLUDES. Tests don't have
to use KHDR_INCLUDES if they don't want to.
There are 4623 test Makefiles (excluding the main Makefile) under selftests/.
Out of those 73 Makefiles reference KHDR_INCLUDES exported by lib.mk and
selftests/Makefile. The rest are happy with system headers.
The support for this KHDR_INCLUDES was added just for the case when a new
test depends on header change. This is the reason why only a few
test Makefiles use it. When test rings ran into issues related to
dependencies between header changes, we recommended installing headers
to solve the problem and introduced KHDR_INCLUDES so test Makefiles
can use it in their Makefiles overriding the framework defaults.
If your test doesn't need it, you can simply stop referencing it or
use the approach used in mm test.
It is a manual step. Works well for developers who know what they are doing.
This isn't ideal for test rings. This isn't an ideal solution really.
It works for the mm developers.
# In order to use newer items that haven't yet been added to the user's system
# header files, add $(TOOLS_INCLUDES) to the compiler invocation in each
# each selftest.
# You may need to add files to that location, or to refresh an existing file. In
# order to do that, run "make headers" from $(top_srcdir), then copy the
# header file that you want from $(top_srcdir)/usr/include/... , to the matching
# subdir in $(TOOLS_INCLUDE).
TOOLS_INCLUDES := -isystem $(top_srcdir)/tools/include/uapi
The issues Peter is seeing regarding KHDR_INCLUDES in the following
tests can be easily fixed by simply changing the test Makefile. These
aren't framework related.
kvm/Makefile.kvm: -I ../rseq -I.. $(EXTRA_CFLAGS) $(KHDR_INCLUDES)
x86/Makefile:CFLAGS := -O2 -g -std=gnu99 -pthread -Wall $(KHDR_INCLUDES)
futex/functional/Makefile:INCLUDES := -I../include -I../../ $(KHDR_INCLUDES)
futex/functional/Makefile:CFLAGS := $(CFLAGS) -g -O2 -Wall -pthread $(INCLUDES) $(KHDR_INCLUDES)
You can make the change to remove the reference to KHDR_INCLUDES.
If don't have the time/bandwidth to do it, I will take care of it.
If test build fails, you can then figure out how to address that.
Hopefully build issues related to header changes are infrequent.
thanks,
-- Shuah
next prev parent reply other threads:[~2025-05-07 20:50 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-16 10:20 [PATCH v3 0/3] introduce PIDFD_SELF* sentinels Lorenzo Stoakes
2024-10-16 10:20 ` [PATCH v3 1/3] pidfd: extend pidfd_get_pid() and de-duplicate pid lookup Lorenzo Stoakes
2024-10-16 10:20 ` [PATCH v3 2/3] pidfd: add PIDFD_SELF_* sentinels to refer to own thread/process Lorenzo Stoakes
2024-10-16 10:20 ` [PATCH v3 3/3] selftests: pidfd: add tests for PIDFD_SELF_* Lorenzo Stoakes
2024-10-16 20:00 ` Shuah Khan
2024-10-16 22:06 ` Lorenzo Stoakes
2024-10-16 22:30 ` Lorenzo Stoakes
2024-10-16 22:38 ` Shuah Khan
2024-10-17 8:08 ` Lorenzo Stoakes
2024-10-17 12:06 ` Lorenzo Stoakes
2024-10-17 17:17 ` John Hubbard
2024-10-17 17:28 ` Lorenzo Stoakes
2024-10-17 17:37 ` John Hubbard
2024-10-17 17:38 ` Lorenzo Stoakes
2024-10-17 19:37 ` Shuah Khan
2024-10-17 19:40 ` Lorenzo Stoakes
2024-10-17 2:14 ` John Hubbard
2024-10-17 7:54 ` Lorenzo Stoakes
2025-05-01 11:42 ` Peter Zijlstra
2025-05-01 12:46 ` Peter Zijlstra
2025-05-01 19:50 ` Sean Christopherson
2025-05-05 13:35 ` Christian Brauner
2025-05-06 9:28 ` Lorenzo Stoakes
2025-05-06 21:18 ` Shuah Khan
2025-05-06 21:34 ` John Hubbard
2025-05-07 20:49 ` Shuah Khan
2024-10-17 2:01 ` The "make headers" requirement, revisited: " John Hubbard
2024-10-17 16:33 ` Shuah Khan
2024-10-17 16:47 ` John Hubbard
2025-05-07 20:50 ` Shuah Khan [this message]
2025-05-08 14:04 ` Sean Christopherson
2025-05-08 15:06 ` Shuah Khan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e87bbc68-0403-4d67-ae2d-64065e36a011@linuxfoundation.org \
--to=skhan@linuxfoundation.org \
--cc=Liam.Howlett@oracle.com \
--cc=christian@brauner.io \
--cc=jhubbard@nvidia.com \
--cc=linux-api@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lorenzo.stoakes@oracle.com \
--cc=oliver.sang@intel.com \
--cc=pedro.falcato@gmail.com \
--cc=peterz@infradead.org \
--cc=shuah@kernel.org \
--cc=surenb@google.com \
--cc=vbabka@suse.cz \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).