Linux Power Management development
 help / color / mirror / Atom feed
diff for duplicates of <cover.1780197411.git.github.com@herrie.org>

diff --git a/a/1.txt b/N1/1.txt
index 78e57a9..cfc7768 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,63 +1,69 @@
 Hi all,
 
-Self-review (with Sashiko AI assist) caught issues in v1 before
-maintainer review reached them; re-rolling promptly. v1:
+Self-review (with Sashiko AI assist) caught five real issues in v1's
+NoC driver before the maintainer review cycle reached them, so
+re-rolling promptly. v1:
 
   https://lore.kernel.org/linux-arm-msm/cover.1780148149.git.github.com@herrie.org/
 
-v2 changes:
-
-  - NEW patch 1/3: extend the qcom,pm8xxx parent schema with a
-    `temp-alarm@[0-9a-f]+$` patternProperty so the new sub-node
-    validates as a recognised child of the PMIC. Without this, any
-    board DT instantiating the temp-alarm sub-node fails
-    dt_binding_check (CI bot caught this on v1).
-
-  - patch 2/3: thermal binding YAML rewritten:
-      * add `allOf: $ref: /schemas/thermal/thermal-sensor.yaml#`;
-      * rewrite the example so the parent qcom,pm8901 node itself
-        satisfies its own schema (reg, address-cells, interrupts,
-        interrupt-controller) - addresses the CI bot's `'interrupts'
-        is a required property` complaint on the embedded pmic node;
-      * reword the commit message; v1 incorrectly said the binding
-        describes the "GIC interrupt" and "parent PMIC reference"
-        (the interrupts are actually PMIC-internal, and the parent
-        relationship is the standard DT parent-child hierarchy).
-
-  - patch 3/3: driver fixes:
-      * defer the SW-override switch (which disables PMIC HW
-        auto-shutdown) to the very end of probe and install a devm
-        action that restores HW auto-shutdown on unbind, so the part
-        is never left without any thermal protection if an earlier
-        probe step fails;
-      * fix the first-read temperature comment: the formula computes
-        the lower bound of the current stage, not the midpoint;
-      * snapshot chip->stage/thresh/temp under chip->lock before
-        printing the boot banner so the values are consistent now
-        that the ISR is live;
-      * drop the explicit ->remove(), the new devm restore action
-        replaces it.
-
-dt_binding_check passes on both the parent qcom,pm8xxx and the new
-qcom,pm8901-temp-alarm. Driver passes checkpatch with zero warnings
-or errors.
+v2 changes (driver patch only; the binding header is unchanged from v1):
+
+  - MMFAB master port collision: mmfab_to_appss claimed port 2, but
+    that port was already owned by mmfab_mas_adm1_port0. Per the
+    fabric's port table the APPS_FAB gateway lives at port 11; fix
+    the DEFINE_QNODE so ADM1 DMA's arbitration vote on MMFAB is no
+    longer overwritten by the gateway.
+
+  - msm8660_rpm_commit() double-converted bandwidth units: it called
+    icc_units_to_bps() (which already returns bytes/s) and then
+    immediately divided by 8 "bits -> bytes", asking RPM for 1/8 of
+    the bandwidth that consumers had requested. Drop the spurious
+    divide.
+
+  - Fabric rate cache hoisted to provider scope and divided by the
+    fabric's own bus width rather than the triggering node's local
+    buswidth. A fabric has one shared hardware clock; using each
+    master's local buswidth makes the requested clk rate oscillate
+    depending on which master called icc_set_bw() last, and caching
+    the result on the node lets a subsequent update skip clk_set_rate
+    even though a different node has already moved the hardware. The
+    new layout adds desc->bus_width per fabric (AFAB/SFAB/DFAB=8,
+    MMFAB=16) and qp->rate as the single source of truth.
+
+  - msm8660_get_rpm() rewritten:
+      * returns ERR_PTR(-EPROBE_DEFER) when the RPM phandle resolves
+        but the device hasn't probed yet, instead of returning NULL
+        and silently disabling ARB forever;
+      * adds a device_link to the RPM device so the devres-managed
+        qcom_rpm struct can't be freed out from under us if the RPM
+        driver is unbound at runtime (previously a use-after-free
+        risk because we kept a pointer past put_device()).
+    Probe propagates IS_ERR(qp->rpm) up so the framework retries.
+
+  - devm_clk_bulk_get_optional() now distinguishes -EPROBE_DEFER
+    (propagated) from real "no clocks" (continue without scaling).
+    Previously every error was swallowed, which permanently disabled
+    clock scaling if the icc driver happened to probe before the
+    clock provider - which it usually does, given the core_initcall
+    ordering.
+
+No functional change intended on the working paths; this is purely
+correctness work.
 
 Thanks,
 Herman
 
-Herman van Hazendonk (3):
-  dt-bindings: mfd: qcom-pm8xxx: allow temp-alarm subnode
-  dt-bindings: thermal: qcom: add pm8901-temp-alarm
-  thermal: qcom: add PM8901 PMIC temperature-alarm driver
-
- .../devicetree/bindings/mfd/qcom-pm8xxx.yaml  |   4 +
- .../thermal/qcom,pm8901-temp-alarm.yaml       |  90 ++++
- drivers/thermal/qcom/Kconfig                  |  12 +
- drivers/thermal/qcom/Makefile                 |   1 +
- drivers/thermal/qcom/qcom-pm8901-tm.c         | 408 ++++++++++++++++++
- 5 files changed, 515 insertions(+)
- create mode 100644 Documentation/devicetree/bindings/thermal/qcom,pm8901-temp-alarm.yaml
- create mode 100644 drivers/thermal/qcom/qcom-pm8901-tm.c
+Herman van Hazendonk (2):
+  dt-bindings: interconnect: qcom: add msm8660 fabric IDs
+  interconnect: qcom: add MSM8x60 NoC driver
+
+ drivers/interconnect/qcom/Kconfig             |   10 +
+ drivers/interconnect/qcom/Makefile            |    2 +
+ drivers/interconnect/qcom/msm8660.c           | 1069 +++++++++++++++++
+ .../dt-bindings/interconnect/qcom,msm8660.h   |  156 +++
+ 4 files changed, 1237 insertions(+)
+ create mode 100644 drivers/interconnect/qcom/msm8660.c
+ create mode 100644 include/dt-bindings/interconnect/qcom,msm8660.h
 
 -- 
 2.43.0
diff --git a/a/content_digest b/N1/content_digest
index 83e7911..2c7afd7 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,87 +1,85 @@
  "ref\0cover.1780148149.git.github.com@herrie.org\0"
  "From\0Herman van Hazendonk <github.com@herrie.org>\0"
- "Subject\0[PATCH v2 0/3] thermal: qcom: add PM8901 PMIC temperature-alarm driver\0"
- "Date\0Sun, 31 May 2026 06:09:13 +0200\0"
- "To\0Amit Kucheria <amitk@kernel.org>"
-  Conor Dooley <conor+dt@kernel.org>
-  Daniel Lezcano <daniel.lezcano@kernel.org>
+ "Subject\0[PATCH v2 0/2] interconnect: qcom: add MSM8x60 NoC driver\0"
+ "Date\0Sun, 31 May 2026 06:09:05 +0200\0"
+ "To\0Conor Dooley <conor+dt@kernel.org>"
   devicetree@vger.kernel.org
+  Georgi Djakov <djakov@kernel.org>
   Krzysztof Kozlowski <krzk+dt@kernel.org>
-  Lee Jones <lee@kernel.org>
   linux-arm-msm@vger.kernel.org
   linux-kernel@vger.kernel.org
   linux-pm@vger.kernel.org
-  Lukasz Luba <lukasz.luba@arm.com>
-  Rafael J. Wysocki <rafael@kernel.org>
-  Rob Herring <robh@kernel.org>
-  Satya Priya <quic_c_skakit@quicinc.com>
-  Thara Gopinath <thara.gopinath@gmail.com>
-  van Hazendonk <github.com@herrie.org>
- " Zhang Rui <rui.zhang@intel.com>\0"
+ " Rob Herring <robh@kernel.org>\0"
  "\00:1\0"
  "b\0"
  "Hi all,\n"
  "\n"
- "Self-review (with Sashiko AI assist) caught issues in v1 before\n"
- "maintainer review reached them; re-rolling promptly. v1:\n"
+ "Self-review (with Sashiko AI assist) caught five real issues in v1's\n"
+ "NoC driver before the maintainer review cycle reached them, so\n"
+ "re-rolling promptly. v1:\n"
  "\n"
  "  https://lore.kernel.org/linux-arm-msm/cover.1780148149.git.github.com@herrie.org/\n"
  "\n"
- "v2 changes:\n"
+ "v2 changes (driver patch only; the binding header is unchanged from v1):\n"
  "\n"
- "  - NEW patch 1/3: extend the qcom,pm8xxx parent schema with a\n"
- "    `temp-alarm@[0-9a-f]+$` patternProperty so the new sub-node\n"
- "    validates as a recognised child of the PMIC. Without this, any\n"
- "    board DT instantiating the temp-alarm sub-node fails\n"
- "    dt_binding_check (CI bot caught this on v1).\n"
+ "  - MMFAB master port collision: mmfab_to_appss claimed port 2, but\n"
+ "    that port was already owned by mmfab_mas_adm1_port0. Per the\n"
+ "    fabric's port table the APPS_FAB gateway lives at port 11; fix\n"
+ "    the DEFINE_QNODE so ADM1 DMA's arbitration vote on MMFAB is no\n"
+ "    longer overwritten by the gateway.\n"
  "\n"
- "  - patch 2/3: thermal binding YAML rewritten:\n"
- "      * add `allOf: $ref: /schemas/thermal/thermal-sensor.yaml#`;\n"
- "      * rewrite the example so the parent qcom,pm8901 node itself\n"
- "        satisfies its own schema (reg, address-cells, interrupts,\n"
- "        interrupt-controller) - addresses the CI bot's `'interrupts'\n"
- "        is a required property` complaint on the embedded pmic node;\n"
- "      * reword the commit message; v1 incorrectly said the binding\n"
- "        describes the \"GIC interrupt\" and \"parent PMIC reference\"\n"
- "        (the interrupts are actually PMIC-internal, and the parent\n"
- "        relationship is the standard DT parent-child hierarchy).\n"
+ "  - msm8660_rpm_commit() double-converted bandwidth units: it called\n"
+ "    icc_units_to_bps() (which already returns bytes/s) and then\n"
+ "    immediately divided by 8 \"bits -> bytes\", asking RPM for 1/8 of\n"
+ "    the bandwidth that consumers had requested. Drop the spurious\n"
+ "    divide.\n"
  "\n"
- "  - patch 3/3: driver fixes:\n"
- "      * defer the SW-override switch (which disables PMIC HW\n"
- "        auto-shutdown) to the very end of probe and install a devm\n"
- "        action that restores HW auto-shutdown on unbind, so the part\n"
- "        is never left without any thermal protection if an earlier\n"
- "        probe step fails;\n"
- "      * fix the first-read temperature comment: the formula computes\n"
- "        the lower bound of the current stage, not the midpoint;\n"
- "      * snapshot chip->stage/thresh/temp under chip->lock before\n"
- "        printing the boot banner so the values are consistent now\n"
- "        that the ISR is live;\n"
- "      * drop the explicit ->remove(), the new devm restore action\n"
- "        replaces it.\n"
+ "  - Fabric rate cache hoisted to provider scope and divided by the\n"
+ "    fabric's own bus width rather than the triggering node's local\n"
+ "    buswidth. A fabric has one shared hardware clock; using each\n"
+ "    master's local buswidth makes the requested clk rate oscillate\n"
+ "    depending on which master called icc_set_bw() last, and caching\n"
+ "    the result on the node lets a subsequent update skip clk_set_rate\n"
+ "    even though a different node has already moved the hardware. The\n"
+ "    new layout adds desc->bus_width per fabric (AFAB/SFAB/DFAB=8,\n"
+ "    MMFAB=16) and qp->rate as the single source of truth.\n"
  "\n"
- "dt_binding_check passes on both the parent qcom,pm8xxx and the new\n"
- "qcom,pm8901-temp-alarm. Driver passes checkpatch with zero warnings\n"
- "or errors.\n"
+ "  - msm8660_get_rpm() rewritten:\n"
+ "      * returns ERR_PTR(-EPROBE_DEFER) when the RPM phandle resolves\n"
+ "        but the device hasn't probed yet, instead of returning NULL\n"
+ "        and silently disabling ARB forever;\n"
+ "      * adds a device_link to the RPM device so the devres-managed\n"
+ "        qcom_rpm struct can't be freed out from under us if the RPM\n"
+ "        driver is unbound at runtime (previously a use-after-free\n"
+ "        risk because we kept a pointer past put_device()).\n"
+ "    Probe propagates IS_ERR(qp->rpm) up so the framework retries.\n"
+ "\n"
+ "  - devm_clk_bulk_get_optional() now distinguishes -EPROBE_DEFER\n"
+ "    (propagated) from real \"no clocks\" (continue without scaling).\n"
+ "    Previously every error was swallowed, which permanently disabled\n"
+ "    clock scaling if the icc driver happened to probe before the\n"
+ "    clock provider - which it usually does, given the core_initcall\n"
+ "    ordering.\n"
+ "\n"
+ "No functional change intended on the working paths; this is purely\n"
+ "correctness work.\n"
  "\n"
  "Thanks,\n"
  "Herman\n"
  "\n"
- "Herman van Hazendonk (3):\n"
- "  dt-bindings: mfd: qcom-pm8xxx: allow temp-alarm subnode\n"
- "  dt-bindings: thermal: qcom: add pm8901-temp-alarm\n"
- "  thermal: qcom: add PM8901 PMIC temperature-alarm driver\n"
+ "Herman van Hazendonk (2):\n"
+ "  dt-bindings: interconnect: qcom: add msm8660 fabric IDs\n"
+ "  interconnect: qcom: add MSM8x60 NoC driver\n"
  "\n"
- " .../devicetree/bindings/mfd/qcom-pm8xxx.yaml  |   4 +\n"
- " .../thermal/qcom,pm8901-temp-alarm.yaml       |  90 ++++\n"
- " drivers/thermal/qcom/Kconfig                  |  12 +\n"
- " drivers/thermal/qcom/Makefile                 |   1 +\n"
- " drivers/thermal/qcom/qcom-pm8901-tm.c         | 408 ++++++++++++++++++\n"
- " 5 files changed, 515 insertions(+)\n"
- " create mode 100644 Documentation/devicetree/bindings/thermal/qcom,pm8901-temp-alarm.yaml\n"
- " create mode 100644 drivers/thermal/qcom/qcom-pm8901-tm.c\n"
+ " drivers/interconnect/qcom/Kconfig             |   10 +\n"
+ " drivers/interconnect/qcom/Makefile            |    2 +\n"
+ " drivers/interconnect/qcom/msm8660.c           | 1069 +++++++++++++++++\n"
+ " .../dt-bindings/interconnect/qcom,msm8660.h   |  156 +++\n"
+ " 4 files changed, 1237 insertions(+)\n"
+ " create mode 100644 drivers/interconnect/qcom/msm8660.c\n"
+ " create mode 100644 include/dt-bindings/interconnect/qcom,msm8660.h\n"
  "\n"
  "-- \n"
  2.43.0
 
-e170179e74fcd14bd0bf85cd7a73009a724e63b7d32291d5358c4520ccba8b5c
+640748d5341aad3695c325794f7c5f1318ec3c52ed7e456432ae65477f555940

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox