From: Greg Kroah-Hartman Date: Mon, 13 Jun 2022 09:24:40 +0000 (+0200) Subject: 5.17-stable patches X-Git-Tag: v4.9.318~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=46daf7fb76cfaac2840d78aa0dfbdbc64943070b;p=thirdparty%2Fkernel%2Fstable-queue.git 5.17-stable patches added patches: block-loop-support-partitions-without-scanning.patch pci-qcom-fix-pipe-clock-imbalance.patch --- 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 index 00000000000..8b1894fdf4e --- /dev/null +++ b/queue-5.17/block-loop-support-partitions-without-scanning.patch @@ -0,0 +1,94 @@ +From b9684a71fca793213378dd410cd11675d973eaa1 Mon Sep 17 00:00:00 2001 +From: Christoph Hellwig +Date: Fri, 27 May 2022 07:58:06 +0200 +Subject: block, loop: support partitions without scanning + +From: Christoph Hellwig + +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 +Signed-off-by: Christoph Hellwig +Reviewed-by: Ming Lei +Link: https://lore.kernel.org/r/20220527055806.1972352-1-hch@lst.de +Signed-off-by: Jens Axboe +Signed-off-by: Greg Kroah-Hartman +--- + 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 index 00000000000..57a154dd662 --- /dev/null +++ b/queue-5.17/pci-qcom-fix-pipe-clock-imbalance.patch @@ -0,0 +1,44 @@ +From fdf6a2f533115ec5d4d9629178f8196331f1ac50 Mon Sep 17 00:00:00 2001 +From: Johan Hovold +Date: Fri, 1 Apr 2022 15:33:51 +0200 +Subject: PCI: qcom: Fix pipe clock imbalance + +From: Johan Hovold + +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 +Signed-off-by: Lorenzo Pieralisi +Signed-off-by: Bjorn Helgaas +Reviewed-by: Bjorn Andersson +Cc: stable@vger.kernel.org # 5.6 +Signed-off-by: Greg Kroah-Hartman +--- + 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); + diff --git a/queue-5.17/series b/queue-5.17/series index 4430ee6e80a..375daeba01b 100644 --- a/queue-5.17/series +++ b/queue-5.17/series @@ -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