mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
iommu/arm: Add Renesas IPMMU-VMSA support
The IPMMU-VMSA is VMSA-compatible I/O Memory Management Unit (IOMMU) which provides address translation and access protection functionalities to processing units and interconnect networks. Please note, current driver is supposed to work only with newest R-Car Gen3 SoCs revisions which IPMMU hardware supports stage 2 translation table format and is able to use CPU's P2M table as is if one is 3-level page table (up to 40 bit IPA). The major differences compare to the Linux driver are: 1. Stage 1/Stage 2 translation. Linux driver supports Stage 1 translation only (with Stage 1 translation table format). It manages page table by itself. But Xen driver supports Stage 2 translation (with Stage 2 translation table format) to be able to share the P2M with the CPU. Stage 1 translation is always bypassed in Xen driver. So, Xen driver is supposed to be used with newest R-Car Gen3 SoC revisions only (H3 ES3.0, M3-W+, etc.) which IPMMU H/W supports stage 2 translation table format. 2. AArch64 support. Linux driver uses VMSAv8-32 mode, while Xen driver enables Armv8 VMSAv8-64 mode to cover up to 40 bit input address. 3. Context bank (sets of page table) usage. In Xen, each context bank is mapped to one Xen domain. So, all devices being pass throughed to the same Xen domain share the same context bank. 4. IPMMU device tracking. In Xen, all IOMMU devices are managed by single driver instance. So, driver uses global list to keep track of registered IPMMU devices. Signed-off-by: Oleksandr Tyshchenko <oleksandr_tyshchenko@epam.com> [for the IPMMU H/W bits] Reviewed-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com> [julien: Remove unneeded "default n"] Acked-by: Julien Grall <julien.grall@arm.com>
This commit is contained in:
1 parent
3e27f7d4cf
commit
32350c5bbd
4 files changed
+1347
No files matched your search
@@ -25,6 +25,7 @@ config RCAR3
|
||||
bool "Renesas RCar3 support"
|
||||
depends on ARM_64
|
||||
select HAS_SCIF
|
||||
select IPMMU_VMSA if EXPERT
|
||||
---help---
|
||||
Enable all the required drivers for Renesas RCar3
|
||||
|
||||
|
||||
@@ -12,6 +12,18 @@ config ARM_SMMU
|
||||
|
||||
Say Y here if your SoC includes an IOMMU device implementing the
|
||||
ARM SMMU architecture.
|
||||
|
||||
config IPMMU_VMSA
|
||||
bool "Renesas IPMMU-VMSA found in R-Car Gen3 SoCs" if EXPERT = "y"
|
||||
depends on ARM_64
|
||||
---help---
|
||||
Support for implementations of the Renesas IPMMU-VMSA found
|
||||
in R-Car Gen3 SoCs.
|
||||
|
||||
Say Y here if you are using newest R-Car Gen3 SoCs revisions
|
||||
(H3 ES3.0, M3-W+, etc) which IPMMU hardware supports stage 2
|
||||
translation table format and is able to use CPU's P2M table as is.
|
||||
|
||||
endif
|
||||
|
||||
config IOMMU_FORCE_PT_SHARE
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
obj-y += iommu.o iommu_helpers.o iommu_fwspec.o
|
||||
obj-$(CONFIG_ARM_SMMU) += smmu.o
|
||||
obj-$(CONFIG_IPMMU_VMSA) += ipmmu-vmsa.o
|
||||
File diff suppressed because it is too large.
Load diff