]> Pileus Git - ~andy/linux/commit
iommu/arm-smmu: Don't use VMIDs for stage-1 translations
authorWill Deacon <will.deacon@arm.com>
Wed, 31 Jul 2013 18:21:27 +0000 (19:21 +0100)
committerJoerg Roedel <joro@8bytes.org>
Wed, 14 Aug 2013 10:09:42 +0000 (12:09 +0200)
commit1463fe44fd0f87af0404e2c147ab9724081b7235
treebe7cfd49660f28164d41499348900f5987b81908
parentadaba320916d246af56821a1aab81a715091e7e5
iommu/arm-smmu: Don't use VMIDs for stage-1 translations

Although permitted by the architecture, using VMIDs for stage-1
translations causes a complete nightmare for hypervisors, who end up
having to virtualise the VMID space across VMs, which may be using
multiple VMIDs each.

To make life easier for hypervisors (which might just decide not to
support this VMID virtualisation), this patch reworks the stage-1
context-bank TLB invalidation so that:

- Stage-1 mappings are marked non-global in the ptes
- Each Stage-1 context-bank is assigned an ASID in TTBR0
- VMID 0 is reserved for Stage-1 context-banks

This allows the hypervisor to overwrite the Stage-1 VMID in the CBAR
when trapping the write from the guest.

Signed-off-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Joerg Roedel <joro@8bytes.org>
drivers/iommu/arm-smmu.c