Re: [PATCH v5 01/17] iommu/arm-smmu-v3: Make STE programming independent of the callers

Jason Gunthorpe
2024-02-21T17:07:18Z

On Thu, Feb 22, 2024 at 12:19:06AM +0800, Michael Shavit wrote:
> I think the simplification here is in the first if branch of
> arm_smmu_write_ste. With Will's proposal, we only perform a hitless
> update if there's a single used qword that needs updating.

The normal cases like BYPASS -> S1 still require updating QW[1,2]
before updating QW[0], and the reverse as well. That still needs the
three entry_set()'s to process the same way.

From what I can see if we did 1 bit per qw:

- get_used becomes harder to explain but shorter (we ignore the used
qw 1 for bypass/abort)
- arm_smmu_entry_qword_diff becomes a bit simpler, less bitwise logic,
no unused_update
- arm_smmu_write_entry() has the same logic but unused_update is
replaced by target
- We have to hack something to make SHCFG=1 - change the make
functions or have arm_smmu_write_ste() force SHCFG=1
- We have to write a seperate programming logic for CD -
always do V=0/1 for normal updates, and a special EPD0 flow.

All doable, but I don't see the benefit in aggregate..

Jason