RE: arm-smmu-v3 sharing SID
flat view
From: Peng Fan <peng.fan@nxp.com>
Date: 2023-05-18 12:00:59
Also in:
linux-iommu
Subject: Re: arm-smmu-v3 sharing SID On 2023-05-18 11:46, Peng Fan wrote:quoted
Hi all, Current arm-smmu-v3 driver does not support sharing SID, If there are two devices sharing one SID, the smmu-v3 driver will report "stream x already in tree". We have an SOC that using smmu-v3, only supports limited SIDs. From my understanding, the smmu-v3 hardware supports SID sharing, but linux driver not support that.Ugh, we've always hoped that nobody would build such a thing, since SMMUv3 allows for plenty of stream IDs for any reasonable system (Arm's implementations support at least 24 bits), and aliasing at the StreamID level does rather compromise the usefulness.
We only support max 64 SIDs. So I am thinking to share SID, since we have lots of dma channels.
quoted
I would like know is it ok to add support for sharing SID? Something like to use common rb_add/find, not smmu-v3 driver local rb tree add/find.Not sure what you're thinking there - the StreamID tree is still private to the SMMU instance either way, and the existing arm_smmu_find_master() function is ideal for arm_smmu_device_group() to detect aliasing devices and group them appropriately. Then you also need some way to skip updating STEs that have already been touched for a previous device in the group (basically generalising what arm_smmu_install_ste_for_dev() currently does for duplicate StreamIDs owned by one device).
Thanks for sharing insights. BTW, would you plan to add the support?
I'm fairly confident in reasoning about this for basic .attach_dev purposes, since I did implement the equivalent for SMMUv2, but I'm not sure I even want to think about what it would mean for SVA, PASIDs and nesting...
Smmu-v3 is a bit new to me, I have not look into it so far (: If you could help, I would be appreciated. Thanks, Peng.
Thanks, Robin.
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel