Changeset View
Changeset View
Standalone View
Standalone View
head/sys/dev/iommu/iommu_gas.c
Show First 20 Lines • Show All 252 Lines • ▼ Show 20 Lines | iommu_gas_fini_domain(struct iommu_domain *domain) | ||||
IOMMU_DOMAIN_ASSERT_LOCKED(domain); | IOMMU_DOMAIN_ASSERT_LOCKED(domain); | ||||
KASSERT(domain->entries_cnt == 2, | KASSERT(domain->entries_cnt == 2, | ||||
("domain still in use %p", domain)); | ("domain still in use %p", domain)); | ||||
entry = RB_MIN(iommu_gas_entries_tree, &domain->rb_root); | entry = RB_MIN(iommu_gas_entries_tree, &domain->rb_root); | ||||
KASSERT(entry->start == 0, ("start entry start %p", domain)); | KASSERT(entry->start == 0, ("start entry start %p", domain)); | ||||
KASSERT(entry->end == IOMMU_PAGE_SIZE, ("start entry end %p", domain)); | KASSERT(entry->end == IOMMU_PAGE_SIZE, ("start entry end %p", domain)); | ||||
KASSERT(entry->flags == IOMMU_MAP_ENTRY_PLACE, | KASSERT(entry->flags == | ||||
(IOMMU_MAP_ENTRY_PLACE | IOMMU_MAP_ENTRY_UNMAPPED), | |||||
("start entry flags %p", domain)); | ("start entry flags %p", domain)); | ||||
RB_REMOVE(iommu_gas_entries_tree, &domain->rb_root, entry); | RB_REMOVE(iommu_gas_entries_tree, &domain->rb_root, entry); | ||||
iommu_gas_free_entry(domain, entry); | iommu_gas_free_entry(domain, entry); | ||||
entry = RB_MAX(iommu_gas_entries_tree, &domain->rb_root); | entry = RB_MAX(iommu_gas_entries_tree, &domain->rb_root); | ||||
KASSERT(entry->start == domain->end, ("end entry start %p", domain)); | KASSERT(entry->start == domain->end, ("end entry start %p", domain)); | ||||
KASSERT(entry->end == domain->end, ("end entry end %p", domain)); | KASSERT(entry->end == domain->end, ("end entry end %p", domain)); | ||||
KASSERT(entry->flags == IOMMU_MAP_ENTRY_PLACE, | KASSERT(entry->flags == | ||||
(IOMMU_MAP_ENTRY_PLACE | IOMMU_MAP_ENTRY_UNMAPPED), | |||||
("end entry flags %p", domain)); | ("end entry flags %p", domain)); | ||||
RB_REMOVE(iommu_gas_entries_tree, &domain->rb_root, entry); | RB_REMOVE(iommu_gas_entries_tree, &domain->rb_root, entry); | ||||
iommu_gas_free_entry(domain, entry); | iommu_gas_free_entry(domain, entry); | ||||
RB_FOREACH_SAFE(entry, iommu_gas_entries_tree, &domain->rb_root, | RB_FOREACH_SAFE(entry, iommu_gas_entries_tree, &domain->rb_root, | ||||
entry1) { | entry1) { | ||||
KASSERT((entry->flags & IOMMU_MAP_ENTRY_RMRR) != 0, | KASSERT((entry->flags & IOMMU_MAP_ENTRY_RMRR) != 0, | ||||
("non-RMRR entry left %p", domain)); | ("non-RMRR entry left %p", domain)); | ||||
▲ Show 20 Lines • Show All 558 Lines • Show Last 20 Lines |