Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp665083imm; Fri, 29 Jun 2018 04:28:56 -0700 (PDT) X-Google-Smtp-Source: ADUXVKK6HObkWTQqVj+SxkGEXa9df4QUT3VjUQAM3EMNkRTtbPnzJNWqf1JOtXxtZciO5x0PpEvt X-Received: by 2002:a63:6188:: with SMTP id v130-v6mr12254867pgb.100.1530271736414; Fri, 29 Jun 2018 04:28:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530271736; cv=none; d=google.com; s=arc-20160816; b=b/Rumv4g8ZAgNf2w/Gvatlz9MJWPwFRjgHMneQQNMM/1kIcLqXkdBZQtLQ1QCl13rw nvCHLO4DwUfU1UIOcB7ZDv2pQlrSrNQoVGA7pRDg/tPjcBcwDEQqzT3IYm4x+iofulbi 6hXkH+MMZcpifL7vgUXBpIaVaujeNDXyTUAStLvHjAnZRIenm6IXxw+x5disIGltAS4+ dMk1FaTKLtyd1+K7Fvv0Aq4Fc1ykbl8KQLcO77q2i3YUA9pZCXzTdety6Ha4SKkguq7D o4DQTW8OFydIp1fU57naKhnEp3OMefp/aEoHRmEtlZ1OB1TYbGyafK9kHpN0+HU9F/3X ak0w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=ab8o6D4vJpTjbDjF4QwvGg/jf6FjPr5w4I/QUMSP+KU=; b=lku/ga6NpVjyi3GEZCvRMiZCVCICS4zJpiZQuRVKnUJfqmWvIA9J1Ko+o/7nq0Qv+X IOqofeUauORHRwBzM69qilR8qQqW6ylr/GyAnYqOLNSeqaRaI/rL1SWMFHnyRcv2UBSw sO+hPS7clT08XVcND2iYPnNbUXiT5KfiFEQhr5cdvn/KGcQ9lcpWo44Z4nJXTOoVnoA4 /RUfE7VKpe02w/ejo+zFvSHuAxHcnxRfC+V/k6vAfKMke2RHNa/8Rrr4WtxtcZpo3pPk Gp8AMoAzkpYOYOeoWVeVKDaLQEw+exMv0Zw66Sh8o1clKNo6KLdmsDeJJ7yvZ0+RukYp BUKw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d5-v6si8930696plr.13.2018.06.29.04.28.42; Fri, 29 Jun 2018 04:28:56 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755257AbeF2LQj (ORCPT + 99 others); Fri, 29 Jun 2018 07:16:39 -0400 Received: from usa-sjc-mx-foss1.foss.arm.com ([217.140.101.70]:60128 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755201AbeF2LQf (ORCPT ); Fri, 29 Jun 2018 07:16:35 -0400 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 12E5A1682; Fri, 29 Jun 2018 04:16:35 -0700 (PDT) Received: from en101.cambridge.arm.com (en101.cambridge.arm.com [10.1.206.73]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id B01643F5AF; Fri, 29 Jun 2018 04:16:32 -0700 (PDT) From: Suzuki K Poulose To: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, james.morse@arm.com, marc.zyngier@arm.com, cdall@kernel.org, eric.auger@redhat.com, julien.grall@arm.com, will.deacon@arm.com, catalin.marinas@arm.com, punit.agrawal@arm.com, qemu-devel@nongnu.org, Suzuki K Poulose Subject: [PATCH v3 08/20] kvm: arm/arm64: Abstract stage2 pgd table allocation Date: Fri, 29 Jun 2018 12:15:28 +0100 Message-Id: <1530270944-11351-9-git-send-email-suzuki.poulose@arm.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1530270944-11351-1-git-send-email-suzuki.poulose@arm.com> References: <1530270944-11351-1-git-send-email-suzuki.poulose@arm.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Abstract the allocation of stage2 entry level tables for given VM, so that later we can choose to fall back to the normal page table levels (i.e, avoid entry level table concatenation) on arm64. Cc: Marc Zyngier Cc: Christoffer Dall Signed-off-by: Suzuki K Poulose --- Changes since V2: - New patch --- arch/arm/include/asm/kvm_mmu.h | 6 ++++++ arch/arm64/include/asm/kvm_mmu.h | 6 ++++++ virt/kvm/arm/mmu.c | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h index f36eb20..b2da5a4 100644 --- a/arch/arm/include/asm/kvm_mmu.h +++ b/arch/arm/include/asm/kvm_mmu.h @@ -372,6 +372,12 @@ static inline int hyp_map_aux_data(void) return 0; } +static inline void *stage2_alloc_pgd(struct kvm *kvm) +{ + return alloc_pages_exact(stage2_pgd_size(kvm), + GFP_KERNEL | __GFP_ZERO); +} + #define kvm_phys_to_vttbr(addr) (addr) #endif /* !__ASSEMBLY__ */ diff --git a/arch/arm64/include/asm/kvm_mmu.h b/arch/arm64/include/asm/kvm_mmu.h index 5da8f52..dbaf513 100644 --- a/arch/arm64/include/asm/kvm_mmu.h +++ b/arch/arm64/include/asm/kvm_mmu.h @@ -501,5 +501,11 @@ static inline int hyp_map_aux_data(void) #define kvm_phys_to_vttbr(addr) phys_to_ttbr(addr) +static inline void *stage2_alloc_pgd(struct kvm *kvm) +{ + return alloc_pages_exact(stage2_pgd_size(kvm), + GFP_KERNEL | __GFP_ZERO); +} + #endif /* __ASSEMBLY__ */ #endif /* __ARM64_KVM_MMU_H__ */ diff --git a/virt/kvm/arm/mmu.c b/virt/kvm/arm/mmu.c index 82dd571..a339e00 100644 --- a/virt/kvm/arm/mmu.c +++ b/virt/kvm/arm/mmu.c @@ -868,7 +868,7 @@ int kvm_alloc_stage2_pgd(struct kvm *kvm) } /* Allocate the HW PGD, making sure that each page gets its own refcount */ - pgd = alloc_pages_exact(stage2_pgd_size(kvm), GFP_KERNEL | __GFP_ZERO); + pgd = stage2_alloc_pgd(kvm); if (!pgd) return -ENOMEM; -- 2.7.4