swiotlb: lift the double initialization protection from xen-swiotlb

Lift the double initialization protection from xen-swiotlb to the core
code to avoid exposing too many swiotlb internals.  Also upgrade the
check to a warning as it should not happen.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
This commit is contained in:
Christoph Hellwig 2021-03-01 08:44:31 +01:00 committed by Konrad Rzeszutek Wilk
parent cbce99527c
commit 5d0538b2b8
2 changed files with 8 additions and 7 deletions

View File

@ -172,12 +172,6 @@ retry:
bytes = nslabs << IO_TLB_SHIFT;
order = get_order(bytes);
/*
* IO TLB memory already allocated. Just use it.
*/
if (io_tlb_start != 0)
goto end;
/*
* Get IO TLB memory from any location.
*/
@ -232,7 +226,6 @@ retry:
} else
rc = swiotlb_late_init_with_tbl(start, nslabs);
end:
if (!rc)
swiotlb_set_max_segment(PAGE_SIZE);

View File

@ -229,6 +229,10 @@ int __init swiotlb_init_with_tbl(char *tlb, unsigned long nslabs, int verbose)
unsigned long i, bytes;
size_t alloc_size;
/* protect against double initialization */
if (WARN_ON_ONCE(io_tlb_start))
return -ENOMEM;
bytes = nslabs << IO_TLB_SHIFT;
io_tlb_nslabs = nslabs;
@ -367,6 +371,10 @@ swiotlb_late_init_with_tbl(char *tlb, unsigned long nslabs)
{
unsigned long i, bytes;
/* protect against double initialization */
if (WARN_ON_ONCE(io_tlb_start))
return -ENOMEM;
bytes = nslabs << IO_TLB_SHIFT;
io_tlb_nslabs = nslabs;