From f7c47d2593d4f634c2a29d09784fcaf484784562 Mon Sep 17 00:00:00 2001 From: Chris Guikema Date: Thu, 8 Aug 2019 16:49:11 -0400 Subject: [PATCH] capDL: updates for smmuv2 functionality This commit allows for aarch64 to get IO Space caps. If SMMUv2 is defined, the master IOSpace Capability is minted with the configured streamID. Change-Id: Ie3a86cf881bce19057b5697ef5cc92df760b98db --- capDL-tool/CapDL/State.hs | 2 ++ capdl-loader-app/src/main.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/capDL-tool/CapDL/State.hs b/capDL-tool/CapDL/State.hs index ee4e9af1..fc4f18fd 100644 --- a/capDL-tool/CapDL/State.hs +++ b/capDL-tool/CapDL/State.hs @@ -406,6 +406,7 @@ validCapArch X86_64 (IOSpaceCap {}) = True validCapArch X86_64 (IOPTCap {}) = True validCapArch X86_64 (VCPUCap {}) = True validCapArch ARM11 (ARMIOSpaceCap {}) = True +validCapArch AARCH64 (ARMIOSpaceCap {}) = True validCapArch AARCH64 (PUDCap {}) = True validCapArch AARCH64 (PGDCap {}) = True validCapArch _ _ = False @@ -460,6 +461,7 @@ validObjArch X86_64 (IOAPICIrq {}) = True validObjArch X86_64 (MSIIrq {}) = True validObjArch AARCH64 (PUD {}) = True validObjArch AARCH64 (PGD {}) = True +validObjArch AARCH64 (ARMIODevice {}) = True validObjArch _ _ = False checkObjArch :: Arch -> KernelObject Word -> ObjID -> Logger Bool diff --git a/capdl-loader-app/src/main.c b/capdl-loader-app/src/main.c index 2bcf4039..e1d5d8b7 100644 --- a/capdl-loader-app/src/main.c +++ b/capdl-loader-app/src/main.c @@ -1808,8 +1808,12 @@ static void init_cnode_slot(CDL_Model *spec, init_cnode_mode mode, CDL_ObjID cno #endif #if defined(CONFIG_ARCH_ARM) case CDL_ARMIOSpaceCap: +#ifdef CONFIG_ARM_SMMU_V2 + src_index = first_arm_iospace; +#else src_index = first_arm_iospace + target_cap_data; target_cap_data = seL4_NilData; +#endif break; #endif case CDL_IRQHandlerCap: