summaryrefslogtreecommitdiffstats
path: root/certs
diff options
context:
space:
mode:
authorTomas Krcka <krckatom@amazon.de>2023-03-29 14:34:19 +0200
committerWill Deacon <will@kernel.org>2023-03-30 17:05:05 +0200
commit67ea0b7ce41844eae7c10bb04dfe66a23318c224 (patch)
treeb12959de7ad1a8b398332ca3fa55870c7f842d12 /certs
parentiommu/arm-smmu-qcom: Limit the SMR groups to 128 (diff)
downloadlinux-67ea0b7ce41844eae7c10bb04dfe66a23318c224.tar.xz
linux-67ea0b7ce41844eae7c10bb04dfe66a23318c224.zip
iommu/arm-smmu-v3: Acknowledge pri/event queue overflow if any
When an overflow occurs in the PRI queue, the SMMU toggles the overflow flag in the PROD register. To exit the overflow condition, the PRI thread is supposed to acknowledge it by toggling this flag in the CONS register. Unacknowledged overflow causes the queue to stop adding anything new. Currently, the priq thread always writes the CONS register back to the SMMU after clearing the queue. The writeback is not necessary if the OVFLG in the PROD register has not been changed, no overflow has occured. This commit checks the difference of the overflow flag between CONS and PROD register. If it's different, toggles the OVACKFLG flag in the CONS register and write it to the SMMU. The situation is similar for the event queue. The acknowledge register is also toggled after clearing the event queue but never propagated to the hardware. This would only be done the next time when executing evtq thread. Unacknowledged event queue overflow doesn't affect the event queue, because the SMMU still adds elements to that queue when the overflow condition is active. But it feel nicer to keep SMMU in sync when possible, so use the same way here as well. Signed-off-by: Tomas Krcka <krckatom@amazon.de> Link: https://lore.kernel.org/r/20230329123420.34641-1-tomas.krcka@gmail.com Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'certs')
0 files changed, 0 insertions, 0 deletions