* Remove a single SMMU entry. */
| 3755 | * Remove a single SMMU entry. |
| 3756 | */ |
| 3757 | int |
| 3758 | pmap_sremove(pmap_t pmap, vm_offset_t va) |
| 3759 | { |
| 3760 | pt_entry_t *pte; |
| 3761 | int lvl; |
| 3762 | int rc; |
| 3763 | |
| 3764 | PMAP_LOCK(pmap); |
| 3765 | |
| 3766 | pte = pmap_pte(pmap, va, &lvl); |
| 3767 | KASSERT(lvl == 3, |
| 3768 | ("Invalid SMMU pagetable level: %d != 3", lvl)); |
| 3769 | |
| 3770 | if (pte != NULL) { |
| 3771 | pmap_resident_count_dec(pmap, 1); |
| 3772 | pmap_clear(pte); |
| 3773 | rc = KERN_SUCCESS; |
| 3774 | } else |
| 3775 | rc = KERN_FAILURE; |
| 3776 | |
| 3777 | PMAP_UNLOCK(pmap); |
| 3778 | |
| 3779 | return (rc); |
| 3780 | } |
| 3781 | |
| 3782 | /* |
| 3783 | * Remove all the allocated L1, L2 pages from SMMU pmap. |
no test coverage detected