linux-kselftest.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Amit Kachhap <Amit.Kachhap@arm.com>
To: Cristian Marussi <Cristian.Marussi@arm.com>,
	"linux-kselftest@vger.kernel.org"
	<linux-kselftest@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"shuah@kernel.org" <shuah@kernel.org>
Cc: "andreyknvl@google.com" <andreyknvl@google.com>,
	Dave P Martin <Dave.Martin@arm.com>
Subject: Re: [PATCH v5 01/11] kselftest: arm64: add skeleton Makefile
Date: Mon, 9 Sep 2019 12:42:06 +0000	[thread overview]
Message-ID: <0a284da1-ff63-dfe9-e479-6ad68865aea1@arm.com> (raw)
In-Reply-To: <e7b7b3fe-aba8-a4f2-400b-7cdeebd080e8@arm.com>

Hi,

On 9/5/19 11:27 PM, Cristian Marussi wrote:
> Hi Amit
>
> On 03/09/2019 10:26, Amit Kachhap wrote:
>>
>> Hi Cristian,
>>
>> On 9/2/19 4:59 PM, Cristian Marussi wrote:
>>> Add a new arm64-specific empty subsystem amongst TARGETS of KSFT build
>>> framework; keep these new arm64 KSFT testcases separated into distinct
>>> subdirs inside tools/testing/selftests/arm64/ depending on the specific
>>> subsystem targeted.
>>>
>>> Add into toplevel arm64 KSFT Makefile a mechanism to guess the effective
>>> location of Kernel headers as installed by KSFT framework.
>>>
>>> Merge with
>>>
>>> commit 9ce1263033cd ("selftests, arm64: add a selftest for passing
>>>                  tagged pointers to kernel")
>>>
>>> while moving such KSFT tags tests inside their own subdirectory
>>> (arm64/tags).
>>>
>>> Signed-off-by: Cristian Marussi <cristian.marussi@arm.com>
>>> ---
>>> v4 --> v5
>>> - rebased on arm64/for-next/core
>>> - merged this patch with KSFT arm64 tags patch, while moving the latter
>>>     into its own subdir
>>> - moved kernel header includes search mechanism from KSFT arm64
>>>     SIGNAL Makefile
>> This approach breaks the compilation of individual test cases which need
>> to export includes individually.
>>
>> make -C tools/testing/selftests/arm64/signal
>>
>> ../../lib.mk:25: ../../../../scripts/subarch.include: No such file or
>> directory
>> Makefile:25: warning: overriding recipe for target 'clean'
>> ../../lib.mk:123: warning: ignoring old recipe for target 'clean'
>> make: *** No rule to make target '../../../../scripts/subarch.include'.
>> Stop.
>>
>> However tags test works well,
>> make -C tools/testing/selftests/arm64/tags
>>
>> aarch64-none-linux-gnu-gcc     tags_test.c  -o
>> /home/amikac01/work/MTE_WORK/linux-server/linux/tools/testing/selftests/arm64/tags/tags_test
>>
>>
>> Thanks,
>> Amit Daniel
>>
>
> So at the end I think I'll opt for the following in V6 regarding the issue of being able to build specific
> KSFT arm64 subsystems while properly searching kernel headers (and keeping compatible with the KSFT
> framework completely):
>
> - only arm64 toplevel KSFT Makefile searches for the kernel headers location for all and propagates down the info
>
> - you can also now optionally specify which arm64 subsystem to build (to avoid have to build, say, all of signal/
>    if you are not interested into....a sort of standalone mode without all the burden of the old standalone mode)
ok.
>
> So you can issue:
>
> $ make TARGETS=arm64 kselftest
>
> or similarly:
>
> $ make -C tools/testing/selftests TARGETS=arm64 \
>                  INSTALL_PATH=<your-installation-path> install
>
> or select subsystems:
>
> $ make -C tools/testing/selftests TARGETS=arm64 SUBTARGETS="tags signal" \
>                  INSTALL_PATH=<your-installation-path> install
This option will be useful as it is better to compile just one subtarget
in development phase.

Thanks,
Amit
>
> with all of the above looking for the K headers in the proper place and without
> duplicating the search code in multiple places. (bugs apart :D)
>
> Thanks
>
> Cristian
>
>>> - export proper top_srcdir ENV for lib.mk
>>> v3 --> v4
>>> - comment reword
>>> - simplified documentation in README
>>> - dropped README about standalone
>>> ---
>>>    tools/testing/selftests/Makefile              |  1 +
>>>    tools/testing/selftests/arm64/Makefile        | 70 +++++++++++++++++--
>>>    tools/testing/selftests/arm64/README          | 20 ++++++
>>>    tools/testing/selftests/arm64/tags/Makefile   | 10 +++
>>>    .../arm64/{ => tags}/run_tags_test.sh         |  0
>>>    .../selftests/arm64/{ => tags}/tags_test.c    |  0
>>>    6 files changed, 95 insertions(+), 6 deletions(-)
>>>    create mode 100644 tools/testing/selftests/arm64/README
>>>    create mode 100644 tools/testing/selftests/arm64/tags/Makefile
>>>    rename tools/testing/selftests/arm64/{ => tags}/run_tags_test.sh (100%)
>>>    rename tools/testing/selftests/arm64/{ => tags}/tags_test.c (100%)
>>>
>>> diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile
>>> index 25b43a8c2b15..1722dae9381a 100644
>>> --- a/tools/testing/selftests/Makefile
>>> +++ b/tools/testing/selftests/Makefile
>>> @@ -1,5 +1,6 @@
>>>    # SPDX-License-Identifier: GPL-2.0
>>>    TARGETS = android
>>> +TARGETS += arm64
>>>    TARGETS += bpf
>>>    TARGETS += breakpoints
>>>    TARGETS += capabilities
>>> diff --git a/tools/testing/selftests/arm64/Makefile b/tools/testing/selftests/arm64/Makefile
>>> index a61b2e743e99..5dbb0ffdfc9a 100644
>>> --- a/tools/testing/selftests/arm64/Makefile
>>> +++ b/tools/testing/selftests/arm64/Makefile
>>> @@ -1,11 +1,69 @@
>>>    # SPDX-License-Identifier: GPL-2.0
>>> +# Copyright (C) 2019 ARM Limited
>>>
>>> -# ARCH can be overridden by the user for cross compiling
>>> -ARCH ?= $(shell uname -m 2>/dev/null || echo not)
>>> +# When ARCH not overridden for crosscompiling, lookup machine
>>> +ARCH ?= $(shell uname -m)
>>> +ARCH := $(shell echo $(ARCH) | sed -e s/aarch64/arm64/)
>>>
>>> -ifneq (,$(filter $(ARCH),aarch64 arm64))
>>> -TEST_GEN_PROGS := tags_test
>>> -TEST_PROGS := run_tags_test.sh
>>> +ifeq ("x$(ARCH)", "xarm64")
>>> +SUBDIRS := tags
>>> +else
>>> +SUBDIRS :=
>>>    endif
>>>
>>> -include ../lib.mk
>>> +CFLAGS := -Wall -O2 -g
>>> +
>>> +# A proper top_srcdir is needed by KSFT(lib.mk)
>>> +top_srcdir = ../../../../..
>>> +
>>> +# Additional include paths needed by kselftest.h and local headers
>>> +CFLAGS += -I$(top_srcdir)/tools/testing/selftests/
>>> +
>>> +# Guessing where the Kernel headers could have been installed
>>> +# depending on ENV config
>>> +ifeq ($(KBUILD_OUTPUT),)
>>> +khdr_dir = $(top_srcdir)/usr/include
>>> +else
>>> +# the KSFT preferred location when KBUILD_OUTPUT is set
>>> +khdr_dir = $(KBUILD_OUTPUT)/kselftest/usr/include
>>> +endif
>>> +
>>> +CFLAGS += -I$(khdr_dir)
>>> +
>>> +export CC
>>> +export CFLAGS
>>> +export top_srcdir
>>> +
>>> +all:
>>> +   @for DIR in $(SUBDIRS); do                              \
>>> +           BUILD_TARGET=$(OUTPUT)/$$DIR;                   \
>>> +           mkdir -p $$BUILD_TARGET;                        \
>>> +           make OUTPUT=$$BUILD_TARGET -C $$DIR $@;         \
>>> +   done
>>> +
>>> +install: all
>>> +   @for DIR in $(SUBDIRS); do                              \
>>> +           BUILD_TARGET=$(OUTPUT)/$$DIR;                   \
>>> +           make OUTPUT=$$BUILD_TARGET -C $$DIR $@;         \
>>> +   done
>>> +
>>> +run_tests: all
>>> +   @for DIR in $(SUBDIRS); do                              \
>>> +           BUILD_TARGET=$(OUTPUT)/$$DIR;                   \
>>> +           make OUTPUT=$$BUILD_TARGET -C $$DIR $@;         \
>>> +   done
>>> +
>>> +# Avoid any output on non arm64 on emit_tests
>>> +emit_tests: all
>>> +   @for DIR in $(SUBDIRS); do                              \
>>> +           BUILD_TARGET=$(OUTPUT)/$$DIR;                   \
>>> +           make OUTPUT=$$BUILD_TARGET -C $$DIR $@;         \
>>> +   done
>>> +
>>> +clean:
>>> +   @for DIR in $(SUBDIRS); do                              \
>>> +           BUILD_TARGET=$(OUTPUT)/$$DIR;                   \
>>> +           make OUTPUT=$$BUILD_TARGET -C $$DIR $@;         \
>>> +   done
>>> +
>>> +.PHONY: all clean install run_tests emit_tests
>>> diff --git a/tools/testing/selftests/arm64/README b/tools/testing/selftests/arm64/README
>>> new file mode 100644
>>> index 000000000000..aca892e62a6c
>>> --- /dev/null
>>> +++ b/tools/testing/selftests/arm64/README
>>> @@ -0,0 +1,20 @@
>>> +KSelfTest ARM64
>>> +===============
>>> +
>>> +- These tests are arm64 specific and so not built or run but just skipped
>>> +  completely when env-variable ARCH is found to be different than 'arm64'
>>> +  and `uname -m` reports other than 'aarch64'.
>>> +
>>> +- Holding true the above, ARM64 KSFT tests can be run within the KSelfTest
>>> +  framework using standard Linux top-level-makefile targets:
>>> +
>>> +      $ make TARGETS=arm64 kselftest-clean
>>> +      $ make TARGETS=arm64 kselftest
>>> +
>>> +      or
>>> +
>>> +      $ make -C tools/testing/selftests TARGETS=arm64 \
>>> +           INSTALL_PATH=<your-installation-path> install
>>> +
>>> +   Further details on building and running KFST can be found in:
>>> +     Documentation/dev-tools/kselftest.rst
>>> diff --git a/tools/testing/selftests/arm64/tags/Makefile b/tools/testing/selftests/arm64/tags/Makefile
>>> new file mode 100644
>>> index 000000000000..76205533135b
>>> --- /dev/null
>>> +++ b/tools/testing/selftests/arm64/tags/Makefile
>>> @@ -0,0 +1,10 @@
>>> +# SPDX-License-Identifier: GPL-2.0
>>> +# ARCH can be overridden by the user for cross compiling
>>> +ARCH ?= $(shell uname -m 2>/dev/null || echo not)
>>> +
>>> +ifneq (,$(filter $(ARCH),aarch64 arm64))
>>> +TEST_GEN_PROGS := tags_test
>>> +TEST_PROGS := run_tags_test.sh
>>> +endif
>>> +
>>> +include ../../lib.mk
>>> diff --git a/tools/testing/selftests/arm64/run_tags_test.sh b/tools/testing/selftests/arm64/tags/run_tags_test.sh
>>> similarity index 100%
>>> rename from tools/testing/selftests/arm64/run_tags_test.sh
>>> rename to tools/testing/selftests/arm64/tags/run_tags_test.sh
>>> diff --git a/tools/testing/selftests/arm64/tags_test.c b/tools/testing/selftests/arm64/tags/tags_test.c
>>> similarity index 100%
>>> rename from tools/testing/selftests/arm64/tags_test.c
>>> rename to tools/testing/selftests/arm64/tags/tags_test.c
>>>
>
>
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.

  reply	other threads:[~2019-09-09 12:42 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-02 11:29 [PATCH v5 00/11] Add arm64/signal initial kselftest support Cristian Marussi
2019-09-02 11:29 ` [PATCH v5 01/11] kselftest: arm64: add skeleton Makefile Cristian Marussi
2019-09-03  9:26   ` Amit Kachhap
2019-09-03  9:45     ` Cristian Marussi
2019-09-05 17:57     ` Cristian Marussi
2019-09-09 12:42       ` Amit Kachhap [this message]
2019-09-16 11:41         ` Dave Martin
2019-09-04 11:47   ` Dave Martin
2019-09-05 13:45     ` Cristian Marussi
2019-09-05 14:18       ` Dave Martin
2019-09-02 11:29 ` [PATCH v5 02/11] kselftest: arm64: add common utils and one testcase Cristian Marussi
2019-09-04 11:47   ` Dave Martin
2019-09-06 10:26     ` Cristian Marussi
2019-09-16 11:40       ` Dave Martin
2019-09-02 11:29 ` [PATCH v5 03/11] kselftest: arm64: mangle_pstate_invalid_daif_bits Cristian Marussi
2019-09-04 11:48   ` Dave Martin
2019-09-02 11:29 ` [PATCH v5 04/11] kselftest: arm64: mangle_pstate_invalid_mode_el[123][ht] Cristian Marussi
2019-09-04 11:48   ` Dave Martin
2019-09-02 11:29 ` [PATCH v5 05/11] kselftest: arm64: mangle_pstate_ssbs_regs Cristian Marussi
2019-09-04 11:48   ` Dave Martin
2019-09-09 15:51     ` Cristian Marussi
2019-09-02 11:29 ` [PATCH v5 06/11] kselftest: arm64: fake_sigreturn_bad_magic Cristian Marussi
2019-09-04 11:48   ` Dave Martin
2019-09-09 17:31     ` Cristian Marussi
2019-09-02 11:29 ` [PATCH v5 07/11] kselftest: arm64: fake_sigreturn_bad_size_for_magic0 Cristian Marussi
2019-09-04 11:49   ` Dave Martin
2019-09-09 17:47     ` Cristian Marussi
2019-09-02 11:29 ` [PATCH v5 08/11] kselftest: arm64: fake_sigreturn_missing_fpsimd Cristian Marussi
2019-09-04 11:49   ` Dave Martin
2019-09-09 17:51     ` Cristian Marussi
2019-09-02 11:29 ` [PATCH v5 09/11] kselftest: arm64: fake_sigreturn_duplicated_fpsimd Cristian Marussi
2019-09-04 11:49   ` Dave Martin
2019-09-05 12:15     ` Cristian Marussi
2019-09-05 12:39       ` Dave Martin
2019-09-05 13:32         ` Cristian Marussi
2019-09-05 14:20           ` Dave Martin
2019-09-09 18:03     ` Cristian Marussi
2019-09-02 11:29 ` [PATCH v5 10/11] kselftest: arm64: fake_sigreturn_bad_size Cristian Marussi
2019-09-04 11:49   ` Dave Martin
2019-09-09 18:11     ` Cristian Marussi
2019-09-02 11:29 ` [PATCH v5 11/11] kselftest: arm64: fake_sigreturn_misaligned_sp Cristian Marussi
2019-09-04 11:49   ` Dave Martin
2019-09-09 18:32     ` Cristian Marussi
2019-09-04 11:47 ` [PATCH v5 00/11] Add arm64/signal initial kselftest support Dave Martin
2019-09-10 12:25   ` Cristian Marussi
2019-09-16 12:14     ` Dave Martin

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=0a284da1-ff63-dfe9-e479-6ad68865aea1@arm.com \
    --to=amit.kachhap@arm.com \
    --cc=Cristian.Marussi@arm.com \
    --cc=Dave.Martin@arm.com \
    --cc=andreyknvl@google.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=shuah@kernel.org \
    /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).