[PATCH v7 5/7] arm64: Add support for FEAT_{LS64, LS64_V}
Zhou Wang
wangzhou1 at hisilicon.com
Thu Dec 4 22:47:09 PST 2025
On 2025/11/27 23:37, Arnd Bergmann wrote:
> On Thu, Nov 27, 2025, at 04:51, Zhou Wang wrote:
>> On 2025/11/18 15:36, Arnd Bergmann wrote:
>>> On Tue, Nov 18, 2025, at 03:31, Zhou Wang wrote:
>>>
>>> The easiest setup I can think of that still supports your machine
>>> would look something like:
>>>
>>> - have the kernel choose between st64bv and st64bv0 at early boot,
>>> based on platform configuration, use st64bv0 by default if
>>> available in hardware and not disabled in EL3, EL2 or kernel
>>> command line.
>>> - Change pasid handling in iommu_sva_bind_device() so drivers
>>> have to explicitly request one of the modes before establishing
>>> a pasid, refuse this on incompatible systems, update the
>>> three existing callers (idxd, amdxdna, uacce) accordingly.
>>> - on systems with st64bv but no st64bv0, enable st64bv for
>>> all CPUs at boot time to avoid context switch overhead, but
>>> forbid mapping shared hardware workqueues into userspace.
>>> - postpone full support for st64bv0 until we have a device that
>>> actually uses this and can be tested. I think most of it is
>>> already there in the iommu code, but the ACCDATA setup needs
>>> to be integrated into the switch_mm()/__switch_to() code
>>> and possibly a trap handler like on x86.
>>
>> Hi Arnd,
>>
>> Sorry for late to reply, I double checked with our SoC and device
>> colleagues, currently only st64b has been used in our system.
>>
>> So I think we could upstream FEAT_LS64 firstly as it seems easy
>> to be merged. After this, we continue to discuss FEAT_LS64V and
>> FEAT_LS64_ACCDATA solution if there is a real system need them.
>
> As I understand it, using ST64B is usually more efficient than
> ST64BV if you can use either, since it is a normal posted bus
> transaction rather than a synchronous atomic. If that works for
> you, I think what we should plan for is to let you use ST64B
> on this particular hardware and never support ST64BV from
> userspace, the same way we do it on Intel hardware with ENQCMD.
I missed the email as it has been filtered into other fold, my bad :(
I think it works fine in our system. I planned to remove whole ST64BV
support in next version, so what you suggested is not to export
ST64BV to userspace?
>
> As there are already CPUs out there that do include ST64BV0,
> I think we also want to support those soon. Not having to
> support both ST64BV and ST64BV0 from userspace makes it a lot
> easier, but I think we'd still want to only enable ST64BV0
> on a per-task base when mapping a shared workqueued into the
> user address space on a task that has an active mm->iommu_mm.
>
> If that makes sense to you, I can try to come up with a
> prototype based on your current patches to add the context
> switching and enable logic.
I am OK with this, even though currently we do not have a real
hardware to test ST64BV0 related codes.
Best,
Zhou
>
> Arnd
> .
More information about the linux-arm-kernel
mailing list