Linux Power Management development
 help / color / mirror / Atom feed
* [PATCH v1 0/5] power_supply: errno, hwmon rollback and docs/ABI sync
@ 2026-08-31 15:53 Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 1/5] power: return -ENOMEM on OCV table alloc failure Iván Ezequiel Rodriguez
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Iván Ezequiel Rodriguez @ 2026-08-31 15:53 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: linux-pm, linux-kernel, Rafael J . Wysocki,
	Iván Ezequiel Rodriguez

Hi,

Small power_supply hygiene on top of v7.3-rc1.

Patch 1 returns -ENOMEM when OCV table allocation fails (was -EINVAL).
Patch 2 best-effort recreates hwmon after register_extension() rolls
back a failed update_sysfs_and_hwmon() that already removed the old
hwmon group.
Patches 3-4 align Documentation/power/power_supply_class.rst and the
sysfs-class-power ABI type values with the current enums/strings.
Patch 5 replaces spaces with tabs in get_property_direct().

Base: v7.3-rc1

Tested: built drivers/power/supply/power_supply_core.o with
CONFIG_POWER_SUPPLY=y; checkpatch clean on 0001-0005.

Thanks,
Iván

Iván Ezequiel Rodriguez (5):
  power: return -ENOMEM on OCV table alloc failure
  power: restore hwmon if extension update fails
  docs: power: fix power_supply_class.rst status, health and time_to
  docs: ABI: complete power_supply type valid values
  power: use tabs in power_supply_get_property_direct

 Documentation/ABI/testing/sysfs-class-power |  4 +++-
 Documentation/power/power_supply_class.rst  | 26 +++++++++++++-------------
 drivers/power/supply/power_supply_core.c    | 14 ++++++++++++--
 3 files changed, 28 insertions(+), 16 deletions(-)

-- 
2.43.0

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v1 1/5] power: return -ENOMEM on OCV table alloc failure
  2026-08-31 15:53 [PATCH v1 0/5] power_supply: errno, hwmon rollback and docs/ABI sync Iván Ezequiel Rodriguez
@ 2026-08-31 15:53 ` Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 2/5] power: restore hwmon if extension update fails Iván Ezequiel Rodriguez
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Iván Ezequiel Rodriguez @ 2026-08-31 15:53 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: linux-pm, linux-kernel, Rafael J . Wysocki,
	Iván Ezequiel Rodriguez

power_supply_get_battery_info() maps a failed kcalloc() for the OCV
capacity table to -EINVAL. Return -ENOMEM instead, matching the
resistance-temp-table allocation path in the same function.

Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com>
---
 drivers/power/supply/power_supply_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index 00d8bc98d588..f550f70ca586 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -907,7 +907,7 @@ int power_supply_get_battery_info(struct power_supply *psy,
 		u32 *propdata __free(kfree) = kcalloc(proplen, sizeof(*propdata), GFP_KERNEL);
 		if (!propdata) {
 			power_supply_put_battery_info(psy, info);
-			err = -EINVAL;
+			err = -ENOMEM;
 			goto out_put_node;
 		}
 		err = fwnode_property_read_u32_array(fwnode, propname, propdata, proplen);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v1 2/5] power: restore hwmon if extension update fails
  2026-08-31 15:53 [PATCH v1 0/5] power_supply: errno, hwmon rollback and docs/ABI sync Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 1/5] power: return -ENOMEM on OCV table alloc failure Iván Ezequiel Rodriguez
@ 2026-08-31 15:53 ` Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 3/5] docs: power: fix power_supply_class.rst status, health and time_to Iván Ezequiel Rodriguez
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Iván Ezequiel Rodriguez @ 2026-08-31 15:53 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: linux-pm, linux-kernel, Rafael J . Wysocki,
	Iván Ezequiel Rodriguez

power_supply_update_sysfs_and_hwmon() removes the existing hwmon group
before recreating it. If recreation fails, register_extension() rolled
back the extension but left hwmon absent.

After tearing down the failed extension, best-effort recreate hwmon so
the supply keeps its previous monitoring attributes when possible.

Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com>
---
 drivers/power/supply/power_supply_core.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index f550f70ca586..c041806f4f9e 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -1595,6 +1595,16 @@ int power_supply_register_extension(struct power_supply *psy, const struct power
 
 sysfs_hwmon_failed:
 	power_supply_sysfs_remove_extension(psy, ext);
+	list_del(&reg->list_head);
+	kfree(reg);
+	/*
+	 * update_sysfs_and_hwmon() may have already torn down hwmon before
+	 * failing to recreate it. Recreate without the failed extension.
+	 */
+	if (power_supply_add_hwmon_sysfs(psy))
+		dev_warn(&psy->dev, "failed to restore hwmon after extension error\n");
+	return ret;
+
 sysfs_add_failed:
 	list_del(&reg->list_head);
 	kfree(reg);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v1 3/5] docs: power: fix power_supply_class.rst status, health and time_to
  2026-08-31 15:53 [PATCH v1 0/5] power_supply: errno, hwmon rollback and docs/ABI sync Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 1/5] power: return -ENOMEM on OCV table alloc failure Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 2/5] power: restore hwmon if extension update fails Iván Ezequiel Rodriguez
@ 2026-08-31 15:53 ` Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 4/5] docs: ABI: complete power_supply type valid values Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 5/5] power: use tabs in power_supply_get_property_direct Iván Ezequiel Rodriguez
  4 siblings, 0 replies; 6+ messages in thread
From: Iván Ezequiel Rodriguez @ 2026-08-31 15:53 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: linux-pm, linux-kernel, Rafael J . Wysocki,
	Iván Ezequiel Rodriguez

Correct STATUS/HEALTH references to POWER_SUPPLY_* enums in
include/linux/power_supply.h instead of the nonexistent battery.h
macros. Document TIME_TO_{EMPTY,FULL}_{NOW,AVG}, fix the "operatable"
typo, and note that MODEL_NAME and MANUFACTURER already exist.

Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com>
---
 Documentation/power/power_supply_class.rst | 26 +++++++++++-----------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/Documentation/power/power_supply_class.rst b/Documentation/power/power_supply_class.rst
index 6d11f8c594a0..c60aa7ce717b 100644
--- a/Documentation/power/power_supply_class.rst
+++ b/Documentation/power/power_supply_class.rst
@@ -82,7 +82,8 @@ _NOW
 STATUS
   this attribute represents operating status (charging, full,
   discharging (i.e., powering a load), etc.). This corresponds to
-  `BATTERY_STATUS_*` values, as defined in battery.h.
+  `POWER_SUPPLY_STATUS_*` values, as defined in
+  include/linux/power_supply.h.
 
 CHARGE_TYPE
   batteries can typically charge at different rates.
@@ -95,8 +96,8 @@ AUTHENTIC
   to the platform is authentic(1) or non-authentic(0).
 
 HEALTH
-  represents health of the battery. Values corresponds to
-  POWER_SUPPLY_HEALTH_*, defined in battery.h.
+  represents health of the battery. Values correspond to
+  POWER_SUPPLY_HEALTH_*, defined in include/linux/power_supply.h.
 
 VOLTAGE_OCV
   open circuit voltage of the battery.
@@ -202,16 +203,17 @@ TEMP_AMBIENT_ALERT_MIN
 TEMP_AMBIENT_ALERT_MAX
   maximum ambient temperature alert.
 TEMP_MIN
-  minimum operatable temperature
+  minimum operable temperature
 TEMP_MAX
-  maximum operatable temperature
+  maximum operable temperature
 
-TIME_TO_EMPTY
+TIME_TO_EMPTY_NOW, TIME_TO_EMPTY_AVG
   seconds left for battery to be considered empty
-  (i.e., while battery powers a load)
-TIME_TO_FULL
+  (i.e., while battery powers a load). *_NOW is a
+  momentary reading; *_AVG is averaged over a fixed period.
+TIME_TO_FULL_NOW, TIME_TO_FULL_AVG
   seconds left for battery to be considered full
-  (i.e., while battery is charging)
+  (i.e., while battery is charging). Same now/avg distinction.
 
 
 Battery <-> external power supply interaction
@@ -251,10 +253,8 @@ A:
    to add it and send a patch along with your driver.
 
    The attributes available currently are the ones currently provided by the
-   drivers written.
-
-   Good candidates to add in future: model/part#, cycle_time, manufacturer,
-   etc.
+   drivers written. MODEL_NAME and MANUFACTURER are already part of the
+   standard attribute set.
 
 
 Q:
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v1 4/5] docs: ABI: complete power_supply type valid values
  2026-08-31 15:53 [PATCH v1 0/5] power_supply: errno, hwmon rollback and docs/ABI sync Iván Ezequiel Rodriguez
                   ` (2 preceding siblings ...)
  2026-08-31 15:53 ` [PATCH v1 3/5] docs: power: fix power_supply_class.rst status, health and time_to Iván Ezequiel Rodriguez
@ 2026-08-31 15:53 ` Iván Ezequiel Rodriguez
  2026-08-31 15:53 ` [PATCH v1 5/5] power: use tabs in power_supply_get_property_direct Iván Ezequiel Rodriguez
  4 siblings, 0 replies; 6+ messages in thread
From: Iván Ezequiel Rodriguez @ 2026-08-31 15:53 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: linux-pm, linux-kernel, Rafael J . Wysocki,
	Iván Ezequiel Rodriguez

sysfs type already exposes USB_DCP/CDP/ACA, USB_C, USB_PD,
USB_PD_DRP, BrickID and Unknown via POWER_SUPPLY_TYPE_TEXT[]. Update
the ABI document so Valid values match the implementation.

Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com>
---
 Documentation/ABI/testing/sysfs-class-power | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/Documentation/ABI/testing/sysfs-class-power b/Documentation/ABI/testing/sysfs-class-power
index 5641f1fd5fd6..08afb75973d2 100644
--- a/Documentation/ABI/testing/sysfs-class-power
+++ b/Documentation/ABI/testing/sysfs-class-power
@@ -34,7 +34,9 @@ Description:
 		Describes the main type of the supply.
 
 		Access: Read
-		Valid values: "Battery", "UPS", "Mains", "USB", "Wireless"
+		Valid values: "Unknown", "Battery", "UPS", "Mains", "USB",
+		"USB_DCP", "USB_CDP", "USB_ACA", "USB_C", "USB_PD",
+		"USB_PD_DRP", "BrickID", "Wireless"
 
 **Battery and USB properties**
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH v1 5/5] power: use tabs in power_supply_get_property_direct
  2026-08-31 15:53 [PATCH v1 0/5] power_supply: errno, hwmon rollback and docs/ABI sync Iván Ezequiel Rodriguez
                   ` (3 preceding siblings ...)
  2026-08-31 15:53 ` [PATCH v1 4/5] docs: ABI: complete power_supply type valid values Iván Ezequiel Rodriguez
@ 2026-08-31 15:53 ` Iván Ezequiel Rodriguez
  4 siblings, 0 replies; 6+ messages in thread
From: Iván Ezequiel Rodriguez @ 2026-08-31 15:53 UTC (permalink / raw)
  To: Sebastian Reichel
  Cc: linux-pm, linux-kernel, Rafael J . Wysocki,
	Iván Ezequiel Rodriguez

The return statement was indented with spaces; use tabs to match
kernel coding style and silence checkpatch.

Signed-off-by: Iván Ezequiel Rodriguez <ivanrwcm25@gmail.com>
---
 drivers/power/supply/power_supply_core.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/power/supply/power_supply_core.c b/drivers/power/supply/power_supply_core.c
index c041806f4f9e..8f464583c5b0 100644
--- a/drivers/power/supply/power_supply_core.c
+++ b/drivers/power/supply/power_supply_core.c
@@ -1442,7 +1442,7 @@ EXPORT_SYMBOL_GPL(power_supply_get_property);
 int power_supply_get_property_direct(struct power_supply *psy, enum power_supply_property psp,
 				     union power_supply_propval *val)
 {
-        return __power_supply_get_property(psy, psp, val, false);
+	return __power_supply_get_property(psy, psp, val, false);
 }
 EXPORT_SYMBOL_GPL(power_supply_get_property_direct);
 
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2026-08-31 15:55 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-31 15:53 [PATCH v1 0/5] power_supply: errno, hwmon rollback and docs/ABI sync Iván Ezequiel Rodriguez
2026-08-31 15:53 ` [PATCH v1 1/5] power: return -ENOMEM on OCV table alloc failure Iván Ezequiel Rodriguez
2026-08-31 15:53 ` [PATCH v1 2/5] power: restore hwmon if extension update fails Iván Ezequiel Rodriguez
2026-08-31 15:53 ` [PATCH v1 3/5] docs: power: fix power_supply_class.rst status, health and time_to Iván Ezequiel Rodriguez
2026-08-31 15:53 ` [PATCH v1 4/5] docs: ABI: complete power_supply type valid values Iván Ezequiel Rodriguez
2026-08-31 15:53 ` [PATCH v1 5/5] power: use tabs in power_supply_get_property_direct Iván Ezequiel Rodriguez

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