mirror of
https://github.com/raspberrypi/linux.git
synced 2026-01-02 07:43:34 +00:00
Pull PCI updates from Bjorn Helgaas:
"Enumeration:
- Make pci_stop_dev() and pci_destroy_dev() safe so concurrent
callers can't stop a device multiple times, even as we migrate from
the global pci_rescan_remove_lock to finer-grained locking (Keith
Busch)
- Improve pci_walk_bus() implementation by making it recursive and
moving locking up to avoid need for a 'locked' parameter (Keith
Busch)
- Unexport pci_walk_bus_locked(), which is only used internally by
the PCI core (Keith Busch)
- Detect some Thunderbolt chips that are built-in and hence
'trustworthy' by a heuristic since the 'ExternalFacingPort' and
'usb4-host-interface' ACPI properties are not quite enough (Esther
Shimanovich)
Resource management:
- Use PCI bus addresses (not CPU addresses) in 'ranges' properties
when building dynamic DT nodes so systems where PCI and CPU
addresses differ work correctly (Andrea della Porta)
- Tidy resource sizing and assignment with helpers to reduce
redundancy (Ilpo Järvinen)
- Improve pdev_sort_resources() 'bogus alignment' warning to be more
specific (Ilpo Järvinen)
Driver binding:
- Convert driver .remove_new() callbacks to .remove() again to finish
the conversion from returning 'int' to being 'void' (Sergio
Paracuellos)
- Export pcim_request_all_regions(), a managed interface to request
all BARs (Philipp Stanner)
- Replace pcim_iomap_regions_request_all() with
pcim_request_all_regions(), and pcim_iomap_table()[n] with
pcim_iomap(n), in the following drivers: ahci, crypto qat, crypto
octeontx2, intel_th, iwlwifi, ntb idt, serial rp2, ALSA korg1212
(Philipp Stanner)
- Remove the now unused pcim_iomap_regions_request_all() (Philipp
Stanner)
- Export pcim_iounmap_region(), a managed interface to unmap and
release a PCI BAR (Philipp Stanner)
- Replace pcim_iomap_regions(mask) with pcim_iomap_region(n), and
pcim_iounmap_regions(mask) with pcim_iounmap_region(n), in the
following drivers: fpga dfl-pci, block mtip32xx, gpio-merrifield,
cavium (Philipp Stanner)
Error handling:
- Add sysfs 'reset_subordinate' to reset the entire hierarchy below a
bridge; previously Secondary Bus Reset could only be used when
there was a single device below a bridge (Keith Busch)
- Warn if we reset a running device where the driver didn't register
pci_error_handlers notification callbacks (Keith Busch)
ASPM:
- Disable ASPM L1 before touching L1 PM Substates to follow the spec
closer and avoid a CPU load timeout on some platforms (Ajay
Agarwal)
- Set devices below Intel VMD to D0 before enabling ASPM L1 Substates
as required per spec for all L1 Substates changes (Jian-Hong Pan)
Power management:
- Enable starfive controller runtime PM before probing host bridge
(Mayank Rana)
- Enable runtime power management for host bridges (Krishna chaitanya
chundru)
Power control:
- Use of_platform_device_create() instead of of_platform_populate()
to create pwrctl platform devices so we can control it based on the
child nodes (Manivannan Sadhasivam)
- Create pwrctrl platform devices only if there's a relevant power
supply property (Manivannan Sadhasivam)
- Add device link from the pwrctl supplier to the PCI dev to ensure
pwrctl drivers are probed before the PCI dev driver; this avoids a
race where pwrctl could change device power state while the PCI
driver was active (Manivannan Sadhasivam)
- Find pwrctl device for removal with of_find_device_by_node()
instead of searching all children of the parent (Manivannan
Sadhasivam)
- Rename 'pwrctl' to 'pwrctrl' to match new bandwidth controller
('bwctrl') and hotplug files (Bjorn Helgaas)
Bandwidth control:
- Add read/modify/write locking for Link Control 2, which is used to
manage Link speed (Ilpo Järvinen)
- Extract Link Bandwidth Management Status check into
pcie_lbms_seen(), where it can be shared between the bandwidth
controller and quirks that use it to help retrain failed links
(Ilpo Järvinen)
- Re-add Link Bandwidth notification support with updates to address
the reasons it was previously reverted (Alexandru Gagniuc, Ilpo
Järvinen)
- Add pcie_set_target_speed() and related functionality so drivers
can manage PCIe Link speed based on thermal or other constraints
(Ilpo Järvinen)
- Add a thermal cooling driver to throttle PCIe Links via the
existing thermal management framework (Ilpo Järvinen)
- Add a userspace selftest for the PCIe bandwidth controller (Ilpo
Järvinen)
PCI device hotplug:
- Add hotplug controller driver for Marvell OCTEON multi-function
device where function 0 has a management console interface to
enable/disable and provision various personalities for the other
functions (Shijith Thotton)
- Retain a reference to the pci_bus for the lifetime of a pci_slot to
avoid a use-after-free when the thunderbolt driver resets USB4 host
routers on boot, causing hotplug remove/add of downstream docks or
other devices (Lukas Wunner)
- Remove unused cpcihp struct cpci_hp_controller_ops.hardware_test
(Guilherme Giacomo Simoes)
- Remove unused cpqphp struct ctrl_dbg.ctrl (Christophe JAILLET)
- Use pci_bus_read_dev_vendor_id() instead of hand-coded presence
detection in cpqphp (Ilpo Järvinen)
- Simplify cpqphp enumeration, which is already simple-minded and
doesn't handle devices below hot-added bridges (Ilpo Järvinen)
Virtualization:
- Add ACS quirk for Wangxun FF5xxx NICs, which don't advertise an ACS
capability but do isolate functions as though PCI_ACS_RR and
PCI_ACS_CR were set, so the functions can be in independent IOMMU
groups (Mengyuan Lou)
TLP Processing Hints (TPH):
- Add and document TLP Processing Hints (TPH) support so drivers can
enable and disable TPH and the kernel can save/restore TPH
configuration (Wei Huang)
- Add TPH Steering Tag support so drivers can retrieve Steering Tag
values associated with specific CPUs via an ACPI _DSM to improve
performance by directing DMA writes closer to their consumers (Wei
Huang)
Data Object Exchange (DOE):
- Wait up to 1 second for DOE Busy bit to clear before writing a
request to the mailbox to avoid failures if the mailbox is still
busy from a previous transfer (Gregory Price)
Endpoint framework:
- Skip attempts to allocate from endpoint controller memory window if
the requested size is larger than the window (Damien Le Moal)
- Add and document pci_epc_mem_map() and pci_epc_mem_unmap() to
handle controller-specific size and alignment constraints, and add
test cases to the endpoint test driver (Damien Le Moal)
- Implement dwc pci_epc_ops.align_addr() so pci_epc_mem_map() can
observe DWC-specific alignment requirements (Damien Le Moal)
- Synchronously cancel command handler work in endpoint test before
cleaning up DMA and BARs (Damien Le Moal)
- Respect endpoint page size in dw_pcie_ep_align_addr() (Niklas
Cassel)
- Use dw_pcie_ep_align_addr() in dw_pcie_ep_raise_msi_irq() and
dw_pcie_ep_raise_msix_irq() instead of open coding the equivalent
(Niklas Cassel)
- Avoid NULL dereference if Modem Host Interface Endpoint lacks
'mmio' DT property (Zhongqiu Han)
- Release PCI domain ID of Endpoint controller parent (not controller
itself) and before unregistering the controller, to avoid
use-after-free (Zijun Hu)
- Clear secondary (not primary) EPC in pci_epc_remove_epf() when
removing the secondary controller associated with an NTB (Zijun Hu)
Cadence PCIe controller driver:
- Lower severity of 'phy-names' message (Bartosz Wawrzyniak)
Freescale i.MX6 PCIe controller driver:
- Fix suspend/resume support on i.MX6QDL, which has a hardware
erratum that prevents use of L2 (Stefan Eichenberger)
Intel VMD host bridge driver:
- Add 0xb60b and 0xb06f Device IDs for client SKUs (Nirmal Patel)
MediaTek PCIe Gen3 controller driver:
- Update mediatek-gen3 DT binding to require the exact number of
clocks for each SoC (Fei Shao)
- Add support for DT 'max-link-speed' and 'num-lanes' properties to
restrict the link speed and width (AngeloGioacchino Del Regno)
Microchip PolarFlare PCIe controller driver:
- Add DT and driver support for using either of the two PolarFire
Root Ports (Conor Dooley)
NVIDIA Tegra194 PCIe controller driver:
- Move endpoint controller cleanups that depend on refclk from the
host to the notifier that tells us the host has deasserted PERST#,
when refclk should be valid (Manivannan Sadhasivam)
Qualcomm PCIe controller driver:
- Add qcom SAR2130P DT binding with an additional clock (Dmitry
Baryshkov)
- Enable MSI interrupts if 'global' IRQ is supported, since a
previous commit unintentionally masked them (Manivannan Sadhasivam)
- Move endpoint controller cleanups that depend on refclk from the
host to the notifier that tells us the host has deasserted PERST#,
when refclk should be valid (Manivannan Sadhasivam)
- Add DT binding and driver support for IPQ9574, with Synopsys IP
v5.80a and Qcom IP 1.27.0 (devi priya)
- Move the OPP "operating-points-v2" table from the
qcom,pcie-sm8450.yaml DT binding to qcom,pcie-common.yaml, where it
can be used by other Qcom platforms (Qiang Yu)
- Add 'global' SPI interrupt for events like link-up, link-down to
qcom,pcie-x1e80100 DT binding so we can start enumeration when the
link comes up (Qiang Yu)
- Disable ASPM L0s for qcom,pcie-x1e80100 since the PHY is not tuned
to support this (Qiang Yu)
- Add ops_1_21_0 for SC8280X family SoC, which doesn't use the
'iommu-map' DT property and doesn't need BDF-to-SID translation
(Qiang Yu)
Rockchip PCIe controller driver:
- Define ROCKCHIP_PCIE_AT_SIZE_ALIGN to replace magic 256 endpoint
.align value (Damien Le Moal)
- When unmapping an endpoint window, compute the region index instead
of searching for it, and verify that the address was mapped (Damien
Le Moal)
- When mapping an endpoint window, verify that the address hasn't
been mapped already (Damien Le Moal)
- Implement pci_epc_ops.align_addr() for rockchip-ep (Damien Le Moal)
- Fix MSI IRQ data mapping to observe the alignment constraint, which
fixes intermittent page faults in memcpy_toio() and memcpy_fromio()
(Damien Le Moal)
- Rename rockchip_pcie_parse_ep_dt() to
rockchip_pcie_ep_get_resources() for consistency with similar DT
interfaces (Damien Le Moal)
- Skip the unnecessary link train in rockchip_pcie_ep_probe() and do
it only in the endpoint start operation (Damien Le Moal)
- Implement pci_epc_ops.stop_link() to disable link training and
controller configuration (Damien Le Moal)
- Attempt link training at 5 GT/s when both partners support it
(Damien Le Moal)
- Add a handler for PERST# signal so we can detect host-initiated
resets and start link training after PERST# is deasserted (Damien
Le Moal)
Synopsys DesignWare PCIe controller driver:
- Clear outbound address on unmap so dw_pcie_find_index() won't match
an ATU index that was already unmapped (Damien Le Moal)
- Use of_property_present() instead of of_property_read_bool() when
testing for presence of non-boolean DT properties (Rob Herring)
- Advertise 1MB size if endpoint supports Resizable BARs, which was
inadvertently lost in v6.11 (Niklas Cassel)
TI J721E PCIe driver:
- Add PCIe support for J722S SoC (Siddharth Vadapalli)
- Delay PCIE_T_PVPERL_MS (100 ms), not just PCIE_T_PERST_CLK_US (100
us), before deasserting PERST# to ensure power and refclk are
stable (Siddharth Vadapalli)
TI Keystone PCIe controller driver:
- Set the 'ti,keystone-pcie' mode so v3.65a devices work in Root
Complex mode (Kishon Vijay Abraham I)
- Try to avoid unrecoverable SError for attempts to issue config
transactions when the link is down; this is racy but the best we
can do (Kishon Vijay Abraham I)
Miscellaneous:
- Reorganize kerneldoc parameter names to match order in function
signature (Julia Lawall)
- Fix sysfs reset_method_store() memory leak (Todd Kjos)
- Simplify pci_create_slot() (Ilpo Järvinen)
- Fix incorrect printf format specifiers in pcitest (Luo Yifan)"
* tag 'pci-v6.13-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci: (127 commits)
PCI: rockchip-ep: Handle PERST# signal in EP mode
PCI: rockchip-ep: Improve link training
PCI: rockship-ep: Implement the pci_epc_ops::stop_link() operation
PCI: rockchip-ep: Refactor endpoint link training enable
PCI: rockchip-ep: Refactor rockchip_pcie_ep_probe() MSI-X hiding
PCI: rockchip-ep: Refactor rockchip_pcie_ep_probe() memory allocations
PCI: rockchip-ep: Rename rockchip_pcie_parse_ep_dt()
PCI: rockchip-ep: Fix MSI IRQ data mapping
PCI: rockchip-ep: Implement the pci_epc_ops::align_addr() operation
PCI: rockchip-ep: Improve rockchip_pcie_ep_map_addr()
PCI: rockchip-ep: Improve rockchip_pcie_ep_unmap_addr()
PCI: rockchip-ep: Use a macro to define EP controller .align feature
PCI: rockchip-ep: Fix address translation unit programming
PCI/pwrctrl: Rename pwrctrl functions and structures
PCI/pwrctrl: Rename pwrctl files to pwrctrl
PCI/pwrctl: Remove pwrctl device without iterating over all children of pwrctl parent
PCI/pwrctl: Ensure that pwrctl drivers are probed before PCI client drivers
PCI/pwrctl: Create pwrctl device only if at least one power supply is present
PCI/pwrctl: Use of_platform_device_create() to create pwrctl devices
tools: PCI: Fix incorrect printf format specifiers
...
305 lines
8.5 KiB
Makefile
305 lines
8.5 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
TARGETS += acct
|
|
TARGETS += alsa
|
|
TARGETS += amd-pstate
|
|
TARGETS += arm64
|
|
TARGETS += bpf
|
|
TARGETS += breakpoints
|
|
TARGETS += cachestat
|
|
TARGETS += capabilities
|
|
TARGETS += cgroup
|
|
TARGETS += clone3
|
|
TARGETS += connector
|
|
TARGETS += core
|
|
TARGETS += cpufreq
|
|
TARGETS += cpu-hotplug
|
|
TARGETS += damon
|
|
TARGETS += devices/error_logs
|
|
TARGETS += devices/probe
|
|
TARGETS += dmabuf-heaps
|
|
TARGETS += drivers/dma-buf
|
|
TARGETS += drivers/s390x/uvdevice
|
|
TARGETS += drivers/net
|
|
TARGETS += drivers/net/bonding
|
|
TARGETS += drivers/net/team
|
|
TARGETS += drivers/net/virtio_net
|
|
TARGETS += drivers/platform/x86/intel/ifs
|
|
TARGETS += dt
|
|
TARGETS += efivarfs
|
|
TARGETS += exec
|
|
TARGETS += fchmodat2
|
|
TARGETS += filesystems
|
|
TARGETS += filesystems/binderfs
|
|
TARGETS += filesystems/epoll
|
|
TARGETS += filesystems/fat
|
|
TARGETS += filesystems/overlayfs
|
|
TARGETS += filesystems/statmount
|
|
TARGETS += firmware
|
|
TARGETS += fpu
|
|
TARGETS += ftrace
|
|
TARGETS += futex
|
|
TARGETS += gpio
|
|
TARGETS += hid
|
|
TARGETS += intel_pstate
|
|
TARGETS += iommu
|
|
TARGETS += ipc
|
|
TARGETS += ir
|
|
TARGETS += kcmp
|
|
TARGETS += kexec
|
|
TARGETS += kvm
|
|
TARGETS += landlock
|
|
TARGETS += lib
|
|
TARGETS += livepatch
|
|
TARGETS += lkdtm
|
|
TARGETS += lsm
|
|
TARGETS += membarrier
|
|
TARGETS += memfd
|
|
TARGETS += memory-hotplug
|
|
TARGETS += mincore
|
|
TARGETS += mount
|
|
TARGETS += mount_setattr
|
|
TARGETS += move_mount_set_group
|
|
TARGETS += mqueue
|
|
TARGETS += nci
|
|
TARGETS += net
|
|
TARGETS += net/af_unix
|
|
TARGETS += net/forwarding
|
|
TARGETS += net/hsr
|
|
TARGETS += net/mptcp
|
|
TARGETS += net/netfilter
|
|
TARGETS += net/openvswitch
|
|
TARGETS += net/packetdrill
|
|
TARGETS += net/rds
|
|
TARGETS += net/tcp_ao
|
|
TARGETS += nsfs
|
|
TARGETS += pcie_bwctrl
|
|
TARGETS += perf_events
|
|
TARGETS += pidfd
|
|
TARGETS += pid_namespace
|
|
TARGETS += power_supply
|
|
TARGETS += powerpc
|
|
TARGETS += prctl
|
|
TARGETS += proc
|
|
TARGETS += pstore
|
|
TARGETS += ptrace
|
|
TARGETS += openat2
|
|
TARGETS += resctrl
|
|
TARGETS += riscv
|
|
TARGETS += rlimits
|
|
TARGETS += rseq
|
|
TARGETS += rtc
|
|
TARGETS += rust
|
|
TARGETS += sched_ext
|
|
TARGETS += seccomp
|
|
TARGETS += sgx
|
|
TARGETS += signal
|
|
TARGETS += size
|
|
TARGETS += sparc64
|
|
TARGETS += splice
|
|
TARGETS += static_keys
|
|
TARGETS += sync
|
|
TARGETS += syscall_user_dispatch
|
|
TARGETS += sysctl
|
|
TARGETS += tc-testing
|
|
TARGETS += tdx
|
|
TARGETS += thermal/intel/power_floor
|
|
TARGETS += thermal/intel/workload_hint
|
|
TARGETS += timens
|
|
ifneq (1, $(quicktest))
|
|
TARGETS += timers
|
|
endif
|
|
TARGETS += tmpfs
|
|
TARGETS += tpm2
|
|
TARGETS += tty
|
|
TARGETS += uevent
|
|
TARGETS += user_events
|
|
TARGETS += vDSO
|
|
TARGETS += mm
|
|
TARGETS += x86
|
|
TARGETS += zram
|
|
#Please keep the TARGETS list alphabetically sorted
|
|
# Run "make quicktest=1 run_tests" or
|
|
# "make quicktest=1 kselftest" from top level Makefile
|
|
|
|
TARGETS_HOTPLUG = cpu-hotplug
|
|
TARGETS_HOTPLUG += memory-hotplug
|
|
|
|
# Networking tests want the net/lib target, include it automatically
|
|
ifneq ($(filter net drivers/net drivers/net/hw,$(TARGETS)),)
|
|
ifeq ($(filter net/lib,$(TARGETS)),)
|
|
INSTALL_DEP_TARGETS := net/lib
|
|
endif
|
|
endif
|
|
|
|
# User can optionally provide a TARGETS skiplist. By default we skip
|
|
# targets using BPF since it has cutting edge build time dependencies
|
|
# which require more effort to install.
|
|
SKIP_TARGETS ?= bpf sched_ext
|
|
ifneq ($(SKIP_TARGETS),)
|
|
TMP := $(filter-out $(SKIP_TARGETS), $(TARGETS))
|
|
override TARGETS := $(TMP)
|
|
endif
|
|
|
|
# User can set FORCE_TARGETS to 1 to require all targets to be successfully
|
|
# built; make will fail if any of the targets cannot be built. If
|
|
# FORCE_TARGETS is not set (the default), make will succeed if at least one
|
|
# of the targets gets built.
|
|
FORCE_TARGETS ?=
|
|
|
|
# Clear LDFLAGS and MAKEFLAGS when implicit rules are missing. This provides
|
|
# implicit rules to sub-test Makefiles which avoids build failures in test
|
|
# Makefile that don't have explicit build rules.
|
|
ifeq (,$(LINK.c))
|
|
override LDFLAGS =
|
|
override MAKEFLAGS =
|
|
endif
|
|
|
|
# Append kselftest to KBUILD_OUTPUT and O to avoid cluttering
|
|
# KBUILD_OUTPUT with selftest objects and headers installed
|
|
# by selftests Makefile or lib.mk.
|
|
ifdef building_out_of_srctree
|
|
override LDFLAGS =
|
|
endif
|
|
|
|
top_srcdir ?= ../../..
|
|
|
|
ifeq ("$(origin O)", "command line")
|
|
KBUILD_OUTPUT := $(O)
|
|
endif
|
|
|
|
ifneq ($(KBUILD_OUTPUT),)
|
|
# Make's built-in functions such as $(abspath ...), $(realpath ...) cannot
|
|
# expand a shell special character '~'. We use a somewhat tedious way here.
|
|
abs_objtree := $(shell cd $(top_srcdir) && mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) && pwd)
|
|
$(if $(abs_objtree),, \
|
|
$(error failed to create output directory "$(KBUILD_OUTPUT)"))
|
|
# $(realpath ...) resolves symlinks
|
|
abs_objtree := $(realpath $(abs_objtree))
|
|
BUILD := $(abs_objtree)/kselftest
|
|
KHDR_INCLUDES := -isystem ${abs_objtree}/usr/include
|
|
else
|
|
BUILD := $(CURDIR)
|
|
abs_srctree := $(shell cd $(top_srcdir) && pwd)
|
|
KHDR_INCLUDES := -isystem ${abs_srctree}/usr/include
|
|
DEFAULT_INSTALL_HDR_PATH := 1
|
|
endif
|
|
|
|
# Prepare for headers install
|
|
include $(top_srcdir)/scripts/subarch.include
|
|
ARCH ?= $(SUBARCH)
|
|
export BUILD
|
|
export KHDR_INCLUDES
|
|
|
|
# set default goal to all, so make without a target runs all, even when
|
|
# all isn't the first target in the file.
|
|
.DEFAULT_GOAL := all
|
|
|
|
all:
|
|
@ret=1; \
|
|
for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
mkdir $$BUILD_TARGET -p; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET \
|
|
O=$(abs_objtree) \
|
|
$(if $(FORCE_TARGETS),|| exit); \
|
|
ret=$$((ret * $$?)); \
|
|
done; exit $$ret;
|
|
|
|
run_tests: all
|
|
@for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_tests \
|
|
SRC_PATH=$(shell readlink -e $$(pwd)) \
|
|
OBJ_PATH=$(BUILD) \
|
|
O=$(abs_objtree); \
|
|
done;
|
|
|
|
hotplug:
|
|
@for TARGET in $(TARGETS_HOTPLUG); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET;\
|
|
done;
|
|
|
|
run_hotplug: hotplug
|
|
@for TARGET in $(TARGETS_HOTPLUG); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET run_full_test;\
|
|
done;
|
|
|
|
clean_hotplug:
|
|
@for TARGET in $(TARGETS_HOTPLUG); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
|
done;
|
|
|
|
run_pstore_crash:
|
|
$(MAKE) -C pstore run_crash
|
|
|
|
# Use $BUILD as the default install root. $BUILD points to the
|
|
# right output location for the following cases:
|
|
# 1. output_dir=kernel_src
|
|
# 2. a separate output directory is specified using O= KBUILD_OUTPUT
|
|
# 3. a separate output directory is specified using KBUILD_OUTPUT
|
|
# Avoid conflict with INSTALL_PATH set by the main Makefile
|
|
#
|
|
KSFT_INSTALL_PATH ?= $(BUILD)/kselftest_install
|
|
KSFT_INSTALL_PATH := $(abspath $(KSFT_INSTALL_PATH))
|
|
# Avoid changing the rest of the logic here and lib.mk.
|
|
INSTALL_PATH := $(KSFT_INSTALL_PATH)
|
|
ALL_SCRIPT := $(INSTALL_PATH)/run_kselftest.sh
|
|
TEST_LIST := $(INSTALL_PATH)/kselftest-list.txt
|
|
|
|
install: all
|
|
ifdef INSTALL_PATH
|
|
@# Ask all targets to install their files
|
|
mkdir -p $(INSTALL_PATH)/kselftest
|
|
install -m 744 kselftest/module.sh $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/runner.sh $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/prefix.pl $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/ktap_helpers.sh $(INSTALL_PATH)/kselftest/
|
|
install -m 744 kselftest/ksft.py $(INSTALL_PATH)/kselftest/
|
|
install -m 744 run_kselftest.sh $(INSTALL_PATH)/
|
|
rm -f $(TEST_LIST)
|
|
@ret=1; \
|
|
for TARGET in $(TARGETS) $(INSTALL_DEP_TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET install \
|
|
INSTALL_PATH=$(INSTALL_PATH)/$$TARGET \
|
|
SRC_PATH=$(shell readlink -e $$(pwd)) \
|
|
OBJ_PATH=$(INSTALL_PATH) \
|
|
O=$(abs_objtree) \
|
|
$(if $(FORCE_TARGETS),|| exit); \
|
|
ret=$$((ret * $$?)); \
|
|
done; exit $$ret;
|
|
|
|
|
|
@# Ask all targets to emit their test scripts
|
|
@# While building kselftest-list.text skip also non-existent TARGET dirs:
|
|
@# they could be the result of a build failure and should NOT be
|
|
@# included in the generated runlist.
|
|
for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
[ ! -d $(INSTALL_PATH)/$$TARGET ] && printf "Skipping non-existent dir: $$TARGET\n" && continue; \
|
|
printf "Emit Tests for $$TARGET\n"; \
|
|
$(MAKE) -s --no-print-directory OUTPUT=$$BUILD_TARGET COLLECTION=$$TARGET \
|
|
-C $$TARGET emit_tests >> $(TEST_LIST); \
|
|
done;
|
|
else
|
|
$(error Error: set INSTALL_PATH to use install)
|
|
endif
|
|
|
|
FORMAT ?= .gz
|
|
TAR_PATH = $(abspath ${INSTALL_PATH}/kselftest-packages/kselftest.tar${FORMAT})
|
|
gen_tar: install
|
|
@mkdir -p ${INSTALL_PATH}/kselftest-packages/
|
|
@tar caf ${TAR_PATH} --exclude=kselftest-packages -C ${INSTALL_PATH} .
|
|
@echo "Created ${TAR_PATH}"
|
|
|
|
clean:
|
|
@for TARGET in $(TARGETS); do \
|
|
BUILD_TARGET=$$BUILD/$$TARGET; \
|
|
$(MAKE) OUTPUT=$$BUILD_TARGET -C $$TARGET clean;\
|
|
done;
|
|
|
|
.PHONY: all run_tests hotplug run_hotplug clean_hotplug run_pstore_crash install clean gen_tar
|