]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.19-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Sep 2021 14:29:42 +0000 (16:29 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Sep 2021 14:29:42 +0000 (16:29 +0200)
added patches:
arm-9105-1-atags_to_fdt-don-t-warn-about-stack-size.patch
arm-9109-1-oabi-compat-add-epoll_pwait-handler.patch
libata-add-ata_horkage_no_ncq_trim-for-samsung-860-and-870-ssds.patch
pci-aardvark-fix-masking-and-unmasking-legacy-intx-interrupts.patch
pci-aardvark-increase-polling-delay-to-1.5s-while-waiting-for-pio-response.patch
pci-restrict-asmedia-asm1062-sata-max-payload-size-supported.patch
pci-return-0-data-on-pciconfig_read-cap_sys_admin-failure.patch
pci-xilinx-nwl-enable-the-clock-through-ccf.patch

queue-4.19/arm-9105-1-atags_to_fdt-don-t-warn-about-stack-size.patch [new file with mode: 0644]
queue-4.19/arm-9109-1-oabi-compat-add-epoll_pwait-handler.patch [new file with mode: 0644]
queue-4.19/libata-add-ata_horkage_no_ncq_trim-for-samsung-860-and-870-ssds.patch [new file with mode: 0644]
queue-4.19/pci-aardvark-fix-masking-and-unmasking-legacy-intx-interrupts.patch [new file with mode: 0644]
queue-4.19/pci-aardvark-increase-polling-delay-to-1.5s-while-waiting-for-pio-response.patch [new file with mode: 0644]
queue-4.19/pci-restrict-asmedia-asm1062-sata-max-payload-size-supported.patch [new file with mode: 0644]
queue-4.19/pci-return-0-data-on-pciconfig_read-cap_sys_admin-failure.patch [new file with mode: 0644]
queue-4.19/pci-xilinx-nwl-enable-the-clock-through-ccf.patch [new file with mode: 0644]
queue-4.19/series

diff --git a/queue-4.19/arm-9105-1-atags_to_fdt-don-t-warn-about-stack-size.patch b/queue-4.19/arm-9105-1-atags_to_fdt-don-t-warn-about-stack-size.patch
new file mode 100644 (file)
index 0000000..c20c8b3
--- /dev/null
@@ -0,0 +1,46 @@
+From b30d0289de72c62516df03fdad8d53f552c69839 Mon Sep 17 00:00:00 2001
+From: David Heidelberg <david@ixit.cz>
+Date: Mon, 9 Aug 2021 19:07:30 +0100
+Subject: ARM: 9105/1: atags_to_fdt: don't warn about stack size
+
+From: David Heidelberg <david@ixit.cz>
+
+commit b30d0289de72c62516df03fdad8d53f552c69839 upstream.
+
+The merge_fdt_bootargs() function by definition consumes more than 1024
+bytes of stack because it has a 1024 byte command line on the stack,
+meaning that we always get a warning when building this file:
+
+arch/arm/boot/compressed/atags_to_fdt.c: In function 'merge_fdt_bootargs':
+arch/arm/boot/compressed/atags_to_fdt.c:98:1: warning: the frame size of 1032 bytes is larger than 1024 bytes [-Wframe-larger-than=]
+
+However, as this is the decompressor and we know that it has a very shallow
+call chain, and we do not actually risk overflowing the kernel stack
+at runtime here.
+
+This just shuts up the warning by disabling the warning flag for this
+file.
+
+Tested on Nexus 7 2012 builds.
+
+Acked-by: Nicolas Pitre <nico@fluxnic.net>
+Signed-off-by: David Heidelberg <david@ixit.cz>
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Cc: <stable@vger.kernel.org>
+Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm/boot/compressed/Makefile |    2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/arch/arm/boot/compressed/Makefile
++++ b/arch/arm/boot/compressed/Makefile
+@@ -90,6 +90,8 @@ $(addprefix $(obj)/,$(libfdt_objs) atags
+       $(addprefix $(obj)/,$(libfdt_hdrs))
+ ifeq ($(CONFIG_ARM_ATAG_DTB_COMPAT),y)
++CFLAGS_REMOVE_atags_to_fdt.o += -Wframe-larger-than=${CONFIG_FRAME_WARN}
++CFLAGS_atags_to_fdt.o += -Wframe-larger-than=1280
+ OBJS  += $(libfdt_objs) atags_to_fdt.o
+ endif
diff --git a/queue-4.19/arm-9109-1-oabi-compat-add-epoll_pwait-handler.patch b/queue-4.19/arm-9109-1-oabi-compat-add-epoll_pwait-handler.patch
new file mode 100644 (file)
index 0000000..e17f485
--- /dev/null
@@ -0,0 +1,92 @@
+From b6e47f3c11c17965acb2a12001af3b1cd5658f37 Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Wed, 11 Aug 2021 08:30:20 +0100
+Subject: ARM: 9109/1: oabi-compat: add epoll_pwait handler
+
+From: Arnd Bergmann <arnd@arndb.de>
+
+commit b6e47f3c11c17965acb2a12001af3b1cd5658f37 upstream.
+
+The epoll_wait() syscall has a special version for OABI compat
+mode to convert the arguments to the EABI structure layout
+of the kernel. However, the later epoll_pwait() syscall was
+added in arch/arm in linux-2.6.32 without this conversion.
+
+Use the same kind of handler for both.
+
+Fixes: 369842658a36 ("ARM: 5677/1: ARM support for TIF_RESTORE_SIGMASK/pselect6/ppoll/epoll_pwait")
+Cc: stable@vger.kernel.org
+Reviewed-by: Christoph Hellwig <hch@lst.de>
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Signed-off-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ arch/arm/kernel/sys_oabi-compat.c |   38 +++++++++++++++++++++++++++++++++++---
+ arch/arm/tools/syscall.tbl        |    2 +-
+ 2 files changed, 36 insertions(+), 4 deletions(-)
+
+--- a/arch/arm/kernel/sys_oabi-compat.c
++++ b/arch/arm/kernel/sys_oabi-compat.c
+@@ -272,9 +272,8 @@ asmlinkage long sys_oabi_epoll_ctl(int e
+       return ret;
+ }
+-asmlinkage long sys_oabi_epoll_wait(int epfd,
+-                                  struct oabi_epoll_event __user *events,
+-                                  int maxevents, int timeout)
++static long do_oabi_epoll_wait(int epfd, struct oabi_epoll_event __user *events,
++                             int maxevents, int timeout)
+ {
+       struct epoll_event *kbuf;
+       struct oabi_epoll_event e;
+@@ -307,6 +306,39 @@ asmlinkage long sys_oabi_epoll_wait(int
+       return err ? -EFAULT : ret;
+ }
++SYSCALL_DEFINE4(oabi_epoll_wait, int, epfd,
++              struct oabi_epoll_event __user *, events,
++              int, maxevents, int, timeout)
++{
++      return do_oabi_epoll_wait(epfd, events, maxevents, timeout);
++}
++
++/*
++ * Implement the event wait interface for the eventpoll file. It is the kernel
++ * part of the user space epoll_pwait(2).
++ */
++SYSCALL_DEFINE6(oabi_epoll_pwait, int, epfd,
++              struct oabi_epoll_event __user *, events, int, maxevents,
++              int, timeout, const sigset_t __user *, sigmask,
++              size_t, sigsetsize)
++{
++      int error;
++
++      /*
++       * If the caller wants a certain signal mask to be set during the wait,
++       * we apply it here.
++       */
++      error = set_user_sigmask(sigmask, sigsetsize);
++      if (error)
++              return error;
++
++      error = do_oabi_epoll_wait(epfd, events, maxevents, timeout);
++      restore_saved_sigmask_unless(error == -EINTR);
++
++      return error;
++}
++#endif
++
+ struct oabi_sembuf {
+       unsigned short  sem_num;
+       short           sem_op;
+--- a/arch/arm/tools/syscall.tbl
++++ b/arch/arm/tools/syscall.tbl
+@@ -360,7 +360,7 @@
+ 343   common  vmsplice                sys_vmsplice
+ 344   common  move_pages              sys_move_pages
+ 345   common  getcpu                  sys_getcpu
+-346   common  epoll_pwait             sys_epoll_pwait
++346   common  epoll_pwait             sys_epoll_pwait         sys_oabi_epoll_pwait
+ 347   common  kexec_load              sys_kexec_load
+ 348   common  utimensat               sys_utimensat
+ 349   common  signalfd                sys_signalfd
diff --git a/queue-4.19/libata-add-ata_horkage_no_ncq_trim-for-samsung-860-and-870-ssds.patch b/queue-4.19/libata-add-ata_horkage_no_ncq_trim-for-samsung-860-and-870-ssds.patch
new file mode 100644 (file)
index 0000000..de80906
--- /dev/null
@@ -0,0 +1,50 @@
+From 8a6430ab9c9c87cb64c512e505e8690bbaee190b Mon Sep 17 00:00:00 2001
+From: Hans de Goede <hdegoede@redhat.com>
+Date: Mon, 23 Aug 2021 11:52:20 +0200
+Subject: libata: add ATA_HORKAGE_NO_NCQ_TRIM for Samsung 860 and 870 SSDs
+
+From: Hans de Goede <hdegoede@redhat.com>
+
+commit 8a6430ab9c9c87cb64c512e505e8690bbaee190b upstream.
+
+Commit ca6bfcb2f6d9 ("libata: Enable queued TRIM for Samsung SSD 860")
+limited the existing ATA_HORKAGE_NO_NCQ_TRIM quirk from "Samsung SSD 8*",
+covering all Samsung 800 series SSDs, to only apply to "Samsung SSD 840*"
+and "Samsung SSD 850*" series based on information from Samsung.
+
+But there is a large number of users which is still reporting issues
+with the Samsung 860 and 870 SSDs combined with Intel, ASmedia or
+Marvell SATA controllers and all reporters also report these problems
+going away when disabling queued trims.
+
+Note that with AMD SATA controllers users are reporting even worse
+issues and only completely disabling NCQ helps there, this will be
+addressed in a separate patch.
+
+Fixes: ca6bfcb2f6d9 ("libata: Enable queued TRIM for Samsung SSD 860")
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=203475
+Cc: stable@vger.kernel.org
+Cc: Kate Hsuan <hpa@redhat.com>
+Signed-off-by: Hans de Goede <hdegoede@redhat.com>
+Reviewed-by: Damien Le Moal <damien.lemoal@wdc.com>
+Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com>
+Link: https://lore.kernel.org/r/20210823095220.30157-1-hdegoede@redhat.com
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/ata/libata-core.c |    4 ++++
+ 1 file changed, 4 insertions(+)
+
+--- a/drivers/ata/libata-core.c
++++ b/drivers/ata/libata-core.c
+@@ -4574,6 +4574,10 @@ static const struct ata_blacklist_entry
+                                               ATA_HORKAGE_ZERO_AFTER_TRIM, },
+       { "Samsung SSD 850*",           NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
+                                               ATA_HORKAGE_ZERO_AFTER_TRIM, },
++      { "Samsung SSD 860*",           NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
++                                              ATA_HORKAGE_ZERO_AFTER_TRIM, },
++      { "Samsung SSD 870*",           NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
++                                              ATA_HORKAGE_ZERO_AFTER_TRIM, },
+       { "FCCT*M500*",                 NULL,   ATA_HORKAGE_NO_NCQ_TRIM |
+                                               ATA_HORKAGE_ZERO_AFTER_TRIM, },
diff --git a/queue-4.19/pci-aardvark-fix-masking-and-unmasking-legacy-intx-interrupts.patch b/queue-4.19/pci-aardvark-fix-masking-and-unmasking-legacy-intx-interrupts.patch
new file mode 100644 (file)
index 0000000..842311c
--- /dev/null
@@ -0,0 +1,75 @@
+From d212dcee27c1f89517181047e5485fcbba4a25c2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
+Date: Fri, 20 Aug 2021 17:50:20 +0200
+Subject: PCI: aardvark: Fix masking and unmasking legacy INTx interrupts
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Pali Rohár <pali@kernel.org>
+
+commit d212dcee27c1f89517181047e5485fcbba4a25c2 upstream.
+
+irq_mask and irq_unmask callbacks need to be properly guarded by raw spin
+locks as masking/unmasking procedure needs atomic read-modify-write
+operation on hardware register.
+
+Link: https://lore.kernel.org/r/20210820155020.3000-1-pali@kernel.org
+Reported-by: Marc Zyngier <maz@kernel.org>
+Signed-off-by: Pali Rohár <pali@kernel.org>
+Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
+Acked-by: Marc Zyngier <maz@kernel.org>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/controller/pci-aardvark.c |    9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+--- a/drivers/pci/controller/pci-aardvark.c
++++ b/drivers/pci/controller/pci-aardvark.c
+@@ -181,6 +181,7 @@ struct advk_pcie {
+       struct list_head resources;
+       struct irq_domain *irq_domain;
+       struct irq_chip irq_chip;
++      raw_spinlock_t irq_lock;
+       struct irq_domain *msi_domain;
+       struct irq_domain *msi_inner_domain;
+       struct irq_chip msi_bottom_irq_chip;
+@@ -603,22 +604,28 @@ static void advk_pcie_irq_mask(struct ir
+ {
+       struct advk_pcie *pcie = d->domain->host_data;
+       irq_hw_number_t hwirq = irqd_to_hwirq(d);
++      unsigned long flags;
+       u32 mask;
++      raw_spin_lock_irqsave(&pcie->irq_lock, flags);
+       mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
+       mask |= PCIE_ISR1_INTX_ASSERT(hwirq);
+       advk_writel(pcie, mask, PCIE_ISR1_MASK_REG);
++      raw_spin_unlock_irqrestore(&pcie->irq_lock, flags);
+ }
+ static void advk_pcie_irq_unmask(struct irq_data *d)
+ {
+       struct advk_pcie *pcie = d->domain->host_data;
+       irq_hw_number_t hwirq = irqd_to_hwirq(d);
++      unsigned long flags;
+       u32 mask;
++      raw_spin_lock_irqsave(&pcie->irq_lock, flags);
+       mask = advk_readl(pcie, PCIE_ISR1_MASK_REG);
+       mask &= ~PCIE_ISR1_INTX_ASSERT(hwirq);
+       advk_writel(pcie, mask, PCIE_ISR1_MASK_REG);
++      raw_spin_unlock_irqrestore(&pcie->irq_lock, flags);
+ }
+ static int advk_pcie_irq_map(struct irq_domain *h,
+@@ -701,6 +708,8 @@ static int advk_pcie_init_irq_domain(str
+       struct device_node *pcie_intc_node;
+       struct irq_chip *irq_chip;
++      raw_spin_lock_init(&pcie->irq_lock);
++
+       pcie_intc_node =  of_get_next_child(node, NULL);
+       if (!pcie_intc_node) {
+               dev_err(dev, "No PCIe Intc node found\n");
diff --git a/queue-4.19/pci-aardvark-increase-polling-delay-to-1.5s-while-waiting-for-pio-response.patch b/queue-4.19/pci-aardvark-increase-polling-delay-to-1.5s-while-waiting-for-pio-response.patch
new file mode 100644 (file)
index 0000000..16af701
--- /dev/null
@@ -0,0 +1,55 @@
+From 02bcec3ea5591720114f586960490b04b093a09e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Pali=20Roh=C3=A1r?= <pali@kernel.org>
+Date: Thu, 22 Jul 2021 16:40:39 +0200
+Subject: PCI: aardvark: Increase polling delay to 1.5s while waiting for PIO response
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Pali Rohár <pali@kernel.org>
+
+commit 02bcec3ea5591720114f586960490b04b093a09e upstream.
+
+Measurements in different conditions showed that aardvark hardware PIO
+response can take up to 1.44s. Increase wait timeout from 1ms to 1.5s to
+ensure that we do not miss responses from hardware. After 1.44s hardware
+returns errors (e.g. Completer abort).
+
+The previous two patches fixed checking for PIO status, so now we can use
+it to also catch errors which are reported by hardware after 1.44s.
+
+After applying this patch, kernel can detect and print PIO errors to dmesg:
+
+    [    6.879999] advk-pcie d0070000.pcie: Non-posted PIO Response Status: CA, 0xe00 @ 0x100004
+    [    6.896436] advk-pcie d0070000.pcie: Posted PIO Response Status: COMP_ERR, 0x804 @ 0x100004
+    [    6.913049] advk-pcie d0070000.pcie: Posted PIO Response Status: COMP_ERR, 0x804 @ 0x100010
+    [    6.929663] advk-pcie d0070000.pcie: Non-posted PIO Response Status: CA, 0xe00 @ 0x100010
+    [    6.953558] advk-pcie d0070000.pcie: Posted PIO Response Status: COMP_ERR, 0x804 @ 0x100014
+    [    6.970170] advk-pcie d0070000.pcie: Non-posted PIO Response Status: CA, 0xe00 @ 0x100014
+    [    6.994328] advk-pcie d0070000.pcie: Posted PIO Response Status: COMP_ERR, 0x804 @ 0x100004
+
+Without this patch kernel prints only a generic error to dmesg:
+
+    [    5.246847] advk-pcie d0070000.pcie: config read/write timed out
+
+Link: https://lore.kernel.org/r/20210722144041.12661-3-pali@kernel.org
+Signed-off-by: Pali Rohár <pali@kernel.org>
+Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
+Reviewed-by: Marek Behún <kabel@kernel.org>
+Cc: stable@vger.kernel.org # 7fbcb5da811b ("PCI: aardvark: Don't rely on jiffies while holding spinlock")
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/controller/pci-aardvark.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/pci/controller/pci-aardvark.c
++++ b/drivers/pci/controller/pci-aardvark.c
+@@ -166,7 +166,7 @@
+       (PCIE_CONF_BUS(bus) | PCIE_CONF_DEV(PCI_SLOT(devfn))    | \
+        PCIE_CONF_FUNC(PCI_FUNC(devfn)) | PCIE_CONF_REG(where))
+-#define PIO_RETRY_CNT                 500
++#define PIO_RETRY_CNT                 750000 /* 1.5 s */
+ #define PIO_RETRY_DELAY                       2 /* 2 us*/
+ #define LINK_WAIT_MAX_RETRIES         10
diff --git a/queue-4.19/pci-restrict-asmedia-asm1062-sata-max-payload-size-supported.patch b/queue-4.19/pci-restrict-asmedia-asm1062-sata-max-payload-size-supported.patch
new file mode 100644 (file)
index 0000000..cde06cb
--- /dev/null
@@ -0,0 +1,52 @@
+From b12d93e9958e028856cbcb061b6e64728ca07755 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Marek=20Beh=C3=BAn?= <kabel@kernel.org>
+Date: Thu, 24 Jun 2021 19:14:18 +0200
+Subject: PCI: Restrict ASMedia ASM1062 SATA Max Payload Size Supported
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Marek Behún <kabel@kernel.org>
+
+commit b12d93e9958e028856cbcb061b6e64728ca07755 upstream.
+
+The ASMedia ASM1062 SATA controller advertises Max_Payload_Size_Supported
+of 512, but in fact it cannot handle incoming TLPs with payload size of
+512.
+
+We discovered this issue on PCIe controllers capable of MPS = 512 (Aardvark
+and DesignWare), where the issue presents itself as an External Abort.
+Bjorn Helgaas says:
+
+  Probably ASM1062 reports a Malformed TLP error when it receives a data
+  payload of 512 bytes, and Aardvark, DesignWare, etc convert this to an
+  arm64 External Abort. [1]
+
+To avoid this problem, limit the ASM1062 Max Payload Size Supported to 256
+bytes, so we set the Max Payload Size of devices that may send TLPs to the
+ASM1062 to 256 or less.
+
+[1] https://lore.kernel.org/linux-pci/20210601170907.GA1949035@bjorn-Precision-5520/
+BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=212695
+Link: https://lore.kernel.org/r/20210624171418.27194-2-kabel@kernel.org
+Reported-by: Rötti <espressobinboardarmbiantempmailaddress@posteo.de>
+Signed-off-by: Marek Behún <kabel@kernel.org>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Reviewed-by: Krzysztof Wilczyński <kw@linux.com>
+Reviewed-by: Pali Rohár <pali@kernel.org>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/quirks.c |    1 +
+ 1 file changed, 1 insertion(+)
+
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -3158,6 +3158,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SO
+                       PCI_DEVICE_ID_SOLARFLARE_SFC4000A_1, fixup_mpss_256);
+ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_SOLARFLARE,
+                       PCI_DEVICE_ID_SOLARFLARE_SFC4000B, fixup_mpss_256);
++DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_ASMEDIA, 0x0612, fixup_mpss_256);
+ /*
+  * Intel 5000 and 5100 Memory controllers have an erratum with read completion
diff --git a/queue-4.19/pci-return-0-data-on-pciconfig_read-cap_sys_admin-failure.patch b/queue-4.19/pci-return-0-data-on-pciconfig_read-cap_sys_admin-failure.patch
new file mode 100644 (file)
index 0000000..8ebd2c7
--- /dev/null
@@ -0,0 +1,56 @@
+From a8bd29bd49c4156ea0ec5a97812333e2aeef44e7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Krzysztof=20Wilczy=C5=84ski?= <kw@linux.com>
+Date: Thu, 29 Jul 2021 23:37:54 +0000
+Subject: PCI: Return ~0 data on pciconfig_read() CAP_SYS_ADMIN failure
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+From: Krzysztof Wilczyński <kw@linux.com>
+
+commit a8bd29bd49c4156ea0ec5a97812333e2aeef44e7 upstream.
+
+The pciconfig_read() syscall reads PCI configuration space using
+hardware-dependent config accessors.
+
+If the read fails on PCI, most accessors don't return an error; they
+pretend the read was successful and got ~0 data from the device, so the
+syscall returns success with ~0 data in the buffer.
+
+When the accessor does return an error, pciconfig_read() normally fills the
+user's buffer with ~0 and returns an error in errno.  But after
+e4585da22ad0 ("pci syscall.c: Switch to refcounting API"), we don't fill
+the buffer with ~0 for the EPERM "user lacks CAP_SYS_ADMIN" error.
+
+Userspace may rely on the ~0 data to detect errors, but after e4585da22ad0,
+that would not detect CAP_SYS_ADMIN errors.
+
+Restore the original behaviour of filling the buffer with ~0 when the
+CAP_SYS_ADMIN check fails.
+
+[bhelgaas: commit log, fold in Nathan's fix
+https://lore.kernel.org/r/20210803200836.500658-1-nathan@kernel.org]
+Fixes: e4585da22ad0 ("pci syscall.c: Switch to refcounting API")
+Link: https://lore.kernel.org/r/20210729233755.1509616-1-kw@linux.com
+Signed-off-by: Krzysztof Wilczyński <kw@linux.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/syscall.c |    4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+--- a/drivers/pci/syscall.c
++++ b/drivers/pci/syscall.c
+@@ -21,8 +21,10 @@ SYSCALL_DEFINE5(pciconfig_read, unsigned
+       long err;
+       int cfg_ret;
++      err = -EPERM;
++      dev = NULL;
+       if (!capable(CAP_SYS_ADMIN))
+-              return -EPERM;
++              goto error;
+       err = -ENODEV;
+       dev = pci_get_domain_bus_and_slot(0, bus, dfn);
diff --git a/queue-4.19/pci-xilinx-nwl-enable-the-clock-through-ccf.patch b/queue-4.19/pci-xilinx-nwl-enable-the-clock-through-ccf.patch
new file mode 100644 (file)
index 0000000..194f042
--- /dev/null
@@ -0,0 +1,62 @@
+From de0a01f5296651d3a539f2d23d0db8f359483696 Mon Sep 17 00:00:00 2001
+From: Hyun Kwon <hyun.kwon@xilinx.com>
+Date: Fri, 25 Jun 2021 12:48:23 +0200
+Subject: PCI: xilinx-nwl: Enable the clock through CCF
+
+From: Hyun Kwon <hyun.kwon@xilinx.com>
+
+commit de0a01f5296651d3a539f2d23d0db8f359483696 upstream.
+
+Enable PCIe reference clock. There is no remove function that's why
+this should be enough for simple operation.
+Normally this clock is enabled by default by firmware but there are
+usecases where this clock should be enabled by driver itself.
+It is also good that PCIe clock is recorded in a clock framework.
+
+Link: https://lore.kernel.org/r/ee6997a08fab582b1c6de05f8be184f3fe8d5357.1624618100.git.michal.simek@xilinx.com
+Fixes: ab597d35ef11 ("PCI: xilinx-nwl: Add support for Xilinx NWL PCIe Host Controller")
+Signed-off-by: Hyun Kwon <hyun.kwon@xilinx.com>
+Signed-off-by: Bharat Kumar Gogada <bharat.kumar.gogada@xilinx.com>
+Signed-off-by: Michal Simek <michal.simek@xilinx.com>
+Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
+Cc: stable@vger.kernel.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/controller/pcie-xilinx-nwl.c |   12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+--- a/drivers/pci/controller/pcie-xilinx-nwl.c
++++ b/drivers/pci/controller/pcie-xilinx-nwl.c
+@@ -6,6 +6,7 @@
+  * (C) Copyright 2014 - 2015, Xilinx, Inc.
+  */
++#include <linux/clk.h>
+ #include <linux/delay.h>
+ #include <linux/interrupt.h>
+ #include <linux/irq.h>
+@@ -169,6 +170,7 @@ struct nwl_pcie {
+       u8 root_busno;
+       struct nwl_msi msi;
+       struct irq_domain *legacy_irq_domain;
++      struct clk *clk;
+       raw_spinlock_t leg_mask_lock;
+ };
+@@ -849,6 +851,16 @@ static int nwl_pcie_probe(struct platfor
+               return err;
+       }
++      pcie->clk = devm_clk_get(dev, NULL);
++      if (IS_ERR(pcie->clk))
++              return PTR_ERR(pcie->clk);
++
++      err = clk_prepare_enable(pcie->clk);
++      if (err) {
++              dev_err(dev, "can't enable PCIe ref clock\n");
++              return err;
++      }
++
+       err = nwl_pcie_bridge_init(pcie);
+       if (err) {
+               dev_err(dev, "HW Initialization failed\n");
index e4562c9525e9317192f861135c89999d4a9e5933..1c540dba972c00785e6103d139607f2ff4223f05 100644 (file)
@@ -149,3 +149,11 @@ dm-crypt-avoid-percpu_counter-spinlock-contention-in-crypt_page_alloc.patch
 vmci-fix-null-pointer-dereference-when-unmapping-queue-pair.patch
 media-uvc-don-t-do-dma-on-stack.patch
 media-rc-loopback-return-number-of-emitters-rather-than-error.patch
+libata-add-ata_horkage_no_ncq_trim-for-samsung-860-and-870-ssds.patch
+arm-9105-1-atags_to_fdt-don-t-warn-about-stack-size.patch
+arm-9109-1-oabi-compat-add-epoll_pwait-handler.patch
+pci-restrict-asmedia-asm1062-sata-max-payload-size-supported.patch
+pci-return-0-data-on-pciconfig_read-cap_sys_admin-failure.patch
+pci-xilinx-nwl-enable-the-clock-through-ccf.patch
+pci-aardvark-increase-polling-delay-to-1.5s-while-waiting-for-pio-response.patch
+pci-aardvark-fix-masking-and-unmasking-legacy-intx-interrupts.patch