KVM: PPC: Book3S HV: Don't fall back to smaller HPT size in allocation ioctl
authorPaul Mackerras <paulus@samba.org>
Tue, 29 Sep 2015 07:15:45 +0000 (17:15 +1000)
committerPaul Mackerras <paulus@samba.org>
Wed, 21 Oct 2015 05:24:57 +0000 (16:24 +1100)
Currently the KVM_PPC_ALLOCATE_HTAB will try to allocate the requested
size of HPT, and if that is not possible, then try to allocate smaller
sizes (by factors of 2) until either a minimum is reached or the
allocation succeeds.  This is not ideal for userspace, particularly in
migration scenarios, where the destination VM really does require the
size requested.  Also, the minimum HPT size of 256kB may be
insufficient for the guest to run successfully.

This removes the fallback to smaller sizes on allocation failure for
the KVM_PPC_ALLOCATE_HTAB ioctl.  The fallback still exists for the
case where the HPT is allocated at the time the first VCPU is run, if
no HPT has been allocated by ioctl by that time.

Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kvm/book3s_64_mmu_hv.c

index 1f9c0a17f445f73b858dcfabb761aa098a6fd781..10722b1e38b5e94876d6d921c49224ef0af04dc8 100644 (file)
@@ -70,7 +70,8 @@ long kvmppc_alloc_hpt(struct kvm *kvm, u32 *htab_orderp)
        }
 
        /* Lastly try successively smaller sizes from the page allocator */
-       while (!hpt && order > PPC_MIN_HPT_ORDER) {
+       /* Only do this if userspace didn't specify a size via ioctl */
+       while (!hpt && order > PPC_MIN_HPT_ORDER && !htab_orderp) {
                hpt = __get_free_pages(GFP_KERNEL|__GFP_ZERO|__GFP_REPEAT|
                                       __GFP_NOWARN, order - PAGE_SHIFT);
                if (!hpt)