arm-smmu-v3 sharing SID
Robin Murphy
robin.murphy at arm.com
Thu May 18 04:33:25 PDT 2023
On 2023-05-18 11:46, Peng Fan wrote:
> 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.
> 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).
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...
Thanks,
Robin.
More information about the linux-arm-kernel
mailing list