swiotlb: reduce the swiotlb buffer size on allocation failure
[ Upstream commit 8d58aa48 ] At the moment the AMD encrypted platform reserves 6% of RAM for SWIOTLB or 1GB, whichever is less. However it is possible that there is no block big enough in the low memory which make SWIOTLB allocation fail and the kernel continues without DMA. In such case a VM hangs on DMA. This moves alloc+remap to a helper and calls it from a loop where the size is halved on each iteration. This updates default_nslabs on successful allocation which looks like an oversight as not doing so should have broken callers of swiotlb_size_or_default(). Signed-off-by:Alexey Kardashevskiy <aik@amd.com> Reviewed-by:
Pankaj Gupta <pankaj.gupta@amd.com> Signed-off-by:
Christoph Hellwig <hch@lst.de> Stable-dep-of: 8ac04063 ("swiotlb: reduce the number of areas to match actual memory pool size") Signed-off-by:
Sasha Levin <sashal@kernel.org>
Loading