From patchwork Tue Sep 12 14:16:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ard Biesheuvel X-Patchwork-Id: 13381814 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 1BE75CA0EEF for ; Tue, 12 Sep 2023 14:21:21 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:Cc:To:From:Subject:Message-ID: References:Mime-Version:In-Reply-To:Date:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=QNt+9FK1Y/5I6G+oQ8XE7S0Ika1kTHyr7qbLZ92SjNU=; b=XnaXZjgnN/tJZ9Tx4lq72W3aRe 8ZTPYY686630OiTxSUchdi54I6zbVZRhnEne3ZrGTNW20siJXUI4n1QWrpl8dI3KZWvddKl0ahLki UbbTKCG0dZWt8G4u6gC2ndHiNZgP1+t1aPFFja9pB93nQtSFEQs+U9o/iJcbPkkT4FzDEgEt8pDUb GWXhRAXaLPcEB9TK5Cetz8/44GUxc+G7Z1cv3OaFbr7rP8jUrwgO9vFrMtQcNqsfKzHBmSBo93O5u 7aHOeMHBE6CzOhWEY+qAD70Ynb3qrkidasyZjqAokDNghRkMdFiwkiUmciRopmy+s9Eojl0QVQHVW B3R5N3bg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qg4G8-003YiD-0k; Tue, 12 Sep 2023 14:20:56 +0000 Received: from mail-yw1-x1149.google.com ([2607:f8b0:4864:20::1149]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qg4Eo-003XYx-03 for linux-arm-kernel@lists.infradead.org; Tue, 12 Sep 2023 14:19:45 +0000 Received: by mail-yw1-x1149.google.com with SMTP id 00721157ae682-58ee4df08fbso67272037b3.3 for ; Tue, 12 Sep 2023 07:19:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1694528372; x=1695133172; darn=lists.infradead.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=2sdsJwIiesMTnhOVB/4fumPK21G9EJanZV4hElrFWVk=; b=WZxp1PUxVOmuvEBZbmMdS7o9z0QeO0OulRtjuNBjZvrtSNb/xgAu7D+N0VpaEqbRKw 58P1Z+RWYo7qEfS/rffK7zApvpLnNQ7IlmKvOGBfFSrEALqnbyszApZdlcyDnw0xFXEH 8Eih0AufS6qGZ01I763uYOChZhvSj0MI6fEbwcuBeeTKs7UxkmJDTeFh6ftLQrrdiGhK +QT5zVnvzEHmY1Tc954zMOBTJRLN3CadmT0Y1uBtwt9wKWDcQDya/VlvrCMFa49SHn+x c5dloiDnt9bcphDMM1c3DJjRK6/sLfc0pU2d4i8Fea4xkRb8nwJKlc0lblVp6mOFJKqz 0Zgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694528372; x=1695133172; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2sdsJwIiesMTnhOVB/4fumPK21G9EJanZV4hElrFWVk=; b=BSTEcAy9jmbhRw1kQxLAjxZgI/PAd0+/hYmVYbIegO2z1ruHybrWSATwlwIvw+KUpX xZQI5dAzSWAZVdPpothkm68kHeoR/argTizGmUOhatl0sMuBkDLridH3NIt+tiZXZE59 3XhLi0yDQmGio2gOFSttiW7C5vwfGAzUjtx58/adQHh/HJR+ywSyMzXyZPuhX84asOrS 9IU7ZmWJ62rvCSc5mckdyPcEfRo/IZVGGO+uI1CImzxdmnrzBrS6hPZoExQFje+JIppM grbR9IG7pZo5GftLQgrVht5YiuPrLJZdRD4E9i5obx2VJ7cZi6oQYxB+sJASNpTNQDvk xd+g== X-Gm-Message-State: AOJu0Yx9b5N294mEG5beqKiv3pK7121xDjgi2lyzg+CmKQVFtwvnVq9m l40pM8BSUKSBXWbdF0hoEfzymdnWQcZRYD2/Miu6PsAlDwkHwIDqyYqpYsiD+qP+4+UdijcGw6O aAtR0Ttp2mKMUwTrne7yukJz+s92Ni5/nUcwWHHq57rHheQeE5SxyPpIrrWcj/TJZvOh6xK7+WD g= X-Google-Smtp-Source: AGHT+IFiInZ/Zert4boXq+8U5GwYQIyJtRisVpGLP6NK8cngEVIMI9niNbcII4LOKpEoPzad+rniwapb X-Received: from palermo.c.googlers.com ([fda3:e722:ac3:cc00:28:9cb1:c0a8:118a]) (user=ardb job=sendgmr) by 2002:a05:690c:72c:b0:586:aca7:c1ee with SMTP id bt12-20020a05690c072c00b00586aca7c1eemr314873ywb.6.1694528371458; Tue, 12 Sep 2023 07:19:31 -0700 (PDT) Date: Tue, 12 Sep 2023 14:16:46 +0000 In-Reply-To: <20230912141549.278777-63-ardb@google.com> Mime-Version: 1.0 References: <20230912141549.278777-63-ardb@google.com> X-Developer-Key: i=ardb@kernel.org; a=openpgp; fpr=F43D03328115A198C90016883D200E9CA6329909 X-Developer-Signature: v=1; a=openpgp-sha256; l=1022; i=ardb@kernel.org; h=from:subject; bh=atPSSr2qBigDpIOZKFYcKqjzT14TPZqgrls3bMhdWNE=; b=owGbwMvMwCFmkMcZplerG8N4Wi2JIZWh6GLvJedNe4t11x01rOxaUmtwl3POq49GhfX5ri4dr GtW3pToKGVhEONgkBVTZBGY/ffdztMTpWqdZ8nCzGFlAhnCwMUpABOxNmBk6Dy59vzyq89Z9ZZf WB0kVegzT4jDf87b3YX23OFfZkZ9DGT4X+RqdrxebPoeljmJ/8483pTcuyg0ZN+F3E9se1+e5w9 1ZAMA X-Mailer: git-send-email 2.42.0.283.g2d96d420d3-goog Message-ID: <20230912141549.278777-119-ardb@google.com> Subject: [PATCH v4 56/61] arm64: kvm: avoid CONFIG_PGTABLE_LEVELS for runtime levels From: Ard Biesheuvel To: linux-arm-kernel@lists.infradead.org Cc: Ard Biesheuvel , Catalin Marinas , Will Deacon , Marc Zyngier , Mark Rutland , Ryan Roberts , Anshuman Khandual , Kees Cook , Joey Gouly X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230912_071934_113179_31C0A4FC X-CRM114-Status: GOOD ( 13.43 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org From: Ard Biesheuvel get_user_mapping_size() uses vabits_actual and CONFIG_PGTABLE_LEVELS to provide the starting point for a table walk. This is fine for LVA, as the number of translation levels is the same regardless of whether LVA is enabled. However, with LPA2, this will no longer be the case, so let's derive the number of levels from the number of VA bits directly. Signed-off-by: Ard Biesheuvel Acked-by: Marc Zyngier Acked-by: Oliver Upton --- arch/arm64/kvm/mmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kvm/mmu.c b/arch/arm64/kvm/mmu.c index beee6408534d..a4c5d7f44e32 100644 --- a/arch/arm64/kvm/mmu.c +++ b/arch/arm64/kvm/mmu.c @@ -802,7 +802,7 @@ static int get_user_mapping_size(struct kvm *kvm, u64 addr) .pgd = (kvm_pteref_t)kvm->mm->pgd, .ia_bits = vabits_actual, .start_level = (KVM_PGTABLE_MAX_LEVELS - - CONFIG_PGTABLE_LEVELS), + ARM64_HW_PGTABLE_LEVELS(pgt.ia_bits)), .mm_ops = &kvm_user_mm_ops, }; unsigned long flags;