Revert "swiotlb: clean up swiotlb_tbl_unmap_single"
This reverts commit 9efd5df078.
Fixes the ABI issues in 5.10.35 that at the moment, we can't handle due
to the KABI freeze. These are not patches that mean much for android
systems, and will be reverted the next KABI "reset" point.
Bug: 161946584
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ia22b608e4d017c6056e481d2ec819074b35810cf
This commit is contained in:
parent
0fb49e91d4
commit
28a2f5f10f
1 changed files with 20 additions and 21 deletions
|
|
@ -610,29 +610,28 @@ void swiotlb_tbl_unmap_single(struct device *hwdev, phys_addr_t tlb_addr,
|
|||
* with slots below and above the pool being returned.
|
||||
*/
|
||||
spin_lock_irqsave(&io_tlb_lock, flags);
|
||||
if (index + nslots < ALIGN(index + 1, IO_TLB_SEGSIZE))
|
||||
count = io_tlb_list[index + nslots];
|
||||
else
|
||||
count = 0;
|
||||
{
|
||||
count = ((index + nslots) < ALIGN(index + 1, IO_TLB_SEGSIZE) ?
|
||||
io_tlb_list[index + nslots] : 0);
|
||||
/*
|
||||
* Step 1: return the slots to the free list, merging the
|
||||
* slots with superceeding slots
|
||||
*/
|
||||
for (i = index + nslots - 1; i >= index; i--) {
|
||||
io_tlb_list[i] = ++count;
|
||||
io_tlb_orig_addr[i] = INVALID_PHYS_ADDR;
|
||||
}
|
||||
/*
|
||||
* Step 2: merge the returned slots with the preceding slots,
|
||||
* if available (non zero)
|
||||
*/
|
||||
for (i = index - 1;
|
||||
io_tlb_offset(i) != IO_TLB_SEGSIZE - 1 &&
|
||||
io_tlb_list[i]; i--)
|
||||
io_tlb_list[i] = ++count;
|
||||
|
||||
/*
|
||||
* Step 1: return the slots to the free list, merging the slots with
|
||||
* superceeding slots
|
||||
*/
|
||||
for (i = index + nslots - 1; i >= index; i--) {
|
||||
io_tlb_list[i] = ++count;
|
||||
io_tlb_orig_addr[i] = INVALID_PHYS_ADDR;
|
||||
io_tlb_used -= nslots;
|
||||
}
|
||||
|
||||
/*
|
||||
* Step 2: merge the returned slots with the preceding slots, if
|
||||
* available (non zero)
|
||||
*/
|
||||
for (i = index - 1;
|
||||
io_tlb_offset(i) != IO_TLB_SEGSIZE - 1 && io_tlb_list[i];
|
||||
i--)
|
||||
io_tlb_list[i] = ++count;
|
||||
io_tlb_used -= nslots;
|
||||
spin_unlock_irqrestore(&io_tlb_lock, flags);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue