Skip to content

Commit f0e1d3a

Browse files
Jeffrey Hugogregkh
authored andcommitted
bus: mhi: core: Fix channel device name conflict
When multiple instances of the same MHI product are present in a system, we can see a splat from mhi_create_devices() - "sysfs: cannot create duplicate filename". This is because the device names assigned to the MHI channel devices are non-unique. They consist of the channel's name, and the channel's pipe id. For identical products, each instance is going to have the same set of channel (both in name and pipe id). To fix this, we prepend the device name of the parent device that the MHI channels belong to. Since different instances of the same product should have unique device names, this makes the MHI channel devices for each product also unique. Additionally, remove the pipe id from the MHI channel device name. This is an internal detail to the MHI product that provides little value, and imposes too much device specific internal details to userspace. It is expected that channel with a specific name (ie "SAHARA") has a specific client, and it does not matter what pipe id that channel is enumerated on. The pipe id is an internal detail between the MHI bus, and the hardware. The client is not expected to make decisions based on the pipe id, and to do so would require the client to have intimate knowledge of the hardware, which is inappropiate as it may violate the layering provided by the MHI bus. The limitation of doing this is that each product may only have one instance of a channel by a unique name. This limitation is appropriate given the usecases of MHI channels. Signed-off-by: Jeffrey Hugo <[email protected]> Reviewed-by: Hemant Kumar <[email protected]> Reviewed-by: Manivannan Sadhasivam <[email protected]> Signed-off-by: Manivannan Sadhasivam <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent af2e588 commit f0e1d3a

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/bus/mhi/core/main.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,8 @@ void mhi_create_devices(struct mhi_controller *mhi_cntrl)
327327

328328
/* Channel name is same for both UL and DL */
329329
mhi_dev->chan_name = mhi_chan->name;
330-
dev_set_name(&mhi_dev->dev, "%04x_%s", mhi_chan->chan,
330+
dev_set_name(&mhi_dev->dev, "%s_%s",
331+
dev_name(mhi_cntrl->cntrl_dev),
331332
mhi_dev->chan_name);
332333

333334
/* Init wakeup source if available */

0 commit comments

Comments
 (0)