public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] PCI/IDE: Fix duplicate stream symlink names for TSM class devices
@ 2026-01-05  9:35 Xu Yilun
  2026-01-05 10:13 ` Jonathan Cameron
  2026-01-23  1:01 ` dan.j.williams
  0 siblings, 2 replies; 8+ messages in thread
From: Xu Yilun @ 2026-01-05  9:35 UTC (permalink / raw)
  To: linux-coco, linux-pci, dan.j.williams
  Cc: yilun.xu, yilun.xu, baolu.lu, zhenzhong.duan, linux-kernel,
	yi1.lai, helgaas

The name streamH.R.E is used for 2 symlinks:

  1. TSM class devices: /sys/class/tsm/tsmN/streamH.R.E
  2. host bridge devices: /sys/devices/pciDDDD:BB/streamH.R.E

The first usage is broken cause streamH.R.E is only unique within a
specific host bridge but not across the system. Error occurs e.g. when
creating the first stream on a second host bridge:

  sysfs: cannot create duplicate filename '/devices/faux/tdx_host/tsm/tsm0/stream0.0.0'

Fix this by adding host bridge name into symlink name for TSM class
devices so they show up as:

  /sys/class/tsm/tsmN/pciDDDD:BB:streamH.R.E

It should be OK to change the uAPI since it's new and has few users.

The symlink name for host bridge devices keeps unchanged. Keep concise
as it is already in host bridge context.

Internally in the IDE library, store the full name in struct pci_ide
so TSM symlinks can use it directly as before, while host bridge
symlinks use only the streamH.R.E portion to preserve the existing name.

Fixes: a4438f06b1db ("PCI/TSM: Report active IDE streams")
Reported-by: Yi Lai <yi1.lai@intel.com>
Signed-off-by: Xu Yilun <yilun.xu@linux.intel.com>
---
v2: Changelog improvements

v1: https://lore.kernel.org/linux-coco/20251223085601.2607455-1-yilun.xu@linux.intel.com/
---
 Documentation/ABI/testing/sysfs-class-tsm |  2 +-
 drivers/pci/ide.c                         | 12 +++++++++---
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/Documentation/ABI/testing/sysfs-class-tsm b/Documentation/ABI/testing/sysfs-class-tsm
index 6fc1a5ac6da1..eff71e42c60e 100644
--- a/Documentation/ABI/testing/sysfs-class-tsm
+++ b/Documentation/ABI/testing/sysfs-class-tsm
@@ -8,7 +8,7 @@ Description:
 		link encryption and other device-security features coordinated
 		through a platform tsm.
 
-What:		/sys/class/tsm/tsmN/streamH.R.E
+What:		/sys/class/tsm/tsmN/pciDDDD:BB:streamH.R.E
 Contact:	linux-pci@vger.kernel.org
 Description:
 		(RO) When a host bridge has established a secure connection via
diff --git a/drivers/pci/ide.c b/drivers/pci/ide.c
index f0ef474e1a0d..58fbe9cfd68c 100644
--- a/drivers/pci/ide.c
+++ b/drivers/pci/ide.c
@@ -425,6 +425,7 @@ int pci_ide_stream_register(struct pci_ide *ide)
 	struct pci_host_bridge *hb = pci_find_host_bridge(pdev->bus);
 	struct pci_ide_stream_id __sid;
 	u8 ep_stream, rp_stream;
+	const char *short_name;
 	int rc;
 
 	if (ide->stream_id < 0 || ide->stream_id > U8_MAX) {
@@ -441,13 +442,16 @@ int pci_ide_stream_register(struct pci_ide *ide)
 
 	ep_stream = ide->partner[PCI_IDE_EP].stream_index;
 	rp_stream = ide->partner[PCI_IDE_RP].stream_index;
-	const char *name __free(kfree) = kasprintf(GFP_KERNEL, "stream%d.%d.%d",
+	const char *name __free(kfree) = kasprintf(GFP_KERNEL, "%s:stream%d.%d.%d",
+						   dev_name(&hb->dev),
 						   ide->host_bridge_stream,
 						   rp_stream, ep_stream);
 	if (!name)
 		return -ENOMEM;
 
-	rc = sysfs_create_link(&hb->dev.kobj, &pdev->dev.kobj, name);
+	/* Strip host bridge name in the host bridge context */
+	short_name = name + strlen(dev_name(&hb->dev)) + 1;
+	rc = sysfs_create_link(&hb->dev.kobj, &pdev->dev.kobj, short_name);
 	if (rc)
 		return rc;
 
@@ -471,8 +475,10 @@ void pci_ide_stream_unregister(struct pci_ide *ide)
 {
 	struct pci_dev *pdev = ide->pdev;
 	struct pci_host_bridge *hb = pci_find_host_bridge(pdev->bus);
+	const char *short_name;
 
-	sysfs_remove_link(&hb->dev.kobj, ide->name);
+	short_name = ide->name + strlen(dev_name(&hb->dev)) + 1;
+	sysfs_remove_link(&hb->dev.kobj, short_name);
 	kfree(ide->name);
 	ida_free(&hb->ide_stream_ids_ida, ide->stream_id);
 	ide->name = NULL;

base-commit: 8f0b4cce4481fb22653697cced8d0d04027cb1e8
-- 
2.25.1


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

end of thread, other threads:[~2026-01-23  6:58 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-05  9:35 [PATCH v2] PCI/IDE: Fix duplicate stream symlink names for TSM class devices Xu Yilun
2026-01-05 10:13 ` Jonathan Cameron
2026-01-06  1:59   ` Xu Yilun
2026-01-23  1:01 ` dan.j.williams
2026-01-23  1:07   ` dan.j.williams
2026-01-23  3:38     ` Xu Yilun
2026-01-23  5:07       ` dan.j.williams
2026-01-23  6:40   ` Xu Yilun

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