]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.10-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Oct 2022 17:02:31 +0000 (19:02 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 26 Oct 2022 17:02:31 +0000 (19:02 +0200)
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

queue-5.10/arm64-errata-remove-aes-hwcap-for-compat-tasks.patch [new file with mode: 0644]
queue-5.10/blk-wbt-call-rq_qos_add-after-wb_normal-is-initialized.patch [new file with mode: 0644]
queue-5.10/block-wbt-remove-unnecessary-invoking-of-wbt_update_limits-in-wbt_init.patch [new file with mode: 0644]
queue-5.10/bpf-generate-btf_kind_float-when-linking-vmlinux.patch [new file with mode: 0644]
queue-5.10/kbuild-add-skip_encoding_btf_enum64-option-to-pahole.patch [new file with mode: 0644]
queue-5.10/kbuild-quote-objcopy-var-to-avoid-a-pahole-call-break-the-build.patch [new file with mode: 0644]
queue-5.10/kbuild-skip-per-cpu-btf-generation-for-pahole-v1.18-v1.21.patch [new file with mode: 0644]
queue-5.10/kbuild-unify-options-for-btf-generation-for-vmlinux-and-modules.patch [new file with mode: 0644]
queue-5.10/r8152-add-pid-for-the-lenovo-onelink-dock.patch [new file with mode: 0644]
queue-5.10/series

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 (file)
index 0000000..ae996ef
--- /dev/null
@@ -0,0 +1,159 @@
+From 44b3834b2eed595af07021b1c64e6f9bc396398b Mon Sep 17 00:00:00 2001
+From: James Morse <james.morse@arm.com>
+Date: Thu, 14 Jul 2022 17:15:23 +0100
+Subject: arm64: errata: Remove AES hwcap for COMPAT tasks
+
+From: James Morse <james.morse@arm.com>
+
+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 <ardb@kernel.org>
+Signed-off-by: James Morse <james.morse@arm.com>
+Link: https://lore.kernel.org/r/20220714161523.279570-3-james.morse@arm.com
+Signed-off-by: Will Deacon <will@kernel.org>
+[florian: removed arch/arm64/tools/cpucaps and fixup cpufeature.c]
+Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 <asm/cpufeature.h>
+ #include <asm/cpu_ops.h>
+ #include <asm/fpsimd.h>
++#include <asm/hwcap.h>
+ #include <asm/mmu_context.h>
+ #include <asm/mte.h>
+ #include <asm/processor.h>
+@@ -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 (file)
index 0000000..ca68677
--- /dev/null
@@ -0,0 +1,97 @@
+From 8c5035dfbb9475b67c82b3fdb7351236525bf52b Mon Sep 17 00:00:00 2001
+From: Yu Kuai <yukuai3@huawei.com>
+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 <yukuai3@huawei.com>
+
+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: <stable@vger.kernel.org>
+Signed-off-by: Yu Kuai <yukuai3@huawei.com>
+Link: https://lore.kernel.org/r/20220913105749.3086243-1-yukuai1@huaweicloud.com
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..51fd5c1
--- /dev/null
@@ -0,0 +1,30 @@
+From 5a20d073ec54a72d9a732fa44bfe14954eb6332f Mon Sep 17 00:00:00 2001
+From: Lei Chen <lennychen@tencent.com>
+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 <lennychen@tencent.com>
+
+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 <lennychen@tencent.com>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Yu Kuai <yukuai3@huawei.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..ff15941
--- /dev/null
@@ -0,0 +1,52 @@
+From foo@baz Wed Oct 26 06:44:13 PM CEST 2022
+From: Jiri Olsa <jolsa@kernel.org>
+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" <andrii@kernel.org>, bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" <acme@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Martin Rodriguez Reboredo" <yakoyoku@gmail.com>, "Javier Martinez Canillas" <javierm@redhat.com>, "Ilya Leoshkevich" <iii@linux.ibm.com>, "Nathan Chancellor" <nathan@kernel.org>, "Philip Müller" <philm@manjaro.org>
+Message-ID: <20221019085604.1017583-2-jolsa@kernel.org>
+
+From: Ilya Leoshkevich <iii@linux.ibm.com>
+
+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 <iii@linux.ibm.com>
+Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
+Acked-by: Andrii Nakryiko <andrii@kernel.org>
+Link: https://lore.kernel.org/bpf/20210413190043.21918-1-iii@linux.ibm.com
+Signed-off-by: Jiri Olsa <jolsa@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..ffaa5bd
--- /dev/null
@@ -0,0 +1,45 @@
+From foo@baz Wed Oct 26 06:44:13 PM CEST 2022
+From: Jiri Olsa <jolsa@kernel.org>
+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" <acme@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Martin Rodriguez Reboredo" <yakoyoku@gmail.com>, "Andrii Nakryiko" <andrii@kernel.org>, "Javier Martinez Canillas" <javierm@redhat.com>, "Ilya Leoshkevich" <iii@linux.ibm.com>, "Nathan Chancellor" <nathan@kernel.org>, "Philip Müller" <philm@manjaro.org>
+Message-ID: <20221019085604.1017583-6-jolsa@kernel.org>
+
+From: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
+
+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 <yakoyoku@gmail.com>
+Signed-off-by: Jiri Olsa <jolsa@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..cf48c72
--- /dev/null
@@ -0,0 +1,69 @@
+From foo@baz Wed Oct 26 06:44:13 PM CEST 2022
+From: Jiri Olsa <jolsa@kernel.org>
+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" <andrii@kernel.org>, "Arnaldo Carvalho de Melo" <acme@redhat.com>, bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" <acme@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Martin Rodriguez Reboredo" <yakoyoku@gmail.com>, "Javier Martinez Canillas" <javierm@redhat.com>, "Ilya Leoshkevich" <iii@linux.ibm.com>, "Nathan Chancellor" <nathan@kernel.org>, "Philip Müller" <philm@manjaro.org>
+Message-ID: <20221019085604.1017583-3-jolsa@kernel.org>
+
+From: Javier Martinez Canillas <javierm@redhat.com>
+
+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 <javierm@redhat.com>
+Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
+Acked-by: Andrii Nakryiko <andrii@kernel.org>
+Acked-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+Link: https://lore.kernel.org/bpf/20210526215228.3729875-1-javierm@redhat.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..f1da8b0
--- /dev/null
@@ -0,0 +1,56 @@
+From foo@baz Wed Oct 26 06:44:13 PM CEST 2022
+From: Jiri Olsa <jolsa@kernel.org>
+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" <mgorman@techsingularity.net>, "Arnaldo Carvalho de Melo" <acme@redhat.com>, "Hao Luo" <haoluo@google.com>, "Michal Suchanek" <msuchanek@suse.de>, bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" <acme@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Martin Rodriguez Reboredo" <yakoyoku@gmail.com>, "Andrii Nakryiko" <andrii@kernel.org>, "Javier Martinez Canillas" <javierm@redhat.com>, "Ilya Leoshkevich" <iii@linux.ibm.com>, "Nathan Chancellor" <nathan@kernel.org>, "Philip Müller" <philm@manjaro.org>
+Message-ID: <20221019085604.1017583-4-jolsa@kernel.org>
+
+From: Andrii Nakryiko <andrii@kernel.org>
+
+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 <andrii@kernel.org>
+Acked-by: Mel Gorman <mgorman@techsingularity.net>
+Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
+Cc: Hao Luo <haoluo@google.com>
+Cc: Michal Suchanek <msuchanek@suse.de>
+Cc: Jiri Olsa <jolsa@kernel.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Jiri Olsa <jolsa@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..130e5b5
--- /dev/null
@@ -0,0 +1,100 @@
+From foo@baz Wed Oct 26 06:44:13 PM CEST 2022
+From: Jiri Olsa <jolsa@kernel.org>
+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" <andrii@kernel.org>, bpf@vger.kernel.org, "Arnaldo Carvalho de Melo" <acme@kernel.org>, "Daniel Borkmann" <daniel@iogearbox.net>, "Martin Rodriguez Reboredo" <yakoyoku@gmail.com>, "Javier Martinez Canillas" <javierm@redhat.com>, "Ilya Leoshkevich" <iii@linux.ibm.com>, "Nathan Chancellor" <nathan@kernel.org>, "Philip Müller" <philm@manjaro.org>
+Message-ID: <20221019085604.1017583-5-jolsa@kernel.org>
+
+From: Jiri Olsa <jolsa@redhat.com>
+
+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 <jolsa@kernel.org>
+Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
+Acked-by: Andrii Nakryiko <andrii@kernel.org>
+Link: https://lore.kernel.org/bpf/20211029125729.70002-1-jolsa@kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 (file)
index 0000000..363c530
--- /dev/null
@@ -0,0 +1,56 @@
+From 1bd3a383075c64d638e65d263c9267b08ee7733c Mon Sep 17 00:00:00 2001
+From: Jean-Francois Le Fillatre <jflf_kernel@gmx.com>
+Date: Wed, 24 Aug 2022 21:14:36 +0200
+Subject: r8152: add PID for the Lenovo OneLink+ Dock
+
+From: Jean-Francois Le Fillatre <jflf_kernel@gmx.com>
+
+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 <jflf_kernel@gmx.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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)},
index 083c53ab6fa53c8c1fffa76acd15b45e0a9f8acb..f0142d52a067b1432729307e95bc42374b981f5b 100644 (file)
@@ -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