From 2558f7b6272d359eca18808d89ff4aba3fa84535 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 26 Oct 2022 19:02:31 +0200 Subject: [PATCH] 5.10-stable patches added patches: arm64-errata-remove-aes-hwcap-for-compat-tasks.patch blk-wbt-call-rq_qos_add-after-wb_normal-is-initialized.patch block-wbt-remove-unnecessary-invoking-of-wbt_update_limits-in-wbt_init.patch bpf-generate-btf_kind_float-when-linking-vmlinux.patch kbuild-add-skip_encoding_btf_enum64-option-to-pahole.patch kbuild-quote-objcopy-var-to-avoid-a-pahole-call-break-the-build.patch kbuild-skip-per-cpu-btf-generation-for-pahole-v1.18-v1.21.patch kbuild-unify-options-for-btf-generation-for-vmlinux-and-modules.patch r8152-add-pid-for-the-lenovo-onelink-dock.patch --- ...ta-remove-aes-hwcap-for-compat-tasks.patch | 159 ++++++++++++++++++ ...s_add-after-wb_normal-is-initialized.patch | 97 +++++++++++ ...ing-of-wbt_update_limits-in-wbt_init.patch | 30 ++++ ...-btf_kind_float-when-linking-vmlinux.patch | 52 ++++++ ...encoding_btf_enum64-option-to-pahole.patch | 45 +++++ ...-avoid-a-pahole-call-break-the-build.patch | 69 ++++++++ ...tf-generation-for-pahole-v1.18-v1.21.patch | 56 ++++++ ...f-generation-for-vmlinux-and-modules.patch | 100 +++++++++++ ...-add-pid-for-the-lenovo-onelink-dock.patch | 56 ++++++ queue-5.10/series | 9 + 10 files changed, 673 insertions(+) create mode 100644 queue-5.10/arm64-errata-remove-aes-hwcap-for-compat-tasks.patch create mode 100644 queue-5.10/blk-wbt-call-rq_qos_add-after-wb_normal-is-initialized.patch create mode 100644 queue-5.10/block-wbt-remove-unnecessary-invoking-of-wbt_update_limits-in-wbt_init.patch create mode 100644 queue-5.10/bpf-generate-btf_kind_float-when-linking-vmlinux.patch create mode 100644 queue-5.10/kbuild-add-skip_encoding_btf_enum64-option-to-pahole.patch create mode 100644 queue-5.10/kbuild-quote-objcopy-var-to-avoid-a-pahole-call-break-the-build.patch create mode 100644 queue-5.10/kbuild-skip-per-cpu-btf-generation-for-pahole-v1.18-v1.21.patch create mode 100644 queue-5.10/kbuild-unify-options-for-btf-generation-for-vmlinux-and-modules.patch create mode 100644 queue-5.10/r8152-add-pid-for-the-lenovo-onelink-dock.patch diff --git a/queue-5.10/arm64-errata-remove-aes-hwcap-for-compat-tasks.patch b/queue-5.10/arm64-errata-remove-aes-hwcap-for-compat-tasks.patch new file mode 100644 index 00000000000..ae996ef1d24 --- /dev/null +++ b/queue-5.10/arm64-errata-remove-aes-hwcap-for-compat-tasks.patch @@ -0,0 +1,159 @@ +From 44b3834b2eed595af07021b1c64e6f9bc396398b Mon Sep 17 00:00:00 2001 +From: James Morse +Date: Thu, 14 Jul 2022 17:15:23 +0100 +Subject: arm64: errata: Remove AES hwcap for COMPAT tasks + +From: James Morse + +commit 44b3834b2eed595af07021b1c64e6f9bc396398b upstream. + +Cortex-A57 and Cortex-A72 have an erratum where an interrupt that +occurs between a pair of AES instructions in aarch32 mode may corrupt +the ELR. The task will subsequently produce the wrong AES result. + +The AES instructions are part of the cryptographic extensions, which are +optional. User-space software will detect the support for these +instructions from the hwcaps. If the platform doesn't support these +instructions a software implementation should be used. + +Remove the hwcap bits on affected parts to indicate user-space should +not use the AES instructions. + +Acked-by: Ard Biesheuvel +Signed-off-by: James Morse +Link: https://lore.kernel.org/r/20220714161523.279570-3-james.morse@arm.com +Signed-off-by: Will Deacon +[florian: removed arch/arm64/tools/cpucaps and fixup cpufeature.c] +Signed-off-by: Florian Fainelli +Signed-off-by: Greg Kroah-Hartman +--- + Documentation/arm64/silicon-errata.rst | 4 ++++ + arch/arm64/Kconfig | 16 ++++++++++++++++ + arch/arm64/include/asm/cpucaps.h | 3 ++- + arch/arm64/kernel/cpu_errata.c | 16 ++++++++++++++++ + arch/arm64/kernel/cpufeature.c | 13 ++++++++++++- + 5 files changed, 50 insertions(+), 2 deletions(-) + +--- a/Documentation/arm64/silicon-errata.rst ++++ b/Documentation/arm64/silicon-errata.rst +@@ -76,10 +76,14 @@ stable kernels. + +----------------+-----------------+-----------------+-----------------------------+ + | ARM | Cortex-A57 | #1319537 | ARM64_ERRATUM_1319367 | + +----------------+-----------------+-----------------+-----------------------------+ ++| ARM | Cortex-A57 | #1742098 | ARM64_ERRATUM_1742098 | +++----------------+-----------------+-----------------+-----------------------------+ + | ARM | Cortex-A72 | #853709 | N/A | + +----------------+-----------------+-----------------+-----------------------------+ + | ARM | Cortex-A72 | #1319367 | ARM64_ERRATUM_1319367 | + +----------------+-----------------+-----------------+-----------------------------+ ++| ARM | Cortex-A72 | #1655431 | ARM64_ERRATUM_1742098 | +++----------------+-----------------+-----------------+-----------------------------+ + | ARM | Cortex-A73 | #858921 | ARM64_ERRATUM_858921 | + +----------------+-----------------+-----------------+-----------------------------+ + | ARM | Cortex-A76 | #1188873,1418040| ARM64_ERRATUM_1418040 | +--- a/arch/arm64/Kconfig ++++ b/arch/arm64/Kconfig +@@ -481,6 +481,22 @@ config ARM64_ERRATUM_834220 + + If unsure, say Y. + ++config ARM64_ERRATUM_1742098 ++ bool "Cortex-A57/A72: 1742098: ELR recorded incorrectly on interrupt taken between cryptographic instructions in a sequence" ++ depends on COMPAT ++ default y ++ help ++ This option removes the AES hwcap for aarch32 user-space to ++ workaround erratum 1742098 on Cortex-A57 and Cortex-A72. ++ ++ Affected parts may corrupt the AES state if an interrupt is ++ taken between a pair of AES instructions. These instructions ++ are only present if the cryptography extensions are present. ++ All software should have a fallback implementation for CPUs ++ that don't implement the cryptography extensions. ++ ++ If unsure, say Y. ++ + config ARM64_ERRATUM_845719 + bool "Cortex-A53: 845719: a load might read incorrect data" + depends on COMPAT +--- a/arch/arm64/include/asm/cpucaps.h ++++ b/arch/arm64/include/asm/cpucaps.h +@@ -68,7 +68,8 @@ + #define ARM64_WORKAROUND_1508412 58 + #define ARM64_SPECTRE_BHB 59 + #define ARM64_WORKAROUND_2457168 60 ++#define ARM64_WORKAROUND_1742098 61 + +-#define ARM64_NCAPS 61 ++#define ARM64_NCAPS 62 + + #endif /* __ASM_CPUCAPS_H */ +--- a/arch/arm64/kernel/cpu_errata.c ++++ b/arch/arm64/kernel/cpu_errata.c +@@ -356,6 +356,14 @@ static const struct midr_range erratum_1 + }; + #endif + ++#ifdef CONFIG_ARM64_ERRATUM_1742098 ++static struct midr_range broken_aarch32_aes[] = { ++ MIDR_RANGE(MIDR_CORTEX_A57, 0, 1, 0xf, 0xf), ++ MIDR_ALL_VERSIONS(MIDR_CORTEX_A72), ++ {}, ++}; ++#endif ++ + const struct arm64_cpu_capabilities arm64_errata[] = { + #ifdef CONFIG_ARM64_WORKAROUND_CLEAN_CACHE + { +@@ -555,6 +563,14 @@ const struct arm64_cpu_capabilities arm6 + CAP_MIDR_RANGE(MIDR_CORTEX_A510, 0, 0, 1, 1) + }, + #endif ++#ifdef CONFIG_ARM64_ERRATUM_1742098 ++ { ++ .desc = "ARM erratum 1742098", ++ .capability = ARM64_WORKAROUND_1742098, ++ CAP_MIDR_RANGE_LIST(broken_aarch32_aes), ++ .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, ++ }, ++#endif + { + } + }; +--- a/arch/arm64/kernel/cpufeature.c ++++ b/arch/arm64/kernel/cpufeature.c +@@ -76,6 +76,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -1730,6 +1731,14 @@ static void cpu_enable_mte(struct arm64_ + } + #endif /* CONFIG_ARM64_MTE */ + ++static void elf_hwcap_fixup(void) ++{ ++#ifdef CONFIG_ARM64_ERRATUM_1742098 ++ if (cpus_have_const_cap(ARM64_WORKAROUND_1742098)) ++ compat_elf_hwcap2 &= ~COMPAT_HWCAP2_AES; ++#endif /* ARM64_ERRATUM_1742098 */ ++} ++ + /* Internal helper functions to match cpu capability type */ + static bool + cpucap_late_cpu_optional(const struct arm64_cpu_capabilities *cap) +@@ -2735,8 +2744,10 @@ void __init setup_cpu_features(void) + setup_system_capabilities(); + setup_elf_hwcaps(arm64_elf_hwcaps); + +- if (system_supports_32bit_el0()) ++ if (system_supports_32bit_el0()) { + setup_elf_hwcaps(compat_elf_hwcaps); ++ elf_hwcap_fixup(); ++ } + + if (system_uses_ttbr0_pan()) + pr_info("emulated: Privileged Access Never (PAN) using TTBR0_EL1 switching\n"); diff --git a/queue-5.10/blk-wbt-call-rq_qos_add-after-wb_normal-is-initialized.patch b/queue-5.10/blk-wbt-call-rq_qos_add-after-wb_normal-is-initialized.patch new file mode 100644 index 00000000000..ca68677303a --- /dev/null +++ b/queue-5.10/blk-wbt-call-rq_qos_add-after-wb_normal-is-initialized.patch @@ -0,0 +1,97 @@ +From 8c5035dfbb9475b67c82b3fdb7351236525bf52b Mon Sep 17 00:00:00 2001 +From: Yu Kuai +Date: Tue, 13 Sep 2022 18:57:49 +0800 +Subject: blk-wbt: call rq_qos_add() after wb_normal is initialized +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Yu Kuai + +commit 8c5035dfbb9475b67c82b3fdb7351236525bf52b upstream. + +Our test found a problem that wbt inflight counter is negative, which +will cause io hang(noted that this problem doesn't exist in mainline): + +t1: device create t2: issue io +add_disk + blk_register_queue + wbt_enable_default + wbt_init + rq_qos_add + // wb_normal is still 0 + /* + * in mainline, disk can't be opened before + * bdev_add(), however, in old kernels, disk + * can be opened before blk_register_queue(). + */ + blkdev_issue_flush + // disk size is 0, however, it's not checked + submit_bio_wait + submit_bio + blk_mq_submit_bio + rq_qos_throttle + wbt_wait + bio_to_wbt_flags + rwb_enabled + // wb_normal is 0, inflight is not increased + + wbt_queue_depth_changed(&rwb->rqos); + wbt_update_limits + // wb_normal is initialized + rq_qos_track + wbt_track + rq->wbt_flags |= bio_to_wbt_flags(rwb, bio); + // wb_normal is not 0,wbt_flags will be set +t3: io completion +blk_mq_free_request + rq_qos_done + wbt_done + wbt_is_tracked + // return true + __wbt_done + wbt_rqw_done + atomic_dec_return(&rqw->inflight); + // inflight is decreased + +commit 8235b5c1e8c1 ("block: call bdev_add later in device_add_disk") can +avoid this problem, however it's better to fix this problem in wbt: + +1) Lower kernel can't backport this patch due to lots of refactor. +2) Root cause is that wbt call rq_qos_add() before wb_normal is +initialized. + +Fixes: e34cbd307477 ("blk-wbt: add general throttling mechanism") +Cc: +Signed-off-by: Yu Kuai +Link: https://lore.kernel.org/r/20220913105749.3086243-1-yukuai1@huaweicloud.com +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman +--- + block/blk-wbt.c | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +--- a/block/blk-wbt.c ++++ b/block/blk-wbt.c +@@ -840,6 +840,10 @@ int wbt_init(struct request_queue *q) + rwb->enable_state = WBT_STATE_ON_DEFAULT; + rwb->wc = 1; + rwb->rq_depth.default_depth = RWB_DEF_DEPTH; ++ rwb->min_lat_nsec = wbt_default_latency_nsec(q); ++ ++ wbt_queue_depth_changed(&rwb->rqos); ++ wbt_set_write_cache(q, test_bit(QUEUE_FLAG_WC, &q->queue_flags)); + + /* + * Assign rwb and add the stats callback. +@@ -847,10 +851,5 @@ int wbt_init(struct request_queue *q) + rq_qos_add(q, &rwb->rqos); + blk_stat_add_callback(q, rwb->cb); + +- rwb->min_lat_nsec = wbt_default_latency_nsec(q); +- +- wbt_queue_depth_changed(&rwb->rqos); +- wbt_set_write_cache(q, test_bit(QUEUE_FLAG_WC, &q->queue_flags)); +- + return 0; + } diff --git a/queue-5.10/block-wbt-remove-unnecessary-invoking-of-wbt_update_limits-in-wbt_init.patch b/queue-5.10/block-wbt-remove-unnecessary-invoking-of-wbt_update_limits-in-wbt_init.patch new file mode 100644 index 00000000000..51fd5c1a5aa --- /dev/null +++ b/queue-5.10/block-wbt-remove-unnecessary-invoking-of-wbt_update_limits-in-wbt_init.patch @@ -0,0 +1,30 @@ +From 5a20d073ec54a72d9a732fa44bfe14954eb6332f Mon Sep 17 00:00:00 2001 +From: Lei Chen +Date: Mon, 30 Nov 2020 10:20:52 +0800 +Subject: block: wbt: Remove unnecessary invoking of wbt_update_limits in wbt_init + +From: Lei Chen + +commit 5a20d073ec54a72d9a732fa44bfe14954eb6332f upstream. + +It's unnecessary to call wbt_update_limits explicitly within wbt_init, +because it will be called in the following function wbt_queue_depth_changed. + +Signed-off-by: Lei Chen +Signed-off-by: Jens Axboe +Signed-off-by: Yu Kuai +Signed-off-by: Greg Kroah-Hartman +--- + block/blk-wbt.c | 1 - + 1 file changed, 1 deletion(-) + +--- a/block/blk-wbt.c ++++ b/block/blk-wbt.c +@@ -840,7 +840,6 @@ int wbt_init(struct request_queue *q) + rwb->enable_state = WBT_STATE_ON_DEFAULT; + rwb->wc = 1; + rwb->rq_depth.default_depth = RWB_DEF_DEPTH; +- wbt_update_limits(rwb); + + /* + * Assign rwb and add the stats callback. diff --git a/queue-5.10/bpf-generate-btf_kind_float-when-linking-vmlinux.patch b/queue-5.10/bpf-generate-btf_kind_float-when-linking-vmlinux.patch new file mode 100644 index 00000000000..ff15941e5d1 --- /dev/null +++ b/queue-5.10/bpf-generate-btf_kind_float-when-linking-vmlinux.patch @@ -0,0 +1,52 @@ +From foo@baz Wed Oct 26 06:44:13 PM CEST 2022 +From: Jiri Olsa +Date: Wed, 19 Oct 2022 10:56:00 +0200 +Subject: bpf: Generate BTF_KIND_FLOAT when linking vmlinux +To: stable@vger.kernel.org +Cc: "Andrii Nakryiko" , bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" , "Daniel Borkmann" , "Martin Rodriguez Reboredo" , "Javier Martinez Canillas" , "Ilya Leoshkevich" , "Nathan Chancellor" , "Philip Müller" +Message-ID: <20221019085604.1017583-2-jolsa@kernel.org> + +From: Ilya Leoshkevich + +commit db16c1fe92d7ba7d39061faef897842baee2c887 upstream. + +[backported for dependency only extra_paholeopt variable setup and +usage, we don't want floats generated in 5.10] + +pahole v1.21 supports the --btf_gen_floats flag, which makes it +generate the information about the floating-point types [1]. + +Adjust link-vmlinux.sh to pass this flag to pahole in case it's +supported, which is determined using a simple version check. + +[1] https://lore.kernel.org/dwarves/YHRiXNX1JUF2Az0A@kernel.org/ + +Signed-off-by: Ilya Leoshkevich +Signed-off-by: Andrii Nakryiko +Acked-by: Andrii Nakryiko +Link: https://lore.kernel.org/bpf/20210413190043.21918-1-iii@linux.ibm.com +Signed-off-by: Jiri Olsa +Signed-off-by: Greg Kroah-Hartman +--- + scripts/link-vmlinux.sh | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/scripts/link-vmlinux.sh ++++ b/scripts/link-vmlinux.sh +@@ -146,6 +146,7 @@ vmlinux_link() + gen_btf() + { + local pahole_ver ++ local extra_paholeopt= + + if ! [ -x "$(command -v ${PAHOLE})" ]; then + echo >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available" +@@ -161,7 +162,7 @@ gen_btf() + vmlinux_link ${1} + + info "BTF" ${2} +- LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${1} ++ LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${extra_paholeopt} ${1} + + # Create ${2} which contains just .BTF section but no symbols. Add + # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all diff --git a/queue-5.10/kbuild-add-skip_encoding_btf_enum64-option-to-pahole.patch b/queue-5.10/kbuild-add-skip_encoding_btf_enum64-option-to-pahole.patch new file mode 100644 index 00000000000..ffaa5bd6ebb --- /dev/null +++ b/queue-5.10/kbuild-add-skip_encoding_btf_enum64-option-to-pahole.patch @@ -0,0 +1,45 @@ +From foo@baz Wed Oct 26 06:44:13 PM CEST 2022 +From: Jiri Olsa +Date: Wed, 19 Oct 2022 10:56:04 +0200 +Subject: kbuild: Add skip_encoding_btf_enum64 option to pahole +To: stable@vger.kernel.org +Cc: bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" , "Daniel Borkmann" , "Martin Rodriguez Reboredo" , "Andrii Nakryiko" , "Javier Martinez Canillas" , "Ilya Leoshkevich" , "Nathan Chancellor" , "Philip Müller" +Message-ID: <20221019085604.1017583-6-jolsa@kernel.org> + +From: Martin Rodriguez Reboredo + +New pahole (version 1.24) generates by default new BTF_KIND_ENUM64 BTF tag, +which is not supported by stable kernel. + +As a result the kernel with CONFIG_DEBUG_INFO_BTF option will fail to +compile with following error: + + BTFIDS vmlinux +FAILED: load BTF from vmlinux: Invalid argument + +New pahole provides --skip_encoding_btf_enum64 option to skip BTF_KIND_ENUM64 +generation and produce BTF supported by stable kernel. + +Adding this option to scripts/pahole-flags.sh. + +This change does not have equivalent commit in linus tree, because linus tree +has support for BTF_KIND_ENUM64 tag, so it does not need to be disabled. + +Signed-off-by: Martin Rodriguez Reboredo +Signed-off-by: Jiri Olsa +Signed-off-by: Greg Kroah-Hartman +--- + scripts/pahole-flags.sh | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/scripts/pahole-flags.sh ++++ b/scripts/pahole-flags.sh +@@ -14,4 +14,8 @@ if [ "${pahole_ver}" -ge "118" ] && [ "$ + extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" + fi + ++if [ "${pahole_ver}" -ge "124" ]; then ++ extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_enum64" ++fi ++ + echo ${extra_paholeopt} diff --git a/queue-5.10/kbuild-quote-objcopy-var-to-avoid-a-pahole-call-break-the-build.patch b/queue-5.10/kbuild-quote-objcopy-var-to-avoid-a-pahole-call-break-the-build.patch new file mode 100644 index 00000000000..cf48c7280f8 --- /dev/null +++ b/queue-5.10/kbuild-quote-objcopy-var-to-avoid-a-pahole-call-break-the-build.patch @@ -0,0 +1,69 @@ +From foo@baz Wed Oct 26 06:44:13 PM CEST 2022 +From: Jiri Olsa +Date: Wed, 19 Oct 2022 10:56:01 +0200 +Subject: kbuild: Quote OBJCOPY var to avoid a pahole call break the build +To: stable@vger.kernel.org +Cc: "Andrii Nakryiko" , "Arnaldo Carvalho de Melo" , bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" , "Daniel Borkmann" , "Martin Rodriguez Reboredo" , "Javier Martinez Canillas" , "Ilya Leoshkevich" , "Nathan Chancellor" , "Philip Müller" +Message-ID: <20221019085604.1017583-3-jolsa@kernel.org> + +From: Javier Martinez Canillas + +commit ff2e6efda0d5c51b33e2bcc0b0b981ac0a0ef214 upstream. + +[backported for dependency, skipped Makefile.modfinal change, +because module BTF is not supported in 5.10] + +The ccache tool can be used to speed up cross-compilation, by calling the +compiler and binutils through ccache. For example, following should work: + + $ export ARCH=arm64 CROSS_COMPILE="ccache aarch64-linux-gnu-" + + $ make M=drivers/gpu/drm/rockchip/ + +but pahole fails to extract the BTF info from DWARF, breaking the build: + + CC [M] drivers/gpu/drm/rockchip//rockchipdrm.mod.o + LD [M] drivers/gpu/drm/rockchip//rockchipdrm.ko + BTF [M] drivers/gpu/drm/rockchip//rockchipdrm.ko + aarch64-linux-gnu-objcopy: invalid option -- 'J' + Usage: aarch64-linux-gnu-objcopy [option(s)] in-file [out-file] + Copies a binary file, possibly transforming it in the process + ... + make[1]: *** [scripts/Makefile.modpost:156: __modpost] Error 2 + make: *** [Makefile:1866: modules] Error 2 + +this fails because OBJCOPY is set to "ccache aarch64-linux-gnu-copy" and +later pahole is executed with the following command line: + + LLVM_OBJCOPY=$(OBJCOPY) $(PAHOLE) -J --btf_base vmlinux $@ + +which gets expanded to: + + LLVM_OBJCOPY=ccache aarch64-linux-gnu-objcopy pahole -J ... + +instead of: + + LLVM_OBJCOPY="ccache aarch64-linux-gnu-objcopy" pahole -J ... + +Fixes: 5f9ae91f7c0d ("kbuild: Build kernel module BTFs if BTF is enabled and pahole supports it") +Signed-off-by: Javier Martinez Canillas +Signed-off-by: Andrii Nakryiko +Acked-by: Andrii Nakryiko +Acked-by: Arnaldo Carvalho de Melo +Link: https://lore.kernel.org/bpf/20210526215228.3729875-1-javierm@redhat.com +Signed-off-by: Greg Kroah-Hartman +--- + scripts/link-vmlinux.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/scripts/link-vmlinux.sh ++++ b/scripts/link-vmlinux.sh +@@ -162,7 +162,7 @@ gen_btf() + vmlinux_link ${1} + + info "BTF" ${2} +- LLVM_OBJCOPY=${OBJCOPY} ${PAHOLE} -J ${extra_paholeopt} ${1} ++ LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1} + + # Create ${2} which contains just .BTF section but no symbols. Add + # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all diff --git a/queue-5.10/kbuild-skip-per-cpu-btf-generation-for-pahole-v1.18-v1.21.patch b/queue-5.10/kbuild-skip-per-cpu-btf-generation-for-pahole-v1.18-v1.21.patch new file mode 100644 index 00000000000..f1da8b0a275 --- /dev/null +++ b/queue-5.10/kbuild-skip-per-cpu-btf-generation-for-pahole-v1.18-v1.21.patch @@ -0,0 +1,56 @@ +From foo@baz Wed Oct 26 06:44:13 PM CEST 2022 +From: Jiri Olsa +Date: Wed, 19 Oct 2022 10:56:02 +0200 +Subject: kbuild: skip per-CPU BTF generation for pahole v1.18-v1.21 +To: stable@vger.kernel.org +Cc: "Mel Gorman" , "Arnaldo Carvalho de Melo" , "Hao Luo" , "Michal Suchanek" , bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" , "Daniel Borkmann" , "Martin Rodriguez Reboredo" , "Andrii Nakryiko" , "Javier Martinez Canillas" , "Ilya Leoshkevich" , "Nathan Chancellor" , "Philip Müller" +Message-ID: <20221019085604.1017583-4-jolsa@kernel.org> + +From: Andrii Nakryiko + +commit a0b8200d06ad6450c179407baa5f0f52f8cfcc97 upstream. + +[small context changes due to missing floats support in 5.10] + +Commit "mm/page_alloc: convert per-cpu list protection to local_lock" will +introduce a zero-sized per-CPU variable, which causes pahole to generate +invalid BTF. Only pahole versions 1.18 through 1.21 are impacted, as +before 1.18 pahole doesn't know anything about per-CPU variables, and 1.22 +contains the proper fix for the issue. + +Luckily, pahole 1.18 got --skip_encoding_btf_vars option disabling BTF +generation for per-CPU variables in anticipation of some unanticipated +problems. So use this escape hatch to disable per-CPU var BTF info on +those problematic pahole versions. Users relying on availability of +per-CPU var BTFs would need to upgrade to pahole 1.22+, but everyone won't +notice any regressions. + +Link: https://lkml.kernel.org/r/20210530002536.3193829-1-andrii@kernel.org +Signed-off-by: Andrii Nakryiko +Acked-by: Mel Gorman +Cc: Arnaldo Carvalho de Melo +Cc: Hao Luo +Cc: Michal Suchanek +Cc: Jiri Olsa +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Jiri Olsa +Signed-off-by: Greg Kroah-Hartman +--- + scripts/link-vmlinux.sh | 5 +++++ + 1 file changed, 5 insertions(+) + +--- a/scripts/link-vmlinux.sh ++++ b/scripts/link-vmlinux.sh +@@ -161,6 +161,11 @@ gen_btf() + + vmlinux_link ${1} + ++ if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then ++ # pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars ++ extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" ++ fi ++ + info "BTF" ${2} + LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1} + diff --git a/queue-5.10/kbuild-unify-options-for-btf-generation-for-vmlinux-and-modules.patch b/queue-5.10/kbuild-unify-options-for-btf-generation-for-vmlinux-and-modules.patch new file mode 100644 index 00000000000..130e5b5c291 --- /dev/null +++ b/queue-5.10/kbuild-unify-options-for-btf-generation-for-vmlinux-and-modules.patch @@ -0,0 +1,100 @@ +From foo@baz Wed Oct 26 06:44:13 PM CEST 2022 +From: Jiri Olsa +Date: Wed, 19 Oct 2022 10:56:03 +0200 +Subject: kbuild: Unify options for BTF generation for vmlinux and modules +To: stable@vger.kernel.org +Cc: "Andrii Nakryiko" , bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" , "Daniel Borkmann" , "Martin Rodriguez Reboredo" , "Javier Martinez Canillas" , "Ilya Leoshkevich" , "Nathan Chancellor" , "Philip Müller" +Message-ID: <20221019085604.1017583-5-jolsa@kernel.org> + +From: Jiri Olsa + +commit 9741e07ece7c247dd65e1aa01e16b683f01c05a8 upstream. + +[skipped --btf_gen_floats option in pahole-flags.sh, skipped +Makefile.modfinal change, because there's no BTF kmod support, +squashing in 'exit 0' change from merge commit fc02cb2b37fe] + +Using new PAHOLE_FLAGS variable to pass extra arguments to +pahole for both vmlinux and modules BTF data generation. + +Adding new scripts/pahole-flags.sh script that detect and +prints pahole options. + +[ fixed issues found by kernel test robot ] + +Signed-off-by: Jiri Olsa +Signed-off-by: Andrii Nakryiko +Acked-by: Andrii Nakryiko +Link: https://lore.kernel.org/bpf/20211029125729.70002-1-jolsa@kernel.org +Signed-off-by: Greg Kroah-Hartman +--- + Makefile | 3 +++ + scripts/link-vmlinux.sh | 8 +------- + scripts/pahole-flags.sh | 17 +++++++++++++++++ + 3 files changed, 21 insertions(+), 7 deletions(-) + create mode 100755 scripts/pahole-flags.sh + +--- a/Makefile ++++ b/Makefile +@@ -465,6 +465,8 @@ LZ4 = lz4c + XZ = xz + ZSTD = zstd + ++PAHOLE_FLAGS = $(shell PAHOLE=$(PAHOLE) $(srctree)/scripts/pahole-flags.sh) ++ + CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ + -Wbitwise -Wno-return-void -Wno-unknown-attribute $(CF) + NOSTDINC_FLAGS := +@@ -518,6 +520,7 @@ export KBUILD_CFLAGS CFLAGS_KERNEL CFLAG + export KBUILD_AFLAGS AFLAGS_KERNEL AFLAGS_MODULE + export KBUILD_AFLAGS_MODULE KBUILD_CFLAGS_MODULE KBUILD_LDFLAGS_MODULE + export KBUILD_AFLAGS_KERNEL KBUILD_CFLAGS_KERNEL ++export PAHOLE_FLAGS + + # Files to ignore in find ... statements + +--- a/scripts/link-vmlinux.sh ++++ b/scripts/link-vmlinux.sh +@@ -146,7 +146,6 @@ vmlinux_link() + gen_btf() + { + local pahole_ver +- local extra_paholeopt= + + if ! [ -x "$(command -v ${PAHOLE})" ]; then + echo >&2 "BTF: ${1}: pahole (${PAHOLE}) is not available" +@@ -161,13 +160,8 @@ gen_btf() + + vmlinux_link ${1} + +- if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then +- # pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars +- extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" +- fi +- + info "BTF" ${2} +- LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${extra_paholeopt} ${1} ++ LLVM_OBJCOPY="${OBJCOPY}" ${PAHOLE} -J ${PAHOLE_FLAGS} ${1} + + # Create ${2} which contains just .BTF section but no symbols. Add + # SHF_ALLOC because .BTF will be part of the vmlinux image. --strip-all +--- /dev/null ++++ b/scripts/pahole-flags.sh +@@ -0,0 +1,17 @@ ++#!/bin/sh ++# SPDX-License-Identifier: GPL-2.0 ++ ++extra_paholeopt= ++ ++if ! [ -x "$(command -v ${PAHOLE})" ]; then ++ exit 0 ++fi ++ ++pahole_ver=$(${PAHOLE} --version | sed -E 's/v([0-9]+)\.([0-9]+)/\1\2/') ++ ++if [ "${pahole_ver}" -ge "118" ] && [ "${pahole_ver}" -le "121" ]; then ++ # pahole 1.18 through 1.21 can't handle zero-sized per-CPU vars ++ extra_paholeopt="${extra_paholeopt} --skip_encoding_btf_vars" ++fi ++ ++echo ${extra_paholeopt} diff --git a/queue-5.10/r8152-add-pid-for-the-lenovo-onelink-dock.patch b/queue-5.10/r8152-add-pid-for-the-lenovo-onelink-dock.patch new file mode 100644 index 00000000000..363c5306fb8 --- /dev/null +++ b/queue-5.10/r8152-add-pid-for-the-lenovo-onelink-dock.patch @@ -0,0 +1,56 @@ +From 1bd3a383075c64d638e65d263c9267b08ee7733c Mon Sep 17 00:00:00 2001 +From: Jean-Francois Le Fillatre +Date: Wed, 24 Aug 2022 21:14:36 +0200 +Subject: r8152: add PID for the Lenovo OneLink+ Dock + +From: Jean-Francois Le Fillatre + +commit 1bd3a383075c64d638e65d263c9267b08ee7733c upstream. + +The Lenovo OneLink+ Dock contains an RTL8153 controller that behaves as +a broken CDC device by default. Add the custom Lenovo PID to the r8152 +driver to support it properly. + +Also, systems compatible with this dock provide a BIOS option to enable +MAC address passthrough (as per Lenovo document "ThinkPad Docking +Solutions 2017"). Add the custom PID to the MAC passthrough list too. + +Tested on a ThinkPad 13 1st gen with the expected results: + +passthrough disabled: Invalid header when reading pass-thru MAC addr +passthrough enabled: Using pass-thru MAC addr XX:XX:XX:XX:XX:XX + +Signed-off-by: Jean-Francois Le Fillatre +Signed-off-by: David S. Miller +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/usb/cdc_ether.c | 7 +++++++ + drivers/net/usb/r8152.c | 1 + + 2 files changed, 8 insertions(+) + +--- a/drivers/net/usb/cdc_ether.c ++++ b/drivers/net/usb/cdc_ether.c +@@ -763,6 +763,13 @@ static const struct usb_device_id produc + }, + #endif + ++/* Lenovo ThinkPad OneLink+ Dock (based on Realtek RTL8153) */ ++{ ++ USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3054, USB_CLASS_COMM, ++ USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE), ++ .driver_info = 0, ++}, ++ + /* ThinkPad USB-C Dock (based on Realtek RTL8153) */ + { + USB_DEVICE_AND_INTERFACE_INFO(LENOVO_VENDOR_ID, 0x3062, USB_CLASS_COMM, +--- a/drivers/net/usb/r8152.c ++++ b/drivers/net/usb/r8152.c +@@ -6870,6 +6870,7 @@ static const struct usb_device_id rtl815 + {REALTEK_USB_DEVICE(VENDOR_ID_MICROSOFT, 0x0927)}, + {REALTEK_USB_DEVICE(VENDOR_ID_SAMSUNG, 0xa101)}, + {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x304f)}, ++ {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3054)}, + {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3062)}, + {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3069)}, + {REALTEK_USB_DEVICE(VENDOR_ID_LENOVO, 0x3082)}, diff --git a/queue-5.10/series b/queue-5.10/series index 083c53ab6fa..f0142d52a06 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -13,3 +13,12 @@ kvm-add-support-for-arch-compat-vm-ioctls.patch kvm-arm64-vgic-fix-exit-condition-in-scan_its_table.patch media-mceusb-set-timeout-to-at-least-timeout-provided.patch media-venus-dec-handle-the-case-where-find_format-fails.patch +bpf-generate-btf_kind_float-when-linking-vmlinux.patch +kbuild-quote-objcopy-var-to-avoid-a-pahole-call-break-the-build.patch +kbuild-skip-per-cpu-btf-generation-for-pahole-v1.18-v1.21.patch +kbuild-unify-options-for-btf-generation-for-vmlinux-and-modules.patch +kbuild-add-skip_encoding_btf_enum64-option-to-pahole.patch +block-wbt-remove-unnecessary-invoking-of-wbt_update_limits-in-wbt_init.patch +blk-wbt-call-rq_qos_add-after-wb_normal-is-initialized.patch +arm64-errata-remove-aes-hwcap-for-compat-tasks.patch +r8152-add-pid-for-the-lenovo-onelink-dock.patch -- 2.47.3