Lines Matching full:start

130 	KASSERT(a->start <= a->end, ("inverted entry %p (%jx, %jx)",
131 a, (uintmax_t)a->start, (uintmax_t)a->end));
132 KASSERT(b->start <= b->end, ("inverted entry %p (%jx, %jx)",
133 b, (uintmax_t)b->start, (uintmax_t)b->end));
135 a->end <= b->start || b->end <= a->start ||
136 a->end == a->start || b->end == b->start,
139 a, (uintmax_t)a->start, (uintmax_t)a->end, a->flags,
140 b, (uintmax_t)b->start, (uintmax_t)b->end, b->flags,
161 bound = entry->start;
206 v = MAX(v, entry->start - l->last);
255 end->start = domain->end;
260 begin->start = 0;
284 KASSERT(entry->start == 0, ("start entry start %p", domain));
285 KASSERT(entry->end == IOMMU_PAGE_SIZE, ("start entry end %p", domain));
288 ("start entry flags %p", domain));
293 KASSERT(entry->start == domain->end, ("end entry start %p", domain));
321 iommu_gaddr_t first, size, start;
326 * causes page alignment for the entry->start too.
332 start = roundup2(beg, a->common->alignment);
333 if (start < beg)
340 if (start + offset + size - 1 > end)
344 if (!vm_addr_bound_ok(start + offset, size, a->common->boundary)) {
346 * The start + offset to start + offset + size region crosses
350 first = start;
351 beg = roundup2(start + offset + 1, a->common->boundary);
352 start = roundup2(beg, a->common->alignment);
354 if (start + offset + size - 1 > end ||
355 !vm_addr_bound_ok(start + offset, size,
360 * split. We already checked that start + size does not
364 * start of the next entry, then we do not have gap.
370 start = first;
374 entry->start = start;
375 entry->end = start + roundup2(size + offset, IOMMU_PAGE_SIZE);
434 first->last + min_free <= curr->start)
462 iommu_gas_match_one(a, first->last, curr->start,
482 * To resume the search at the start of the upper region, first climb to
506 iommu_gas_match_one(a, first->last, curr->start,
532 if ((entry->start & IOMMU_PAGE_MASK) != 0 ||
535 if (entry->start >= entry->end)
543 (uintmax_t)entry->start));
556 if (prev != NULL && prev->end > entry->start &&
561 entry->start = prev->end;
563 if (next->start < entry->end &&
568 entry->end = next->start;
570 if (entry->end == entry->start)
573 if (prev != NULL && prev->end > entry->start) {
580 if (next->start < entry->end) {
594 entry, entry->start, entry->end, prev,
595 prev == NULL ? 0 : prev->start, prev == NULL ? 0 : prev->end,
596 ip, ip == NULL ? 0 : ip->start, ip == NULL ? 0 : ip->end));
599 entry, entry->start, entry->end, next,
600 next == NULL ? 0 : next->start, next == NULL ? 0 : next->end,
601 in, in == NULL ? 0 : in->start, in == NULL ? 0 : in->end));
646 iommu_gas_remove_clip_left(struct iommu_domain *domain, iommu_gaddr_t start,
652 MPASS(start <= end);
657 * start, or the first entry after the start. Since we
658 * asserted that start is below domain end, entry should
662 fentry.start = start + 1;
663 fentry.end = start + 1;
667 if (entry->start >= start ||
674 res->start = entry->end = start;
686 if (entry->start >= end || (entry->flags & IOMMU_MAP_ENTRY_RMRR) != 0)
690 r->end = entry->start = end;
714 iommu_gaddr_t start, iommu_gaddr_t size,
723 end = start + size;
725 nentry = iommu_gas_remove_clip_left(domain, start, end, r1);
727 if (entry->start >= end)
729 KASSERT(start <= entry->start,
730 ("iommu_gas_remove entry (%#jx, %#jx) start %#jx",
731 entry->start, entry->end, start));
744 KASSERT(entry->end <= start || entry->start >= end,
747 entry->start, entry->end, start, end));
785 iommu_gas_remove(struct iommu_domain *domain, iommu_gaddr_t start,
793 iommu_gas_remove_locked(domain, start, size, &gc, &r1, &r2);
855 iommu_gaddr_t start;
866 start = entry->start;
875 if (entry->end == entry->start)
879 ma + OFF_TO_IDX(start - entry->start), eflags,
894 iommu_gaddr_t start, iommu_gaddr_t end, struct iommu_map_entry *entry)
900 entry->start = start;
909 iommu_gas_reserve_region(struct iommu_domain *domain, iommu_gaddr_t start,
917 error = iommu_gas_reserve_region_locked(domain, start, end, entry);
927 * As in iommu_gas_reserve_region, reserve [start, end), but allow for existing
932 iommu_gaddr_t start, iommu_gaddr_t end)
941 while (start < end) {
947 key.start = key.end = start;
952 (uintmax_t)start));
953 entry_end = ummin(end, next->start);
956 entry_start = ummax(start, prev->end);
958 entry_start = start;
959 start = next->end;
1026 domain->msi_base = entry->start;
1054 KASSERT(*addr >= domain->msi_entry->start,
1055 ("%s: Address is below the MSI entry start address (%jx < %jx)",
1056 __func__, (uintmax_t)*addr, (uintmax_t)domain->msi_entry->start));
1087 entry, (uintmax_t)entry->start, (uintmax_t)entry->end,