KVM: PPC: Align the table size to system page size
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Thu, 13 Apr 2017 07:04:20 +0000 (17:04 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Thu, 20 Apr 2017 01:38:20 +0000 (11:38 +1000)
At the moment the userspace can request a table smaller than a page size
and this value will be stored as kvmppc_spapr_tce_table::size.
However the actual allocated size will still be aligned to the system
page size as alloc_page() is used there.

This aligns the table size up to the system page size. It should not
change the existing behaviour but when in-kernel TCE acceleration patchset
reaches the upstream kernel, this will allow small TCE tables be
accelerated as well: PCI IODA iommu_table allocator already aligns
the size and, without this patch, an IOMMU group won't attach to LIOBN
due to the mismatching table size.

Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
arch/powerpc/kvm/book3s_64_vio.c

index 3e26cd4979f9365c4a0575df139e900f4203ff44..ab20a47a8821caccb9d6208ca11ff2d700c6bbca 100644 (file)
@@ -164,7 +164,7 @@ long kvm_vm_ioctl_create_spapr_tce(struct kvm *kvm,
                        return -EBUSY;
        }
 
-       size = args->size;
+       size = _ALIGN_UP(args->size, PAGE_SIZE >> 3);
        npages = kvmppc_tce_pages(size);
        ret = kvmppc_account_memlimit(kvmppc_stt_pages(npages), true);
        if (ret) {