From: Greg Kroah-Hartman Date: Tue, 3 Mar 2020 13:07:02 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.19.108~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a3cd03bcd05fc57c39296ab948dfd955c94de71d;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: kbuild-make-single-target-builds-even-faster.patch kbuild-move-headers_check-rule-to-usr-include-makefile.patch kbuild-remove-header-compile-test.patch kbuild-remove-unneeded-variable-single-all.patch kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch mwifiex-delete-unused-mwifiex_get_intf_num.patch mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch namei-only-return-echild-from-follow_dotdot_rcu.patch sched-fair-optimize-select_idle_cpu.patch --- diff --git a/queue-5.4/kbuild-make-single-target-builds-even-faster.patch b/queue-5.4/kbuild-make-single-target-builds-even-faster.patch new file mode 100644 index 00000000000..3043c7cec31 --- /dev/null +++ b/queue-5.4/kbuild-make-single-target-builds-even-faster.patch @@ -0,0 +1,138 @@ +From b1fbfcb4a20949df08dd995927cdc5ad220c128d Mon Sep 17 00:00:00 2001 +From: Masahiro Yamada +Date: Mon, 18 Nov 2019 13:52:47 +0900 +Subject: kbuild: make single target builds even faster + +From: Masahiro Yamada + +commit b1fbfcb4a20949df08dd995927cdc5ad220c128d upstream. + +Commit 2dffd23f81a3 ("kbuild: make single target builds much faster") +made the situation much better. + +To improve it even more, apply the similar idea to the top Makefile. +Trim unrelated directories from build-dirs. + +The single build code must be moved above the 'descend' target. + +Signed-off-by: Masahiro Yamada +Tested-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman + +--- + Makefile | 90 ++++++++++++++++++++++++++++++++------------------------------- + 1 file changed, 47 insertions(+), 43 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -1635,6 +1635,50 @@ help: + PHONY += prepare + endif # KBUILD_EXTMOD + ++# Single targets ++# --------------------------------------------------------------------------- ++# To build individual files in subdirectories, you can do like this: ++# ++# make foo/bar/baz.s ++# ++# The supported suffixes for single-target are listed in 'single-targets' ++# ++# To build only under specific subdirectories, you can do like this: ++# ++# make foo/bar/baz/ ++ ++ifdef single-build ++ ++# .ko is special because modpost is needed ++single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS))) ++single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS))) ++ ++$(single-ko): single_modpost ++ @: ++$(single-no-ko): descend ++ @: ++ ++ifeq ($(KBUILD_EXTMOD),) ++# For the single build of in-tree modules, use a temporary file to avoid ++# the situation of modules_install installing an invalid modules.order. ++MODORDER := .modules.tmp ++endif ++ ++PHONY += single_modpost ++single_modpost: $(single-no-ko) ++ $(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER) ++ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost ++ ++KBUILD_MODULES := 1 ++ ++export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko)) ++ ++# trim unrelated directories ++build-dirs := $(foreach d, $(build-dirs), \ ++ $(if $(filter $(d)/%, $(KBUILD_SINGLE_TARGETS)), $(d))) ++ ++endif ++ + # Handle descending into subdirectories listed in $(build-dirs) + # Preset locale variables to speed up the build process. Limit locale + # tweaks to this spot to avoid wrong language settings when running +@@ -1643,7 +1687,9 @@ endif # KBUILD_EXTMOD + PHONY += descend $(build-dirs) + descend: $(build-dirs) + $(build-dirs): prepare +- $(Q)$(MAKE) $(build)=$@ single-build=$(single-build) need-builtin=1 need-modorder=1 ++ $(Q)$(MAKE) $(build)=$@ \ ++ single-build=$(if $(filter-out $@/, $(single-no-ko)),1) \ ++ need-builtin=1 need-modorder=1 + + clean-dirs := $(addprefix _clean_, $(clean-dirs)) + PHONY += $(clean-dirs) clean +@@ -1747,48 +1793,6 @@ tools/%: FORCE + $(Q)mkdir -p $(objtree)/tools + $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(abspath $(objtree)) subdir=tools -C $(srctree)/tools/ $* + +-# Single targets +-# --------------------------------------------------------------------------- +-# To build individual files in subdirectories, you can do like this: +-# +-# make foo/bar/baz.s +-# +-# The supported suffixes for single-target are listed in 'single-targets' +-# +-# To build only under specific subdirectories, you can do like this: +-# +-# make foo/bar/baz/ +- +-ifdef single-build +- +-# .ko is special because modpost is needed +-single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS))) +-single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS))) +- +-$(single-ko): single_modpost +- @: +-$(single-no-ko): descend +- @: +- +-ifeq ($(KBUILD_EXTMOD),) +-# For the single build of in-tree modules, use a temporary file to avoid +-# the situation of modules_install installing an invalid modules.order. +-MODORDER := .modules.tmp +-endif +- +-PHONY += single_modpost +-single_modpost: $(single-no-ko) +- $(Q){ $(foreach m, $(single-ko), echo $(extmod-prefix)$m;) } > $(MODORDER) +- $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost +- +-KBUILD_MODULES := 1 +- +-export KBUILD_SINGLE_TARGETS := $(addprefix $(extmod-prefix), $(single-no-ko)) +- +-single-build = $(if $(filter-out $@/, $(single-no-ko)),1) +- +-endif +- + # FIXME Should go into a make.lib or something + # =========================================================================== + diff --git a/queue-5.4/kbuild-move-headers_check-rule-to-usr-include-makefile.patch b/queue-5.4/kbuild-move-headers_check-rule-to-usr-include-makefile.patch new file mode 100644 index 00000000000..58352cd8976 --- /dev/null +++ b/queue-5.4/kbuild-move-headers_check-rule-to-usr-include-makefile.patch @@ -0,0 +1,135 @@ +From 7ecaf069da52e472d393f03e79d721aabd724166 Mon Sep 17 00:00:00 2001 +From: Masahiro Yamada +Date: Thu, 7 Nov 2019 16:14:41 +0900 +Subject: kbuild: move headers_check rule to usr/include/Makefile + +From: Masahiro Yamada + +commit 7ecaf069da52e472d393f03e79d721aabd724166 upstream. + +Currently, some sanity checks for uapi headers are done by +scripts/headers_check.pl, which is wired up to the 'headers_check' +target in the top Makefile. + +It is true compiling headers has better test coverage, but there +are still several headers excluded from the compile test. I like +to keep headers_check.pl for a while, but we can delete a lot of +code by moving the build rule to usr/include/Makefile. + +Signed-off-by: Masahiro Yamada +Signed-off-by: Greg Kroah-Hartman + +--- + Makefile | 11 +++-------- + lib/Kconfig.debug | 11 ----------- + scripts/Makefile.headersinst | 18 ------------------ + usr/include/Makefile | 9 ++++++--- + 4 files changed, 9 insertions(+), 40 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -1195,19 +1195,15 @@ headers: $(version_h) scripts_unifdef ua + $(Q)$(MAKE) $(hdr-inst)=include/uapi + $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi + ++# Deprecated. It is no-op now. + PHONY += headers_check +-headers_check: headers +- $(Q)$(MAKE) $(hdr-inst)=include/uapi HDRCHECK=1 +- $(Q)$(MAKE) $(hdr-inst)=arch/$(SRCARCH)/include/uapi HDRCHECK=1 ++headers_check: ++ @: + + ifdef CONFIG_HEADERS_INSTALL + prepare: headers + endif + +-ifdef CONFIG_HEADERS_CHECK +-all: headers_check +-endif +- + PHONY += scripts_unifdef + scripts_unifdef: scripts_basic + $(Q)$(MAKE) $(build)=scripts scripts/unifdef +@@ -1475,7 +1471,6 @@ help: + @echo ' versioncheck - Sanity check on version.h usage' + @echo ' includecheck - Check for duplicate included header files' + @echo ' export_report - List the usages of all exported symbols' +- @echo ' headers_check - Sanity check on exported headers' + @echo ' headerdep - Detect inclusion cycles in headers' + @echo ' coccicheck - Check with Coccinelle' + @echo '' +--- a/lib/Kconfig.debug ++++ b/lib/Kconfig.debug +@@ -299,17 +299,6 @@ config HEADERS_INSTALL + user-space program samples. It is also needed by some features such + as uapi header sanity checks. + +-config HEADERS_CHECK +- bool "Run sanity checks on uapi headers when building 'all'" +- depends on HEADERS_INSTALL +- help +- This option will run basic sanity checks on uapi headers when +- building the 'all' target, for example, ensure that they do not +- attempt to include files which were not exported, etc. +- +- If you're making modifications to header files which are +- relevant for userspace, say 'Y'. +- + config OPTIMIZE_INLINING + def_bool y + help +--- a/scripts/Makefile.headersinst ++++ b/scripts/Makefile.headersinst +@@ -56,9 +56,6 @@ new-dirs := $(filter-out $(existing + $(if $(new-dirs), $(shell mkdir -p $(new-dirs))) + + # Rules +- +-ifndef HDRCHECK +- + quiet_cmd_install = HDRINST $@ + cmd_install = $(CONFIG_SHELL) $(srctree)/scripts/headers_install.sh $< $@ + +@@ -81,21 +78,6 @@ existing-headers := $(filter $(old-heade + + -include $(foreach f,$(existing-headers),$(dir $(f)).$(notdir $(f)).cmd) + +-else +- +-quiet_cmd_check = HDRCHK $< +- cmd_check = $(PERL) $(srctree)/scripts/headers_check.pl $(dst) $(SRCARCH) $<; touch $@ +- +-check-files := $(addsuffix .chk, $(all-headers)) +- +-$(check-files): $(dst)/%.chk : $(dst)/% $(srctree)/scripts/headers_check.pl +- $(call cmd,check) +- +-__headers: $(check-files) +- @: +- +-endif +- + PHONY += FORCE + FORCE: + +--- a/usr/include/Makefile ++++ b/usr/include/Makefile +@@ -99,11 +99,14 @@ endif + # asm-generic/*.h is used by asm/*.h, and should not be included directly + header-test- += asm-generic/% + +-extra-y := $(patsubst %.h,%.hdrtest, $(filter-out $(header-test-), \ +- $(patsubst $(obj)/%,%, $(shell find $(obj) -name '*.h')))) ++extra-y := $(patsubst $(obj)/%.h,%.hdrtest, $(shell find $(obj) -name '*.h')) + + quiet_cmd_hdrtest = HDRTEST $< +- cmd_hdrtest = $(CC) $(c_flags) -S -o /dev/null -x c /dev/null -include $<; touch $@ ++ cmd_hdrtest = \ ++ $(CC) $(c_flags) -S -o /dev/null -x c /dev/null \ ++ $(if $(filter-out $(header-test-), $*.h), -include $<); \ ++ $(PERL) $(srctree)/scripts/headers_check.pl $(obj) $(SRCARCH) $<; \ ++ touch $@ + + $(obj)/%.hdrtest: $(obj)/%.h FORCE + $(call if_changed_dep,hdrtest) diff --git a/queue-5.4/kbuild-remove-header-compile-test.patch b/queue-5.4/kbuild-remove-header-compile-test.patch new file mode 100644 index 00000000000..c9a4e63972d --- /dev/null +++ b/queue-5.4/kbuild-remove-header-compile-test.patch @@ -0,0 +1,1365 @@ +From fcbb8461fd2376ba3782b5b8bd440c929b8e4980 Mon Sep 17 00:00:00 2001 +From: Masahiro Yamada +Date: Thu, 7 Nov 2019 16:14:40 +0900 +Subject: kbuild: remove header compile test + +From: Masahiro Yamada + +commit fcbb8461fd2376ba3782b5b8bd440c929b8e4980 upstream. + +There are both positive and negative options about this feature. +At first, I thought it was a good idea, but actually Linus stated a +negative opinion (https://lkml.org/lkml/2019/9/29/227). I admit it +is ugly and annoying. + +The baseline I'd like to keep is the compile-test of uapi headers. +(Otherwise, kernel developers have no way to ensure the correctness +of the exported headers.) + +I will maintain a small build rule in usr/include/Makefile. +Remove the other header test functionality. + +Signed-off-by: Masahiro Yamada +[ added to 5.4.y due to start of build warnings from backported patches + because of this feature - gregkh] +Signed-off-by: Greg Kroah-Hartman + +--- + Documentation/kbuild/makefiles.rst | 17 + Makefile | 1 + drivers/gpu/drm/i915/Kconfig.debug | 1 + include/Kbuild | 1185 ------------------------------------- + init/Kconfig | 22 + scripts/Makefile.build | 9 + scripts/Makefile.lib | 14 + usr/include/Makefile | 12 + 8 files changed, 9 insertions(+), 1252 deletions(-) + +--- a/Documentation/kbuild/makefiles.rst ++++ b/Documentation/kbuild/makefiles.rst +@@ -1115,23 +1115,6 @@ When kbuild executes, the following step + In this example, extra-y is used to list object files that + shall be built, but shall not be linked as part of built-in.a. + +- header-test-y +- +- header-test-y specifies headers (`*.h`) in the current directory that +- should be compile tested to ensure they are self-contained, +- i.e. compilable as standalone units. If CONFIG_HEADER_TEST is enabled, +- this builds them as part of extra-y. +- +- header-test-pattern-y +- +- This works as a weaker version of header-test-y, and accepts wildcard +- patterns. The typical usage is:: +- +- header-test-pattern-y += *.h +- +- This specifies all the files that matches to `*.h` in the current +- directory, but the files in 'header-test-' are excluded. +- + 6.7 Commands useful for building a boot image + --------------------------------------------- + +--- a/Makefile ++++ b/Makefile +@@ -618,7 +618,6 @@ ifeq ($(KBUILD_EXTMOD),) + init-y := init/ + drivers-y := drivers/ sound/ + drivers-$(CONFIG_SAMPLES) += samples/ +-drivers-$(CONFIG_KERNEL_HEADER_TEST) += include/ + net-y := net/ + libs-y := lib/ + core-y := usr/ +--- a/drivers/gpu/drm/i915/Kconfig.debug ++++ b/drivers/gpu/drm/i915/Kconfig.debug +@@ -7,7 +7,6 @@ config DRM_I915_WERROR + # We use the dependency on !COMPILE_TEST to not be enabled in + # allmodconfig or allyesconfig configurations + depends on !COMPILE_TEST +- select HEADER_TEST + default n + help + Add -Werror to the build flags for (and only for) i915.ko. +--- a/include/Kbuild ++++ /dev/null +@@ -1,1185 +0,0 @@ +-# SPDX-License-Identifier: GPL-2.0-only +- +-# Add header-test-$(CONFIG_...) guard to headers that are only compiled +-# for particular architectures. +-# +-# Headers listed in header-test- are excluded from the test coverage. +-# Many headers are excluded for now because they fail to build. Please +-# consider to fix headers first before adding new ones to the blacklist. +-# +-# Sorted alphabetically. +-header-test- += acpi/acbuffer.h +-header-test- += acpi/acpi.h +-header-test- += acpi/acpi_bus.h +-header-test- += acpi/acpi_drivers.h +-header-test- += acpi/acpi_io.h +-header-test- += acpi/acpi_lpat.h +-header-test- += acpi/acpiosxf.h +-header-test- += acpi/acpixf.h +-header-test- += acpi/acrestyp.h +-header-test- += acpi/actbl.h +-header-test- += acpi/actbl1.h +-header-test- += acpi/actbl2.h +-header-test- += acpi/actbl3.h +-header-test- += acpi/actypes.h +-header-test- += acpi/battery.h +-header-test- += acpi/cppc_acpi.h +-header-test- += acpi/nfit.h +-header-test- += acpi/platform/acenv.h +-header-test- += acpi/platform/acenvex.h +-header-test- += acpi/platform/acintel.h +-header-test- += acpi/platform/aclinux.h +-header-test- += acpi/platform/aclinuxex.h +-header-test- += acpi/processor.h +-header-test-$(CONFIG_X86) += clocksource/hyperv_timer.h +-header-test- += clocksource/timer-sp804.h +-header-test- += crypto/cast_common.h +-header-test- += crypto/internal/cryptouser.h +-header-test- += crypto/pkcs7.h +-header-test- += crypto/poly1305.h +-header-test- += crypto/sha3.h +-header-test- += drm/ati_pcigart.h +-header-test- += drm/bridge/dw_hdmi.h +-header-test- += drm/bridge/dw_mipi_dsi.h +-header-test- += drm/drm_audio_component.h +-header-test- += drm/drm_auth.h +-header-test- += drm/drm_debugfs.h +-header-test- += drm/drm_debugfs_crc.h +-header-test- += drm/drm_displayid.h +-header-test- += drm/drm_encoder_slave.h +-header-test- += drm/drm_fb_cma_helper.h +-header-test- += drm/drm_fb_helper.h +-header-test- += drm/drm_fixed.h +-header-test- += drm/drm_format_helper.h +-header-test- += drm/drm_lease.h +-header-test- += drm/drm_legacy.h +-header-test- += drm/drm_panel.h +-header-test- += drm/drm_plane_helper.h +-header-test- += drm/drm_rect.h +-header-test- += drm/i915_component.h +-header-test- += drm/intel-gtt.h +-header-test- += drm/tinydrm/tinydrm-helpers.h +-header-test- += drm/ttm/ttm_debug.h +-header-test- += keys/asymmetric-parser.h +-header-test- += keys/asymmetric-subtype.h +-header-test- += keys/asymmetric-type.h +-header-test- += keys/big_key-type.h +-header-test- += keys/request_key_auth-type.h +-header-test- += keys/trusted.h +-header-test- += kvm/arm_arch_timer.h +-header-test- += kvm/arm_pmu.h +-header-test-$(CONFIG_ARM) += kvm/arm_psci.h +-header-test-$(CONFIG_ARM64) += kvm/arm_psci.h +-header-test- += kvm/arm_vgic.h +-header-test- += linux/8250_pci.h +-header-test- += linux/a.out.h +-header-test- += linux/adxl.h +-header-test- += linux/agpgart.h +-header-test- += linux/alcor_pci.h +-header-test- += linux/amba/clcd.h +-header-test- += linux/amba/pl080.h +-header-test- += linux/amd-iommu.h +-header-test-$(CONFIG_ARM) += linux/arm-cci.h +-header-test-$(CONFIG_ARM64) += linux/arm-cci.h +-header-test- += linux/arm_sdei.h +-header-test- += linux/asn1_decoder.h +-header-test- += linux/ata_platform.h +-header-test- += linux/ath9k_platform.h +-header-test- += linux/atm_tcp.h +-header-test- += linux/atomic-fallback.h +-header-test- += linux/avf/virtchnl.h +-header-test- += linux/bcm47xx_sprom.h +-header-test- += linux/bcma/bcma_driver_gmac_cmn.h +-header-test- += linux/bcma/bcma_driver_mips.h +-header-test- += linux/bcma/bcma_driver_pci.h +-header-test- += linux/bcma/bcma_driver_pcie2.h +-header-test- += linux/bit_spinlock.h +-header-test- += linux/blk-mq-rdma.h +-header-test- += linux/blk-mq.h +-header-test- += linux/blktrace_api.h +-header-test- += linux/blockgroup_lock.h +-header-test- += linux/bma150.h +-header-test- += linux/bpf_lirc.h +-header-test- += linux/bpf_types.h +-header-test- += linux/bsg-lib.h +-header-test- += linux/bsg.h +-header-test- += linux/btf.h +-header-test- += linux/btree-128.h +-header-test- += linux/btree-type.h +-header-test-$(CONFIG_CPU_BIG_ENDIAN) += linux/byteorder/big_endian.h +-header-test- += linux/byteorder/generic.h +-header-test-$(CONFIG_CPU_LITTLE_ENDIAN) += linux/byteorder/little_endian.h +-header-test- += linux/c2port.h +-header-test- += linux/can/dev/peak_canfd.h +-header-test- += linux/can/platform/cc770.h +-header-test- += linux/can/platform/sja1000.h +-header-test- += linux/ceph/ceph_features.h +-header-test- += linux/ceph/ceph_frag.h +-header-test- += linux/ceph/ceph_fs.h +-header-test- += linux/ceph/debugfs.h +-header-test- += linux/ceph/msgr.h +-header-test- += linux/ceph/rados.h +-header-test- += linux/cgroup_subsys.h +-header-test- += linux/clk/sunxi-ng.h +-header-test- += linux/clk/ti.h +-header-test- += linux/cn_proc.h +-header-test- += linux/coda_psdev.h +-header-test- += linux/compaction.h +-header-test- += linux/console_struct.h +-header-test- += linux/count_zeros.h +-header-test- += linux/cs5535.h +-header-test- += linux/cuda.h +-header-test- += linux/cyclades.h +-header-test- += linux/dcookies.h +-header-test- += linux/delayacct.h +-header-test- += linux/delayed_call.h +-header-test- += linux/device-mapper.h +-header-test- += linux/devpts_fs.h +-header-test- += linux/dio.h +-header-test- += linux/dirent.h +-header-test- += linux/dlm_plock.h +-header-test- += linux/dm-dirty-log.h +-header-test- += linux/dm-region-hash.h +-header-test- += linux/dma-debug.h +-header-test- += linux/dma/mmp-pdma.h +-header-test- += linux/dma/sprd-dma.h +-header-test- += linux/dns_resolver.h +-header-test- += linux/drbd_genl.h +-header-test- += linux/drbd_genl_api.h +-header-test- += linux/dw_apb_timer.h +-header-test- += linux/dynamic_debug.h +-header-test- += linux/dynamic_queue_limits.h +-header-test- += linux/ecryptfs.h +-header-test- += linux/edma.h +-header-test- += linux/eeprom_93cx6.h +-header-test- += linux/efs_vh.h +-header-test- += linux/elevator.h +-header-test- += linux/elfcore-compat.h +-header-test- += linux/error-injection.h +-header-test- += linux/errseq.h +-header-test- += linux/eventpoll.h +-header-test- += linux/ext2_fs.h +-header-test- += linux/f75375s.h +-header-test- += linux/falloc.h +-header-test- += linux/fault-inject.h +-header-test- += linux/fbcon.h +-header-test- += linux/firmware/intel/stratix10-svc-client.h +-header-test- += linux/firmware/meson/meson_sm.h +-header-test- += linux/firmware/trusted_foundations.h +-header-test- += linux/firmware/xlnx-zynqmp.h +-header-test- += linux/fixp-arith.h +-header-test- += linux/flat.h +-header-test- += linux/fs_types.h +-header-test- += linux/fs_uart_pd.h +-header-test- += linux/fsi-occ.h +-header-test- += linux/fsi-sbefifo.h +-header-test- += linux/fsl/bestcomm/ata.h +-header-test- += linux/fsl/bestcomm/bestcomm.h +-header-test- += linux/fsl/bestcomm/bestcomm_priv.h +-header-test- += linux/fsl/bestcomm/fec.h +-header-test- += linux/fsl/bestcomm/gen_bd.h +-header-test- += linux/fsl/bestcomm/sram.h +-header-test- += linux/fsl_hypervisor.h +-header-test- += linux/fsldma.h +-header-test- += linux/ftrace_irq.h +-header-test- += linux/gameport.h +-header-test- += linux/genl_magic_func.h +-header-test- += linux/genl_magic_struct.h +-header-test- += linux/gpio/aspeed.h +-header-test- += linux/gpio/gpio-reg.h +-header-test- += linux/hid-debug.h +-header-test- += linux/hiddev.h +-header-test- += linux/hippidevice.h +-header-test- += linux/hmm.h +-header-test- += linux/hp_sdc.h +-header-test- += linux/huge_mm.h +-header-test- += linux/hugetlb_cgroup.h +-header-test- += linux/hugetlb_inline.h +-header-test- += linux/hwmon-vid.h +-header-test- += linux/hyperv.h +-header-test- += linux/i2c-algo-pca.h +-header-test- += linux/i2c-algo-pcf.h +-header-test- += linux/i3c/ccc.h +-header-test- += linux/i3c/device.h +-header-test- += linux/i3c/master.h +-header-test- += linux/i8042.h +-header-test- += linux/ide.h +-header-test- += linux/idle_inject.h +-header-test- += linux/if_frad.h +-header-test- += linux/if_rmnet.h +-header-test- += linux/if_tap.h +-header-test- += linux/iio/accel/kxcjk_1013.h +-header-test- += linux/iio/adc/ad_sigma_delta.h +-header-test- += linux/iio/buffer-dma.h +-header-test- += linux/iio/buffer_impl.h +-header-test- += linux/iio/common/st_sensors.h +-header-test- += linux/iio/common/st_sensors_i2c.h +-header-test- += linux/iio/common/st_sensors_spi.h +-header-test- += linux/iio/dac/ad5421.h +-header-test- += linux/iio/dac/ad5504.h +-header-test- += linux/iio/dac/ad5791.h +-header-test- += linux/iio/dac/max517.h +-header-test- += linux/iio/dac/mcp4725.h +-header-test- += linux/iio/frequency/ad9523.h +-header-test- += linux/iio/frequency/adf4350.h +-header-test- += linux/iio/hw-consumer.h +-header-test- += linux/iio/imu/adis.h +-header-test- += linux/iio/sysfs.h +-header-test- += linux/iio/timer/stm32-timer-trigger.h +-header-test- += linux/iio/trigger.h +-header-test- += linux/iio/triggered_event.h +-header-test- += linux/imx-media.h +-header-test- += linux/inet_diag.h +-header-test- += linux/init_ohci1394_dma.h +-header-test- += linux/initrd.h +-header-test- += linux/input/adp5589.h +-header-test- += linux/input/bu21013.h +-header-test- += linux/input/cma3000.h +-header-test- += linux/input/kxtj9.h +-header-test- += linux/input/lm8333.h +-header-test- += linux/input/sparse-keymap.h +-header-test- += linux/input/touchscreen.h +-header-test- += linux/input/tps6507x-ts.h +-header-test-$(CONFIG_X86) += linux/intel-iommu.h +-header-test- += linux/intel-ish-client-if.h +-header-test- += linux/intel-pti.h +-header-test- += linux/intel-svm.h +-header-test- += linux/interconnect-provider.h +-header-test- += linux/ioc3.h +-header-test-$(CONFIG_BLOCK) += linux/iomap.h +-header-test- += linux/ipack.h +-header-test- += linux/irq_cpustat.h +-header-test- += linux/irq_poll.h +-header-test- += linux/irqchip/arm-gic-v3.h +-header-test- += linux/irqchip/arm-gic-v4.h +-header-test- += linux/irqchip/irq-madera.h +-header-test- += linux/irqchip/irq-sa11x0.h +-header-test- += linux/irqchip/mxs.h +-header-test- += linux/irqchip/versatile-fpga.h +-header-test- += linux/irqdesc.h +-header-test- += linux/irqflags.h +-header-test- += linux/iscsi_boot_sysfs.h +-header-test- += linux/isdn/capiutil.h +-header-test- += linux/isdn/hdlc.h +-header-test- += linux/isdn_ppp.h +-header-test- += linux/jbd2.h +-header-test- += linux/jump_label.h +-header-test- += linux/jump_label_ratelimit.h +-header-test- += linux/jz4740-adc.h +-header-test- += linux/kasan.h +-header-test- += linux/kcore.h +-header-test- += linux/kdev_t.h +-header-test- += linux/kernelcapi.h +-header-test- += linux/khugepaged.h +-header-test- += linux/kobj_map.h +-header-test- += linux/kobject_ns.h +-header-test- += linux/kvm_host.h +-header-test- += linux/kvm_irqfd.h +-header-test- += linux/kvm_para.h +-header-test- += linux/lantiq.h +-header-test- += linux/lapb.h +-header-test- += linux/latencytop.h +-header-test- += linux/led-lm3530.h +-header-test- += linux/leds-bd2802.h +-header-test- += linux/leds-lp3944.h +-header-test- += linux/leds-lp3952.h +-header-test- += linux/leds_pwm.h +-header-test- += linux/libata.h +-header-test- += linux/license.h +-header-test- += linux/lightnvm.h +-header-test- += linux/lis3lv02d.h +-header-test- += linux/list_bl.h +-header-test- += linux/list_lru.h +-header-test- += linux/list_nulls.h +-header-test- += linux/lockd/share.h +-header-test- += linux/lzo.h +-header-test- += linux/mailbox/zynqmp-ipi-message.h +-header-test- += linux/maple.h +-header-test- += linux/mbcache.h +-header-test- += linux/mbus.h +-header-test- += linux/mc146818rtc.h +-header-test- += linux/mc6821.h +-header-test- += linux/mdev.h +-header-test- += linux/mem_encrypt.h +-header-test- += linux/memfd.h +-header-test- += linux/mfd/88pm80x.h +-header-test- += linux/mfd/88pm860x.h +-header-test- += linux/mfd/abx500/ab8500-bm.h +-header-test- += linux/mfd/abx500/ab8500-gpadc.h +-header-test- += linux/mfd/adp5520.h +-header-test- += linux/mfd/arizona/pdata.h +-header-test- += linux/mfd/as3711.h +-header-test- += linux/mfd/as3722.h +-header-test- += linux/mfd/da903x.h +-header-test- += linux/mfd/da9055/pdata.h +-header-test- += linux/mfd/db8500-prcmu.h +-header-test- += linux/mfd/dbx500-prcmu.h +-header-test- += linux/mfd/dln2.h +-header-test- += linux/mfd/dm355evm_msp.h +-header-test- += linux/mfd/ds1wm.h +-header-test- += linux/mfd/ezx-pcap.h +-header-test- += linux/mfd/intel_msic.h +-header-test- += linux/mfd/janz.h +-header-test- += linux/mfd/kempld.h +-header-test- += linux/mfd/lm3533.h +-header-test- += linux/mfd/lp8788-isink.h +-header-test- += linux/mfd/lpc_ich.h +-header-test- += linux/mfd/max77693.h +-header-test- += linux/mfd/max8998-private.h +-header-test- += linux/mfd/menelaus.h +-header-test- += linux/mfd/mt6397/core.h +-header-test- += linux/mfd/palmas.h +-header-test- += linux/mfd/pcf50633/backlight.h +-header-test- += linux/mfd/rc5t583.h +-header-test- += linux/mfd/retu.h +-header-test- += linux/mfd/samsung/core.h +-header-test- += linux/mfd/si476x-platform.h +-header-test- += linux/mfd/si476x-reports.h +-header-test- += linux/mfd/sky81452.h +-header-test- += linux/mfd/smsc.h +-header-test- += linux/mfd/sta2x11-mfd.h +-header-test- += linux/mfd/stmfx.h +-header-test- += linux/mfd/tc3589x.h +-header-test- += linux/mfd/tc6387xb.h +-header-test- += linux/mfd/tc6393xb.h +-header-test- += linux/mfd/tps65090.h +-header-test- += linux/mfd/tps6586x.h +-header-test- += linux/mfd/tps65910.h +-header-test- += linux/mfd/tps80031.h +-header-test- += linux/mfd/ucb1x00.h +-header-test- += linux/mfd/viperboard.h +-header-test- += linux/mfd/wm831x/core.h +-header-test- += linux/mfd/wm831x/otp.h +-header-test- += linux/mfd/wm831x/pdata.h +-header-test- += linux/mfd/wm8994/core.h +-header-test- += linux/mfd/wm8994/pdata.h +-header-test- += linux/mlx4/doorbell.h +-header-test- += linux/mlx4/srq.h +-header-test- += linux/mlx5/doorbell.h +-header-test- += linux/mlx5/eq.h +-header-test- += linux/mlx5/fs_helpers.h +-header-test- += linux/mlx5/mlx5_ifc.h +-header-test- += linux/mlx5/mlx5_ifc_fpga.h +-header-test- += linux/mm-arch-hooks.h +-header-test- += linux/mm_inline.h +-header-test- += linux/mmu_context.h +-header-test- += linux/mpage.h +-header-test- += linux/mtd/bbm.h +-header-test- += linux/mtd/cfi.h +-header-test- += linux/mtd/doc2000.h +-header-test- += linux/mtd/flashchip.h +-header-test- += linux/mtd/ftl.h +-header-test- += linux/mtd/gen_probe.h +-header-test- += linux/mtd/jedec.h +-header-test- += linux/mtd/nand_bch.h +-header-test- += linux/mtd/nand_ecc.h +-header-test- += linux/mtd/ndfc.h +-header-test- += linux/mtd/onenand.h +-header-test- += linux/mtd/pismo.h +-header-test- += linux/mtd/plat-ram.h +-header-test- += linux/mtd/spi-nor.h +-header-test- += linux/mv643xx.h +-header-test- += linux/mv643xx_eth.h +-header-test- += linux/mvebu-pmsu.h +-header-test- += linux/mxm-wmi.h +-header-test- += linux/n_r3964.h +-header-test- += linux/ndctl.h +-header-test- += linux/nfs.h +-header-test- += linux/nfs_fs_i.h +-header-test- += linux/nfs_fs_sb.h +-header-test- += linux/nfs_page.h +-header-test- += linux/nfs_xdr.h +-header-test- += linux/nfsacl.h +-header-test- += linux/nl802154.h +-header-test- += linux/ns_common.h +-header-test- += linux/nsc_gpio.h +-header-test- += linux/ntb_transport.h +-header-test- += linux/nubus.h +-header-test- += linux/nvme-fc-driver.h +-header-test- += linux/nvme-fc.h +-header-test- += linux/nvme-rdma.h +-header-test- += linux/nvram.h +-header-test- += linux/objagg.h +-header-test- += linux/of_clk.h +-header-test- += linux/of_net.h +-header-test- += linux/of_pdt.h +-header-test- += linux/olpc-ec.h +-header-test- += linux/omap-dma.h +-header-test- += linux/omap-dmaengine.h +-header-test- += linux/omap-gpmc.h +-header-test- += linux/omap-iommu.h +-header-test- += linux/omap-mailbox.h +-header-test- += linux/once.h +-header-test- += linux/osq_lock.h +-header-test- += linux/overflow.h +-header-test- += linux/page-flags-layout.h +-header-test- += linux/page-isolation.h +-header-test- += linux/page_ext.h +-header-test- += linux/page_owner.h +-header-test- += linux/parport_pc.h +-header-test- += linux/parser.h +-header-test- += linux/pci-acpi.h +-header-test- += linux/pci-dma-compat.h +-header-test- += linux/pci_hotplug.h +-header-test- += linux/pda_power.h +-header-test- += linux/perf/arm_pmu.h +-header-test- += linux/perf_regs.h +-header-test- += linux/phy/omap_control_phy.h +-header-test- += linux/phy/tegra/xusb.h +-header-test- += linux/phy/ulpi_phy.h +-header-test- += linux/phy_fixed.h +-header-test- += linux/pipe_fs_i.h +-header-test- += linux/pktcdvd.h +-header-test- += linux/pl320-ipc.h +-header-test- += linux/pl353-smc.h +-header-test- += linux/platform_data/ad5449.h +-header-test- += linux/platform_data/ad5755.h +-header-test- += linux/platform_data/ad7266.h +-header-test- += linux/platform_data/ad7291.h +-header-test- += linux/platform_data/ad7298.h +-header-test- += linux/platform_data/ad7303.h +-header-test- += linux/platform_data/ad7791.h +-header-test- += linux/platform_data/ad7793.h +-header-test- += linux/platform_data/ad7887.h +-header-test- += linux/platform_data/adau17x1.h +-header-test- += linux/platform_data/adp8870.h +-header-test- += linux/platform_data/ads1015.h +-header-test- += linux/platform_data/ads7828.h +-header-test- += linux/platform_data/apds990x.h +-header-test- += linux/platform_data/arm-ux500-pm.h +-header-test- += linux/platform_data/asoc-s3c.h +-header-test- += linux/platform_data/at91_adc.h +-header-test- += linux/platform_data/ata-pxa.h +-header-test- += linux/platform_data/atmel.h +-header-test- += linux/platform_data/bh1770glc.h +-header-test- += linux/platform_data/brcmfmac.h +-header-test- += linux/platform_data/cros_ec_commands.h +-header-test- += linux/platform_data/clk-u300.h +-header-test- += linux/platform_data/cyttsp4.h +-header-test- += linux/platform_data/dma-coh901318.h +-header-test- += linux/platform_data/dma-imx-sdma.h +-header-test- += linux/platform_data/dma-mcf-edma.h +-header-test- += linux/platform_data/dma-s3c24xx.h +-header-test- += linux/platform_data/dmtimer-omap.h +-header-test- += linux/platform_data/dsa.h +-header-test- += linux/platform_data/edma.h +-header-test- += linux/platform_data/elm.h +-header-test- += linux/platform_data/emif_plat.h +-header-test- += linux/platform_data/fsa9480.h +-header-test- += linux/platform_data/g762.h +-header-test- += linux/platform_data/gpio-ath79.h +-header-test- += linux/platform_data/gpio-davinci.h +-header-test- += linux/platform_data/gpio-dwapb.h +-header-test- += linux/platform_data/gpio-htc-egpio.h +-header-test- += linux/platform_data/gpmc-omap.h +-header-test- += linux/platform_data/hsmmc-omap.h +-header-test- += linux/platform_data/hwmon-s3c.h +-header-test- += linux/platform_data/i2c-davinci.h +-header-test- += linux/platform_data/i2c-imx.h +-header-test- += linux/platform_data/i2c-mux-reg.h +-header-test- += linux/platform_data/i2c-ocores.h +-header-test- += linux/platform_data/i2c-xiic.h +-header-test- += linux/platform_data/intel-spi.h +-header-test- += linux/platform_data/invensense_mpu6050.h +-header-test- += linux/platform_data/irda-pxaficp.h +-header-test- += linux/platform_data/irda-sa11x0.h +-header-test- += linux/platform_data/itco_wdt.h +-header-test- += linux/platform_data/jz4740/jz4740_nand.h +-header-test- += linux/platform_data/keyboard-pxa930_rotary.h +-header-test- += linux/platform_data/keypad-omap.h +-header-test- += linux/platform_data/leds-lp55xx.h +-header-test- += linux/platform_data/leds-omap.h +-header-test- += linux/platform_data/lp855x.h +-header-test- += linux/platform_data/lp8727.h +-header-test- += linux/platform_data/max197.h +-header-test- += linux/platform_data/max3421-hcd.h +-header-test- += linux/platform_data/max732x.h +-header-test- += linux/platform_data/mcs.h +-header-test- += linux/platform_data/mdio-bcm-unimac.h +-header-test- += linux/platform_data/mdio-gpio.h +-header-test- += linux/platform_data/media/si4713.h +-header-test- += linux/platform_data/mlxreg.h +-header-test- += linux/platform_data/mmc-omap.h +-header-test- += linux/platform_data/mmc-sdhci-s3c.h +-header-test- += linux/platform_data/mmp_audio.h +-header-test- += linux/platform_data/mtd-orion_nand.h +-header-test- += linux/platform_data/mv88e6xxx.h +-header-test- += linux/platform_data/net-cw1200.h +-header-test- += linux/platform_data/omap-twl4030.h +-header-test- += linux/platform_data/omapdss.h +-header-test- += linux/platform_data/pcf857x.h +-header-test- += linux/platform_data/pixcir_i2c_ts.h +-header-test- += linux/platform_data/pwm_omap_dmtimer.h +-header-test- += linux/platform_data/pxa2xx_udc.h +-header-test- += linux/platform_data/pxa_sdhci.h +-header-test- += linux/platform_data/remoteproc-omap.h +-header-test- += linux/platform_data/sa11x0-serial.h +-header-test- += linux/platform_data/sc18is602.h +-header-test- += linux/platform_data/sdhci-pic32.h +-header-test- += linux/platform_data/serial-sccnxp.h +-header-test- += linux/platform_data/sht3x.h +-header-test- += linux/platform_data/shtc1.h +-header-test- += linux/platform_data/si5351.h +-header-test- += linux/platform_data/sky81452-backlight.h +-header-test- += linux/platform_data/spi-davinci.h +-header-test- += linux/platform_data/spi-ep93xx.h +-header-test- += linux/platform_data/spi-mt65xx.h +-header-test- += linux/platform_data/st_sensors_pdata.h +-header-test- += linux/platform_data/ti-sysc.h +-header-test- += linux/platform_data/timer-ixp4xx.h +-header-test- += linux/platform_data/touchscreen-s3c2410.h +-header-test- += linux/platform_data/tsc2007.h +-header-test- += linux/platform_data/tsl2772.h +-header-test- += linux/platform_data/uio_pruss.h +-header-test- += linux/platform_data/usb-davinci.h +-header-test- += linux/platform_data/usb-ehci-mxc.h +-header-test- += linux/platform_data/usb-ehci-orion.h +-header-test- += linux/platform_data/usb-mx2.h +-header-test- += linux/platform_data/usb-ohci-s3c2410.h +-header-test- += linux/platform_data/usb-omap.h +-header-test- += linux/platform_data/usb-s3c2410_udc.h +-header-test- += linux/platform_data/usb3503.h +-header-test- += linux/platform_data/ux500_wdt.h +-header-test- += linux/platform_data/video-clcd-versatile.h +-header-test- += linux/platform_data/video-imxfb.h +-header-test- += linux/platform_data/video-pxafb.h +-header-test- += linux/platform_data/video_s3c.h +-header-test- += linux/platform_data/voltage-omap.h +-header-test- += linux/platform_data/x86/apple.h +-header-test- += linux/platform_data/x86/clk-pmc-atom.h +-header-test- += linux/platform_data/x86/pmc_atom.h +-header-test- += linux/platform_data/xtalk-bridge.h +-header-test- += linux/pm2301_charger.h +-header-test- += linux/pm_wakeirq.h +-header-test- += linux/pm_wakeup.h +-header-test- += linux/pmbus.h +-header-test- += linux/pmu.h +-header-test- += linux/posix_acl.h +-header-test- += linux/posix_acl_xattr.h +-header-test- += linux/power/ab8500.h +-header-test- += linux/power/bq27xxx_battery.h +-header-test- += linux/power/generic-adc-battery.h +-header-test- += linux/power/jz4740-battery.h +-header-test- += linux/power/max17042_battery.h +-header-test- += linux/power/max8903_charger.h +-header-test- += linux/ppp-comp.h +-header-test- += linux/pps-gpio.h +-header-test- += linux/pr.h +-header-test- += linux/proc_ns.h +-header-test- += linux/processor.h +-header-test- += linux/psi.h +-header-test- += linux/psp-sev.h +-header-test- += linux/pstore.h +-header-test- += linux/ptr_ring.h +-header-test- += linux/ptrace.h +-header-test- += linux/qcom-geni-se.h +-header-test- += linux/qed/eth_common.h +-header-test- += linux/qed/fcoe_common.h +-header-test- += linux/qed/iscsi_common.h +-header-test- += linux/qed/iwarp_common.h +-header-test- += linux/qed/qed_eth_if.h +-header-test- += linux/qed/qed_fcoe_if.h +-header-test- += linux/qed/rdma_common.h +-header-test- += linux/qed/storage_common.h +-header-test- += linux/qed/tcp_common.h +-header-test- += linux/qnx6_fs.h +-header-test- += linux/quicklist.h +-header-test- += linux/ramfs.h +-header-test- += linux/range.h +-header-test- += linux/rcu_node_tree.h +-header-test- += linux/rculist_bl.h +-header-test- += linux/rculist_nulls.h +-header-test- += linux/rcutiny.h +-header-test- += linux/rcutree.h +-header-test- += linux/reboot-mode.h +-header-test- += linux/regulator/fixed.h +-header-test- += linux/regulator/gpio-regulator.h +-header-test- += linux/regulator/max8973-regulator.h +-header-test- += linux/regulator/of_regulator.h +-header-test- += linux/regulator/tps51632-regulator.h +-header-test- += linux/regulator/tps62360.h +-header-test- += linux/regulator/tps6507x.h +-header-test- += linux/regulator/userspace-consumer.h +-header-test- += linux/remoteproc/st_slim_rproc.h +-header-test- += linux/reset/socfpga.h +-header-test- += linux/reset/sunxi.h +-header-test- += linux/rtc/m48t59.h +-header-test- += linux/rtc/rtc-omap.h +-header-test- += linux/rtc/sirfsoc_rtciobrg.h +-header-test- += linux/rwlock.h +-header-test- += linux/rwlock_types.h +-header-test- += linux/scc.h +-header-test- += linux/sched/deadline.h +-header-test- += linux/sched/smt.h +-header-test- += linux/sched/sysctl.h +-header-test- += linux/sched_clock.h +-header-test- += linux/scpi_protocol.h +-header-test- += linux/scx200_gpio.h +-header-test- += linux/seccomp.h +-header-test- += linux/sed-opal.h +-header-test- += linux/seg6_iptunnel.h +-header-test- += linux/selection.h +-header-test- += linux/set_memory.h +-header-test- += linux/shrinker.h +-header-test- += linux/sirfsoc_dma.h +-header-test- += linux/skb_array.h +-header-test- += linux/slab_def.h +-header-test- += linux/slub_def.h +-header-test- += linux/sm501.h +-header-test- += linux/smc91x.h +-header-test- += linux/static_key.h +-header-test- += linux/soc/actions/owl-sps.h +-header-test- += linux/soc/amlogic/meson-canvas.h +-header-test- += linux/soc/brcmstb/brcmstb.h +-header-test- += linux/soc/ixp4xx/npe.h +-header-test- += linux/soc/mediatek/infracfg.h +-header-test- += linux/soc/qcom/smd-rpm.h +-header-test- += linux/soc/qcom/smem.h +-header-test- += linux/soc/qcom/smem_state.h +-header-test- += linux/soc/qcom/wcnss_ctrl.h +-header-test- += linux/soc/renesas/rcar-rst.h +-header-test- += linux/soc/samsung/exynos-pmu.h +-header-test- += linux/soc/sunxi/sunxi_sram.h +-header-test- += linux/soc/ti/ti-msgmgr.h +-header-test- += linux/soc/ti/ti_sci_inta_msi.h +-header-test- += linux/soc/ti/ti_sci_protocol.h +-header-test- += linux/soundwire/sdw.h +-header-test- += linux/soundwire/sdw_intel.h +-header-test- += linux/soundwire/sdw_type.h +-header-test- += linux/spi/ad7877.h +-header-test- += linux/spi/ads7846.h +-header-test- += linux/spi/at86rf230.h +-header-test- += linux/spi/ds1305.h +-header-test- += linux/spi/libertas_spi.h +-header-test- += linux/spi/lms283gf05.h +-header-test- += linux/spi/max7301.h +-header-test- += linux/spi/mcp23s08.h +-header-test- += linux/spi/rspi.h +-header-test- += linux/spi/s3c24xx.h +-header-test- += linux/spi/sh_msiof.h +-header-test- += linux/spi/spi-fsl-dspi.h +-header-test- += linux/spi/spi_bitbang.h +-header-test- += linux/spi/spi_gpio.h +-header-test- += linux/spi/xilinx_spi.h +-header-test- += linux/spinlock_api_smp.h +-header-test- += linux/spinlock_api_up.h +-header-test- += linux/spinlock_types.h +-header-test- += linux/splice.h +-header-test- += linux/sram.h +-header-test- += linux/srcutiny.h +-header-test- += linux/srcutree.h +-header-test- += linux/ssb/ssb_driver_chipcommon.h +-header-test- += linux/ssb/ssb_driver_extif.h +-header-test- += linux/ssb/ssb_driver_mips.h +-header-test- += linux/ssb/ssb_driver_pci.h +-header-test- += linux/ssbi.h +-header-test- += linux/stackdepot.h +-header-test- += linux/stmp3xxx_rtc_wdt.h +-header-test- += linux/string_helpers.h +-header-test- += linux/sungem_phy.h +-header-test- += linux/sunrpc/msg_prot.h +-header-test- += linux/sunrpc/rpc_pipe_fs.h +-header-test- += linux/sunrpc/xprtmultipath.h +-header-test- += linux/sunrpc/xprtsock.h +-header-test- += linux/sunxi-rsb.h +-header-test- += linux/svga.h +-header-test- += linux/sw842.h +-header-test- += linux/swapfile.h +-header-test- += linux/swapops.h +-header-test- += linux/swiotlb.h +-header-test- += linux/sysv_fs.h +-header-test- += linux/t10-pi.h +-header-test- += linux/task_io_accounting.h +-header-test- += linux/tick.h +-header-test- += linux/timb_dma.h +-header-test- += linux/timekeeping.h +-header-test- += linux/timekeeping32.h +-header-test- += linux/ts-nbus.h +-header-test- += linux/tsacct_kern.h +-header-test- += linux/tty_flip.h +-header-test- += linux/tty_ldisc.h +-header-test- += linux/ucb1400.h +-header-test- += linux/usb/association.h +-header-test- += linux/usb/cdc-wdm.h +-header-test- += linux/usb/cdc_ncm.h +-header-test- += linux/usb/ezusb.h +-header-test- += linux/usb/gadget_configfs.h +-header-test- += linux/usb/gpio_vbus.h +-header-test- += linux/usb/hcd.h +-header-test- += linux/usb/iowarrior.h +-header-test- += linux/usb/irda.h +-header-test- += linux/usb/isp116x.h +-header-test- += linux/usb/isp1362.h +-header-test- += linux/usb/musb.h +-header-test- += linux/usb/net2280.h +-header-test- += linux/usb/ohci_pdriver.h +-header-test- += linux/usb/otg-fsm.h +-header-test- += linux/usb/pd_ado.h +-header-test- += linux/usb/r8a66597.h +-header-test- += linux/usb/rndis_host.h +-header-test- += linux/usb/serial.h +-header-test- += linux/usb/sl811.h +-header-test- += linux/usb/storage.h +-header-test- += linux/usb/uas.h +-header-test- += linux/usb/usb338x.h +-header-test- += linux/usb/usbnet.h +-header-test- += linux/usb/wusb-wa.h +-header-test- += linux/usb/xhci-dbgp.h +-header-test- += linux/usb_usual.h +-header-test- += linux/user-return-notifier.h +-header-test- += linux/userfaultfd_k.h +-header-test- += linux/verification.h +-header-test- += linux/vgaarb.h +-header-test- += linux/via_core.h +-header-test- += linux/via_i2c.h +-header-test- += linux/virtio_byteorder.h +-header-test- += linux/virtio_ring.h +-header-test- += linux/visorbus.h +-header-test- += linux/vme.h +-header-test- += linux/vmstat.h +-header-test- += linux/vmw_vmci_api.h +-header-test- += linux/vmw_vmci_defs.h +-header-test- += linux/vringh.h +-header-test- += linux/vt_buffer.h +-header-test- += linux/zorro.h +-header-test- += linux/zpool.h +-header-test- += math-emu/double.h +-header-test- += math-emu/op-common.h +-header-test- += math-emu/quad.h +-header-test- += math-emu/single.h +-header-test- += math-emu/soft-fp.h +-header-test- += media/davinci/dm355_ccdc.h +-header-test- += media/davinci/dm644x_ccdc.h +-header-test- += media/davinci/isif.h +-header-test- += media/davinci/vpbe_osd.h +-header-test- += media/davinci/vpbe_types.h +-header-test- += media/davinci/vpif_types.h +-header-test- += media/demux.h +-header-test- += media/drv-intf/soc_mediabus.h +-header-test- += media/dvb_net.h +-header-test- += media/fwht-ctrls.h +-header-test- += media/i2c/ad9389b.h +-header-test- += media/i2c/adv7343.h +-header-test- += media/i2c/adv7511.h +-header-test- += media/i2c/adv7842.h +-header-test- += media/i2c/m5mols.h +-header-test- += media/i2c/mt9m032.h +-header-test- += media/i2c/mt9t112.h +-header-test- += media/i2c/mt9v032.h +-header-test- += media/i2c/ov2659.h +-header-test- += media/i2c/ov7670.h +-header-test- += media/i2c/rj54n1cb0c.h +-header-test- += media/i2c/saa6588.h +-header-test- += media/i2c/saa7115.h +-header-test- += media/i2c/sr030pc30.h +-header-test- += media/i2c/tc358743.h +-header-test- += media/i2c/tda1997x.h +-header-test- += media/i2c/ths7303.h +-header-test- += media/i2c/tvaudio.h +-header-test- += media/i2c/tvp514x.h +-header-test- += media/i2c/tvp7002.h +-header-test- += media/i2c/wm8775.h +-header-test- += media/imx.h +-header-test- += media/media-dev-allocator.h +-header-test- += media/mpeg2-ctrls.h +-header-test- += media/rcar-fcp.h +-header-test- += media/tuner-types.h +-header-test- += media/tveeprom.h +-header-test- += media/v4l2-flash-led-class.h +-header-test- += misc/altera.h +-header-test- += misc/cxl-base.h +-header-test- += misc/cxllib.h +-header-test- += net/9p/9p.h +-header-test- += net/9p/client.h +-header-test- += net/9p/transport.h +-header-test- += net/af_vsock.h +-header-test- += net/ax88796.h +-header-test- += net/bluetooth/hci.h +-header-test- += net/bluetooth/hci_core.h +-header-test- += net/bluetooth/hci_mon.h +-header-test- += net/bluetooth/hci_sock.h +-header-test- += net/bluetooth/l2cap.h +-header-test- += net/bluetooth/mgmt.h +-header-test- += net/bluetooth/rfcomm.h +-header-test- += net/bluetooth/sco.h +-header-test- += net/bond_options.h +-header-test- += net/caif/cfsrvl.h +-header-test- += net/codel_impl.h +-header-test- += net/codel_qdisc.h +-header-test- += net/compat.h +-header-test- += net/datalink.h +-header-test- += net/dcbevent.h +-header-test- += net/dcbnl.h +-header-test- += net/dn_dev.h +-header-test- += net/dn_fib.h +-header-test- += net/dn_neigh.h +-header-test- += net/dn_nsp.h +-header-test- += net/dn_route.h +-header-test- += net/erspan.h +-header-test- += net/esp.h +-header-test- += net/ethoc.h +-header-test- += net/firewire.h +-header-test- += net/flow_offload.h +-header-test- += net/fq.h +-header-test- += net/fq_impl.h +-header-test- += net/garp.h +-header-test- += net/gtp.h +-header-test- += net/gue.h +-header-test- += net/hwbm.h +-header-test- += net/ila.h +-header-test- += net/inet6_connection_sock.h +-header-test- += net/inet_common.h +-header-test- += net/inet_frag.h +-header-test- += net/ip6_route.h +-header-test- += net/ip_vs.h +-header-test- += net/ipcomp.h +-header-test- += net/ipconfig.h +-header-test- += net/iucv/af_iucv.h +-header-test- += net/iucv/iucv.h +-header-test- += net/lapb.h +-header-test- += net/llc_c_ac.h +-header-test- += net/llc_c_st.h +-header-test- += net/llc_s_ac.h +-header-test- += net/llc_s_ev.h +-header-test- += net/llc_s_st.h +-header-test- += net/mpls_iptunnel.h +-header-test- += net/mrp.h +-header-test- += net/ncsi.h +-header-test- += net/netevent.h +-header-test- += net/netns/can.h +-header-test- += net/netns/generic.h +-header-test- += net/netns/ieee802154_6lowpan.h +-header-test- += net/netns/ipv4.h +-header-test- += net/netns/ipv6.h +-header-test- += net/netns/mpls.h +-header-test- += net/netns/nftables.h +-header-test- += net/netns/sctp.h +-header-test- += net/netrom.h +-header-test- += net/p8022.h +-header-test- += net/phonet/pep.h +-header-test- += net/phonet/phonet.h +-header-test- += net/phonet/pn_dev.h +-header-test- += net/pptp.h +-header-test- += net/psample.h +-header-test- += net/psnap.h +-header-test- += net/regulatory.h +-header-test- += net/rose.h +-header-test- += net/sctp/auth.h +-header-test- += net/sctp/stream_interleave.h +-header-test- += net/sctp/stream_sched.h +-header-test- += net/sctp/tsnmap.h +-header-test- += net/sctp/ulpevent.h +-header-test- += net/sctp/ulpqueue.h +-header-test- += net/secure_seq.h +-header-test- += net/smc.h +-header-test- += net/stp.h +-header-test- += net/transp_v6.h +-header-test- += net/tun_proto.h +-header-test- += net/udplite.h +-header-test- += net/xdp.h +-header-test- += net/xdp_priv.h +-header-test- += pcmcia/cistpl.h +-header-test- += pcmcia/ds.h +-header-test- += rdma/tid_rdma_defs.h +-header-test- += scsi/fc/fc_encaps.h +-header-test- += scsi/fc/fc_fc2.h +-header-test- += scsi/fc/fc_fcoe.h +-header-test- += scsi/fc/fc_fip.h +-header-test- += scsi/fc_encode.h +-header-test- += scsi/fc_frame.h +-header-test- += scsi/iser.h +-header-test- += scsi/libfc.h +-header-test- += scsi/libfcoe.h +-header-test- += scsi/libsas.h +-header-test- += scsi/sas_ata.h +-header-test- += scsi/scsi_cmnd.h +-header-test- += scsi/scsi_dbg.h +-header-test- += scsi/scsi_device.h +-header-test- += scsi/scsi_dh.h +-header-test- += scsi/scsi_eh.h +-header-test- += scsi/scsi_host.h +-header-test- += scsi/scsi_ioctl.h +-header-test- += scsi/scsi_request.h +-header-test- += scsi/scsi_tcq.h +-header-test- += scsi/scsi_transport.h +-header-test- += scsi/scsi_transport_fc.h +-header-test- += scsi/scsi_transport_sas.h +-header-test- += scsi/scsi_transport_spi.h +-header-test- += scsi/scsi_transport_srp.h +-header-test- += scsi/scsicam.h +-header-test- += scsi/sg.h +-header-test- += soc/arc/aux.h +-header-test- += soc/arc/mcip.h +-header-test- += soc/arc/timers.h +-header-test- += soc/brcmstb/common.h +-header-test- += soc/fsl/bman.h +-header-test- += soc/fsl/qe/qe.h +-header-test- += soc/fsl/qe/qe_ic.h +-header-test- += soc/fsl/qe/qe_tdm.h +-header-test- += soc/fsl/qe/ucc.h +-header-test- += soc/fsl/qe/ucc_fast.h +-header-test- += soc/fsl/qe/ucc_slow.h +-header-test- += soc/fsl/qman.h +-header-test- += soc/nps/common.h +-header-test-$(CONFIG_ARC) += soc/nps/mtm.h +-header-test- += soc/qcom/cmd-db.h +-header-test- += soc/qcom/rpmh.h +-header-test- += soc/qcom/tcs.h +-header-test- += soc/tegra/ahb.h +-header-test- += soc/tegra/bpmp-abi.h +-header-test- += soc/tegra/common.h +-header-test- += soc/tegra/flowctrl.h +-header-test- += soc/tegra/fuse.h +-header-test- += soc/tegra/mc.h +-header-test- += sound/ac97/compat.h +-header-test- += sound/aci.h +-header-test- += sound/ad1843.h +-header-test- += sound/adau1373.h +-header-test- += sound/ak4113.h +-header-test- += sound/ak4114.h +-header-test- += sound/ak4117.h +-header-test- += sound/cs35l33.h +-header-test- += sound/cs35l34.h +-header-test- += sound/cs35l35.h +-header-test- += sound/cs35l36.h +-header-test- += sound/cs4271.h +-header-test- += sound/cs42l52.h +-header-test- += sound/cs8427.h +-header-test- += sound/da7218.h +-header-test- += sound/da7219-aad.h +-header-test- += sound/da7219.h +-header-test- += sound/da9055.h +-header-test- += sound/emu8000.h +-header-test- += sound/emux_synth.h +-header-test- += sound/hda_component.h +-header-test- += sound/hda_hwdep.h +-header-test- += sound/hda_i915.h +-header-test- += sound/hwdep.h +-header-test- += sound/i2c.h +-header-test- += sound/l3.h +-header-test- += sound/max98088.h +-header-test- += sound/max98095.h +-header-test- += sound/mixer_oss.h +-header-test- += sound/omap-hdmi-audio.h +-header-test- += sound/pcm_drm_eld.h +-header-test- += sound/pcm_iec958.h +-header-test- += sound/pcm_oss.h +-header-test- += sound/pxa2xx-lib.h +-header-test- += sound/rt286.h +-header-test- += sound/rt298.h +-header-test- += sound/rt5645.h +-header-test- += sound/rt5659.h +-header-test- += sound/rt5660.h +-header-test- += sound/rt5665.h +-header-test- += sound/rt5670.h +-header-test- += sound/s3c24xx_uda134x.h +-header-test- += sound/seq_device.h +-header-test- += sound/seq_kernel.h +-header-test- += sound/seq_midi_emul.h +-header-test- += sound/seq_oss.h +-header-test- += sound/soc-acpi-intel-match.h +-header-test- += sound/soc-dai.h +-header-test- += sound/soc-dapm.h +-header-test- += sound/soc-dpcm.h +-header-test- += sound/sof/control.h +-header-test- += sound/sof/dai-intel.h +-header-test- += sound/sof/dai.h +-header-test- += sound/sof/header.h +-header-test- += sound/sof/info.h +-header-test- += sound/sof/pm.h +-header-test- += sound/sof/stream.h +-header-test- += sound/sof/topology.h +-header-test- += sound/sof/trace.h +-header-test- += sound/sof/xtensa.h +-header-test- += sound/spear_spdif.h +-header-test- += sound/sta32x.h +-header-test- += sound/sta350.h +-header-test- += sound/tea6330t.h +-header-test- += sound/tlv320aic32x4.h +-header-test- += sound/tlv320dac33-plat.h +-header-test- += sound/uda134x.h +-header-test- += sound/wavefront.h +-header-test- += sound/wm8903.h +-header-test- += sound/wm8904.h +-header-test- += sound/wm8960.h +-header-test- += sound/wm8962.h +-header-test- += sound/wm8993.h +-header-test- += sound/wm8996.h +-header-test- += sound/wm9081.h +-header-test- += sound/wm9090.h +-header-test- += target/iscsi/iscsi_target_stat.h +-header-test- += trace/bpf_probe.h +-header-test- += trace/events/9p.h +-header-test- += trace/events/afs.h +-header-test- += trace/events/asoc.h +-header-test- += trace/events/bcache.h +-header-test- += trace/events/block.h +-header-test- += trace/events/cachefiles.h +-header-test- += trace/events/cgroup.h +-header-test- += trace/events/clk.h +-header-test- += trace/events/cma.h +-header-test- += trace/events/ext4.h +-header-test- += trace/events/f2fs.h +-header-test- += trace/events/fs_dax.h +-header-test- += trace/events/fscache.h +-header-test- += trace/events/fsi.h +-header-test- += trace/events/fsi_master_ast_cf.h +-header-test- += trace/events/fsi_master_gpio.h +-header-test- += trace/events/huge_memory.h +-header-test- += trace/events/ib_mad.h +-header-test- += trace/events/ib_umad.h +-header-test- += trace/events/iscsi.h +-header-test- += trace/events/jbd2.h +-header-test- += trace/events/kvm.h +-header-test- += trace/events/kyber.h +-header-test- += trace/events/libata.h +-header-test- += trace/events/mce.h +-header-test- += trace/events/mdio.h +-header-test- += trace/events/migrate.h +-header-test- += trace/events/mmflags.h +-header-test- += trace/events/nbd.h +-header-test- += trace/events/nilfs2.h +-header-test- += trace/events/pwc.h +-header-test- += trace/events/rdma.h +-header-test- += trace/events/rpcgss.h +-header-test- += trace/events/rpcrdma.h +-header-test- += trace/events/rxrpc.h +-header-test- += trace/events/scsi.h +-header-test- += trace/events/siox.h +-header-test- += trace/events/spi.h +-header-test- += trace/events/swiotlb.h +-header-test- += trace/events/syscalls.h +-header-test- += trace/events/target.h +-header-test- += trace/events/thermal_power_allocator.h +-header-test- += trace/events/timer.h +-header-test- += trace/events/wbt.h +-header-test- += trace/events/xen.h +-header-test- += trace/perf.h +-header-test- += trace/trace_events.h +-header-test- += uapi/drm/vmwgfx_drm.h +-header-test- += uapi/linux/a.out.h +-header-test- += uapi/linux/coda.h +-header-test- += uapi/linux/coda_psdev.h +-header-test- += uapi/linux/errqueue.h +-header-test- += uapi/linux/eventpoll.h +-header-test- += uapi/linux/hdlc/ioctl.h +-header-test- += uapi/linux/input.h +-header-test- += uapi/linux/kvm.h +-header-test- += uapi/linux/kvm_para.h +-header-test- += uapi/linux/lightnvm.h +-header-test- += uapi/linux/mic_common.h +-header-test- += uapi/linux/mman.h +-header-test- += uapi/linux/nilfs2_ondisk.h +-header-test- += uapi/linux/patchkey.h +-header-test- += uapi/linux/ptrace.h +-header-test- += uapi/linux/scc.h +-header-test- += uapi/linux/seg6_iptunnel.h +-header-test- += uapi/linux/smc_diag.h +-header-test- += uapi/linux/timex.h +-header-test- += uapi/linux/videodev2.h +-header-test- += uapi/scsi/scsi_bsg_fc.h +-header-test- += uapi/sound/asound.h +-header-test- += uapi/sound/sof/eq.h +-header-test- += uapi/sound/sof/fw.h +-header-test- += uapi/sound/sof/header.h +-header-test- += uapi/sound/sof/manifest.h +-header-test- += uapi/sound/sof/trace.h +-header-test- += uapi/xen/evtchn.h +-header-test- += uapi/xen/gntdev.h +-header-test- += uapi/xen/privcmd.h +-header-test- += vdso/vsyscall.h +-header-test- += video/broadsheetfb.h +-header-test- += video/cvisionppc.h +-header-test- += video/gbe.h +-header-test- += video/kyro.h +-header-test- += video/maxinefb.h +-header-test- += video/metronomefb.h +-header-test- += video/neomagic.h +-header-test- += video/of_display_timing.h +-header-test- += video/omapvrfb.h +-header-test- += video/s1d13xxxfb.h +-header-test- += video/sstfb.h +-header-test- += video/tgafb.h +-header-test- += video/udlfb.h +-header-test- += video/uvesafb.h +-header-test- += video/vga.h +-header-test- += video/w100fb.h +-header-test- += xen/acpi.h +-header-test- += xen/arm/hypercall.h +-header-test- += xen/arm/page-coherent.h +-header-test- += xen/arm/page.h +-header-test- += xen/balloon.h +-header-test- += xen/events.h +-header-test- += xen/features.h +-header-test- += xen/grant_table.h +-header-test- += xen/hvm.h +-header-test- += xen/interface/callback.h +-header-test- += xen/interface/event_channel.h +-header-test- += xen/interface/grant_table.h +-header-test- += xen/interface/hvm/dm_op.h +-header-test- += xen/interface/hvm/hvm_op.h +-header-test- += xen/interface/hvm/hvm_vcpu.h +-header-test- += xen/interface/hvm/params.h +-header-test- += xen/interface/hvm/start_info.h +-header-test- += xen/interface/io/9pfs.h +-header-test- += xen/interface/io/blkif.h +-header-test- += xen/interface/io/console.h +-header-test- += xen/interface/io/displif.h +-header-test- += xen/interface/io/fbif.h +-header-test- += xen/interface/io/kbdif.h +-header-test- += xen/interface/io/netif.h +-header-test- += xen/interface/io/pciif.h +-header-test- += xen/interface/io/protocols.h +-header-test- += xen/interface/io/pvcalls.h +-header-test- += xen/interface/io/ring.h +-header-test- += xen/interface/io/sndif.h +-header-test- += xen/interface/io/tpmif.h +-header-test- += xen/interface/io/vscsiif.h +-header-test- += xen/interface/io/xs_wire.h +-header-test- += xen/interface/memory.h +-header-test- += xen/interface/nmi.h +-header-test- += xen/interface/physdev.h +-header-test- += xen/interface/platform.h +-header-test- += xen/interface/sched.h +-header-test- += xen/interface/vcpu.h +-header-test- += xen/interface/version.h +-header-test- += xen/interface/xen-mca.h +-header-test- += xen/interface/xen.h +-header-test- += xen/interface/xenpmu.h +-header-test- += xen/mem-reservation.h +-header-test- += xen/page.h +-header-test- += xen/platform_pci.h +-header-test- += xen/swiotlb-xen.h +-header-test- += xen/xen-front-pgdir-shbuf.h +-header-test- += xen/xen-ops.h +-header-test- += xen/xen.h +-header-test- += xen/xenbus.h +- +-# Do not include directly +-header-test- += linux/compiler-clang.h +-header-test- += linux/compiler-gcc.h +-header-test- += linux/patchkey.h +-header-test- += linux/rwlock_api_smp.h +-header-test- += linux/spinlock_types_up.h +-header-test- += linux/spinlock_up.h +-header-test- += linux/wimax/debug.h +-header-test- += rdma/uverbs_named_ioctl.h +- +-# asm-generic/*.h is used by asm/*.h, and should not be included directly +-header-test- += asm-generic/% uapi/asm-generic/% +- +-# Timestamp files touched by Kconfig +-header-test- += config/% +- +-# Timestamp files touched by scripts/adjust_autoksyms.sh +-header-test- += ksym/% +- +-# You could compile-test these, but maybe not so useful... +-header-test- += dt-bindings/% +- +-# Do not test generated headers. Stale headers are often left over when you +-# traverse the git history without cleaning. +-header-test- += generated/% +- +-# The rest are compile-tested +-header-test-pattern-y += */*.h */*/*.h */*/*/*.h */*/*/*/*.h +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -105,29 +105,9 @@ config COMPILE_TEST + here. If you are a user/distributor, say N here to exclude useless + drivers to be distributed. + +-config HEADER_TEST +- bool "Compile test headers that should be standalone compilable" +- help +- Compile test headers listed in header-test-y target to ensure they are +- self-contained, i.e. compilable as standalone units. +- +- If you are a developer or tester and want to ensure the requested +- headers are self-contained, say Y here. Otherwise, choose N. +- +-config KERNEL_HEADER_TEST +- bool "Compile test kernel headers" +- depends on HEADER_TEST +- help +- Headers in include/ are used to build external moduls. +- Compile test them to ensure they are self-contained, i.e. +- compilable as standalone units. +- +- If you are a developer or tester and want to ensure the headers +- in include/ are self-contained, say Y here. Otherwise, choose N. +- + config UAPI_HEADER_TEST + bool "Compile test UAPI headers" +- depends on HEADER_TEST && HEADERS_INSTALL && CC_CAN_LINK ++ depends on HEADERS_INSTALL && CC_CAN_LINK + help + Compile test headers exported to user-space to ensure they are + self-contained, i.e. compilable as standalone units. +--- a/scripts/Makefile.build ++++ b/scripts/Makefile.build +@@ -283,15 +283,6 @@ quiet_cmd_cc_lst_c = MKLST $@ + $(obj)/%.lst: $(src)/%.c FORCE + $(call if_changed_dep,cc_lst_c) + +-# header test (header-test-y, header-test-m target) +-# --------------------------------------------------------------------------- +- +-quiet_cmd_cc_s_h = CC $@ +- cmd_cc_s_h = $(CC) $(c_flags) -S -o $@ -x c /dev/null -include $< +- +-$(obj)/%.h.s: $(src)/%.h FORCE +- $(call if_changed_dep,cc_s_h) +- + # Compile assembler sources (.S) + # --------------------------------------------------------------------------- + +--- a/scripts/Makefile.lib ++++ b/scripts/Makefile.lib +@@ -65,20 +65,6 @@ extra-y += $(patsubst %.dtb,%.dt.yaml, $ + extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-)) + endif + +-# Test self-contained headers +- +-# Wildcard searches in $(srctree)/$(src)/, but not in $(objtree)/$(obj)/. +-# Stale generated headers are often left over, so pattern matching should +-# be avoided. Please notice $(srctree)/$(src)/ and $(objtree)/$(obj) point +-# to the same location for in-tree building. So, header-test-pattern-y should +-# be used with care. +-header-test-y += $(filter-out $(header-test-), \ +- $(patsubst $(srctree)/$(src)/%, %, \ +- $(wildcard $(addprefix $(srctree)/$(src)/, \ +- $(header-test-pattern-y))))) +- +-extra-$(CONFIG_HEADER_TEST) += $(addsuffix .s, $(header-test-y) $(header-test-m)) +- + # Add subdir path + + extra-y := $(addprefix $(obj)/,$(extra-y)) +--- a/usr/include/Makefile ++++ b/usr/include/Makefile +@@ -99,9 +99,13 @@ endif + # asm-generic/*.h is used by asm/*.h, and should not be included directly + header-test- += asm-generic/% + +-# The rest are compile-tested +-header-test-y += $(filter-out $(header-test-), \ +- $(patsubst $(obj)/%,%, $(wildcard \ +- $(addprefix $(obj)/, *.h */*.h */*/*.h */*/*/*.h)))) ++extra-y := $(patsubst %.h,%.hdrtest, $(filter-out $(header-test-), \ ++ $(patsubst $(obj)/%,%, $(shell find $(obj) -name '*.h')))) ++ ++quiet_cmd_hdrtest = HDRTEST $< ++ cmd_hdrtest = $(CC) $(c_flags) -S -o /dev/null -x c /dev/null -include $<; touch $@ ++ ++$(obj)/%.hdrtest: $(obj)/%.h FORCE ++ $(call if_changed_dep,hdrtest) + + clean-files += $(filter-out Makefile, $(notdir $(wildcard $(obj)/*))) diff --git a/queue-5.4/kbuild-remove-unneeded-variable-single-all.patch b/queue-5.4/kbuild-remove-unneeded-variable-single-all.patch new file mode 100644 index 00000000000..dd672a8d5b7 --- /dev/null +++ b/queue-5.4/kbuild-remove-unneeded-variable-single-all.patch @@ -0,0 +1,35 @@ +From 35e046a203ee3bc8ba9ae3561b50de02646dfb81 Mon Sep 17 00:00:00 2001 +From: Masahiro Yamada +Date: Wed, 16 Oct 2019 14:12:15 +0900 +Subject: kbuild: remove unneeded variable, single-all + +From: Masahiro Yamada + +commit 35e046a203ee3bc8ba9ae3561b50de02646dfb81 upstream. + +When single-build is set, everything in $(MAKECMDGOALS) is a single +target. You can use $(MAKECMDGOALS) to list out the single targets. + +Signed-off-by: Masahiro Yamada +Signed-off-by: Greg Kroah-Hartman + +--- + Makefile | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/Makefile ++++ b/Makefile +@@ -1761,11 +1761,9 @@ tools/%: FORCE + + ifdef single-build + +-single-all := $(filter $(single-targets), $(MAKECMDGOALS)) +- + # .ko is special because modpost is needed +-single-ko := $(sort $(filter %.ko, $(single-all))) +-single-no-ko := $(sort $(patsubst %.ko,%.mod, $(single-all))) ++single-ko := $(sort $(filter %.ko, $(MAKECMDGOALS))) ++single-no-ko := $(sort $(patsubst %.ko,%.mod, $(MAKECMDGOALS))) + + $(single-ko): single_modpost + @: diff --git a/queue-5.4/kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch b/queue-5.4/kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch new file mode 100644 index 00000000000..8352e4dc309 --- /dev/null +++ b/queue-5.4/kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch @@ -0,0 +1,77 @@ +From fcfbc617547fc6d9552cb6c1c563b6a90ee98085 Mon Sep 17 00:00:00 2001 +From: Sean Christopherson +Date: Thu, 9 Jan 2020 15:56:18 -0800 +Subject: KVM: Check for a bad hva before dropping into the ghc slow path + +From: Sean Christopherson + +commit fcfbc617547fc6d9552cb6c1c563b6a90ee98085 upstream. + +When reading/writing using the guest/host cache, check for a bad hva +before checking for a NULL memslot, which triggers the slow path for +handing cross-page accesses. Because the memslot is nullified on error +by __kvm_gfn_to_hva_cache_init(), if the bad hva is encountered after +crossing into a new page, then the kvm_{read,write}_guest() slow path +could potentially write/access the first chunk prior to detecting the +bad hva. + +Arguably, performing a partial access is semantically correct from an +architectural perspective, but that behavior is certainly not intended. +In the original implementation, memslot was not explicitly nullified +and therefore the partial access behavior varied based on whether the +memslot itself was null, or if the hva was simply bad. The current +behavior was introduced as a seemingly unintentional side effect in +commit f1b9dd5eb86c ("kvm: Disallow wraparound in +kvm_gfn_to_hva_cache_init"), which justified the change with "since some +callers don't check the return code from this function, it sit seems +prudent to clear ghc->memslot in the event of an error". + +Regardless of intent, the partial access is dependent on _not_ checking +the result of the cache initialization, which is arguably a bug in its +own right, at best simply weird. + +Fixes: 8f964525a121 ("KVM: Allow cross page reads and writes from cached translations.") +Cc: Jim Mattson +Cc: Andrew Honig +Signed-off-by: Sean Christopherson +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + virt/kvm/kvm_main.c | 12 ++++++------ + 1 file changed, 6 insertions(+), 6 deletions(-) + +--- a/virt/kvm/kvm_main.c ++++ b/virt/kvm/kvm_main.c +@@ -2275,12 +2275,12 @@ int kvm_write_guest_offset_cached(struct + if (slots->generation != ghc->generation) + __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); + +- if (unlikely(!ghc->memslot)) +- return kvm_write_guest(kvm, gpa, data, len); +- + if (kvm_is_error_hva(ghc->hva)) + return -EFAULT; + ++ if (unlikely(!ghc->memslot)) ++ return kvm_write_guest(kvm, gpa, data, len); ++ + r = __copy_to_user((void __user *)ghc->hva + offset, data, len); + if (r) + return -EFAULT; +@@ -2308,12 +2308,12 @@ int kvm_read_guest_cached(struct kvm *kv + if (slots->generation != ghc->generation) + __kvm_gfn_to_hva_cache_init(slots, ghc, ghc->gpa, ghc->len); + +- if (unlikely(!ghc->memslot)) +- return kvm_read_guest(kvm, ghc->gpa, data, len); +- + if (kvm_is_error_hva(ghc->hva)) + return -EFAULT; + ++ if (unlikely(!ghc->memslot)) ++ return kvm_read_guest(kvm, ghc->gpa, data, len); ++ + r = __copy_from_user(data, (void __user *)ghc->hva, len); + if (r) + return -EFAULT; diff --git a/queue-5.4/kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch b/queue-5.4/kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch new file mode 100644 index 00000000000..0201cb16d73 --- /dev/null +++ b/queue-5.4/kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch @@ -0,0 +1,89 @@ +From 52918ed5fcf05d97d257f4131e19479da18f5d16 Mon Sep 17 00:00:00 2001 +From: Tom Lendacky +Date: Thu, 9 Jan 2020 17:42:16 -0600 +Subject: KVM: SVM: Override default MMIO mask if memory encryption is enabled + +From: Tom Lendacky + +commit 52918ed5fcf05d97d257f4131e19479da18f5d16 upstream. + +The KVM MMIO support uses bit 51 as the reserved bit to cause nested page +faults when a guest performs MMIO. The AMD memory encryption support uses +a CPUID function to define the encryption bit position. Given this, it is +possible that these bits can conflict. + +Use svm_hardware_setup() to override the MMIO mask if memory encryption +support is enabled. Various checks are performed to ensure that the mask +is properly defined and rsvd_bits() is used to generate the new mask (as +was done prior to the change that necessitated this patch). + +Fixes: 28a1f3ac1d0c ("kvm: x86: Set highest physical address bits in non-present/reserved SPTEs") +Suggested-by: Sean Christopherson +Reviewed-by: Sean Christopherson +Signed-off-by: Tom Lendacky +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/svm.c | 43 +++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 43 insertions(+) + +--- a/arch/x86/kvm/svm.c ++++ b/arch/x86/kvm/svm.c +@@ -1298,6 +1298,47 @@ static void shrink_ple_window(struct kvm + } + } + ++/* ++ * The default MMIO mask is a single bit (excluding the present bit), ++ * which could conflict with the memory encryption bit. Check for ++ * memory encryption support and override the default MMIO mask if ++ * memory encryption is enabled. ++ */ ++static __init void svm_adjust_mmio_mask(void) ++{ ++ unsigned int enc_bit, mask_bit; ++ u64 msr, mask; ++ ++ /* If there is no memory encryption support, use existing mask */ ++ if (cpuid_eax(0x80000000) < 0x8000001f) ++ return; ++ ++ /* If memory encryption is not enabled, use existing mask */ ++ rdmsrl(MSR_K8_SYSCFG, msr); ++ if (!(msr & MSR_K8_SYSCFG_MEM_ENCRYPT)) ++ return; ++ ++ enc_bit = cpuid_ebx(0x8000001f) & 0x3f; ++ mask_bit = boot_cpu_data.x86_phys_bits; ++ ++ /* Increment the mask bit if it is the same as the encryption bit */ ++ if (enc_bit == mask_bit) ++ mask_bit++; ++ ++ /* ++ * If the mask bit location is below 52, then some bits above the ++ * physical addressing limit will always be reserved, so use the ++ * rsvd_bits() function to generate the mask. This mask, along with ++ * the present bit, will be used to generate a page fault with ++ * PFER.RSV = 1. ++ * ++ * If the mask bit location is 52 (or above), then clear the mask. ++ */ ++ mask = (mask_bit < 52) ? rsvd_bits(mask_bit, 51) | PT_PRESENT_MASK : 0; ++ ++ kvm_mmu_set_mmio_spte_mask(mask, mask, PT_WRITABLE_MASK | PT_USER_MASK); ++} ++ + static __init int svm_hardware_setup(void) + { + int cpu; +@@ -1352,6 +1393,8 @@ static __init int svm_hardware_setup(voi + } + } + ++ svm_adjust_mmio_mask(); ++ + for_each_possible_cpu(cpu) { + r = svm_cpu_init(cpu); + if (r) diff --git a/queue-5.4/mwifiex-delete-unused-mwifiex_get_intf_num.patch b/queue-5.4/mwifiex-delete-unused-mwifiex_get_intf_num.patch new file mode 100644 index 00000000000..47ec61c2428 --- /dev/null +++ b/queue-5.4/mwifiex-delete-unused-mwifiex_get_intf_num.patch @@ -0,0 +1,47 @@ +From 1c9f329b084b7b8ea6d60d91a202e884cdcf6aae Mon Sep 17 00:00:00 2001 +From: Brian Norris +Date: Mon, 9 Dec 2019 16:39:11 -0800 +Subject: mwifiex: delete unused mwifiex_get_intf_num() + +From: Brian Norris + +commit 1c9f329b084b7b8ea6d60d91a202e884cdcf6aae upstream. + +Commit 7afb94da3cd8 ("mwifiex: update set_mac_address logic") fixed the +only user of this function, partly because the author seems to have +noticed that, as written, it's on the borderline between highly +misleading and buggy. + +Anyway, no sense in keeping dead code around: let's drop it. + +Fixes: 7afb94da3cd8 ("mwifiex: update set_mac_address logic") +Signed-off-by: Brian Norris +Signed-off-by: Kalle Valo +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/marvell/mwifiex/main.h | 13 ------------- + 1 file changed, 13 deletions(-) + +--- a/drivers/net/wireless/marvell/mwifiex/main.h ++++ b/drivers/net/wireless/marvell/mwifiex/main.h +@@ -1295,19 +1295,6 @@ mwifiex_copy_rates(u8 *dest, u32 pos, u8 + return pos; + } + +-/* This function return interface number with the same bss_type. +- */ +-static inline u8 +-mwifiex_get_intf_num(struct mwifiex_adapter *adapter, u8 bss_type) +-{ +- u8 i, num = 0; +- +- for (i = 0; i < adapter->priv_num; i++) +- if (adapter->priv[i] && adapter->priv[i]->bss_type == bss_type) +- num++; +- return num; +-} +- + /* + * This function returns the correct private structure pointer based + * upon the BSS type and BSS number. diff --git a/queue-5.4/mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch b/queue-5.4/mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch new file mode 100644 index 00000000000..fdc09301a0c --- /dev/null +++ b/queue-5.4/mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch @@ -0,0 +1,225 @@ +From 70e5b8f445fd27fde0c5583460e82539a7242424 Mon Sep 17 00:00:00 2001 +From: Brian Norris +Date: Fri, 6 Dec 2019 11:45:35 -0800 +Subject: mwifiex: drop most magic numbers from mwifiex_process_tdls_action_frame() + +From: Brian Norris + +commit 70e5b8f445fd27fde0c5583460e82539a7242424 upstream. + +Before commit 1e58252e334d ("mwifiex: Fix heap overflow in +mmwifiex_process_tdls_action_frame()"), +mwifiex_process_tdls_action_frame() already had too many magic numbers. +But this commit just added a ton more, in the name of checking for +buffer overflows. That seems like a really bad idea. + +Let's make these magic numbers a little less magic, by +(a) factoring out 'pos[1]' as 'ie_len' +(b) using 'sizeof' on the appropriate source or destination fields where + possible, instead of bare numbers +(c) dropping redundant checks, per below. + +Regarding redundant checks: the beginning of the loop has this: + + if (pos + 2 + pos[1] > end) + break; + +but then individual 'case's include stuff like this: + + if (pos > end - 3) + return; + if (pos[1] != 1) + return; + +Note that the second 'return' (validating the length, pos[1]) combined +with the above condition (ensuring 'pos + 2 + length' doesn't exceed +'end'), makes the first 'return' (whose 'if' can be reworded as 'pos > +end - pos[1] - 2') redundant. Rather than unwind the magic numbers +there, just drop those conditions. + +Fixes: 1e58252e334d ("mwifiex: Fix heap overflow in mmwifiex_process_tdls_action_frame()") +Signed-off-by: Brian Norris +Signed-off-by: Kalle Valo +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/net/wireless/marvell/mwifiex/tdls.c | 75 ++++++++++------------------ + 1 file changed, 28 insertions(+), 47 deletions(-) + +--- a/drivers/net/wireless/marvell/mwifiex/tdls.c ++++ b/drivers/net/wireless/marvell/mwifiex/tdls.c +@@ -894,7 +894,7 @@ void mwifiex_process_tdls_action_frame(s + u8 *peer, *pos, *end; + u8 i, action, basic; + u16 cap = 0; +- int ie_len = 0; ++ int ies_len = 0; + + if (len < (sizeof(struct ethhdr) + 3)) + return; +@@ -916,7 +916,7 @@ void mwifiex_process_tdls_action_frame(s + pos = buf + sizeof(struct ethhdr) + 4; + /* payload 1+ category 1 + action 1 + dialog 1 */ + cap = get_unaligned_le16(pos); +- ie_len = len - sizeof(struct ethhdr) - TDLS_REQ_FIX_LEN; ++ ies_len = len - sizeof(struct ethhdr) - TDLS_REQ_FIX_LEN; + pos += 2; + break; + +@@ -926,7 +926,7 @@ void mwifiex_process_tdls_action_frame(s + /* payload 1+ category 1 + action 1 + dialog 1 + status code 2*/ + pos = buf + sizeof(struct ethhdr) + 6; + cap = get_unaligned_le16(pos); +- ie_len = len - sizeof(struct ethhdr) - TDLS_RESP_FIX_LEN; ++ ies_len = len - sizeof(struct ethhdr) - TDLS_RESP_FIX_LEN; + pos += 2; + break; + +@@ -934,7 +934,7 @@ void mwifiex_process_tdls_action_frame(s + if (len < (sizeof(struct ethhdr) + TDLS_CONFIRM_FIX_LEN)) + return; + pos = buf + sizeof(struct ethhdr) + TDLS_CONFIRM_FIX_LEN; +- ie_len = len - sizeof(struct ethhdr) - TDLS_CONFIRM_FIX_LEN; ++ ies_len = len - sizeof(struct ethhdr) - TDLS_CONFIRM_FIX_LEN; + break; + default: + mwifiex_dbg(priv->adapter, ERROR, "Unknown TDLS frame type.\n"); +@@ -947,33 +947,33 @@ void mwifiex_process_tdls_action_frame(s + + sta_ptr->tdls_cap.capab = cpu_to_le16(cap); + +- for (end = pos + ie_len; pos + 1 < end; pos += 2 + pos[1]) { +- if (pos + 2 + pos[1] > end) ++ for (end = pos + ies_len; pos + 1 < end; pos += 2 + pos[1]) { ++ u8 ie_len = pos[1]; ++ ++ if (pos + 2 + ie_len > end) + break; + + switch (*pos) { + case WLAN_EID_SUPP_RATES: +- if (pos[1] > 32) ++ if (ie_len > sizeof(sta_ptr->tdls_cap.rates)) + return; +- sta_ptr->tdls_cap.rates_len = pos[1]; +- for (i = 0; i < pos[1]; i++) ++ sta_ptr->tdls_cap.rates_len = ie_len; ++ for (i = 0; i < ie_len; i++) + sta_ptr->tdls_cap.rates[i] = pos[i + 2]; + break; + + case WLAN_EID_EXT_SUPP_RATES: +- if (pos[1] > 32) ++ if (ie_len > sizeof(sta_ptr->tdls_cap.rates)) + return; + basic = sta_ptr->tdls_cap.rates_len; +- if (pos[1] > 32 - basic) ++ if (ie_len > sizeof(sta_ptr->tdls_cap.rates) - basic) + return; +- for (i = 0; i < pos[1]; i++) ++ for (i = 0; i < ie_len; i++) + sta_ptr->tdls_cap.rates[basic + i] = pos[i + 2]; +- sta_ptr->tdls_cap.rates_len += pos[1]; ++ sta_ptr->tdls_cap.rates_len += ie_len; + break; + case WLAN_EID_HT_CAPABILITY: +- if (pos > end - sizeof(struct ieee80211_ht_cap) - 2) +- return; +- if (pos[1] != sizeof(struct ieee80211_ht_cap)) ++ if (ie_len != sizeof(struct ieee80211_ht_cap)) + return; + /* copy the ie's value into ht_capb*/ + memcpy((u8 *)&sta_ptr->tdls_cap.ht_capb, pos + 2, +@@ -981,59 +981,45 @@ void mwifiex_process_tdls_action_frame(s + sta_ptr->is_11n_enabled = 1; + break; + case WLAN_EID_HT_OPERATION: +- if (pos > end - +- sizeof(struct ieee80211_ht_operation) - 2) +- return; +- if (pos[1] != sizeof(struct ieee80211_ht_operation)) ++ if (ie_len != sizeof(struct ieee80211_ht_operation)) + return; + /* copy the ie's value into ht_oper*/ + memcpy(&sta_ptr->tdls_cap.ht_oper, pos + 2, + sizeof(struct ieee80211_ht_operation)); + break; + case WLAN_EID_BSS_COEX_2040: +- if (pos > end - 3) +- return; +- if (pos[1] != 1) ++ if (ie_len != sizeof(pos[2])) + return; + sta_ptr->tdls_cap.coex_2040 = pos[2]; + break; + case WLAN_EID_EXT_CAPABILITY: +- if (pos > end - sizeof(struct ieee_types_header)) +- return; +- if (pos[1] < sizeof(struct ieee_types_header)) ++ if (ie_len < sizeof(struct ieee_types_header)) + return; +- if (pos[1] > 8) ++ if (ie_len > 8) + return; + memcpy((u8 *)&sta_ptr->tdls_cap.extcap, pos, + sizeof(struct ieee_types_header) + +- min_t(u8, pos[1], 8)); ++ min_t(u8, ie_len, 8)); + break; + case WLAN_EID_RSN: +- if (pos > end - sizeof(struct ieee_types_header)) ++ if (ie_len < sizeof(struct ieee_types_header)) + return; +- if (pos[1] < sizeof(struct ieee_types_header)) +- return; +- if (pos[1] > IEEE_MAX_IE_SIZE - ++ if (ie_len > IEEE_MAX_IE_SIZE - + sizeof(struct ieee_types_header)) + return; + memcpy((u8 *)&sta_ptr->tdls_cap.rsn_ie, pos, + sizeof(struct ieee_types_header) + +- min_t(u8, pos[1], IEEE_MAX_IE_SIZE - ++ min_t(u8, ie_len, IEEE_MAX_IE_SIZE - + sizeof(struct ieee_types_header))); + break; + case WLAN_EID_QOS_CAPA: +- if (pos > end - 3) +- return; +- if (pos[1] != 1) ++ if (ie_len != sizeof(pos[2])) + return; + sta_ptr->tdls_cap.qos_info = pos[2]; + break; + case WLAN_EID_VHT_OPERATION: + if (priv->adapter->is_hw_11ac_capable) { +- if (pos > end - +- sizeof(struct ieee80211_vht_operation) - 2) +- return; +- if (pos[1] != ++ if (ie_len != + sizeof(struct ieee80211_vht_operation)) + return; + /* copy the ie's value into vhtoper*/ +@@ -1043,10 +1029,7 @@ void mwifiex_process_tdls_action_frame(s + break; + case WLAN_EID_VHT_CAPABILITY: + if (priv->adapter->is_hw_11ac_capable) { +- if (pos > end - +- sizeof(struct ieee80211_vht_cap) - 2) +- return; +- if (pos[1] != sizeof(struct ieee80211_vht_cap)) ++ if (ie_len != sizeof(struct ieee80211_vht_cap)) + return; + /* copy the ie's value into vhtcap*/ + memcpy((u8 *)&sta_ptr->tdls_cap.vhtcap, pos + 2, +@@ -1056,9 +1039,7 @@ void mwifiex_process_tdls_action_frame(s + break; + case WLAN_EID_AID: + if (priv->adapter->is_hw_11ac_capable) { +- if (pos > end - 4) +- return; +- if (pos[1] != 2) ++ if (ie_len != sizeof(u16)) + return; + sta_ptr->tdls_cap.aid = + get_unaligned_le16((pos + 2)); diff --git a/queue-5.4/namei-only-return-echild-from-follow_dotdot_rcu.patch b/queue-5.4/namei-only-return-echild-from-follow_dotdot_rcu.patch new file mode 100644 index 00000000000..29a7927bc80 --- /dev/null +++ b/queue-5.4/namei-only-return-echild-from-follow_dotdot_rcu.patch @@ -0,0 +1,41 @@ +From 2b98149c2377bff12be5dd3ce02ae0506e2dd613 Mon Sep 17 00:00:00 2001 +From: Aleksa Sarai +Date: Sat, 7 Dec 2019 01:13:26 +1100 +Subject: namei: only return -ECHILD from follow_dotdot_rcu() + +From: Aleksa Sarai + +commit 2b98149c2377bff12be5dd3ce02ae0506e2dd613 upstream. + +It's over-zealous to return hard errors under RCU-walk here, given that +a REF-walk will be triggered for all other cases handling ".." under +RCU. + +The original purpose of this check was to ensure that if a rename occurs +such that a directory is moved outside of the bind-mount which the +resolution started in, it would be detected and blocked to avoid being +able to mess with paths outside of the bind-mount. However, triggering a +new REF-walk is just as effective a solution. + +Cc: "Eric W. Biederman" +Fixes: 397d425dc26d ("vfs: Test for and handle paths that are unreachable from their mnt_root") +Suggested-by: Al Viro +Signed-off-by: Aleksa Sarai +Signed-off-by: Al Viro +Signed-off-by: Greg Kroah-Hartman + +--- + fs/namei.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/namei.c ++++ b/fs/namei.c +@@ -1360,7 +1360,7 @@ static int follow_dotdot_rcu(struct name + nd->path.dentry = parent; + nd->seq = seq; + if (unlikely(!path_connected(&nd->path))) +- return -ENOENT; ++ return -ECHILD; + break; + } else { + struct mount *mnt = real_mount(nd->path.mnt); diff --git a/queue-5.4/sched-fair-optimize-select_idle_cpu.patch b/queue-5.4/sched-fair-optimize-select_idle_cpu.patch new file mode 100644 index 00000000000..6718355804c --- /dev/null +++ b/queue-5.4/sched-fair-optimize-select_idle_cpu.patch @@ -0,0 +1,62 @@ +From 60588bfa223ff675b95f866249f90616613fbe31 Mon Sep 17 00:00:00 2001 +From: Cheng Jian +Date: Fri, 13 Dec 2019 10:45:30 +0800 +Subject: sched/fair: Optimize select_idle_cpu + +From: Cheng Jian + +commit 60588bfa223ff675b95f866249f90616613fbe31 upstream. + +select_idle_cpu() will scan the LLC domain for idle CPUs, +it's always expensive. so the next commit : + + 1ad3aaf3fcd2 ("sched/core: Implement new approach to scale select_idle_cpu()") + +introduces a way to limit how many CPUs we scan. + +But it consume some CPUs out of 'nr' that are not allowed +for the task and thus waste our attempts. The function +always return nr_cpumask_bits, and we can't find a CPU +which our task is allowed to run. + +Cpumask may be too big, similar to select_idle_core(), use +per_cpu_ptr 'select_idle_mask' to prevent stack overflow. + +Fixes: 1ad3aaf3fcd2 ("sched/core: Implement new approach to scale select_idle_cpu()") +Signed-off-by: Cheng Jian +Signed-off-by: Peter Zijlstra (Intel) +Reviewed-by: Srikar Dronamraju +Reviewed-by: Vincent Guittot +Reviewed-by: Valentin Schneider +Link: https://lkml.kernel.org/r/20191213024530.28052-1-cj.chengjian@huawei.com +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/sched/fair.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/kernel/sched/fair.c ++++ b/kernel/sched/fair.c +@@ -5933,6 +5933,7 @@ static inline int select_idle_smt(struct + */ + static int select_idle_cpu(struct task_struct *p, struct sched_domain *sd, int target) + { ++ struct cpumask *cpus = this_cpu_cpumask_var_ptr(select_idle_mask); + struct sched_domain *this_sd; + u64 avg_cost, avg_idle; + u64 time, cost; +@@ -5964,11 +5965,11 @@ static int select_idle_cpu(struct task_s + + time = cpu_clock(this); + +- for_each_cpu_wrap(cpu, sched_domain_span(sd), target) { ++ cpumask_and(cpus, sched_domain_span(sd), p->cpus_ptr); ++ ++ for_each_cpu_wrap(cpu, cpus, target) { + if (!--nr) + return si_cpu; +- if (!cpumask_test_cpu(cpu, p->cpus_ptr)) +- continue; + if (available_idle_cpu(cpu)) + break; + if (si_cpu == -1 && sched_idle_cpu(cpu)) diff --git a/queue-5.4/series b/queue-5.4/series index e5ca97b8fab..392797946a7 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -110,3 +110,13 @@ net-atlantic-fix-out-of-range-usage-of-active_vlans-array.patch net-smc-no-peer-id-in-clc-decline-for-smcd.patch net-ena-make-ena-rxfh-support-eth_rss_hash_no_change.patch selftests-install-settings-files-to-fix-timeout-failures.patch +kbuild-remove-header-compile-test.patch +kbuild-move-headers_check-rule-to-usr-include-makefile.patch +kbuild-remove-unneeded-variable-single-all.patch +kbuild-make-single-target-builds-even-faster.patch +namei-only-return-echild-from-follow_dotdot_rcu.patch +mwifiex-drop-most-magic-numbers-from-mwifiex_process_tdls_action_frame.patch +mwifiex-delete-unused-mwifiex_get_intf_num.patch +kvm-svm-override-default-mmio-mask-if-memory-encryption-is-enabled.patch +kvm-check-for-a-bad-hva-before-dropping-into-the-ghc-slow-path.patch +sched-fair-optimize-select_idle_cpu.patch