]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Fixes for 5.10
authorSasha Levin <sashal@kernel.org>
Sun, 14 Feb 2021 16:44:56 +0000 (11:44 -0500)
committerSasha Levin <sashal@kernel.org>
Sun, 14 Feb 2021 16:44:56 +0000 (11:44 -0500)
Signed-off-by: Sasha Levin <sashal@kernel.org>
31 files changed:
queue-5.10/arm-dts-lpc32xx-revert-set-default-clock-rate-of-hcl.patch [new file with mode: 0644]
queue-5.10/arm-ensure-the-signal-page-contains-defined-contents.patch [new file with mode: 0644]
queue-5.10/arm-kexec-fix-oops-after-tlb-are-invalidated.patch [new file with mode: 0644]
queue-5.10/arm-omap2-fix-suspcious-rcu-usage-splats-for-omap_en.patch [new file with mode: 0644]
queue-5.10/arm64-dts-qcom-sdm845-reserve-lpass-clocks-in-gcc.patch [new file with mode: 0644]
queue-5.10/arm64-dts-rockchip-disable-display-for-nanopi-r2s.patch [new file with mode: 0644]
queue-5.10/arm64-dts-rockchip-fix-pcie-dt-properties-on-rk3399.patch [new file with mode: 0644]
queue-5.10/arm64-dts-rockchip-remove-interrupt-names-property-f.patch [new file with mode: 0644]
queue-5.10/bfq-iosched-revert-bfq-fix-computation-of-shallow-de.patch [new file with mode: 0644]
queue-5.10/cap-fix-conversions-on-getxattr.patch [new file with mode: 0644]
queue-5.10/drm-amd-display-add-more-clock-sources-to-dcn2.1.patch [new file with mode: 0644]
queue-5.10/drm-amd-display-decrement-refcount-of-dc_sink-before.patch [new file with mode: 0644]
queue-5.10/drm-amd-display-fix-dc_sink-kref-count-in-emulated_l.patch [new file with mode: 0644]
queue-5.10/drm-amd-display-fix-dpcd-translation-for-lttpr-aux_r.patch [new file with mode: 0644]
queue-5.10/drm-amd-display-free-atomic-state-after-drm_atomic_c.patch [new file with mode: 0644]
queue-5.10/drm-amd-display-release-dsc-before-acquiring.patch [new file with mode: 0644]
queue-5.10/kallsyms-fix-nonconverging-kallsyms-table-with-lld.patch [new file with mode: 0644]
queue-5.10/kasan-add-explicit-preconditions-to-kasan_report.patch [new file with mode: 0644]
queue-5.10/kbuild-simplify-gcc_plugins-enablement-in-dummy-tool.patch [new file with mode: 0644]
queue-5.10/nvme-pci-ignore-the-subsysem-nqn-on-phison-e16.patch [new file with mode: 0644]
queue-5.10/ovl-perform-vfs_getxattr-with-mounter-creds.patch [new file with mode: 0644]
queue-5.10/ovl-skip-getxattr-of-security-labels.patch [new file with mode: 0644]
queue-5.10/platform-x86-hp-wmi-disable-tablet-mode-reporting-by.patch [new file with mode: 0644]
queue-5.10/revert-lib-restrict-cpumask_local_spread-to-houskeep.patch [new file with mode: 0644]
queue-5.10/riscv-virt_addr_valid-must-check-the-address-belongs.patch [new file with mode: 0644]
queue-5.10/scsi-lpfc-fix-eeh-encountering-oops-with-nvme-traffi.patch [new file with mode: 0644]
queue-5.10/series
queue-5.10/soc-ti-omap-prm-fix-boot-time-errors-for-rst_map_012.patch [new file with mode: 0644]
queue-5.10/ubsan-implement-__ubsan_handle_alignment_assumption.patch [new file with mode: 0644]
queue-5.10/x86-efi-remove-efi-pgd-build-time-checks.patch [new file with mode: 0644]
queue-5.10/x86-split_lock-enable-the-split-lock-feature-on-anot.patch [new file with mode: 0644]

diff --git a/queue-5.10/arm-dts-lpc32xx-revert-set-default-clock-rate-of-hcl.patch b/queue-5.10/arm-dts-lpc32xx-revert-set-default-clock-rate-of-hcl.patch
new file mode 100644 (file)
index 0000000..519ee72
--- /dev/null
@@ -0,0 +1,47 @@
+From bc3a0b11c4c7b44999c447370dc3eeab80c32fd7 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 3 Feb 2021 10:03:20 +0100
+Subject: ARM: dts: lpc32xx: Revert set default clock rate of HCLK PLL
+
+From: Alexandre Belloni <alexandre.belloni@bootlin.com>
+
+[ Upstream commit 5638159f6d93b99ec9743ac7f65563fca3cf413d ]
+
+This reverts commit c17e9377aa81664d94b4f2102559fcf2a01ec8e7.
+
+The lpc32xx clock driver is not able to actually change the PLL rate as
+this would require reparenting ARM_CLK, DDRAM_CLK, PERIPH_CLK to SYSCLK,
+then stop the PLL, update the register, restart the PLL and wait for the
+PLL to lock and finally reparent ARM_CLK, DDRAM_CLK, PERIPH_CLK to HCLK
+PLL.
+
+Currently, the HCLK driver simply updates the registers but this has no
+real effect and all the clock rate calculation end up being wrong. This is
+especially annoying for the peripheral (e.g. UARTs, I2C, SPI).
+
+Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Tested-by: Gregory CLEMENT <gregory.clement@bootlin.com>
+Link: https://lore.kernel.org/r/20210203090320.GA3760268@piout.net'
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/boot/dts/lpc32xx.dtsi | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/arch/arm/boot/dts/lpc32xx.dtsi b/arch/arm/boot/dts/lpc32xx.dtsi
+index 7b7ec7b1217b8..824393e1bcfb7 100644
+--- a/arch/arm/boot/dts/lpc32xx.dtsi
++++ b/arch/arm/boot/dts/lpc32xx.dtsi
+@@ -329,9 +329,6 @@
+                                       clocks = <&xtal_32k>, <&xtal>;
+                                       clock-names = "xtal_32k", "xtal";
+-
+-                                      assigned-clocks = <&clk LPC32XX_CLK_HCLK_PLL>;
+-                                      assigned-clock-rates = <208000000>;
+                               };
+                       };
+-- 
+2.27.0
+
diff --git a/queue-5.10/arm-ensure-the-signal-page-contains-defined-contents.patch b/queue-5.10/arm-ensure-the-signal-page-contains-defined-contents.patch
new file mode 100644 (file)
index 0000000..761fc60
--- /dev/null
@@ -0,0 +1,54 @@
+From 77efa8fcd810302e5cbb4cba1c5ac74c4fcaf30b Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 29 Jan 2021 10:19:07 +0000
+Subject: ARM: ensure the signal page contains defined contents
+
+From: Russell King <rmk+kernel@armlinux.org.uk>
+
+[ Upstream commit 9c698bff66ab4914bb3d71da7dc6112519bde23e ]
+
+Ensure that the signal page contains our poison instruction to increase
+the protection against ROP attacks and also contains well defined
+contents.
+
+Acked-by: Will Deacon <will@kernel.org>
+Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/kernel/signal.c | 14 ++++++++------
+ 1 file changed, 8 insertions(+), 6 deletions(-)
+
+diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
+index 585edbfccf6df..2f81d3af5f9af 100644
+--- a/arch/arm/kernel/signal.c
++++ b/arch/arm/kernel/signal.c
+@@ -693,18 +693,20 @@ struct page *get_signal_page(void)
+       addr = page_address(page);
++      /* Poison the entire page */
++      memset32(addr, __opcode_to_mem_arm(0xe7fddef1),
++               PAGE_SIZE / sizeof(u32));
++
+       /* Give the signal return code some randomness */
+       offset = 0x200 + (get_random_int() & 0x7fc);
+       signal_return_offset = offset;
+-      /*
+-       * Copy signal return handlers into the vector page, and
+-       * set sigreturn to be a pointer to these.
+-       */
++      /* Copy signal return handlers into the page */
+       memcpy(addr + offset, sigreturn_codes, sizeof(sigreturn_codes));
+-      ptr = (unsigned long)addr + offset;
+-      flush_icache_range(ptr, ptr + sizeof(sigreturn_codes));
++      /* Flush out all instructions in this page */
++      ptr = (unsigned long)addr;
++      flush_icache_range(ptr, ptr + PAGE_SIZE);
+       return page;
+ }
+-- 
+2.27.0
+
diff --git a/queue-5.10/arm-kexec-fix-oops-after-tlb-are-invalidated.patch b/queue-5.10/arm-kexec-fix-oops-after-tlb-are-invalidated.patch
new file mode 100644 (file)
index 0000000..13deb47
--- /dev/null
@@ -0,0 +1,204 @@
+From 003e9fc041c9098d78cbaaf99059b4cf2a70b3e6 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 1 Feb 2021 19:40:01 +0000
+Subject: ARM: kexec: fix oops after TLB are invalidated
+
+From: Russell King <rmk+kernel@armlinux.org.uk>
+
+[ Upstream commit 4d62e81b60d4025e2dfcd5ea531cc1394ce9226f ]
+
+Giancarlo Ferrari reports the following oops while trying to use kexec:
+
+ Unable to handle kernel paging request at virtual address 80112f38
+ pgd = fd7ef03e
+ [80112f38] *pgd=0001141e(bad)
+ Internal error: Oops: 80d [#1] PREEMPT SMP ARM
+ ...
+
+This is caused by machine_kexec() trying to set the kernel text to be
+read/write, so it can poke values into the relocation code before
+copying it - and an interrupt occuring which changes the page tables.
+The subsequent writes then hit read-only sections that trigger a
+data abort resulting in the above oops.
+
+Fix this by copying the relocation code, and then writing the variables
+into the destination, thereby avoiding the need to make the kernel text
+read/write.
+
+Reported-by: Giancarlo Ferrari <giancarlo.ferrari89@gmail.com>
+Tested-by: Giancarlo Ferrari <giancarlo.ferrari89@gmail.com>
+Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/include/asm/kexec-internal.h | 12 +++++++++
+ arch/arm/kernel/asm-offsets.c         |  5 ++++
+ arch/arm/kernel/machine_kexec.c       | 20 ++++++--------
+ arch/arm/kernel/relocate_kernel.S     | 38 ++++++++-------------------
+ 4 files changed, 36 insertions(+), 39 deletions(-)
+ create mode 100644 arch/arm/include/asm/kexec-internal.h
+
+diff --git a/arch/arm/include/asm/kexec-internal.h b/arch/arm/include/asm/kexec-internal.h
+new file mode 100644
+index 0000000000000..ecc2322db7aa1
+--- /dev/null
++++ b/arch/arm/include/asm/kexec-internal.h
+@@ -0,0 +1,12 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++#ifndef _ARM_KEXEC_INTERNAL_H
++#define _ARM_KEXEC_INTERNAL_H
++
++struct kexec_relocate_data {
++      unsigned long kexec_start_address;
++      unsigned long kexec_indirection_page;
++      unsigned long kexec_mach_type;
++      unsigned long kexec_r2;
++};
++
++#endif
+diff --git a/arch/arm/kernel/asm-offsets.c b/arch/arm/kernel/asm-offsets.c
+index a1570c8bab25a..be8050b0c3dfb 100644
+--- a/arch/arm/kernel/asm-offsets.c
++++ b/arch/arm/kernel/asm-offsets.c
+@@ -12,6 +12,7 @@
+ #include <linux/mm.h>
+ #include <linux/dma-mapping.h>
+ #include <asm/cacheflush.h>
++#include <asm/kexec-internal.h>
+ #include <asm/glue-df.h>
+ #include <asm/glue-pf.h>
+ #include <asm/mach/arch.h>
+@@ -170,5 +171,9 @@ int main(void)
+   DEFINE(MPU_RGN_PRBAR,       offsetof(struct mpu_rgn, prbar));
+   DEFINE(MPU_RGN_PRLAR,       offsetof(struct mpu_rgn, prlar));
+ #endif
++  DEFINE(KEXEC_START_ADDR,    offsetof(struct kexec_relocate_data, kexec_start_address));
++  DEFINE(KEXEC_INDIR_PAGE,    offsetof(struct kexec_relocate_data, kexec_indirection_page));
++  DEFINE(KEXEC_MACH_TYPE,     offsetof(struct kexec_relocate_data, kexec_mach_type));
++  DEFINE(KEXEC_R2,            offsetof(struct kexec_relocate_data, kexec_r2));
+   return 0; 
+ }
+diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c
+index 5d84ad333f050..2b09dad7935eb 100644
+--- a/arch/arm/kernel/machine_kexec.c
++++ b/arch/arm/kernel/machine_kexec.c
+@@ -13,6 +13,7 @@
+ #include <linux/of_fdt.h>
+ #include <asm/mmu_context.h>
+ #include <asm/cacheflush.h>
++#include <asm/kexec-internal.h>
+ #include <asm/fncpy.h>
+ #include <asm/mach-types.h>
+ #include <asm/smp_plat.h>
+@@ -22,11 +23,6 @@
+ extern void relocate_new_kernel(void);
+ extern const unsigned int relocate_new_kernel_size;
+-extern unsigned long kexec_start_address;
+-extern unsigned long kexec_indirection_page;
+-extern unsigned long kexec_mach_type;
+-extern unsigned long kexec_boot_atags;
+-
+ static atomic_t waiting_for_crash_ipi;
+ /*
+@@ -159,6 +155,7 @@ void (*kexec_reinit)(void);
+ void machine_kexec(struct kimage *image)
+ {
+       unsigned long page_list, reboot_entry_phys;
++      struct kexec_relocate_data *data;
+       void (*reboot_entry)(void);
+       void *reboot_code_buffer;
+@@ -174,18 +171,17 @@ void machine_kexec(struct kimage *image)
+       reboot_code_buffer = page_address(image->control_code_page);
+-      /* Prepare parameters for reboot_code_buffer*/
+-      set_kernel_text_rw();
+-      kexec_start_address = image->start;
+-      kexec_indirection_page = page_list;
+-      kexec_mach_type = machine_arch_type;
+-      kexec_boot_atags = image->arch.kernel_r2;
+-
+       /* copy our kernel relocation code to the control code page */
+       reboot_entry = fncpy(reboot_code_buffer,
+                            &relocate_new_kernel,
+                            relocate_new_kernel_size);
++      data = reboot_code_buffer + relocate_new_kernel_size;
++      data->kexec_start_address = image->start;
++      data->kexec_indirection_page = page_list;
++      data->kexec_mach_type = machine_arch_type;
++      data->kexec_r2 = image->arch.kernel_r2;
++
+       /* get the identity mapping physical address for the reboot code */
+       reboot_entry_phys = virt_to_idmap(reboot_entry);
+diff --git a/arch/arm/kernel/relocate_kernel.S b/arch/arm/kernel/relocate_kernel.S
+index 72a08786e16eb..218d524360fcd 100644
+--- a/arch/arm/kernel/relocate_kernel.S
++++ b/arch/arm/kernel/relocate_kernel.S
+@@ -5,14 +5,16 @@
+ #include <linux/linkage.h>
+ #include <asm/assembler.h>
++#include <asm/asm-offsets.h>
+ #include <asm/kexec.h>
+       .align  3       /* not needed for this code, but keeps fncpy() happy */
+ ENTRY(relocate_new_kernel)
+-      ldr     r0,kexec_indirection_page
+-      ldr     r1,kexec_start_address
++      adr     r7, relocate_new_kernel_end
++      ldr     r0, [r7, #KEXEC_INDIR_PAGE]
++      ldr     r1, [r7, #KEXEC_START_ADDR]
+       /*
+        * If there is no indirection page (we are doing crashdumps)
+@@ -57,34 +59,16 @@ ENTRY(relocate_new_kernel)
+ 2:
+       /* Jump to relocated kernel */
+-      mov lr,r1
+-      mov r0,#0
+-      ldr r1,kexec_mach_type
+-      ldr r2,kexec_boot_atags
+- ARM( ret lr  )
+- THUMB(       bx lr           )
+-
+-      .align
+-
+-      .globl kexec_start_address
+-kexec_start_address:
+-      .long   0x0
+-
+-      .globl kexec_indirection_page
+-kexec_indirection_page:
+-      .long   0x0
+-
+-      .globl kexec_mach_type
+-kexec_mach_type:
+-      .long   0x0
+-
+-      /* phy addr of the atags for the new kernel */
+-      .globl kexec_boot_atags
+-kexec_boot_atags:
+-      .long   0x0
++      mov     lr, r1
++      mov     r0, #0
++      ldr     r1, [r7, #KEXEC_MACH_TYPE]
++      ldr     r2, [r7, #KEXEC_R2]
++ ARM( ret     lr      )
++ THUMB(       bx      lr      )
+ ENDPROC(relocate_new_kernel)
++      .align  3
+ relocate_new_kernel_end:
+       .globl relocate_new_kernel_size
+-- 
+2.27.0
+
diff --git a/queue-5.10/arm-omap2-fix-suspcious-rcu-usage-splats-for-omap_en.patch b/queue-5.10/arm-omap2-fix-suspcious-rcu-usage-splats-for-omap_en.patch
new file mode 100644 (file)
index 0000000..8a512aa
--- /dev/null
@@ -0,0 +1,106 @@
+From 4f73f12fb13cbc4404d15170a81947dff6dfa11f Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 10 Jan 2021 21:09:11 +0200
+Subject: ARM: OMAP2+: Fix suspcious RCU usage splats for
+ omap_enter_idle_coupled
+
+From: Tony Lindgren <tony@atomide.com>
+
+[ Upstream commit 06862d789ddde8a99c1e579e934ca17c15a84755 ]
+
+We get suspcious RCU usage splats with cpuidle in several places in
+omap_enter_idle_coupled() with the kernel debug options enabled:
+
+RCU used illegally from extended quiescent state!
+...
+(_raw_spin_lock_irqsave)
+(omap_enter_idle_coupled+0x17c/0x2d8)
+(omap_enter_idle_coupled)
+(cpuidle_enter_state)
+(cpuidle_enter_state_coupled)
+(cpuidle_enter)
+
+Let's use RCU_NONIDLE to suppress these splats. Things got changed around
+with commit 1098582a0f6c ("sched,idle,rcu: Push rcu_idle deeper into the
+idle path") that started triggering these warnings.
+
+For the tick_broadcast related calls, ideally we'd just switch over to
+using CPUIDLE_FLAG_TIMER_STOP for omap_enter_idle_coupled() to have the
+generic cpuidle code handle the tick_broadcast related calls for us and
+then just drop the tick_broadcast calls here.
+
+But we're currently missing the call in the common cpuidle code for
+tick_broadcast_enable() that CPU1 hotplug needs as described in earlier
+commit 50d6b3cf9403 ("ARM: OMAP2+: fix lack of timer interrupts on CPU1
+after hotplug").
+
+Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
+Cc: Paul E. McKenney <paulmck@kernel.org>
+Cc: Russell King <rmk+kernel@armlinux.org.uk>
+Acked-by: Paul E. McKenney <paulmck@kernel.org>
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm/mach-omap2/cpuidle44xx.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c
+index c8d317fafe2ea..de37027ad7587 100644
+--- a/arch/arm/mach-omap2/cpuidle44xx.c
++++ b/arch/arm/mach-omap2/cpuidle44xx.c
+@@ -151,10 +151,10 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
+                                (cx->mpu_logic_state == PWRDM_POWER_OFF);
+       /* Enter broadcast mode for periodic timers */
+-      tick_broadcast_enable();
++      RCU_NONIDLE(tick_broadcast_enable());
+       /* Enter broadcast mode for one-shot timers */
+-      tick_broadcast_enter();
++      RCU_NONIDLE(tick_broadcast_enter());
+       /*
+        * Call idle CPU PM enter notifier chain so that
+@@ -166,7 +166,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
+       if (dev->cpu == 0) {
+               pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state);
+-              omap_set_pwrdm_state(mpu_pd, cx->mpu_state);
++              RCU_NONIDLE(omap_set_pwrdm_state(mpu_pd, cx->mpu_state));
+               /*
+                * Call idle CPU cluster PM enter notifier chain
+@@ -178,7 +178,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
+                               index = 0;
+                               cx = state_ptr + index;
+                               pwrdm_set_logic_retst(mpu_pd, cx->mpu_logic_state);
+-                              omap_set_pwrdm_state(mpu_pd, cx->mpu_state);
++                              RCU_NONIDLE(omap_set_pwrdm_state(mpu_pd, cx->mpu_state));
+                               mpuss_can_lose_context = 0;
+                       }
+               }
+@@ -194,9 +194,9 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
+                   mpuss_can_lose_context)
+                       gic_dist_disable();
+-              clkdm_deny_idle(cpu_clkdm[1]);
+-              omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON);
+-              clkdm_allow_idle(cpu_clkdm[1]);
++              RCU_NONIDLE(clkdm_deny_idle(cpu_clkdm[1]));
++              RCU_NONIDLE(omap_set_pwrdm_state(cpu_pd[1], PWRDM_POWER_ON));
++              RCU_NONIDLE(clkdm_allow_idle(cpu_clkdm[1]));
+               if (IS_PM44XX_ERRATUM(PM_OMAP4_ROM_SMP_BOOT_ERRATUM_GICD) &&
+                   mpuss_can_lose_context) {
+@@ -222,7 +222,7 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
+       cpu_pm_exit();
+ cpu_pm_out:
+-      tick_broadcast_exit();
++      RCU_NONIDLE(tick_broadcast_exit());
+ fail:
+       cpuidle_coupled_parallel_barrier(dev, &abort_barrier);
+-- 
+2.27.0
+
diff --git a/queue-5.10/arm64-dts-qcom-sdm845-reserve-lpass-clocks-in-gcc.patch b/queue-5.10/arm64-dts-qcom-sdm845-reserve-lpass-clocks-in-gcc.patch
new file mode 100644 (file)
index 0000000..523b09f
--- /dev/null
@@ -0,0 +1,61 @@
+From 403a85f095839c6c1d0170115b8b578ddb3e277a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 21 Dec 2020 16:11:03 -0800
+Subject: arm64: dts: qcom: sdm845: Reserve LPASS clocks in gcc
+
+From: Bjorn Andersson <bjorn.andersson@linaro.org>
+
+[ Upstream commit 93f2a11580a9732c1d90f9e01a7e9facc825658f ]
+
+The GCC_LPASS_Q6_AXI_CLK and GCC_LPASS_SWAY_CLK clocks may not be
+touched on a typical UEFI based SDM845 device, but when the kernel is
+built with CONFIG_SDM_LPASSCC_845 this happens, unless they are marked
+as protected-clocks in the DT.
+
+This was done for the MTP and the Pocophone, but not for DB845c and the
+Lenovo Yoga C630 - causing these to fail to boot if the LPASS clock
+controller is enabled (which it typically isn't).
+
+Tested-by: Vinod Koul <vkoul@kernel.org> #on db845c
+Reviewed-by: Vinod Koul <vkoul@kernel.org>
+Link: https://lore.kernel.org/r/20201222001103.3112306-1-bjorn.andersson@linaro.org
+Signed-off-by: Bjorn Andersson <bjorn.andersson@linaro.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm64/boot/dts/qcom/sdm845-db845c.dts           | 4 +++-
+ arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts | 4 +++-
+ 2 files changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
+index 7cc236575ee20..c0b93813ea9ac 100644
+--- a/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
++++ b/arch/arm64/boot/dts/qcom/sdm845-db845c.dts
+@@ -415,7 +415,9 @@
+ &gcc {
+       protected-clocks = <GCC_QSPI_CORE_CLK>,
+                          <GCC_QSPI_CORE_CLK_SRC>,
+-                         <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
++                         <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
++                         <GCC_LPASS_Q6_AXI_CLK>,
++                         <GCC_LPASS_SWAY_CLK>;
+ };
+ &gpu {
+diff --git a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
+index d70aae77a6e84..888dc23a530e6 100644
+--- a/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
++++ b/arch/arm64/boot/dts/qcom/sdm850-lenovo-yoga-c630.dts
+@@ -245,7 +245,9 @@
+ &gcc {
+       protected-clocks = <GCC_QSPI_CORE_CLK>,
+                          <GCC_QSPI_CORE_CLK_SRC>,
+-                         <GCC_QSPI_CNOC_PERIPH_AHB_CLK>;
++                         <GCC_QSPI_CNOC_PERIPH_AHB_CLK>,
++                         <GCC_LPASS_Q6_AXI_CLK>,
++                         <GCC_LPASS_SWAY_CLK>;
+ };
+ &gpu {
+-- 
+2.27.0
+
diff --git a/queue-5.10/arm64-dts-rockchip-disable-display-for-nanopi-r2s.patch b/queue-5.10/arm64-dts-rockchip-disable-display-for-nanopi-r2s.patch
new file mode 100644 (file)
index 0000000..b2de3d1
--- /dev/null
@@ -0,0 +1,42 @@
+From 96466b15a192008c539f465a99ebd0d18855249d Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 20 Jan 2021 23:41:39 +0000
+Subject: arm64: dts: rockchip: Disable display for NanoPi R2S
+
+From: Robin Murphy <robin.murphy@arm.com>
+
+[ Upstream commit 74532de460ec664e5a725507d1b59aa9e4d40776 ]
+
+NanoPi R2S is headless, so rightly does not enable any of the display
+interface hardware, which currently provokes an obnoxious error in the
+boot log from the fake DRM device failing to find anything to bind to.
+It probably isn't *too* hard to obviate the fake device shenanigans
+entirely with a bit of driver reshuffling, but for now let's just
+disable it here to shut up the spurious error.
+
+Signed-off-by: Robin Murphy <robin.murphy@arm.com>
+Link: https://lore.kernel.org/r/c4553dfad1ad6792c4f22454c135ff55de77e2d6.1611186099.git.robin.murphy@arm.com
+Signed-off-by: Heiko Stuebner <heiko@sntech.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
+index 2ee07d15a6e37..1eecad724f04c 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
++++ b/arch/arm64/boot/dts/rockchip/rk3328-nanopi-r2s.dts
+@@ -114,6 +114,10 @@
+       cpu-supply = <&vdd_arm>;
+ };
++&display_subsystem {
++      status = "disabled";
++};
++
+ &gmac2io {
+       assigned-clocks = <&cru SCLK_MAC2IO>, <&cru SCLK_MAC2IO_EXT>;
+       assigned-clock-parents = <&gmac_clk>, <&gmac_clk>;
+-- 
+2.27.0
+
diff --git a/queue-5.10/arm64-dts-rockchip-fix-pcie-dt-properties-on-rk3399.patch b/queue-5.10/arm64-dts-rockchip-fix-pcie-dt-properties-on-rk3399.patch
new file mode 100644 (file)
index 0000000..99ba0aa
--- /dev/null
@@ -0,0 +1,50 @@
+From ec845f4176db65e2d00975f3c9ac46535e9c68e0 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 15 Aug 2020 13:51:12 +0100
+Subject: arm64: dts: rockchip: Fix PCIe DT properties on rk3399
+
+From: Marc Zyngier <maz@kernel.org>
+
+[ Upstream commit 43f20b1c6140896916f4e91aacc166830a7ba849 ]
+
+It recently became apparent that the lack of a 'device_type = "pci"'
+in the PCIe root complex node for rk3399 is a violation of the PCI
+binding, as documented in IEEE Std 1275-1994. Changes to the kernel's
+parsing of the DT made such violation fatal, as drivers cannot
+probe the controller anymore.
+
+Add the missing property makes the PCIe node compliant. While we
+are at it, drop the pointless linux,pci-domain property, which only
+makes sense when there are multiple host bridges.
+
+Signed-off-by: Marc Zyngier <maz@kernel.org>
+Link: https://lore.kernel.org/r/20200815125112.462652-3-maz@kernel.org
+Signed-off-by: Heiko Stuebner <heiko@sntech.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+index 7a9a7aca86c6a..5df535ad4bbc3 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+@@ -234,6 +234,7 @@
+               reg = <0x0 0xf8000000 0x0 0x2000000>,
+                     <0x0 0xfd000000 0x0 0x1000000>;
+               reg-names = "axi-base", "apb-base";
++              device_type = "pci";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               #interrupt-cells = <1>;
+@@ -252,7 +253,6 @@
+                               <0 0 0 2 &pcie0_intc 1>,
+                               <0 0 0 3 &pcie0_intc 2>,
+                               <0 0 0 4 &pcie0_intc 3>;
+-              linux,pci-domain = <0>;
+               max-link-speed = <1>;
+               msi-map = <0x0 &its 0x0 0x1000>;
+               phys = <&pcie_phy 0>, <&pcie_phy 1>,
+-- 
+2.27.0
+
diff --git a/queue-5.10/arm64-dts-rockchip-remove-interrupt-names-property-f.patch b/queue-5.10/arm64-dts-rockchip-remove-interrupt-names-property-f.patch
new file mode 100644 (file)
index 0000000..402d451
--- /dev/null
@@ -0,0 +1,45 @@
+From 596d69b58eb7de1854b2c4b6493c72f4c6b31885 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sun, 17 Jan 2021 19:16:53 +0100
+Subject: arm64: dts: rockchip: remove interrupt-names property from rk3399
+ vdec node
+
+From: Johan Jonker <jbx6244@gmail.com>
+
+[ Upstream commit 94a5400f8b966c91c49991bae41c2ef911b935ac ]
+
+A test with the command below gives this error:
+/arch/arm64/boot/dts/rockchip/rk3399-evb.dt.yaml: video-codec@ff660000:
+'interrupt-names' does not match any of the regexes: 'pinctrl-[0-9]+'
+
+The rkvdec driver gets it irq with help of the platform_get_irq()
+function, so remove the interrupt-names property from the rk3399
+vdec node.
+
+make ARCH=arm64 dtbs_check
+DT_SCHEMA_FILES=Documentation/devicetree/bindings/
+media/rockchip,vdec.yaml
+
+Signed-off-by: Johan Jonker <jbx6244@gmail.com>
+Link: https://lore.kernel.org/r/20210117181653.24886-1-jbx6244@gmail.com
+Signed-off-by: Heiko Stuebner <heiko@sntech.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/arm64/boot/dts/rockchip/rk3399.dtsi | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+index 5df535ad4bbc3..7e69603fb41c0 100644
+--- a/arch/arm64/boot/dts/rockchip/rk3399.dtsi
++++ b/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+@@ -1278,7 +1278,6 @@
+               compatible = "rockchip,rk3399-vdec";
+               reg = <0x0 0xff660000 0x0 0x400>;
+               interrupts = <GIC_SPI 116 IRQ_TYPE_LEVEL_HIGH 0>;
+-              interrupt-names = "vdpu";
+               clocks = <&cru ACLK_VDU>, <&cru HCLK_VDU>,
+                        <&cru SCLK_VDU_CA>, <&cru SCLK_VDU_CORE>;
+               clock-names = "axi", "ahb", "cabac", "core";
+-- 
+2.27.0
+
diff --git a/queue-5.10/bfq-iosched-revert-bfq-fix-computation-of-shallow-de.patch b/queue-5.10/bfq-iosched-revert-bfq-fix-computation-of-shallow-de.patch
new file mode 100644 (file)
index 0000000..1597e94
--- /dev/null
@@ -0,0 +1,68 @@
+From 5b07d26ffa2e6bced341949c4f4c37c3815eb8d4 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 2 Feb 2021 07:18:23 -0700
+Subject: bfq-iosched: Revert "bfq: Fix computation of shallow depth"
+
+From: Lin Feng <linf@wangsu.com>
+
+[ Upstream commit 388c705b95f23f317fa43e6abf9ff07b583b721a ]
+
+This reverts commit 6d4d273588378c65915acaf7b2ee74e9dd9c130a.
+
+bfq.limit_depth passes word_depths[] as shallow_depth down to sbitmap core
+sbitmap_get_shallow, which uses just the number to limit the scan depth of
+each bitmap word, formula:
+scan_percentage_for_each_word = shallow_depth / (1 << sbimap->shift) * 100%
+
+That means the comments's percentiles 50%, 75%, 18%, 37% of bfq are correct.
+But after commit patch 'bfq: Fix computation of shallow depth', we use
+sbitmap.depth instead, as a example in following case:
+
+sbitmap.depth = 256, map_nr = 4, shift = 6; sbitmap_word.depth = 64.
+The resulsts of computed bfqd->word_depths[] are {128, 192, 48, 96}, and
+three of the numbers exceed core dirver's 'sbitmap_word.depth=64' limit
+nothing.
+
+Signed-off-by: Lin Feng <linf@wangsu.com>
+Reviewed-by: Jan Kara <jack@suse.cz>
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ block/bfq-iosched.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
+index 9e4eb0fc1c16e..9e81d1052091f 100644
+--- a/block/bfq-iosched.c
++++ b/block/bfq-iosched.c
+@@ -6332,13 +6332,13 @@ static unsigned int bfq_update_depths(struct bfq_data *bfqd,
+        * limit 'something'.
+        */
+       /* no more than 50% of tags for async I/O */
+-      bfqd->word_depths[0][0] = max(bt->sb.depth >> 1, 1U);
++      bfqd->word_depths[0][0] = max((1U << bt->sb.shift) >> 1, 1U);
+       /*
+        * no more than 75% of tags for sync writes (25% extra tags
+        * w.r.t. async I/O, to prevent async I/O from starving sync
+        * writes)
+        */
+-      bfqd->word_depths[0][1] = max((bt->sb.depth * 3) >> 2, 1U);
++      bfqd->word_depths[0][1] = max(((1U << bt->sb.shift) * 3) >> 2, 1U);
+       /*
+        * In-word depths in case some bfq_queue is being weight-
+@@ -6348,9 +6348,9 @@ static unsigned int bfq_update_depths(struct bfq_data *bfqd,
+        * shortage.
+        */
+       /* no more than ~18% of tags for async I/O */
+-      bfqd->word_depths[1][0] = max((bt->sb.depth * 3) >> 4, 1U);
++      bfqd->word_depths[1][0] = max(((1U << bt->sb.shift) * 3) >> 4, 1U);
+       /* no more than ~37% of tags for sync writes (~20% extra tags) */
+-      bfqd->word_depths[1][1] = max((bt->sb.depth * 6) >> 4, 1U);
++      bfqd->word_depths[1][1] = max(((1U << bt->sb.shift) * 6) >> 4, 1U);
+       for (i = 0; i < 2; i++)
+               for (j = 0; j < 2; j++)
+-- 
+2.27.0
+
diff --git a/queue-5.10/cap-fix-conversions-on-getxattr.patch b/queue-5.10/cap-fix-conversions-on-getxattr.patch
new file mode 100644 (file)
index 0000000..fe855ca
--- /dev/null
@@ -0,0 +1,145 @@
+From 8b7537a06c1e3e4f4f7ddaf713dac3c936e00865 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 28 Jan 2021 10:22:48 +0100
+Subject: cap: fix conversions on getxattr
+
+From: Miklos Szeredi <mszeredi@redhat.com>
+
+[ Upstream commit f2b00be488730522d0fb7a8a5de663febdcefe0a ]
+
+If a capability is stored on disk in v2 format cap_inode_getsecurity() will
+currently return in v2 format unconditionally.
+
+This is wrong: v2 cap should be equivalent to a v3 cap with zero rootid,
+and so the same conversions performed on it.
+
+If the rootid cannot be mapped, v3 is returned unconverted.  Fix this so
+that both v2 and v3 return -EOVERFLOW if the rootid (or the owner of the fs
+user namespace in case of v2) cannot be mapped into the current user
+namespace.
+
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ security/commoncap.c | 67 ++++++++++++++++++++++++++++----------------
+ 1 file changed, 43 insertions(+), 24 deletions(-)
+
+diff --git a/security/commoncap.c b/security/commoncap.c
+index 59bf3c1674c8b..a6c9bb4441d54 100644
+--- a/security/commoncap.c
++++ b/security/commoncap.c
+@@ -371,10 +371,11 @@ int cap_inode_getsecurity(struct inode *inode, const char *name, void **buffer,
+ {
+       int size, ret;
+       kuid_t kroot;
++      u32 nsmagic, magic;
+       uid_t root, mappedroot;
+       char *tmpbuf = NULL;
+       struct vfs_cap_data *cap;
+-      struct vfs_ns_cap_data *nscap;
++      struct vfs_ns_cap_data *nscap = NULL;
+       struct dentry *dentry;
+       struct user_namespace *fs_ns;
+@@ -396,46 +397,61 @@ int cap_inode_getsecurity(struct inode *inode, const char *name, void **buffer,
+       fs_ns = inode->i_sb->s_user_ns;
+       cap = (struct vfs_cap_data *) tmpbuf;
+       if (is_v2header((size_t) ret, cap)) {
+-              /* If this is sizeof(vfs_cap_data) then we're ok with the
+-               * on-disk value, so return that.  */
+-              if (alloc)
+-                      *buffer = tmpbuf;
+-              else
+-                      kfree(tmpbuf);
+-              return ret;
+-      } else if (!is_v3header((size_t) ret, cap)) {
+-              kfree(tmpbuf);
+-              return -EINVAL;
++              root = 0;
++      } else if (is_v3header((size_t) ret, cap)) {
++              nscap = (struct vfs_ns_cap_data *) tmpbuf;
++              root = le32_to_cpu(nscap->rootid);
++      } else {
++              size = -EINVAL;
++              goto out_free;
+       }
+-      nscap = (struct vfs_ns_cap_data *) tmpbuf;
+-      root = le32_to_cpu(nscap->rootid);
+       kroot = make_kuid(fs_ns, root);
+       /* If the root kuid maps to a valid uid in current ns, then return
+        * this as a nscap. */
+       mappedroot = from_kuid(current_user_ns(), kroot);
+       if (mappedroot != (uid_t)-1 && mappedroot != (uid_t)0) {
++              size = sizeof(struct vfs_ns_cap_data);
+               if (alloc) {
+-                      *buffer = tmpbuf;
++                      if (!nscap) {
++                              /* v2 -> v3 conversion */
++                              nscap = kzalloc(size, GFP_ATOMIC);
++                              if (!nscap) {
++                                      size = -ENOMEM;
++                                      goto out_free;
++                              }
++                              nsmagic = VFS_CAP_REVISION_3;
++                              magic = le32_to_cpu(cap->magic_etc);
++                              if (magic & VFS_CAP_FLAGS_EFFECTIVE)
++                                      nsmagic |= VFS_CAP_FLAGS_EFFECTIVE;
++                              memcpy(&nscap->data, &cap->data, sizeof(__le32) * 2 * VFS_CAP_U32);
++                              nscap->magic_etc = cpu_to_le32(nsmagic);
++                      } else {
++                              /* use allocated v3 buffer */
++                              tmpbuf = NULL;
++                      }
+                       nscap->rootid = cpu_to_le32(mappedroot);
+-              } else
+-                      kfree(tmpbuf);
+-              return size;
++                      *buffer = nscap;
++              }
++              goto out_free;
+       }
+       if (!rootid_owns_currentns(kroot)) {
+-              kfree(tmpbuf);
+-              return -EOPNOTSUPP;
++              size = -EOVERFLOW;
++              goto out_free;
+       }
+       /* This comes from a parent namespace.  Return as a v2 capability */
+       size = sizeof(struct vfs_cap_data);
+       if (alloc) {
+-              *buffer = kmalloc(size, GFP_ATOMIC);
+-              if (*buffer) {
+-                      struct vfs_cap_data *cap = *buffer;
+-                      __le32 nsmagic, magic;
++              if (nscap) {
++                      /* v3 -> v2 conversion */
++                      cap = kzalloc(size, GFP_ATOMIC);
++                      if (!cap) {
++                              size = -ENOMEM;
++                              goto out_free;
++                      }
+                       magic = VFS_CAP_REVISION_2;
+                       nsmagic = le32_to_cpu(nscap->magic_etc);
+                       if (nsmagic & VFS_CAP_FLAGS_EFFECTIVE)
+@@ -443,9 +459,12 @@ int cap_inode_getsecurity(struct inode *inode, const char *name, void **buffer,
+                       memcpy(&cap->data, &nscap->data, sizeof(__le32) * 2 * VFS_CAP_U32);
+                       cap->magic_etc = cpu_to_le32(magic);
+               } else {
+-                      size = -ENOMEM;
++                      /* use unconverted v2 */
++                      tmpbuf = NULL;
+               }
++              *buffer = cap;
+       }
++out_free:
+       kfree(tmpbuf);
+       return size;
+ }
+-- 
+2.27.0
+
diff --git a/queue-5.10/drm-amd-display-add-more-clock-sources-to-dcn2.1.patch b/queue-5.10/drm-amd-display-add-more-clock-sources-to-dcn2.1.patch
new file mode 100644 (file)
index 0000000..d98613e
--- /dev/null
@@ -0,0 +1,57 @@
+From 8a0457e4dbe30cff78117b22df59b4ea1a67a952 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 15 Jan 2021 13:53:15 -0500
+Subject: drm/amd/display: Add more Clock Sources to DCN2.1
+
+From: Sung Lee <sung.lee@amd.com>
+
+[ Upstream commit 1622711beebe887e4f0f8237fea1f09bb48e9a51 ]
+
+[WHY]
+When enabling HDMI on ComboPHY, there are not
+enough clock sources to complete display detection.
+
+[HOW]
+Initialize more clock sources.
+
+Signed-off-by: Sung Lee <sung.lee@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Anson Jacob <Anson.Jacob@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c
+index 20441127783ba..c993854404124 100644
+--- a/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c
++++ b/drivers/gpu/drm/amd/display/dc/dcn21/dcn21_resource.c
+@@ -902,6 +902,8 @@ enum dcn20_clk_src_array_id {
+       DCN20_CLK_SRC_PLL0,
+       DCN20_CLK_SRC_PLL1,
+       DCN20_CLK_SRC_PLL2,
++      DCN20_CLK_SRC_PLL3,
++      DCN20_CLK_SRC_PLL4,
+       DCN20_CLK_SRC_TOTAL_DCN21
+ };
+@@ -1880,6 +1882,14 @@ static bool dcn21_resource_construct(
+                       dcn21_clock_source_create(ctx, ctx->dc_bios,
+                               CLOCK_SOURCE_COMBO_PHY_PLL2,
+                               &clk_src_regs[2], false);
++      pool->base.clock_sources[DCN20_CLK_SRC_PLL3] =
++                      dcn21_clock_source_create(ctx, ctx->dc_bios,
++                              CLOCK_SOURCE_COMBO_PHY_PLL3,
++                              &clk_src_regs[3], false);
++      pool->base.clock_sources[DCN20_CLK_SRC_PLL4] =
++                      dcn21_clock_source_create(ctx, ctx->dc_bios,
++                              CLOCK_SOURCE_COMBO_PHY_PLL4,
++                              &clk_src_regs[4], false);
+       pool->base.clk_src_count = DCN20_CLK_SRC_TOTAL_DCN21;
+-- 
+2.27.0
+
diff --git a/queue-5.10/drm-amd-display-decrement-refcount-of-dc_sink-before.patch b/queue-5.10/drm-amd-display-decrement-refcount-of-dc_sink-before.patch
new file mode 100644 (file)
index 0000000..665d451
--- /dev/null
@@ -0,0 +1,46 @@
+From 5c92b5938603a010702523b0f6a076d30bd65313 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 15 Jan 2021 11:02:48 -0500
+Subject: drm/amd/display: Decrement refcount of dc_sink before reassignment
+
+From: Victor Lu <victorchengchi.lu@amd.com>
+
+[ Upstream commit 8e92bb0fa75bca9a57e4aba2e36f67d8016a3053 ]
+
+[why]
+An old dc_sink state is causing a memory leak because it is missing a
+dc_sink_release before a new dc_sink is assigned back to
+aconnector->dc_sink.
+
+[how]
+Decrement the dc_sink refcount before reassigning it to a new dc_sink.
+
+Signed-off-by: Victor Lu <victorchengchi.lu@amd.com>
+Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
+Acked-by: Anson Jacob <Anson.Jacob@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index 321df20fcdb99..fdca76fc598c0 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -2261,8 +2261,10 @@ void amdgpu_dm_update_connector_after_detect(
+                * TODO: check if we still need the S3 mode update workaround.
+                * If yes, put it here.
+                */
+-              if (aconnector->dc_sink)
++              if (aconnector->dc_sink) {
+                       amdgpu_dm_update_freesync_caps(connector, NULL);
++                      dc_sink_release(aconnector->dc_sink);
++              }
+               aconnector->dc_sink = sink;
+               dc_sink_retain(aconnector->dc_sink);
+-- 
+2.27.0
+
diff --git a/queue-5.10/drm-amd-display-fix-dc_sink-kref-count-in-emulated_l.patch b/queue-5.10/drm-amd-display-fix-dc_sink-kref-count-in-emulated_l.patch
new file mode 100644 (file)
index 0000000..9bff09d
--- /dev/null
@@ -0,0 +1,44 @@
+From 96a839ab6b46380f003bc0e49967fa2165cb352a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 14 Jan 2021 22:24:14 -0500
+Subject: drm/amd/display: Fix dc_sink kref count in emulated_link_detect
+
+From: Victor Lu <victorchengchi.lu@amd.com>
+
+[ Upstream commit 3ddc818d9bb877c64f5c649beab97af86c403702 ]
+
+[why]
+prev_sink is not used anywhere else in the function and the reference to
+it from dc_link is replaced with a new dc_sink.
+
+[how]
+Change dc_sink_retain(prev_sink) to dc_sink_release(prev_sink).
+
+Signed-off-by: Victor Lu <victorchengchi.lu@amd.com>
+Reviewed-by: Nicholas Kazlauskas <Nicholas.Kazlauskas@amd.com>
+Acked-by: Anson Jacob <Anson.Jacob@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index 580880212e551..e5e05a6cb62ab 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -1792,8 +1792,8 @@ static void emulated_link_detect(struct dc_link *link)
+       link->type = dc_connection_none;
+       prev_sink = link->local_sink;
+-      if (prev_sink != NULL)
+-              dc_sink_retain(prev_sink);
++      if (prev_sink)
++              dc_sink_release(prev_sink);
+       switch (link->connector_signal) {
+       case SIGNAL_TYPE_HDMI_TYPE_A: {
+-- 
+2.27.0
+
diff --git a/queue-5.10/drm-amd-display-fix-dpcd-translation-for-lttpr-aux_r.patch b/queue-5.10/drm-amd-display-fix-dpcd-translation-for-lttpr-aux_r.patch
new file mode 100644 (file)
index 0000000..6cb7e78
--- /dev/null
@@ -0,0 +1,50 @@
+From 4e0cd0b6b76b8cae742d110fa473311e65fa4606 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 22 Dec 2020 14:05:41 -0500
+Subject: drm/amd/display: Fix DPCD translation for LTTPR AUX_RD_INTERVAL
+
+From: George Shen <george.shen@amd.com>
+
+[ Upstream commit 2b6b7ab4b1cabfbee1af5d818efcab5d51d62c7e ]
+
+[Why]
+The translation between the DPCD value and the specified AUX_RD_INTERVAL
+in the DP spec do not match.
+
+[How]
+Update values to match the spec.
+
+Signed-off-by: George Shen <george.shen@amd.com>
+Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com>
+Acked-by: Anson Jacob <Anson.Jacob@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+index 17e6fd8201395..32b73ea866737 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c
+@@ -877,13 +877,13 @@ static uint32_t translate_training_aux_read_interval(uint32_t dpcd_aux_read_inte
+       switch (dpcd_aux_read_interval) {
+       case 0x01:
+-              aux_rd_interval_us = 400;
++              aux_rd_interval_us = 4000;
+               break;
+       case 0x02:
+-              aux_rd_interval_us = 4000;
++              aux_rd_interval_us = 8000;
+               break;
+       case 0x03:
+-              aux_rd_interval_us = 8000;
++              aux_rd_interval_us = 12000;
+               break;
+       case 0x04:
+               aux_rd_interval_us = 16000;
+-- 
+2.27.0
+
diff --git a/queue-5.10/drm-amd-display-free-atomic-state-after-drm_atomic_c.patch b/queue-5.10/drm-amd-display-free-atomic-state-after-drm_atomic_c.patch
new file mode 100644 (file)
index 0000000..9d3ceff
--- /dev/null
@@ -0,0 +1,73 @@
+From 8194431bf26d81085a12d90a766d2e645a2e1b8e Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 14 Jan 2021 16:27:07 -0500
+Subject: drm/amd/display: Free atomic state after drm_atomic_commit
+
+From: Victor Lu <victorchengchi.lu@amd.com>
+
+[ Upstream commit 2abaa323d744011982b20b8f3886184d56d23946 ]
+
+[why]
+drm_atomic_commit was changed so that the caller must free their
+drm_atomic_state reference on successes.
+
+[how]
+Add drm_atomic_commit_put after drm_atomic_commit call in
+dm_force_atomic_commit.
+
+Signed-off-by: Victor Lu <victorchengchi.lu@amd.com>
+Reviewed-by: Roman Li <Roman.Li@amd.com>
+Acked-by: Anson Jacob <Anson.Jacob@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+index e5e05a6cb62ab..321df20fcdb99 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+@@ -7870,14 +7870,14 @@ static int dm_force_atomic_commit(struct drm_connector *connector)
+       ret = PTR_ERR_OR_ZERO(conn_state);
+       if (ret)
+-              goto err;
++              goto out;
+       /* Attach crtc to drm_atomic_state*/
+       crtc_state = drm_atomic_get_crtc_state(state, &disconnected_acrtc->base);
+       ret = PTR_ERR_OR_ZERO(crtc_state);
+       if (ret)
+-              goto err;
++              goto out;
+       /* force a restore */
+       crtc_state->mode_changed = true;
+@@ -7887,17 +7887,15 @@ static int dm_force_atomic_commit(struct drm_connector *connector)
+       ret = PTR_ERR_OR_ZERO(plane_state);
+       if (ret)
+-              goto err;
+-
++              goto out;
+       /* Call commit internally with the state we just constructed */
+       ret = drm_atomic_commit(state);
+-      if (!ret)
+-              return 0;
+-err:
+-      DRM_ERROR("Restoring old state failed with %i\n", ret);
++out:
+       drm_atomic_state_put(state);
++      if (ret)
++              DRM_ERROR("Restoring old state failed with %i\n", ret);
+       return ret;
+ }
+-- 
+2.27.0
+
diff --git a/queue-5.10/drm-amd-display-release-dsc-before-acquiring.patch b/queue-5.10/drm-amd-display-release-dsc-before-acquiring.patch
new file mode 100644 (file)
index 0000000..cf605bb
--- /dev/null
@@ -0,0 +1,55 @@
+From 96cf0c55c44985a68e99374ccbc7c0438b580bd3 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 14 Jan 2021 11:48:57 -0500
+Subject: drm/amd/display: Release DSC before acquiring
+
+From: Mikita Lipski <mikita.lipski@amd.com>
+
+[ Upstream commit 58180a0cc0c57fe62a799a112f95b60f6935bd96 ]
+
+[why]
+Need to unassign DSC from pipes that are not using it
+so other pipes can acquire it. That is needed for
+asic's that have unmatching number of DSC engines from
+the number of pipes.
+
+[how]
+Before acquiring dsc to stream resources, first remove it.
+
+Signed-off-by: Mikita Lipski <mikita.lipski@amd.com>
+Reviewed-by: Eryk Brol <Eryk.Brol@amd.com>
+Acked-by: Anson Jacob <Anson.Jacob@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+index eee19edeeee5c..1e448f1b39a18 100644
+--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c
+@@ -828,6 +828,9 @@ bool compute_mst_dsc_configs_for_state(struct drm_atomic_state *state,
+               if (computed_streams[i])
+                       continue;
++              if (dcn20_remove_stream_from_ctx(stream->ctx->dc, dc_state, stream) != DC_OK)
++                      return false;
++
+               mutex_lock(&aconnector->mst_mgr.lock);
+               if (!compute_mst_dsc_configs_for_link(state, dc_state, stream->link)) {
+                       mutex_unlock(&aconnector->mst_mgr.lock);
+@@ -845,7 +848,8 @@ bool compute_mst_dsc_configs_for_state(struct drm_atomic_state *state,
+               stream = dc_state->streams[i];
+               if (stream->timing.flags.DSC == 1)
+-                      dc_stream_add_dsc_to_resource(stream->ctx->dc, dc_state, stream);
++                      if (dc_stream_add_dsc_to_resource(stream->ctx->dc, dc_state, stream) != DC_OK)
++                              return false;
+       }
+       return true;
+-- 
+2.27.0
+
diff --git a/queue-5.10/kallsyms-fix-nonconverging-kallsyms-table-with-lld.patch b/queue-5.10/kallsyms-fix-nonconverging-kallsyms-table-with-lld.patch
new file mode 100644 (file)
index 0000000..b6531fd
--- /dev/null
@@ -0,0 +1,56 @@
+From dfbe29c3e3c13504c002fea6b124c7f7d7af5778 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 4 Feb 2021 16:29:47 +0100
+Subject: kallsyms: fix nonconverging kallsyms table with lld
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+[ Upstream commit efe6e3068067212b85c2d0474b5ee3b2d0c7adab ]
+
+ARM randconfig builds with lld sometimes show a build failure
+from kallsyms:
+
+  Inconsistent kallsyms data
+  Try make KALLSYMS_EXTRA_PASS=1 as a workaround
+
+The problem is the veneers/thunks getting added by the linker extend
+the symbol table, which in turn leads to more veneers being needed,
+so it may take a few extra iterations to converge.
+
+This bug has been fixed multiple times before, but comes back every time
+a new symbol name is used. lld uses a different set of identifiers from
+ld.bfd, so the additional ones need to be added as well.
+
+I looked through the sources and found that arm64 and mips define similar
+prefixes, so I'm adding those as well, aside from the ones I observed. I'm
+not sure about powerpc64, which seems to already be handled through a
+section match, but if it comes back, the "__long_branch_" and "__plt_"
+prefixes would have to get added as well.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ scripts/kallsyms.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/scripts/kallsyms.c b/scripts/kallsyms.c
+index 7ecd2ccba531b..54ad86d137849 100644
+--- a/scripts/kallsyms.c
++++ b/scripts/kallsyms.c
+@@ -112,6 +112,12 @@ static bool is_ignored_symbol(const char *name, char type)
+               "__crc_",               /* modversions */
+               "__efistub_",           /* arm64 EFI stub namespace */
+               "__kvm_nvhe_",          /* arm64 non-VHE KVM namespace */
++              "__AArch64ADRPThunk_",  /* arm64 lld */
++              "__ARMV5PILongThunk_",  /* arm lld */
++              "__ARMV7PILongThunk_",
++              "__ThumbV7PILongThunk_",
++              "__LA25Thunk_",         /* mips lld */
++              "__microLA25Thunk_",
+               NULL
+       };
+-- 
+2.27.0
+
diff --git a/queue-5.10/kasan-add-explicit-preconditions-to-kasan_report.patch b/queue-5.10/kasan-add-explicit-preconditions-to-kasan_report.patch
new file mode 100644 (file)
index 0000000..c806ae6
--- /dev/null
@@ -0,0 +1,108 @@
+From ba00b65f4d2594a85a18eb19e8e9ad6c6f7aef56 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 4 Feb 2021 18:32:49 -0800
+Subject: kasan: add explicit preconditions to kasan_report()
+
+From: Vincenzo Frascino <vincenzo.frascino@arm.com>
+
+[ Upstream commit 49c6631d3b4f61a7b5bb0453a885a12bfa06ffd8 ]
+
+Patch series "kasan: Fix metadata detection for KASAN_HW_TAGS", v5.
+
+With the introduction of KASAN_HW_TAGS, kasan_report() currently assumes
+that every location in memory has valid metadata associated.  This is
+due to the fact that addr_has_metadata() returns always true.
+
+As a consequence of this, an invalid address (e.g.  NULL pointer
+address) passed to kasan_report() when KASAN_HW_TAGS is enabled, leads
+to a kernel panic.
+
+Example below, based on arm64:
+
+   BUG: KASAN: invalid-access in 0x0
+   Read at addr 0000000000000000 by task swapper/0/1
+   Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
+   Mem abort info:
+     ESR = 0x96000004
+     EC = 0x25: DABT (current EL), IL = 32 bits
+     SET = 0, FnV = 0
+     EA = 0, S1PTW = 0
+   Data abort info:
+     ISV = 0, ISS = 0x00000004
+     CM = 0, WnR = 0
+
+  ...
+
+   Call trace:
+    mte_get_mem_tag+0x24/0x40
+    kasan_report+0x1a4/0x410
+    alsa_sound_last_init+0x8c/0xa4
+    do_one_initcall+0x50/0x1b0
+    kernel_init_freeable+0x1d4/0x23c
+    kernel_init+0x14/0x118
+    ret_from_fork+0x10/0x34
+   Code: d65f03c0 9000f021 f9428021 b6cfff61 (d9600000)
+   ---[ end trace 377c8bb45bdd3a1a ]---
+   hrtimer: interrupt took 48694256 ns
+   note: swapper/0[1] exited with preempt_count 1
+   Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
+   SMP: stopping secondary CPUs
+   Kernel Offset: 0x35abaf140000 from 0xffff800010000000
+   PHYS_OFFSET: 0x40000000
+   CPU features: 0x0a7e0152,61c0a030
+   Memory Limit: none
+   ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b ]---
+
+This series fixes the behavior of addr_has_metadata() that now returns
+true only when the address is valid.
+
+This patch (of 2):
+
+With the introduction of KASAN_HW_TAGS, kasan_report() accesses the
+metadata only when addr_has_metadata() succeeds.
+
+Add a comment to make sure that the preconditions to the function are
+explicitly clarified.
+
+Link: https://lkml.kernel.org/r/20210126134409.47894-1-vincenzo.frascino@arm.com
+Link: https://lkml.kernel.org/r/20210126134409.47894-2-vincenzo.frascino@arm.com
+Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com>
+Reviewed-by: Andrey Konovalov <andreyknvl@google.com>
+Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
+Cc: Alexander Potapenko <glider@google.com>
+Cc: Dmitry Vyukov <dvyukov@google.com>
+Cc: Leon Romanovsky <leonro@mellanox.com>
+Cc: Andrey Konovalov <andreyknvl@google.com>
+Cc: Catalin Marinas <catalin.marinas@arm.com>
+Cc: Will Deacon <will@kernel.org>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: "Paul E . McKenney" <paulmck@kernel.org>
+Cc: Naresh Kamboju <naresh.kamboju@linaro.org>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ include/linux/kasan.h | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/include/linux/kasan.h b/include/linux/kasan.h
+index 30d343b4a40a5..646fa165d2cce 100644
+--- a/include/linux/kasan.h
++++ b/include/linux/kasan.h
+@@ -196,6 +196,13 @@ void kasan_init_tags(void);
+ void *kasan_reset_tag(const void *addr);
++/**
++ * kasan_report - print a report about a bad memory access detected by KASAN
++ * @addr: address of the bad access
++ * @size: size of the bad access
++ * @is_write: whether the bad access is a write or a read
++ * @ip: instruction pointer for the accessibility check or the bad access itself
++ */
+ bool kasan_report(unsigned long addr, size_t size,
+               bool is_write, unsigned long ip);
+-- 
+2.27.0
+
diff --git a/queue-5.10/kbuild-simplify-gcc_plugins-enablement-in-dummy-tool.patch b/queue-5.10/kbuild-simplify-gcc_plugins-enablement-in-dummy-tool.patch
new file mode 100644 (file)
index 0000000..5f38352
--- /dev/null
@@ -0,0 +1,46 @@
+From 54ba516fc3f6a2f561b1eb20522b79bf3385388c Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 23 Jan 2021 18:16:30 +0900
+Subject: kbuild: simplify GCC_PLUGINS enablement in dummy-tools/gcc
+
+From: Masahiro Yamada <masahiroy@kernel.org>
+
+[ Upstream commit f4c3b83b75b91c5059726cb91e3165cc01764ce7 ]
+
+With commit 1e860048c53e ("gcc-plugins: simplify GCC plugin-dev
+capability test") applied, this hunk can be way simplified because
+now scripts/gcc-plugins/Kconfig only checks plugin-version.h
+
+Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ scripts/dummy-tools/gcc | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+diff --git a/scripts/dummy-tools/gcc b/scripts/dummy-tools/gcc
+index 33487e99d83e5..5c113cad56017 100755
+--- a/scripts/dummy-tools/gcc
++++ b/scripts/dummy-tools/gcc
+@@ -75,16 +75,12 @@ if arg_contain -S "$@"; then
+       fi
+ fi
+-# For scripts/gcc-plugin.sh
++# To set GCC_PLUGINS
+ if arg_contain -print-file-name=plugin "$@"; then
+       plugin_dir=$(mktemp -d)
+-      sed -n 's/.*#include "\(.*\)"/\1/p' $(dirname $0)/../gcc-plugins/gcc-common.h |
+-      while read header
+-      do
+-              mkdir -p $plugin_dir/include/$(dirname $header)
+-              touch $plugin_dir/include/$header
+-      done
++      mkdir -p $plugin_dir/include
++      touch $plugin_dir/include/plugin-version.h
+       echo $plugin_dir
+       exit 0
+-- 
+2.27.0
+
diff --git a/queue-5.10/nvme-pci-ignore-the-subsysem-nqn-on-phison-e16.patch b/queue-5.10/nvme-pci-ignore-the-subsysem-nqn-on-phison-e16.patch
new file mode 100644 (file)
index 0000000..f22a2ba
--- /dev/null
@@ -0,0 +1,37 @@
+From b4576d4db1eeb33eedb83b644167574b411bb112 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 1 Feb 2021 22:08:22 +0100
+Subject: nvme-pci: ignore the subsysem NQN on Phison E16
+
+From: Claus Stovgaard <claus.stovgaard@gmail.com>
+
+[ Upstream commit c9e95c39280530200cdd0bbd2670e6334a81970b ]
+
+Tested both with Corsairs firmware 11.3 and 13.0 for the Corsairs MP600
+and both have the issue as reported by the kernel.
+
+nvme nvme0: missing or invalid SUBNQN field.
+
+Signed-off-by: Claus Stovgaard <claus.stovgaard@gmail.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/nvme/host/pci.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
+index a32494cde61f7..4a33287371bda 100644
+--- a/drivers/nvme/host/pci.c
++++ b/drivers/nvme/host/pci.c
+@@ -3247,6 +3247,8 @@ static const struct pci_device_id nvme_id_table[] = {
+       { PCI_DEVICE(0x144d, 0xa822),   /* Samsung PM1725a */
+               .driver_data = NVME_QUIRK_DELAY_BEFORE_CHK_RDY |
+                               NVME_QUIRK_IGNORE_DEV_SUBNQN, },
++      { PCI_DEVICE(0x1987, 0x5016),   /* Phison E16 */
++              .driver_data = NVME_QUIRK_IGNORE_DEV_SUBNQN, },
+       { PCI_DEVICE(0x1d1d, 0x1f1f),   /* LighNVM qemu device */
+               .driver_data = NVME_QUIRK_LIGHTNVM, },
+       { PCI_DEVICE(0x1d1d, 0x2807),   /* CNEX WL */
+-- 
+2.27.0
+
diff --git a/queue-5.10/ovl-perform-vfs_getxattr-with-mounter-creds.patch b/queue-5.10/ovl-perform-vfs_getxattr-with-mounter-creds.patch
new file mode 100644 (file)
index 0000000..36145e6
--- /dev/null
@@ -0,0 +1,40 @@
+From cedc5ac80e87fe4d49da40dd0c6b42bb2f65cf88 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 28 Jan 2021 10:22:48 +0100
+Subject: ovl: perform vfs_getxattr() with mounter creds
+
+From: Miklos Szeredi <mszeredi@redhat.com>
+
+[ Upstream commit 554677b97257b0b69378bd74e521edb7e94769ff ]
+
+The vfs_getxattr() in ovl_xattr_set() is used to check whether an xattr
+exist on a lower layer file that is to be removed.  If the xattr does not
+exist, then no need to copy up the file.
+
+This call of vfs_getxattr() wasn't wrapped in credential override, and this
+is probably okay.  But for consitency wrap this instance as well.
+
+Reported-by: "Eric W. Biederman" <ebiederm@xmission.com>
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/overlayfs/inode.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
+index b584dca845baa..4fadafd8bdc12 100644
+--- a/fs/overlayfs/inode.c
++++ b/fs/overlayfs/inode.c
+@@ -346,7 +346,9 @@ int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name,
+               goto out;
+       if (!value && !upperdentry) {
++              old_cred = ovl_override_creds(dentry->d_sb);
+               err = vfs_getxattr(realdentry, name, NULL, 0);
++              revert_creds(old_cred);
+               if (err < 0)
+                       goto out_drop_write;
+       }
+-- 
+2.27.0
+
diff --git a/queue-5.10/ovl-skip-getxattr-of-security-labels.patch b/queue-5.10/ovl-skip-getxattr-of-security-labels.patch
new file mode 100644 (file)
index 0000000..b47885b
--- /dev/null
@@ -0,0 +1,74 @@
+From bcf0873d1acd5e20ae8adfbc47375e6efdd4a218 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Sat, 19 Dec 2020 12:16:08 +0200
+Subject: ovl: skip getxattr of security labels
+
+From: Amir Goldstein <amir73il@gmail.com>
+
+[ Upstream commit 03fedf93593c82538b18476d8c4f0e8f8435ea70 ]
+
+When inode has no listxattr op of its own (e.g. squashfs) vfs_listxattr
+calls the LSM inode_listsecurity hooks to list the xattrs that LSMs will
+intercept in inode_getxattr hooks.
+
+When selinux LSM is installed but not initialized, it will list the
+security.selinux xattr in inode_listsecurity, but will not intercept it
+in inode_getxattr.  This results in -ENODATA for a getxattr call for an
+xattr returned by listxattr.
+
+This situation was manifested as overlayfs failure to copy up lower
+files from squashfs when selinux is built-in but not initialized,
+because ovl_copy_xattr() iterates the lower inode xattrs by
+vfs_listxattr() and vfs_getxattr().
+
+ovl_copy_xattr() skips copy up of security labels that are indentified by
+inode_copy_up_xattr LSM hooks, but it does that after vfs_getxattr().
+Since we are not going to copy them, skip vfs_getxattr() of the security
+labels.
+
+Reported-by: Michael Labriola <michael.d.labriola@gmail.com>
+Tested-by: Michael Labriola <michael.d.labriola@gmail.com>
+Link: https://lore.kernel.org/linux-unionfs/2nv9d47zt7.fsf@aldarion.sourceruckus.org/
+Signed-off-by: Amir Goldstein <amir73il@gmail.com>
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ fs/overlayfs/copy_up.c | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/fs/overlayfs/copy_up.c b/fs/overlayfs/copy_up.c
+index 955ecd4030f04..89d5d59c7d7a4 100644
+--- a/fs/overlayfs/copy_up.c
++++ b/fs/overlayfs/copy_up.c
+@@ -84,6 +84,14 @@ int ovl_copy_xattr(struct super_block *sb, struct dentry *old,
+               if (ovl_is_private_xattr(sb, name))
+                       continue;
++
++              error = security_inode_copy_up_xattr(name);
++              if (error < 0 && error != -EOPNOTSUPP)
++                      break;
++              if (error == 1) {
++                      error = 0;
++                      continue; /* Discard */
++              }
+ retry:
+               size = vfs_getxattr(old, name, value, value_size);
+               if (size == -ERANGE)
+@@ -107,13 +115,6 @@ retry:
+                       goto retry;
+               }
+-              error = security_inode_copy_up_xattr(name);
+-              if (error < 0 && error != -EOPNOTSUPP)
+-                      break;
+-              if (error == 1) {
+-                      error = 0;
+-                      continue; /* Discard */
+-              }
+               error = vfs_setxattr(new, name, value, size, 0);
+               if (error) {
+                       if (error != -EOPNOTSUPP || ovl_must_copy_xattr(name))
+-- 
+2.27.0
+
diff --git a/queue-5.10/platform-x86-hp-wmi-disable-tablet-mode-reporting-by.patch b/queue-5.10/platform-x86-hp-wmi-disable-tablet-mode-reporting-by.patch
new file mode 100644 (file)
index 0000000..629d518
--- /dev/null
@@ -0,0 +1,102 @@
+From 9a04fda59fe6e474e010ac727db51cd95e05948a Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 20 Jan 2021 13:49:41 +0100
+Subject: platform/x86: hp-wmi: Disable tablet-mode reporting by default
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+[ Upstream commit 67fbe02a5cebc3c653610f12e3c0424e58450153 ]
+
+Recently userspace has started making more use of SW_TABLET_MODE
+(when an input-dev reports this).
+
+Specifically recent GNOME3 versions will:
+
+1.  When SW_TABLET_MODE is reported and is reporting 0:
+1.1 Disable accelerometer-based screen auto-rotation
+1.2 Disable automatically showing the on-screen keyboard when a
+    text-input field is focussed
+
+2.  When SW_TABLET_MODE is reported and is reporting 1:
+2.1 Ignore input-events from the builtin keyboard and touchpad
+    (this is for 360° hinges style 2-in-1s where the keyboard and
+     touchpads are accessible on the back of the tablet when folded
+     into tablet-mode)
+
+This means that claiming to support SW_TABLET_MODE when it does not
+actually work / reports correct values has bad side-effects.
+
+The check in the hp-wmi code which is used to decide if the input-dev
+should claim SW_TABLET_MODE support, only checks if the
+HPWMI_HARDWARE_QUERY is supported. It does *not* check if the hardware
+actually is capable of reporting SW_TABLET_MODE.
+
+This leads to the hp-wmi input-dev claiming SW_TABLET_MODE support,
+while in reality it will always report 0 as SW_TABLET_MODE value.
+This has been seen on a "HP ENVY x360 Convertible 15-cp0xxx" and
+this likely is the case on a whole lot of other HP models.
+
+This problem causes both auto-rotation and on-screen keyboard
+support to not work on affected x360 models.
+
+There is no easy fix for this, but since userspace expects
+SW_TABLET_MODE reporting to be reliable when advertised it is
+better to not claim/report SW_TABLET_MODE support at all, then
+to claim to support it while it does not work.
+
+To avoid the mentioned problems, add a new enable_tablet_mode_sw
+module-parameter which defaults to false.
+
+Note I've made this an int using the standard -1=auto, 0=off, 1=on
+triplett, with the hope that in the future we can come up with a
+better way to detect SW_TABLET_MODE support. ATM the default
+auto option just does the same as off.
+
+BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1918255
+Cc: Stefan Brüns <stefan.bruens@rwth-aachen.de>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Acked-by: Mark Gross <mgross@linux.intel.com>
+Link: https://lore.kernel.org/r/20210120124941.73409-1-hdegoede@redhat.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/platform/x86/hp-wmi.c | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c
+index 18bf8aeb5f870..e94e59283ecb9 100644
+--- a/drivers/platform/x86/hp-wmi.c
++++ b/drivers/platform/x86/hp-wmi.c
+@@ -32,6 +32,10 @@ MODULE_LICENSE("GPL");
+ MODULE_ALIAS("wmi:95F24279-4D7B-4334-9387-ACCDC67EF61C");
+ MODULE_ALIAS("wmi:5FB7F034-2C63-45e9-BE91-3D44E2C707E4");
++static int enable_tablet_mode_sw = -1;
++module_param(enable_tablet_mode_sw, int, 0444);
++MODULE_PARM_DESC(enable_tablet_mode_sw, "Enable SW_TABLET_MODE reporting (-1=auto, 0=no, 1=yes)");
++
+ #define HPWMI_EVENT_GUID "95F24279-4D7B-4334-9387-ACCDC67EF61C"
+ #define HPWMI_BIOS_GUID "5FB7F034-2C63-45e9-BE91-3D44E2C707E4"
+@@ -654,10 +658,12 @@ static int __init hp_wmi_input_setup(void)
+       }
+       /* Tablet mode */
+-      val = hp_wmi_hw_state(HPWMI_TABLET_MASK);
+-      if (!(val < 0)) {
+-              __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit);
+-              input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val);
++      if (enable_tablet_mode_sw > 0) {
++              val = hp_wmi_hw_state(HPWMI_TABLET_MASK);
++              if (val >= 0) {
++                      __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit);
++                      input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val);
++              }
+       }
+       err = sparse_keymap_setup(hp_wmi_input_dev, hp_wmi_keymap, NULL);
+-- 
+2.27.0
+
diff --git a/queue-5.10/revert-lib-restrict-cpumask_local_spread-to-houskeep.patch b/queue-5.10/revert-lib-restrict-cpumask_local_spread-to-houskeep.patch
new file mode 100644 (file)
index 0000000..227896c
--- /dev/null
@@ -0,0 +1,106 @@
+From 2b171cefd28de1bbd6359e2b7ce2512a879e3790 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 5 Feb 2021 23:28:29 +0100
+Subject: Revert "lib: Restrict cpumask_local_spread to houskeeping CPUs"
+
+From: Thomas Gleixner <tglx@linutronix.de>
+
+[ Upstream commit 2452483d9546de1c540f330469dc4042ff089731 ]
+
+This reverts commit 1abdfe706a579a702799fce465bceb9fb01d407c.
+
+This change is broken and not solving any problem it claims to solve.
+
+Robin reported that cpumask_local_spread() now returns any cpu out of
+cpu_possible_mask in case that NOHZ_FULL is disabled (runtime or compile
+time). It can also return any offline or not-present CPU in the
+housekeeping mask. Before that it was returning a CPU out of
+online_cpu_mask.
+
+While the function is racy against CPU hotplug if the caller does not
+protect against it, the actual use cases are not caring much about it as
+they use it mostly as hint for:
+
+ - the user space affinity hint which is unused by the kernel
+ - memory node selection which is just suboptimal
+ - network queue affinity which might fail but is handled gracefully
+
+But the occasional fail vs. hotplug is very different from returning
+anything from possible_cpu_mask which can have a large amount of offline
+CPUs obviously.
+
+The changelog of the commit claims:
+
+ "The current implementation of cpumask_local_spread() does not respect
+  the isolated CPUs, i.e., even if a CPU has been isolated for Real-Time
+  task, it will return it to the caller for pinning of its IRQ
+  threads. Having these unwanted IRQ threads on an isolated CPU adds up
+  to a latency overhead."
+
+The only correct part of this changelog is:
+
+ "The current implementation of cpumask_local_spread() does not respect
+  the isolated CPUs."
+
+Everything else is just disjunct from reality.
+
+Reported-by: Robin Murphy <robin.murphy@arm.com>
+Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
+Cc: Nitesh Narayan Lal <nitesh@redhat.com>
+Cc: Marcelo Tosatti <mtosatti@redhat.com>
+Cc: abelits@marvell.com
+Cc: davem@davemloft.net
+Link: https://lore.kernel.org/r/87y2g26tnt.fsf@nanos.tec.linutronix.de
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ lib/cpumask.c | 16 +++++-----------
+ 1 file changed, 5 insertions(+), 11 deletions(-)
+
+diff --git a/lib/cpumask.c b/lib/cpumask.c
+index 85da6ab4fbb5a..fb22fb266f937 100644
+--- a/lib/cpumask.c
++++ b/lib/cpumask.c
+@@ -6,7 +6,6 @@
+ #include <linux/export.h>
+ #include <linux/memblock.h>
+ #include <linux/numa.h>
+-#include <linux/sched/isolation.h>
+ /**
+  * cpumask_next - get the next cpu in a cpumask
+@@ -206,27 +205,22 @@ void __init free_bootmem_cpumask_var(cpumask_var_t mask)
+  */
+ unsigned int cpumask_local_spread(unsigned int i, int node)
+ {
+-      int cpu, hk_flags;
+-      const struct cpumask *mask;
++      int cpu;
+-      hk_flags = HK_FLAG_DOMAIN | HK_FLAG_MANAGED_IRQ;
+-      mask = housekeeping_cpumask(hk_flags);
+       /* Wrap: we always want a cpu. */
+-      i %= cpumask_weight(mask);
++      i %= num_online_cpus();
+       if (node == NUMA_NO_NODE) {
+-              for_each_cpu(cpu, mask) {
++              for_each_cpu(cpu, cpu_online_mask)
+                       if (i-- == 0)
+                               return cpu;
+-              }
+       } else {
+               /* NUMA first. */
+-              for_each_cpu_and(cpu, cpumask_of_node(node), mask) {
++              for_each_cpu_and(cpu, cpumask_of_node(node), cpu_online_mask)
+                       if (i-- == 0)
+                               return cpu;
+-              }
+-              for_each_cpu(cpu, mask) {
++              for_each_cpu(cpu, cpu_online_mask) {
+                       /* Skip NUMA nodes, done above. */
+                       if (cpumask_test_cpu(cpu, cpumask_of_node(node)))
+                               continue;
+-- 
+2.27.0
+
diff --git a/queue-5.10/riscv-virt_addr_valid-must-check-the-address-belongs.patch b/queue-5.10/riscv-virt_addr_valid-must-check-the-address-belongs.patch
new file mode 100644 (file)
index 0000000..5f0e6cd
--- /dev/null
@@ -0,0 +1,46 @@
+From c178008702081ba92c0b789991c17c4b0c1216ef Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 29 Jan 2021 12:31:05 -0500
+Subject: riscv: virt_addr_valid must check the address belongs to linear
+ mapping
+
+From: Alexandre Ghiti <alex@ghiti.fr>
+
+[ Upstream commit 2ab543823322b564f205cb15d0f0302803c87d11 ]
+
+virt_addr_valid macro checks that a virtual address is valid, ie that
+the address belongs to the linear mapping and that the corresponding
+ physical page exists.
+
+Add the missing check that ensures the virtual address belongs to the
+linear mapping, otherwise __virt_to_phys, when compiled with
+CONFIG_DEBUG_VIRTUAL enabled, raises a WARN that is interpreted as a
+kernel bug by syzbot.
+
+Signed-off-by: Alexandre Ghiti <alex@ghiti.fr>
+Reviewed-by: Atish Patra <atish.patra@wdc.com>
+Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/riscv/include/asm/page.h | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/arch/riscv/include/asm/page.h b/arch/riscv/include/asm/page.h
+index 2d50f76efe481..64a675c5c30ac 100644
+--- a/arch/riscv/include/asm/page.h
++++ b/arch/riscv/include/asm/page.h
+@@ -135,7 +135,10 @@ extern phys_addr_t __phys_addr_symbol(unsigned long x);
+ #endif /* __ASSEMBLY__ */
+-#define virt_addr_valid(vaddr)        (pfn_valid(virt_to_pfn(vaddr)))
++#define virt_addr_valid(vaddr)        ({                                              \
++      unsigned long _addr = (unsigned long)vaddr;                             \
++      (unsigned long)(_addr) >= PAGE_OFFSET && pfn_valid(virt_to_pfn(_addr)); \
++})
+ #define VM_DATA_DEFAULT_FLAGS VM_DATA_FLAGS_NON_EXEC
+-- 
+2.27.0
+
diff --git a/queue-5.10/scsi-lpfc-fix-eeh-encountering-oops-with-nvme-traffi.patch b/queue-5.10/scsi-lpfc-fix-eeh-encountering-oops-with-nvme-traffi.patch
new file mode 100644 (file)
index 0000000..4518af5
--- /dev/null
@@ -0,0 +1,52 @@
+From 08cab573380aed1e507a5fd77e9b4079f9714843 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Wed, 27 Jan 2021 14:16:01 -0800
+Subject: scsi: lpfc: Fix EEH encountering oops with NVMe traffic
+
+From: James Smart <jsmart2021@gmail.com>
+
+[ Upstream commit 8c65830ae1629b03e5d65e9aafae7e2cf5f8b743 ]
+
+In testing, in a configuration with Redfish and native NVMe multipath when
+an EEH is injected, a kernel oops is being encountered:
+
+(unreliable)
+lpfc_nvme_ls_req+0x328/0x720 [lpfc]
+__nvme_fc_send_ls_req.constprop.13+0x1d8/0x3d0 [nvme_fc]
+nvme_fc_create_association+0x224/0xd10 [nvme_fc]
+nvme_fc_reset_ctrl_work+0x110/0x154 [nvme_fc]
+process_one_work+0x304/0x5d
+
+the NBMe transport is issuing a Disconnect LS request, which the driver
+receives and tries to post but the work queue used by the driver is already
+being torn down by the eeh.
+
+Fix by validating the validity of the work queue before proceeding with the
+LS transmit.
+
+Link: https://lore.kernel.org/r/20210127221601.84878-1-jsmart2021@gmail.com
+Reviewed-by: Ewan D. Milne <emilne@redhat.com>
+Signed-off-by: James Smart <jsmart2021@gmail.com>
+Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/scsi/lpfc/lpfc_nvme.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/drivers/scsi/lpfc/lpfc_nvme.c b/drivers/scsi/lpfc/lpfc_nvme.c
+index 69f1a0457f51e..03c81cec6bc98 100644
+--- a/drivers/scsi/lpfc/lpfc_nvme.c
++++ b/drivers/scsi/lpfc/lpfc_nvme.c
+@@ -714,6 +714,9 @@ __lpfc_nvme_ls_req(struct lpfc_vport *vport, struct lpfc_nodelist *ndlp,
+               return -ENODEV;
+       }
++      if (!vport->phba->sli4_hba.nvmels_wq)
++              return -ENOMEM;
++
+       /*
+        * there are two dma buf in the request, actually there is one and
+        * the second one is just the start address + cmd size.
+-- 
+2.27.0
+
index fb07a211bac4431ced69045ae0960be649d59df5..bae5c99e88ca442058c7805e3bea174c2394f28c 100644 (file)
@@ -14,3 +14,33 @@ drm-dp_mst-don-t-report-ports-connected-if-nothing-is-attached-to-them.patch
 dmaengine-move-channel-device_node-deletion-to-driver.patch
 tmpfs-disallow-config_tmpfs_inode64-on-s390.patch
 tmpfs-disallow-config_tmpfs_inode64-on-alpha.patch
+soc-ti-omap-prm-fix-boot-time-errors-for-rst_map_012.patch
+arm64-dts-rockchip-fix-pcie-dt-properties-on-rk3399.patch
+arm64-dts-qcom-sdm845-reserve-lpass-clocks-in-gcc.patch
+arm-omap2-fix-suspcious-rcu-usage-splats-for-omap_en.patch
+arm64-dts-rockchip-remove-interrupt-names-property-f.patch
+kbuild-simplify-gcc_plugins-enablement-in-dummy-tool.patch
+platform-x86-hp-wmi-disable-tablet-mode-reporting-by.patch
+arm64-dts-rockchip-disable-display-for-nanopi-r2s.patch
+ovl-perform-vfs_getxattr-with-mounter-creds.patch
+cap-fix-conversions-on-getxattr.patch
+ovl-skip-getxattr-of-security-labels.patch
+scsi-lpfc-fix-eeh-encountering-oops-with-nvme-traffi.patch
+x86-split_lock-enable-the-split-lock-feature-on-anot.patch
+nvme-pci-ignore-the-subsysem-nqn-on-phison-e16.patch
+drm-amd-display-fix-dpcd-translation-for-lttpr-aux_r.patch
+drm-amd-display-add-more-clock-sources-to-dcn2.1.patch
+drm-amd-display-release-dsc-before-acquiring.patch
+drm-amd-display-fix-dc_sink-kref-count-in-emulated_l.patch
+drm-amd-display-free-atomic-state-after-drm_atomic_c.patch
+drm-amd-display-decrement-refcount-of-dc_sink-before.patch
+riscv-virt_addr_valid-must-check-the-address-belongs.patch
+bfq-iosched-revert-bfq-fix-computation-of-shallow-de.patch
+arm-dts-lpc32xx-revert-set-default-clock-rate-of-hcl.patch
+kallsyms-fix-nonconverging-kallsyms-table-with-lld.patch
+arm-ensure-the-signal-page-contains-defined-contents.patch
+arm-kexec-fix-oops-after-tlb-are-invalidated.patch
+kasan-add-explicit-preconditions-to-kasan_report.patch
+ubsan-implement-__ubsan_handle_alignment_assumption.patch
+revert-lib-restrict-cpumask_local_spread-to-houskeep.patch
+x86-efi-remove-efi-pgd-build-time-checks.patch
diff --git a/queue-5.10/soc-ti-omap-prm-fix-boot-time-errors-for-rst_map_012.patch b/queue-5.10/soc-ti-omap-prm-fix-boot-time-errors-for-rst_map_012.patch
new file mode 100644 (file)
index 0000000..b4eb1d7
--- /dev/null
@@ -0,0 +1,74 @@
+From 603effe7cbcc8ba82f1600b96599284944e35022 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Tue, 8 Dec 2020 16:08:02 +0200
+Subject: soc: ti: omap-prm: Fix boot time errors for rst_map_012 bits 0 and 1
+
+From: Tony Lindgren <tony@atomide.com>
+
+[ Upstream commit 7078a5ba7a58e5db07583b176f8a03e0b8714731 ]
+
+We have rst_map_012 used for various accelerators like dsp, ipu and iva.
+For these use cases, we have rstctrl bit 2 control the subsystem module
+reset, and have and bits 0 and 1 control the accelerator specific
+features.
+
+If the bootloader, or kexec boot, has left any accelerator specific
+reset bits deasserted, deasserting bit 2 reset will potentially enable
+an accelerator with unconfigured MMU and no firmware. And we may get
+spammed with a lot by warnings on boot with "Data Access in User mode
+during Functional access", or depending on the accelerator, the system
+can also just hang.
+
+This issue can be quite easily reproduced by setting a rst_map_012 type
+rstctrl register to 0 or 4 in the bootloader, and booting the system.
+
+Let's just assert all reset bits for rst_map_012 type resets. So far
+it looks like the other rstctrl types don't need this. If it turns out
+that the other type rstctrl bits also need reset on init, we need to
+add an instance specific reset mask for the bits to avoid resetting
+unwanted bits.
+
+Reported-by: Carl Philipp Klemm <philipp@uvos.xyz>
+Cc: Philipp Zabel <p.zabel@pengutronix.de>
+Cc: Santosh Shilimkar <ssantosh@kernel.org>
+Cc: Suman Anna <s-anna@ti.com>
+Cc: Tero Kristo <t-kristo@ti.com>
+Tested-by: Carl Philipp Klemm <philipp@uvos.xyz>
+Signed-off-by: Tony Lindgren <tony@atomide.com>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ drivers/soc/ti/omap_prm.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/drivers/soc/ti/omap_prm.c b/drivers/soc/ti/omap_prm.c
+index 4d41dc3cdce1f..c8b14b3a171f7 100644
+--- a/drivers/soc/ti/omap_prm.c
++++ b/drivers/soc/ti/omap_prm.c
+@@ -552,6 +552,7 @@ static int omap_prm_reset_init(struct platform_device *pdev,
+       const struct omap_rst_map *map;
+       struct ti_prm_platform_data *pdata = dev_get_platdata(&pdev->dev);
+       char buf[32];
++      u32 v;
+       /*
+        * Check if we have controllable resets. If either rstctrl is non-zero
+@@ -599,6 +600,16 @@ static int omap_prm_reset_init(struct platform_device *pdev,
+               map++;
+       }
++      /* Quirk handling to assert rst_map_012 bits on reset and avoid errors */
++      if (prm->data->rstmap == rst_map_012) {
++              v = readl_relaxed(reset->prm->base + reset->prm->data->rstctrl);
++              if ((v & reset->mask) != reset->mask) {
++                      dev_dbg(&pdev->dev, "Asserting all resets: %08x\n", v);
++                      writel_relaxed(reset->mask, reset->prm->base +
++                                     reset->prm->data->rstctrl);
++              }
++      }
++
+       return devm_reset_controller_register(&pdev->dev, &reset->rcdev);
+ }
+-- 
+2.27.0
+
diff --git a/queue-5.10/ubsan-implement-__ubsan_handle_alignment_assumption.patch b/queue-5.10/ubsan-implement-__ubsan_handle_alignment_assumption.patch
new file mode 100644 (file)
index 0000000..ed84143
--- /dev/null
@@ -0,0 +1,97 @@
+From d4a509845981d18a80ab924af4bc19e24bb331c9 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Thu, 4 Feb 2021 18:32:57 -0800
+Subject: ubsan: implement __ubsan_handle_alignment_assumption
+
+From: Nathan Chancellor <nathan@kernel.org>
+
+[ Upstream commit 28abcc963149e06d956d95a18a85f4ba26af746f ]
+
+When building ARCH=mips 32r2el_defconfig with CONFIG_UBSAN_ALIGNMENT:
+
+  ld.lld: error: undefined symbol: __ubsan_handle_alignment_assumption
+     referenced by slab.h:557 (include/linux/slab.h:557)
+                   main.o:(do_initcalls) in archive init/built-in.a
+     referenced by slab.h:448 (include/linux/slab.h:448)
+                   do_mounts_rd.o:(rd_load_image) in archive init/built-in.a
+     referenced by slab.h:448 (include/linux/slab.h:448)
+                   do_mounts_rd.o:(identify_ramdisk_image) in archive init/built-in.a
+     referenced 1579 more times
+
+Implement this for the kernel based on LLVM's
+handleAlignmentAssumptionImpl because the kernel is not linked against
+the compiler runtime.
+
+Link: https://github.com/ClangBuiltLinux/linux/issues/1245
+Link: https://github.com/llvm/llvm-project/blob/llvmorg-11.0.1/compiler-rt/lib/ubsan/ubsan_handlers.cpp#L151-L190
+Link: https://lkml.kernel.org/r/20210127224451.2587372-1-nathan@kernel.org
+Signed-off-by: Nathan Chancellor <nathan@kernel.org>
+Acked-by: Kees Cook <keescook@chromium.org>
+Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ lib/ubsan.c | 31 +++++++++++++++++++++++++++++++
+ lib/ubsan.h |  6 ++++++
+ 2 files changed, 37 insertions(+)
+
+diff --git a/lib/ubsan.c b/lib/ubsan.c
+index cb9af3f6b77e3..adf8dcf3c84e6 100644
+--- a/lib/ubsan.c
++++ b/lib/ubsan.c
+@@ -427,3 +427,34 @@ void __ubsan_handle_load_invalid_value(void *_data, void *val)
+       ubsan_epilogue();
+ }
+ EXPORT_SYMBOL(__ubsan_handle_load_invalid_value);
++
++void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr,
++                                       unsigned long align,
++                                       unsigned long offset);
++void __ubsan_handle_alignment_assumption(void *_data, unsigned long ptr,
++                                       unsigned long align,
++                                       unsigned long offset)
++{
++      struct alignment_assumption_data *data = _data;
++      unsigned long real_ptr;
++
++      if (suppress_report(&data->location))
++              return;
++
++      ubsan_prologue(&data->location, "alignment-assumption");
++
++      if (offset)
++              pr_err("assumption of %lu byte alignment (with offset of %lu byte) for pointer of type %s failed",
++                     align, offset, data->type->type_name);
++      else
++              pr_err("assumption of %lu byte alignment for pointer of type %s failed",
++                     align, data->type->type_name);
++
++      real_ptr = ptr - offset;
++      pr_err("%saddress is %lu aligned, misalignment offset is %lu bytes",
++             offset ? "offset " : "", BIT(real_ptr ? __ffs(real_ptr) : 0),
++             real_ptr & (align - 1));
++
++      ubsan_epilogue();
++}
++EXPORT_SYMBOL(__ubsan_handle_alignment_assumption);
+diff --git a/lib/ubsan.h b/lib/ubsan.h
+index 7b56c09473a98..9a0b71c5ff9fb 100644
+--- a/lib/ubsan.h
++++ b/lib/ubsan.h
+@@ -78,6 +78,12 @@ struct invalid_value_data {
+       struct type_descriptor *type;
+ };
++struct alignment_assumption_data {
++      struct source_location location;
++      struct source_location assumption_location;
++      struct type_descriptor *type;
++};
++
+ #if defined(CONFIG_ARCH_SUPPORTS_INT128)
+ typedef __int128 s_max;
+ typedef unsigned __int128 u_max;
+-- 
+2.27.0
+
diff --git a/queue-5.10/x86-efi-remove-efi-pgd-build-time-checks.patch b/queue-5.10/x86-efi-remove-efi-pgd-build-time-checks.patch
new file mode 100644 (file)
index 0000000..b56a9d9
--- /dev/null
@@ -0,0 +1,89 @@
+From 92fe07508c1b4e430dbd3c6932d7fdf5a338f530 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Fri, 5 Feb 2021 11:31:31 +0100
+Subject: x86/efi: Remove EFI PGD build time checks
+
+From: Borislav Petkov <bp@suse.de>
+
+[ Upstream commit 816ef8d7a2c4182e19bc06ab65751cb9e3951e94 ]
+
+With CONFIG_X86_5LEVEL, CONFIG_UBSAN and CONFIG_UBSAN_UNSIGNED_OVERFLOW
+enabled, clang fails the build with
+
+  x86_64-linux-ld: arch/x86/platform/efi/efi_64.o: in function `efi_sync_low_kernel_mappings':
+  efi_64.c:(.text+0x22c): undefined reference to `__compiletime_assert_354'
+
+which happens due to -fsanitize=unsigned-integer-overflow being enabled:
+
+  -fsanitize=unsigned-integer-overflow: Unsigned integer overflow, where
+  the result of an unsigned integer computation cannot be represented
+  in its type. Unlike signed integer overflow, this is not undefined
+  behavior, but it is often unintentional. This sanitizer does not check
+  for lossy implicit conversions performed before such a computation
+  (see -fsanitize=implicit-conversion).
+
+and that fires when the (intentional) EFI_VA_START/END defines overflow
+an unsigned long, leading to the assertion expressions not getting
+optimized away (on GCC they do)...
+
+However, those checks are superfluous: the runtime services mapping
+code already makes sure the ranges don't overshoot EFI_VA_END as the
+EFI mapping range is hardcoded. On each runtime services call, it is
+switched to the EFI-specific PGD and even if mappings manage to escape
+that last PGD, this won't remain unnoticed for long.
+
+So rip them out.
+
+See https://github.com/ClangBuiltLinux/linux/issues/256 for more info.
+
+Reported-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: Nathan Chancellor <nathan@kernel.org>
+Acked-by: Ard Biesheuvel <ardb@kernel.org>
+Tested-by: Nick Desaulniers <ndesaulniers@google.com>
+Tested-by: Nathan Chancellor <nathan@kernel.org>
+Link: http://lkml.kernel.org/r/20210107223424.4135538-1-arnd@kernel.org
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/platform/efi/efi_64.c | 19 -------------------
+ 1 file changed, 19 deletions(-)
+
+diff --git a/arch/x86/platform/efi/efi_64.c b/arch/x86/platform/efi/efi_64.c
+index e1e8d4e3a2139..8efd003540cae 100644
+--- a/arch/x86/platform/efi/efi_64.c
++++ b/arch/x86/platform/efi/efi_64.c
+@@ -115,31 +115,12 @@ void efi_sync_low_kernel_mappings(void)
+       pud_t *pud_k, *pud_efi;
+       pgd_t *efi_pgd = efi_mm.pgd;
+-      /*
+-       * We can share all PGD entries apart from the one entry that
+-       * covers the EFI runtime mapping space.
+-       *
+-       * Make sure the EFI runtime region mappings are guaranteed to
+-       * only span a single PGD entry and that the entry also maps
+-       * other important kernel regions.
+-       */
+-      MAYBE_BUILD_BUG_ON(pgd_index(EFI_VA_END) != pgd_index(MODULES_END));
+-      MAYBE_BUILD_BUG_ON((EFI_VA_START & PGDIR_MASK) !=
+-                      (EFI_VA_END & PGDIR_MASK));
+-
+       pgd_efi = efi_pgd + pgd_index(PAGE_OFFSET);
+       pgd_k = pgd_offset_k(PAGE_OFFSET);
+       num_entries = pgd_index(EFI_VA_END) - pgd_index(PAGE_OFFSET);
+       memcpy(pgd_efi, pgd_k, sizeof(pgd_t) * num_entries);
+-      /*
+-       * As with PGDs, we share all P4D entries apart from the one entry
+-       * that covers the EFI runtime mapping space.
+-       */
+-      BUILD_BUG_ON(p4d_index(EFI_VA_END) != p4d_index(MODULES_END));
+-      BUILD_BUG_ON((EFI_VA_START & P4D_MASK) != (EFI_VA_END & P4D_MASK));
+-
+       pgd_efi = efi_pgd + pgd_index(EFI_VA_END);
+       pgd_k = pgd_offset_k(EFI_VA_END);
+       p4d_efi = p4d_offset(pgd_efi, 0);
+-- 
+2.27.0
+
diff --git a/queue-5.10/x86-split_lock-enable-the-split-lock-feature-on-anot.patch b/queue-5.10/x86-split_lock-enable-the-split-lock-feature-on-anot.patch
new file mode 100644 (file)
index 0000000..13cbff3
--- /dev/null
@@ -0,0 +1,37 @@
+From 6a9c33ce476cd8025c3d7ee712063de8b4b4a913 Mon Sep 17 00:00:00 2001
+From: Sasha Levin <sashal@kernel.org>
+Date: Mon, 1 Feb 2021 19:00:07 +0000
+Subject: x86/split_lock: Enable the split lock feature on another Alder Lake
+ CPU
+
+From: Fenghua Yu <fenghua.yu@intel.com>
+
+[ Upstream commit 8acf417805a5f5c69e9ff66f14cab022c2755161 ]
+
+Add Alder Lake mobile processor to CPU list to enumerate and enable the
+split lock feature.
+
+Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
+Signed-off-by: Borislav Petkov <bp@suse.de>
+Reviewed-by: Tony Luck <tony.luck@intel.com>
+Link: https://lkml.kernel.org/r/20210201190007.4031869-1-fenghua.yu@intel.com
+Signed-off-by: Sasha Levin <sashal@kernel.org>
+---
+ arch/x86/kernel/cpu/intel.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/x86/kernel/cpu/intel.c b/arch/x86/kernel/cpu/intel.c
+index 59a1e3ce3f145..816fdbec795a4 100644
+--- a/arch/x86/kernel/cpu/intel.c
++++ b/arch/x86/kernel/cpu/intel.c
+@@ -1159,6 +1159,7 @@ static const struct x86_cpu_id split_lock_cpu_ids[] __initconst = {
+       X86_MATCH_INTEL_FAM6_MODEL(TIGERLAKE,           1),
+       X86_MATCH_INTEL_FAM6_MODEL(SAPPHIRERAPIDS_X,    1),
+       X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE,           1),
++      X86_MATCH_INTEL_FAM6_MODEL(ALDERLAKE_L,         1),
+       {}
+ };
+-- 
+2.27.0
+