]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.17-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Jun 2022 09:24:40 +0000 (11:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Jun 2022 09:24:40 +0000 (11:24 +0200)
added patches:
block-loop-support-partitions-without-scanning.patch
pci-qcom-fix-pipe-clock-imbalance.patch

queue-5.17/block-loop-support-partitions-without-scanning.patch [new file with mode: 0644]
queue-5.17/pci-qcom-fix-pipe-clock-imbalance.patch [new file with mode: 0644]
queue-5.17/series

diff --git a/queue-5.17/block-loop-support-partitions-without-scanning.patch b/queue-5.17/block-loop-support-partitions-without-scanning.patch
new file mode 100644 (file)
index 0000000..8b1894f
--- /dev/null
@@ -0,0 +1,94 @@
+From b9684a71fca793213378dd410cd11675d973eaa1 Mon Sep 17 00:00:00 2001
+From: Christoph Hellwig <hch@lst.de>
+Date: Fri, 27 May 2022 07:58:06 +0200
+Subject: block, loop: support partitions without scanning
+
+From: Christoph Hellwig <hch@lst.de>
+
+commit b9684a71fca793213378dd410cd11675d973eaa1 upstream.
+
+Historically we did distinguish between a flag that surpressed partition
+scanning, and a combinations of the minors variable and another flag if
+any partitions were supported.  This was generally confusing and doesn't
+make much sense, but some corner case uses of the loop driver actually
+do want to support manually added partitions on a device that does not
+actively scan for partitions.  To make things worsee the loop driver
+also wants to dynamically toggle the scanning for partitions on a live
+gendisk, which makes the disk->flags updates non-atomic.
+
+Introduce a new GD_SUPPRESS_PART_SCAN bit in disk->state that disables
+just scanning for partitions, and toggle that instead of GENHD_FL_NO_PART
+in the loop driver.
+
+Fixes: 1ebe2e5f9d68 ("block: remove GENHD_FL_EXT_DEVT")
+Reported-by: Ming Lei <ming.lei@redhat.com>
+Signed-off-by: Christoph Hellwig <hch@lst.de>
+Reviewed-by: Ming Lei <ming.lei@redhat.com>
+Link: https://lore.kernel.org/r/20220527055806.1972352-1-hch@lst.de
+Signed-off-by: Jens Axboe <axboe@kernel.dk>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ block/genhd.c         |    2 ++
+ drivers/block/loop.c  |    8 ++++----
+ include/linux/genhd.h |    1 +
+ 3 files changed, 7 insertions(+), 4 deletions(-)
+
+--- a/block/genhd.c
++++ b/block/genhd.c
+@@ -380,6 +380,8 @@ int disk_scan_partitions(struct gendisk
+       if (disk->flags & (GENHD_FL_NO_PART | GENHD_FL_HIDDEN))
+               return -EINVAL;
++      if (test_bit(GD_SUPPRESS_PART_SCAN, &disk->state))
++              return -EINVAL;
+       if (disk->open_partitions)
+               return -EBUSY;
+--- a/drivers/block/loop.c
++++ b/drivers/block/loop.c
+@@ -1067,7 +1067,7 @@ static int loop_configure(struct loop_de
+               lo->lo_flags |= LO_FLAGS_PARTSCAN;
+       partscan = lo->lo_flags & LO_FLAGS_PARTSCAN;
+       if (partscan)
+-              lo->lo_disk->flags &= ~GENHD_FL_NO_PART;
++              clear_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
+       loop_global_unlock(lo, is_loop);
+       if (partscan)
+@@ -1186,7 +1186,7 @@ static void __loop_clr_fd(struct loop_de
+        */
+       lo->lo_flags = 0;
+       if (!part_shift)
+-              lo->lo_disk->flags |= GENHD_FL_NO_PART;
++              set_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
+       mutex_lock(&lo->lo_mutex);
+       lo->lo_state = Lo_unbound;
+       mutex_unlock(&lo->lo_mutex);
+@@ -1296,7 +1296,7 @@ out_unfreeze:
+       if (!err && (lo->lo_flags & LO_FLAGS_PARTSCAN) &&
+            !(prev_lo_flags & LO_FLAGS_PARTSCAN)) {
+-              lo->lo_disk->flags &= ~GENHD_FL_NO_PART;
++              clear_bit(GD_SUPPRESS_PART_SCAN, &lo->lo_disk->state);
+               partscan = true;
+       }
+ out_unlock:
+@@ -2028,7 +2028,7 @@ static int loop_add(int i)
+        * userspace tools. Parameters like this in general should be avoided.
+        */
+       if (!part_shift)
+-              disk->flags |= GENHD_FL_NO_PART;
++              set_bit(GD_SUPPRESS_PART_SCAN, &disk->state);
+       atomic_set(&lo->lo_refcnt, 0);
+       mutex_init(&lo->lo_mutex);
+       lo->lo_number           = i;
+--- a/include/linux/genhd.h
++++ b/include/linux/genhd.h
+@@ -110,6 +110,7 @@ struct gendisk {
+ #define GD_READ_ONLY                  1
+ #define GD_DEAD                               2
+ #define GD_NATIVE_CAPACITY            3
++#define GD_SUPPRESS_PART_SCAN         5
+       struct mutex open_mutex;        /* open/close mutex */
+       unsigned open_partitions;       /* number of open partitions */
diff --git a/queue-5.17/pci-qcom-fix-pipe-clock-imbalance.patch b/queue-5.17/pci-qcom-fix-pipe-clock-imbalance.patch
new file mode 100644 (file)
index 0000000..57a154d
--- /dev/null
@@ -0,0 +1,44 @@
+From fdf6a2f533115ec5d4d9629178f8196331f1ac50 Mon Sep 17 00:00:00 2001
+From: Johan Hovold <johan+linaro@kernel.org>
+Date: Fri, 1 Apr 2022 15:33:51 +0200
+Subject: PCI: qcom: Fix pipe clock imbalance
+
+From: Johan Hovold <johan+linaro@kernel.org>
+
+commit fdf6a2f533115ec5d4d9629178f8196331f1ac50 upstream.
+
+Fix a clock imbalance introduced by ed8cc3b1fc84 ("PCI: qcom: Add support
+for SDM845 PCIe controller"), which enables the pipe clock both in init()
+and in post_init() but only disables in post_deinit().
+
+Note that the pipe clock was also never disabled in the init() error
+paths and that enabling the clock before powering up the PHY looks
+questionable.
+
+Link: https://lore.kernel.org/r/20220401133351.10113-1-johan+linaro@kernel.org
+Fixes: ed8cc3b1fc84 ("PCI: qcom: Add support for SDM845 PCIe controller")
+Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
+Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
+Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
+Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
+Cc: stable@vger.kernel.org      # 5.6
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/pci/controller/dwc/pcie-qcom.c |    6 ------
+ 1 file changed, 6 deletions(-)
+
+--- a/drivers/pci/controller/dwc/pcie-qcom.c
++++ b/drivers/pci/controller/dwc/pcie-qcom.c
+@@ -1230,12 +1230,6 @@ static int qcom_pcie_init_2_7_0(struct q
+               goto err_disable_clocks;
+       }
+-      ret = clk_prepare_enable(res->pipe_clk);
+-      if (ret) {
+-              dev_err(dev, "cannot prepare/enable pipe clock\n");
+-              goto err_disable_clocks;
+-      }
+-
+       /* configure PCIe to RC mode */
+       writel(DEVICE_TYPE_RC, pcie->parf + PCIE20_PARF_DEVICE_TYPE);
index 4430ee6e80a971de7ff1baaef712e9820e9fac23..375daeba01ba370fdde2739d049178ae5846f966 100644 (file)
@@ -293,3 +293,5 @@ random-mark-bootloader-randomness-code-as-__init.patch
 random-account-for-arch-randomness-in-bits.patch
 md-raid0-ignore-raid0-layout-if-the-second-zone-has-only-one-device.patch
 net-sched-act_police-more-accurate-mtu-policing.patch
+block-loop-support-partitions-without-scanning.patch
+pci-qcom-fix-pipe-clock-imbalance.patch