class DeviceAspace

Defined at line 28 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

Public Members

static const uint32_t kPageSize
static const uint32_t kPageMask
static const uint32_t kPageShift

Public Methods

zx::result<ktl::unique_ptr<DeviceAspace>> Create (uint64_t aspace_start, uint64_t aspace_len, uint32_t max_cache_pages)

Note, the inclusive length of the address space should always fit within a

64 bit unsigned integer since the maximum coverage of a set of VMSAv8-64

page tables is 48 bits.

Defined at line 32 of file ../../zircon/kernel/dev/iommu/arm_smmu/device_aspace.cc

paddr_t GetRootPaddr ()

Defined at line 68 of file ../../zircon/kernel/dev/iommu/arm_smmu/device_aspace.cc

void DeviceAspace (const DeviceAspace & )

Defined at line 71 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

void DeviceAspace (DeviceAspace && )

Defined at line 72 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

DeviceAspace & operator= (const DeviceAspace & )

Defined at line 73 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

zx::result<Allocation> Map (const PinnedVmObject & pinned_vmo, uint32_t perms, TlbInvalOp & tlb_inval_op, ktl::optional<uint64_t> location)

Defined at line 73 of file ../../zircon/kernel/dev/iommu/arm_smmu/device_aspace.cc

DeviceAspace & operator= (DeviceAspace && )

Defined at line 74 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

const PageCache & page_cache ()

Defined at line 88 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

uint32_t granule_size_bits ()

Defined at line 89 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

uint64_t first_valid_address ()

Defined at line 90 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

uint64_t last_valid_address ()

Defined at line 91 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/device_aspace.h

void Unmap (Allocation alloc, TlbInvalOp & tlb_inval_op)

Defined at line 168 of file ../../zircon/kernel/dev/iommu/arm_smmu/device_aspace.cc

void FreeTranslationTables (TlbInvalOp & tlb_inval_op)

Recursively walk all translation table pages and return them to the PMM.

This must be done exactly once in the life of a DeviceAspace object, just

before shutdown.

Defined at line 299 of file ../../zircon/kernel/dev/iommu/arm_smmu/device_aspace.cc

Records

Friends

class DeviceAspaceTest
class TranslationTableHelper
class default_delete