Re: [PATCH] tools/pci: Change pcitest compiling process

From: Kishon Vijay Abraham I
Date: Wed Oct 03 2018 - 04:57:10 EST




On Thursday 23 August 2018 05:25 PM, Gustavo Pimentel wrote:
> Change tool compiling process in order to be build using the same
> mechanism used in other linux tools (e.g. iio, perf, etc). This will
> allow in future the buildroot tool to build and integrate this tool in
> a more expeditious way.
>
> Update documentation accordingly.
>
> Signed-off-by: Gustavo Pimentel <gustavo.pimentel@xxxxxxxxxxxx>

Reviewed-by: Kishon Vijay Abraham I <kishon@xxxxxx>
> ---
> Documentation/PCI/endpoint/pci-test-howto.txt | 19 ++++++----
> tools/Makefile | 13 ++++---
> tools/pci/Build | 1 +
> tools/pci/Makefile | 53 +++++++++++++++++++++++++++
> 4 files changed, 72 insertions(+), 14 deletions(-)
> create mode 100644 tools/pci/Build
> create mode 100644 tools/pci/Makefile
>
> diff --git a/Documentation/PCI/endpoint/pci-test-howto.txt b/Documentation/PCI/endpoint/pci-test-howto.txt
> index 75f48c3..16df733 100644
> --- a/Documentation/PCI/endpoint/pci-test-howto.txt
> +++ b/Documentation/PCI/endpoint/pci-test-howto.txt
> @@ -98,17 +98,20 @@ Note that the devices listed here correspond to the value populated in 1.4 above
> 2.2 Using Endpoint Test function Device
>
> pcitest.sh added in tools/pci/ can be used to run all the default PCI endpoint
> -tests. Before pcitest.sh can be used pcitest.c should be compiled using the
> -following commands.
> +tests. To compile this tool the following commands should be used:
>
> - cd <kernel-dir>
> - make headers_install ARCH=arm
> - arm-linux-gnueabihf-gcc -Iusr/include tools/pci/pcitest.c -o pcitest
> - cp pcitest <rootfs>/usr/sbin/
> - cp tools/pci/pcitest.sh <rootfs>
> + # cd <kernel-dir>
> + # make -C tools/pci
> +
> +or if you desire to compile and install in your system:
> +
> + # cd <kernel-dir>
> + # make -C tools/pci install
> +
> +The tool and script will be located in <rootfs>/usr/bin/
>
> 2.2.1 pcitest.sh Output
> - # ./pcitest.sh
> + # pcitest.sh
> BAR tests
>
> BAR0: OKAY
> diff --git a/tools/Makefile b/tools/Makefile
> index be02c8b..abb358a 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -21,6 +21,7 @@ help:
> @echo ' leds - LEDs tools'
> @echo ' liblockdep - user-space wrapper for kernel locking-validator'
> @echo ' bpf - misc BPF tools'
> + @echo ' pci - PCI tools'
> @echo ' perf - Linux performance measurement and analysis tool'
> @echo ' selftests - various kernel selftests'
> @echo ' spi - spi tools'
> @@ -59,7 +60,7 @@ acpi: FORCE
> cpupower: FORCE
> $(call descend,power/$@)
>
> -cgroup firewire hv guest spi usb virtio vm bpf iio gpio objtool leds wmi: FORCE
> +cgroup firewire hv guest spi usb virtio vm bpf iio gpio objtool leds wmi pci: FORCE
> $(call descend,$@)
>
> liblockdep: FORCE
> @@ -94,7 +95,7 @@ kvm_stat: FORCE
> all: acpi cgroup cpupower gpio hv firewire liblockdep \
> perf selftests spi turbostat usb \
> virtio vm bpf x86_energy_perf_policy \
> - tmon freefall iio objtool kvm_stat wmi
> + tmon freefall iio objtool kvm_stat wmi pci
>
> acpi_install:
> $(call descend,power/$(@:_install=),install)
> @@ -102,7 +103,7 @@ acpi_install:
> cpupower_install:
> $(call descend,power/$(@:_install=),install)
>
> -cgroup_install firewire_install gpio_install hv_install iio_install perf_install spi_install usb_install virtio_install vm_install bpf_install objtool_install wmi_install:
> +cgroup_install firewire_install gpio_install hv_install iio_install perf_install spi_install usb_install virtio_install vm_install bpf_install objtool_install wmi_install pci_install:
> $(call descend,$(@:_install=),install)
>
> liblockdep_install:
> @@ -128,7 +129,7 @@ install: acpi_install cgroup_install cpupower_install gpio_install \
> perf_install selftests_install turbostat_install usb_install \
> virtio_install vm_install bpf_install x86_energy_perf_policy_install \
> tmon_install freefall_install objtool_install kvm_stat_install \
> - wmi_install
> + wmi_install pci_install
>
> acpi_clean:
> $(call descend,power/acpi,clean)
> @@ -136,7 +137,7 @@ acpi_clean:
> cpupower_clean:
> $(call descend,power/cpupower,clean)
>
> -cgroup_clean hv_clean firewire_clean spi_clean usb_clean virtio_clean vm_clean wmi_clean bpf_clean iio_clean gpio_clean objtool_clean leds_clean:
> +cgroup_clean hv_clean firewire_clean spi_clean usb_clean virtio_clean vm_clean wmi_clean bpf_clean iio_clean gpio_clean objtool_clean leds_clean pci_clean:
> $(call descend,$(@:_clean=),clean)
>
> liblockdep_clean:
> @@ -174,6 +175,6 @@ clean: acpi_clean cgroup_clean cpupower_clean hv_clean firewire_clean \
> perf_clean selftests_clean turbostat_clean spi_clean usb_clean virtio_clean \
> vm_clean bpf_clean iio_clean x86_energy_perf_policy_clean tmon_clean \
> freefall_clean build_clean libbpf_clean libsubcmd_clean liblockdep_clean \
> - gpio_clean objtool_clean leds_clean wmi_clean
> + gpio_clean objtool_clean leds_clean wmi_clean pci_clean
>
> .PHONY: FORCE
> diff --git a/tools/pci/Build b/tools/pci/Build
> new file mode 100644
> index 0000000..c375aea
> --- /dev/null
> +++ b/tools/pci/Build
> @@ -0,0 +1 @@
> +pcitest-y += pcitest.o
> diff --git a/tools/pci/Makefile b/tools/pci/Makefile
> new file mode 100644
> index 0000000..46e4c2f
> --- /dev/null
> +++ b/tools/pci/Makefile
> @@ -0,0 +1,53 @@
> +# SPDX-License-Identifier: GPL-2.0
> +include ../scripts/Makefile.include
> +
> +bindir ?= /usr/bin
> +
> +ifeq ($(srctree),)
> +srctree := $(patsubst %/,%,$(dir $(CURDIR)))
> +srctree := $(patsubst %/,%,$(dir $(srctree)))
> +endif
> +
> +# Do not use make's built-in rules
> +# (this improves performance and avoids hard-to-debug behaviour);
> +MAKEFLAGS += -r
> +
> +CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include
> +
> +ALL_TARGETS := pcitest pcitest.sh
> +ALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS))
> +
> +all: $(ALL_PROGRAMS)
> +
> +export srctree OUTPUT CC LD CFLAGS
> +include $(srctree)/tools/build/Makefile.include
> +
> +#
> +# We need the following to be outside of kernel tree
> +#
> +$(OUTPUT)include/linux/: ../../include/uapi/linux/
> + mkdir -p $(OUTPUT)include/linux/ 2>&1 || true
> + ln -sf $(CURDIR)/../../include/uapi/linux/pcitest.h $@
> +
> +prepare: $(OUTPUT)include/linux/
> +
> +PCITEST_IN := $(OUTPUT)pcitest-in.o
> +$(PCITEST_IN): prepare FORCE
> + $(Q)$(MAKE) $(build)=pcitest
> +$(OUTPUT)pcitest: $(PCITEST_IN)
> + $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
> +
> +clean:
> + rm -f $(ALL_PROGRAMS)
> + rm -rf $(OUTPUT)include/
> + find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.d' -delete
> +
> +install: $(ALL_PROGRAMS)
> + install -d -m 755 $(DESTDIR)$(bindir); \
> + for program in $(ALL_PROGRAMS); do \
> + install $$program $(DESTDIR)$(bindir); \
> + done
> +
> +FORCE:
> +
> +.PHONY: all install clean FORCE prepare
>