mirror of
https://github.com/hardkernel/linux.git
synced 2026-03-25 20:10:23 +09:00
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:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user