lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20260123-i3c_rescan-v3-1-026429fa0c65@est.tech>
Date: Fri, 23 Jan 2026 08:55:37 +0100
From: David Nyström <david.nystrom@....tech>
To: Alexandre Belloni <alexandre.belloni@...tlin.com>, 
 Frank Li <Frank.Li@....com>
Cc: linux-i3c@...ts.infradead.org, linux-kernel@...r.kernel.org, 
 Joshua Yeong <joshua.yeong@...rfivetech.com>, 
 David Nyström <david.nystrom@....tech>
Subject: [PATCH v3] i3c: master: Add sysfs option to rescan bus via entdaa

Add the ability to rescan the i3c bus from userspace, i.e. provoke
an ENTDDA. The usecase could be f.ex. an i3cdev userspace driver
for a device with broken hotjoin support. If the i3c device
boots slowly, it might be miss the DDA during boot.

Signed-off-by: David Nyström <david.nystrom@....tech>
---
Changes in v3:
- Rename sysfs entry from rescan to entdda, Comment: Joshua Yeong
- Link to v2: https://patch.msgid.link/20260122-i3c_rescan-v2-1-84c74a483f03@est.tech

Changes in v2:
- Improved the commit message with "why".
- Link to v1: https://patch.msgid.link/20260122-i3c_rescan-v1-1-0c17071e232b@est.tech
---
 drivers/i3c/master.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/drivers/i3c/master.c b/drivers/i3c/master.c
index 80dda0e85558..a1d816634a25 100644
--- a/drivers/i3c/master.c
+++ b/drivers/i3c/master.c
@@ -758,6 +758,29 @@ static ssize_t dev_nack_retry_count_store(struct device *dev,
 
 static DEVICE_ATTR_RW(dev_nack_retry_count);
 
+static ssize_t entdaa_store(struct device *dev,
+			    struct device_attribute *attr,
+			    const char *buf, size_t count)
+{
+	struct i3c_master_controller *master = dev_to_i3cmaster(dev);
+	unsigned long val;
+	int ret;
+
+	ret = kstrtoul(buf, 0, &val);
+	if (ret)
+		return ret;
+
+	if (val) {
+		ret = i3c_master_do_daa(master);
+		if (ret)
+			return ret;
+	}
+
+	return count;
+}
+
+static DEVICE_ATTR_WO(entdaa);
+
 static struct attribute *i3c_masterdev_attrs[] = {
 	&dev_attr_mode.attr,
 	&dev_attr_current_master.attr,
@@ -769,6 +792,7 @@ static struct attribute *i3c_masterdev_attrs[] = {
 	&dev_attr_dynamic_address.attr,
 	&dev_attr_hdrcap.attr,
 	&dev_attr_hotjoin.attr,
+	&dev_attr_entdaa.attr,
 	NULL,
 };
 ATTRIBUTE_GROUPS(i3c_masterdev);

---
base-commit: e3b32dcb9f23e3c3927ef3eec6a5842a988fb574
change-id: 20260116-i3c_rescan-4921d0b41a00

Best regards,
--  
David Nyström <david.nystrom@....tech>


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ