mirror of https://github.com/xemu-project/xemu.git
spapr_iommu: Disable in-kernel IOMMU tables for >4GB windows
The existing KVM_CREATE_SPAPR_TCE ioctl only support 4G windows max as the window size parameter to the kernel ioctl() is 32-bit so there's no way of expressing a TCE window > 4GB. We are going to add huge DMA windows support so this will create small window and unexpectedly fail later. This disables KVM_CREATE_SPAPR_TCE for windows bigger that 4GB. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
421b1b27f6
commit
12fd285358
|
@ -126,11 +126,11 @@ static MemoryRegionIOMMUOps spapr_iommu_ops = {
|
|||
static int spapr_tce_table_realize(DeviceState *dev)
|
||||
{
|
||||
sPAPRTCETable *tcet = SPAPR_TCE_TABLE(dev);
|
||||
uint64_t window_size = (uint64_t)tcet->nb_table << tcet->page_shift;
|
||||
|
||||
if (kvm_enabled()) {
|
||||
if (kvm_enabled() && !(window_size >> 32)) {
|
||||
tcet->table = kvmppc_create_spapr_tce(tcet->liobn,
|
||||
tcet->nb_table <<
|
||||
tcet->page_shift,
|
||||
window_size,
|
||||
&tcet->fd,
|
||||
tcet->vfio_accel);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue