class SmmuBti

Defined at line 29 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

Public Methods

void SmmuBti (const SmmuBti & )

Defined at line 31 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

SmmuBti operator= (const SmmuBti & )

Defined at line 32 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

void SmmuBti (SmmuBti && )

Defined at line 33 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

SmmuBti operator= (SmmuBti && )

Defined at line 34 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

zx::result<fbl::RefPtr<iommu::Pmt>> Map (PinnedVmObject pinned_vmo, uint32_t perms, iommu::RequireContiguousMapping req_contig)

Defined at line 35 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

zx::result<> SetMode (BtiMode mode)

Defined at line 68 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

::SpinLock & get_lock ()

Defined at line 75 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

::Mutex & get_pmt_lock ()

Defined at line 76 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

void AssertCanary ()

Defined at line 79 of file ../../zircon/kernel/dev/iommu/arm_smmu/include/dev/arm_smmu/smmu_bti.h

void AssertOwned (ContextBank & cb)

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

const Smmu & smmu ()

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

void ReleaseQuarantine ()

Defined at line 194 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void OnDispatcherZeroHandles ()

Defined at line 237 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

uint64_t minimum_contiguity ()

Defined at line 327 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

uint64_t aspace_size ()

Defined at line 353 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

uint64_t pmo_count ()

Defined at line 376 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

size_t quarantine_count ()

Defined at line 381 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

bool in_fault_state ()

Defined at line 386 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

fbl::RefPtr<SmmuBti> Create (Smmu & smmu, ktl::unique_ptr<StreamMatchRegGroup> smrg, ktl::unique_ptr<ContextBank> context_bank, BtiMode initial_mode)

Create a new BtiContext and have it take control of the (mandatory) SMRG

and (optional) Context Bank. On success, any of the supplied resources

(SMRG and CB) will be marked as unavailable in the owning SMMU's

bookkeeping.

Defined at line 394 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void Shutdown (Smmu & smmu)

Defined at line 477 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

bool SmrIntersects (SmrValue stream_ids)

Test to see if a stream match register's ID/MASK pair could potentially

match any of the SMR values for any of the SMRGs who are members of this

SmmuBti.

Defined at line 557 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void AddSmrg (Smmu & smmu, ktl::unique_ptr<StreamMatchRegGroup> smrg)

Add a new SMRG to the existing set of SMRGs for this BTI. If SMRG being

added is in translate mode, then it must be using the same context bank as

any pre-existing SMRGs in this BTI.

Defined at line 666 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void HandleFaultLocked ()

Defined at line 760 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

uint32_t cb_ndx_locked ()

Defined at line 794 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

uint32_t cb_ndx ()

Defined at line 798 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void AssertOwned (StreamMatchRegGroup & smrg)

Defined at line 569 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void ReleaseMapping (DeviceAspace::Allocation mapping)

Defined at line 834 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void OnPmtUnpin (SmmuPmt & pmt)

Routines used by PMTs when handling closure and leaking.

Defined at line 844 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void OnPmtZeroHandles (SmmuPmt & pmt)

Defined at line 876 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

void OnEndOfLife ()

This BTI has reached the end of its life and needs to conduct final

cleanup. There are two possible ways to get here:

1) The final user-mode handle to the BTI is closed, and the BTI does not

have any active or quarantined PMTs (OnDispatcherZeroHandles).

2) The BTI is orphaned (its final handle was closed while it still held

PMTs), however the final PMT has now been unpinned and its final handle

closed, and there are no quarantined PMTs (OnPmtZeroHandles)

Defined at line 315 of file ../../zircon/kernel/dev/iommu/arm_smmu/smmu_bti.cc

Friends

class RefPtr
class SmmuTestAccess
class Smmu