powerpc/pseries/svm: Allocate SWIOTLB buffer anywhere in memory
authorThiago Jung Bauermann <bauerman@linux.ibm.com>
Tue, 18 Aug 2020 22:11:26 +0000 (19:11 -0300)
committerMichael Ellerman <mpe@ellerman.id.au>
Mon, 14 Sep 2020 13:07:14 +0000 (23:07 +1000)
commiteae9eec476d13fad9af6da1f44a054ee02b7b161
treedaa6ac7bb25222157542c1623c5157a2f26119c4
parent231b232df8f67e7d37af01259c21f2a131c3911e
powerpc/pseries/svm: Allocate SWIOTLB buffer anywhere in memory

POWER secure guests (i.e., guests which use the Protected Execution
Facility) need to use SWIOTLB to be able to do I/O with the
hypervisor, but they don't need the SWIOTLB memory to be in low
addresses since the hypervisor doesn't have any addressing limitation.

This solves a SWIOTLB initialization problem we are seeing in secure
guests with 128 GB of RAM: they are configured with 4 GB of
crashkernel reserved memory, which leaves no space for SWIOTLB in low
addresses.

To do this, we use mostly the same code as swiotlb_init(), but
allocate the buffer using memblock_alloc() instead of
memblock_alloc_low().

Fixes: 2efbc58f157a ("powerpc/pseries/svm: Force SWIOTLB for secure guests")
Signed-off-by: Thiago Jung Bauermann <bauerman@linux.ibm.com>
Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20200818221126.391073-1-bauerman@linux.ibm.com
arch/powerpc/include/asm/svm.h
arch/powerpc/mm/mem.c
arch/powerpc/platforms/pseries/svm.c