Received: by 2002:ab2:7041:0:b0:1f4:bcc8:f211 with SMTP id x1csp10517lql; Fri, 12 Apr 2024 01:48:16 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCWBKJwuKF5zWmGzlRiS2W1IKzYKBXIvfo7sRaFSqbVWb7OfMla/kBnkXdPqqiHc9ruMtSsXM6S1+ZzyqhaIuPWwYTKg7WOxTSw2Cs3Cwg== X-Google-Smtp-Source: AGHT+IGDSCmn608szhuMWIgs6QUA71PwaHUt8m1UIlUOSO29vgSdfHHYl7Nf6BZyAizh82jU49B4 X-Received: by 2002:a05:6808:14c6:b0:3c5:f46f:5d7c with SMTP id f6-20020a05680814c600b003c5f46f5d7cmr2262225oiw.6.1712911695811; Fri, 12 Apr 2024 01:48:15 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712911695; cv=pass; d=google.com; s=arc-20160816; b=ODYXFnYkUplc2fm1pNZWlvJSvYX1DOp3eM4On/OgaBl67X/QKoQ2Mam7YFS7A5c1de RCH4SzNV9PFLFqpF91+TPq+XQcN1fahankfxejBojI0vSOEuHWz7ymXPQpuE5r22xx6M MXquJR9TfmXiaHCOTzwNU0X4H54oSoLz08UsLvCaxIXYUq+xsnRhg6aw4Jor8kdxdvdM w/K+Zvz/cLqRLIIv5z9Q46CKfSkLD3pVHd3zXXHBNn3Mp2vDusnYf/pXG7QGnWkvIIQG LhpGnowsjGUZ4YE0CHMMDWPTm9ObvyavML43GyJFONvQy/6D44UAgPMxi/5oQeAWFamz 44aA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from; bh=7isGyh7zMI4112UY2WL2WFax+mOmSqzJJiYJr6SSGj4=; fh=mU6xl5FN63PgqIKyLHx/u5uRervM0V89cYoVjXl22Bs=; b=A7gSOhgVF4yISD+VlXvCLxpt3fZDkFi5zm3N7NwuYpbugARGKOaqI16dzZH9BM6rlE v8U9l0nMdQDu0Fzqj2TT02AHC6VfohIR7QVCeOg3U7I9+unfbjhq+PfaJ9dksaBnuaDg UlAPCKKKvZNS4DJEo4r7mmgv7RO/NJwSWwMOU4iRp8dsuzhs1/iZ3q4ber1vFNVoIvRv TeGmSsXqAtZ61cJP6pKeIMW9hch9VbfHkGNA+Kcgm3i4xdSxYzr/unjVnSTuavdxCcOu npyOGQ1xKdO6OB9/ixArydpN6H0IIlEzYHa1QozxlVodvrJ9VRGwCceNmX/rcNO5nq4h d8dQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-142270-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-142270-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id ea4-20020a05622a5b0400b004315e4b87b3si2977833qtb.208.2024.04.12.01.48.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Apr 2024 01:48:15 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-142270-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-142270-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-142270-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 845F41C2123D for ; Fri, 12 Apr 2024 08:48:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 1C2675C8E6; Fri, 12 Apr 2024 08:43:25 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 43BA15BACF; Fri, 12 Apr 2024 08:43:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712911404; cv=none; b=nzWybSdrTAIH9qc+7sXrkRLK+ybV5XmgQe9bqvA+pj2pYW6kI42EOzu94Kcn7TPqnJ51nMKs2PUZ6BGDX5MKuWJ9qe4zShHEb+fEbCHJ/FUFwf/LNYleKMXp9UbJN2x2VbC0vTdl4PXCw3+n+ztU9ZVXleksK2kAJ7lOCBOWjKc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712911404; c=relaxed/simple; bh=2fpv4dR22mruquuEbMUbNL8WYCw3sVfPbgr+kyv1PnM=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=KXdmb1qOyCHDKiT5VksQPzUHb82GxojealrKL9ELoAmHLMP+yJvEU1pkV+a0YBYDPYUJn36SRs6itxfOSgVF/HnK5KGH+9+W6+clbNwsKG+eYzUOD00H1Y/PXXM3Ct71i8MgL8fSvpYFGaPxSsDJSyQlv8PhNTuX+wGTN7HBn5o= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id E904B14BF; Fri, 12 Apr 2024 01:43:51 -0700 (PDT) Received: from e112269-lin.cambridge.arm.com (e112269-lin.cambridge.arm.com [10.1.194.51]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 8D2723F6C4; Fri, 12 Apr 2024 01:43:20 -0700 (PDT) From: Steven Price To: kvm@vger.kernel.org, kvmarm@lists.linux.dev Cc: Suzuki K Poulose , Catalin Marinas , Marc Zyngier , Will Deacon , James Morse , Oliver Upton , Zenghui Yu , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Joey Gouly , Alexandru Elisei , Christoffer Dall , Fuad Tabba , linux-coco@lists.linux.dev, Ganapatrao Kulkarni , Steven Price Subject: [PATCH v2 02/43] kvm: arm64: pgtable: Track the number of pages in the entry level Date: Fri, 12 Apr 2024 09:42:28 +0100 Message-Id: <20240412084309.1733783-3-steven.price@arm.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20240412084309.1733783-1-steven.price@arm.com> References: <20240412084056.1733704-1-steven.price@arm.com> <20240412084309.1733783-1-steven.price@arm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Suzuki K Poulose Keep track of the number of pages allocated for the top level PGD, rather than computing it everytime (though we need it only twice now). This will be used later by Arm CCA KVM changes. Signed-off-by: Suzuki K Poulose Signed-off-by: Steven Price --- arch/arm64/include/asm/kvm_pgtable.h | 2 ++ arch/arm64/kvm/hyp/pgtable.c | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/arch/arm64/include/asm/kvm_pgtable.h b/arch/arm64/include/asm/kvm_pgtable.h index 19278dfe7978..0350c08ada7a 100644 --- a/arch/arm64/include/asm/kvm_pgtable.h +++ b/arch/arm64/include/asm/kvm_pgtable.h @@ -362,6 +362,7 @@ static inline bool kvm_pgtable_walk_lock_held(void) * struct kvm_pgtable - KVM page-table. * @ia_bits: Maximum input address size, in bits. * @start_level: Level at which the page-table walk starts. + * @pgd_pages: Number of pages in the entry level of the page-table. * @pgd: Pointer to the first top-level entry of the page-table. * @mm_ops: Memory management callbacks. * @mmu: Stage-2 KVM MMU struct. Unused for stage-1 page-tables. @@ -372,6 +373,7 @@ static inline bool kvm_pgtable_walk_lock_held(void) struct kvm_pgtable { u32 ia_bits; s8 start_level; + u8 pgd_pages; kvm_pteref_t pgd; struct kvm_pgtable_mm_ops *mm_ops; diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c index 3fae5830f8d2..9decff9736ac 100644 --- a/arch/arm64/kvm/hyp/pgtable.c +++ b/arch/arm64/kvm/hyp/pgtable.c @@ -1552,7 +1552,8 @@ int __kvm_pgtable_stage2_init(struct kvm_pgtable *pgt, struct kvm_s2_mmu *mmu, u32 sl0 = FIELD_GET(VTCR_EL2_SL0_MASK, vtcr); s8 start_level = VTCR_EL2_TGRAN_SL0_BASE - sl0; - pgd_sz = kvm_pgd_pages(ia_bits, start_level) * PAGE_SIZE; + pgt->pgd_pages = kvm_pgd_pages(ia_bits, start_level); + pgd_sz = pgt->pgd_pages * PAGE_SIZE; pgt->pgd = (kvm_pteref_t)mm_ops->zalloc_pages_exact(pgd_sz); if (!pgt->pgd) return -ENOMEM; @@ -1604,7 +1605,7 @@ void kvm_pgtable_stage2_destroy(struct kvm_pgtable *pgt) }; WARN_ON(kvm_pgtable_walk(pgt, 0, BIT(pgt->ia_bits), &walker)); - pgd_sz = kvm_pgd_pages(pgt->ia_bits, pgt->start_level) * PAGE_SIZE; + pgd_sz = pgt->pgd_pages * PAGE_SIZE; pgt->mm_ops->free_pages_exact(kvm_dereference_pteref(&walker, pgt->pgd), pgd_sz); pgt->pgd = NULL; } -- 2.34.1