From: "Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: "Muhammad Usama Anjum" <usama.anjum@collabora.com>,
"Shuah Khan" <shuah@kernel.org>,
linux-kselftest@vger.kernel.org,
LKML <linux-kernel@vger.kernel.org>,
"Shaopeng Tan" <tan.shaopeng@jp.fujitsu.com>,
"Fenghua Yu" <fenghua.yu@intel.com>,
"Maciej Wieczór-Retman" <maciej.wieczor-retman@intel.com>
Subject: Re: [PATCH v4 3/4] selftests/x86: don't clobber CFLAGS
Date: Wed, 4 Sep 2024 16:17:46 +0300 (EEST) [thread overview]
Message-ID: <dd430042-7f3c-d495-0fc6-d65e88aaa4b8@linux.intel.com> (raw)
In-Reply-To: <611d1e93-6f64-4eb5-a054-4d92f076de41@intel.com>
[-- Attachment #1: Type: text/plain, Size: 4864 bytes --]
On Tue, 3 Sep 2024, Reinette Chatre wrote:
> On 9/3/24 7:45 AM, Ilpo Järvinen wrote:
> > The x86 selftests makefile clobbers CFLAGS preventing lib.mk from
> > making the necessary adjustments into CFLAGS. This would lead to a
> > build failure after upcoming change which wants to add -DHAVE_CPUID=
> > into CFLAGS.
> >
> > Reorder CFLAGS initialization in x86 selftest. Place the constant part
> > of CFLAGS initialization before inclusion of lib.mk but leave adding
> > KHDR_INCLUDES into CFLAGS into the existing position because
> > KHDR_INCLUDES might be generated inside lib.mk.
> >
> > Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> > ---
> > v4:
> > - New patch
> >
> > tools/testing/selftests/x86/Makefile | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/testing/selftests/x86/Makefile
> > b/tools/testing/selftests/x86/Makefile
> > index 5c8757a25998..88a6576de92f 100644
> > --- a/tools/testing/selftests/x86/Makefile
> > +++ b/tools/testing/selftests/x86/Makefile
> > @@ -1,4 +1,6 @@
> > # SPDX-License-Identifier: GPL-2.0
> > +CFLAGS := -O2 -g -std=gnu99 -pthread -Wall
> > +
> > all:
> > include ../lib.mk
> > @@ -35,7 +37,7 @@ BINARIES_64 := $(TARGETS_C_64BIT_ALL:%=%_64)
> > BINARIES_32 := $(patsubst %,$(OUTPUT)/%,$(BINARIES_32))
> > BINARIES_64 := $(patsubst %,$(OUTPUT)/%,$(BINARIES_64))
> > -CFLAGS := -O2 -g -std=gnu99 -pthread -Wall $(KHDR_INCLUDES)
> > +CFLAGS += $(KHDR_INCLUDES)
> > # call32_from_64 in thunks.S uses absolute addresses.
> > ifeq ($(CAN_BUILD_WITH_NOPIE),1)
>
> These changes are becoming less obvious to me. The first two
> red flags are:
> - Most other top level Makefiles assign KHDR_INCLUDES to CFLAGS
> *before* including lib.mk
Most toplevel makefiles assigned CFLAGS before including lib.mk so x86
selftest was an exception overwriting CFLAGS after including lib.mk.
That looks like a real problem/bug and you don't seem to contest lib.mk
having the right to alter CFLAGS. So I'm still convinced this patch is
necessary independent of the cpuid/resctrl selftest issue.
I believe most of those Makefile are _buggy_ wrt. KHDR_INCLUDES but I
don't care where $(KHDR_INCLUDES) goes, it's irrelevant for the problem
I'm trying to solve which is the CFLAGS clobber. ...I just didn't want to
add yet another problem by moving KHDR_INCLUDES before including lib.mk.
I'm fine with leaving that can of worms for somebody else to sort out :-).
> - What current Makefiles do matches the guidance from
> Documentation/dev-tools/kselftest.rst as per example (verbatim copy):
> CFLAGS = $(KHDR_INCLUDES)
> TEST_GEN_PROGS := close_range_test
> include ../lib.mk
I'm not objecting moving the entire CFLAGS line before including lib.mk
in the x86 selftests makefile if that is what you'd want me to do?
> Looking closer it is not clear to me why lib.mk sets KHDR_INCLUDES.
So are you suggesting the commit a52540522c95 ("selftests/landlock: Fix
out-of-tree builds") added it for no reason? The commit message indicates
it was added on purpose but I don't fully understand what "to other test
collections when building in their directory" means.
> As I understand the usage is intended to be:
> make TARGETS="target" -C tools/testing/selftests
> This means that it is tools/testing/selftests/Makefile that will
> run first and it ensures that KHDR_INCLUDES is set and supports
> the usage documented in Documentation/dev-tools/kselftest.rst
>
> One usage that a change like in this patch could support is
> for users to be able to run "make" from within the test
> directory self ... but considering the current KHDR_INCLUDES
> custom this does not seem to be supported? (but we cannot
> know which tests/users rely on this behavior)
Perhaps "when building in their directory" is exactly that?
I don't doubt the makefiles are very full of problems.
> Looking further I also noticed that
> tools/testing/selftests/Makefile even sets ARCH (but does
> not export it). When considering the next patch it almost looks
> like what is missing is for tools/testing/selftests/Makefile to
> "export ARCH" ... but that potentially impacts the Makefiles that
> do manipulation of ARCH.
The ARCH handling in various Makefiles is another mess.
> I initially started to look at this because of the
> resctrl impact, but I clearly am not familiar enough
> with the kselftest build files to understand the
> impacts nor provide guidance. I do hope the kselftest
> folks can help here.
Luckily this seems to have caught Shuah attention now so hopefully we've
soon some reasonable resolution to ARCH dependent building and code
fragments so each selftest doesn't need to come up their own way of
handling it. :-)
--
i.
next prev parent reply other threads:[~2024-09-04 13:17 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-03 14:45 [PATCH v4 0/4] selftests: Fix cpuid / vendor checking build issues Ilpo Järvinen
2024-09-03 14:45 ` [PATCH v4 1/4] selftests/resctrl: Generalize non-contiguous CAT check Ilpo Järvinen
2024-09-03 14:45 ` [PATCH v4 2/4] selftests/resctrl: Always initialize ecx to avoid build warnings Ilpo Järvinen
2024-09-03 14:45 ` [PATCH v4 3/4] selftests/x86: don't clobber CFLAGS Ilpo Järvinen
2024-09-03 18:22 ` Reinette Chatre
2024-09-04 13:17 ` Ilpo Järvinen [this message]
2024-09-03 14:45 ` [PATCH v4 4/4] kselftest: Provide __cpuid_count() stub on non-x86 archs Ilpo Järvinen
2024-09-03 23:18 ` [PATCH v4 0/4] selftests: Fix cpuid / vendor checking build issues Shuah Khan
2024-09-04 12:18 ` Ilpo Järvinen
2024-09-04 12:30 ` Shuah Khan
2024-09-04 12:54 ` Ilpo Järvinen
2024-09-05 18:06 ` Shuah Khan
2024-09-05 20:43 ` Reinette Chatre
2024-09-05 20:51 ` 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=dd430042-7f3c-d495-0fc6-d65e88aaa4b8@linux.intel.com \
--to=ilpo.jarvinen@linux.intel.com \
--cc=fenghua.yu@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=reinette.chatre@intel.com \
--cc=shuah@kernel.org \
--cc=tan.shaopeng@jp.fujitsu.com \
--cc=usama.anjum@collabora.com \
/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