class Smmu

Defined at line 44 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

The implementation of an Iommu interface for an instance of an ARM SMMU

(version 2). Throughout this code, references (in the form of section and

table numbers) will be made to the public ARM documentation which can be

found in

"ARM System Memory Management Unit Architecture Specification"

"SMMU architecture version 2.0"

"ARM IHI 0062D.c (ID070116)"

Public Methods

void ~Smmu ()

Defined at line 52 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

zx::result<fbl::RefPtr<iommu::Iommu>> Create (const zbi_dcfg_arm_smmu_driver_t & config)

Create is used during kernel startup in order to create SMMU instances as

described to Zircon by the ZBI.

Defined at line 66 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

int ConsoleCmd (int argc, const cmd_args * argv, uint32_t flags)
int CmdShow (int argc, const cmd_args * argv, int cmd_ndx)
void CmdDumpRegs ()
int CmdBtiOp (int argc, const cmd_args * argv, int cmd_ndx, BtiOpFunc op)
zx::result<fbl::RefPtr<SmmuBti>> FindCmdTarget (int argc, const cmd_args * argv, uint32_t * out_ndx)
void Smmu (const Smmu & )

No copy, no move

Defined at line 80 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

void Smmu (Smmu && )

Defined at line 81 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

Smmu & operator= (const Smmu & )

Defined at line 82 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

Smmu & operator= (Smmu && )

Defined at line 83 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

zx::result<fbl::RefPtr<iommu::Iommu>> Fetch (ktl::unique_ptr<const uint8_t[]> desc, size_t desc_len)

Fetch is used during zx_iommu_create syscalls. User mode is not allowed to

create arbitrary IOMMUs, they may only fetch references to instances which

were created during kernel startup.

Defined at line 91 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

ArmSmmuMode op_mode ()

Defined at line 108 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

const ::Mutex & get_lock ()

Defined at line 109 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

const ::SpinLock & get_irq_lock ()

Defined at line 110 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

const char * name ()

Defined at line 111 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

ktl::optional<IrqDef> get_context_irq (uint32_t ndx)

Defined at line 121 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

zx::result<fbl::RefPtr<iommu::Bti>> CreateBti (uint64_t bus_txn_id)

///////////////////////////////////////////////////////////////////////////

Implementation of the iommu::Iommu driver interface

///////////////////////////////////////////////////////////////////////////

Defined at line 145 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

void ShutdownBti (SmmuBti & bti)

END iommu::Iommu driver interface implementation

Defined at line 1037 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

void AssociateBtiIrq (SmmuBti & bti, uint32_t cb_ndx)

Defined at line 1090 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

void ShutdownContextBankIrq (uint32_t cb_ndx)

Defined at line 1109 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

void ReenableContextBankIrq (SmmuBti & bti)

Defined at line 1147 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu.cc

Enumerations

enum class CreateSource
Name Value
kSyscall 0
kEarlyInit 1

Defined at line 46 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu.h

Records

Friends

class SmmuTestAccess
class StreamMatchRegGroup
class SmmuBti
class ContextBank