From mboxrd@z Thu Jan 1 00:00:00 1970 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 1E0B1C3DA4A for ; Thu, 22 Aug 2024 16:18:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Type:MIME-Version: References:In-Reply-To:Subject:Cc:To:From:Message-ID:Date:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Ob1Y3AxmQcTgPJYSikJDybOvX3Xq9p37eq77FdrrDE8=; b=QTjw7Ewepgo/6469iytppC29+J kYIY6PNjZWGvQ9jYQrgLbqH4VYBbFlr5NDLZkFrc5DbvVkmNeOWxt6zGR86hWBCypBtKkIxuKqUOs T7EDkWdueP5a0nQxh3yCEgRZDATIfQtt7akM6PLdXiIw6UUJG+wV/yGA2GPhVeG2HH1ATTUF1uxR3 8QED74MauVLk6hSEM+ibukkV/6hZkCDiWVQJNgVfO8Ij+QSupayP+ey1cUxWvb1PbCwc84d7TWRRC /ZKb3kFn6qfkby92/BunFmcniOR/M1l8dZvrdwM//ZW5foPwQRM5mvbxg0kxY2KcSBYOuHJQtOf+Y HTAVVZjA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1shAVu-0000000DYsC-1AG1; Thu, 22 Aug 2024 16:18:18 +0000 Received: from sin.source.kernel.org ([2604:1380:40e1:4800::1]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1shATg-0000000DXxv-1yqQ for linux-arm-kernel@lists.infradead.org; Thu, 22 Aug 2024 16:16:02 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sin.source.kernel.org (Postfix) with ESMTP id 7DFD1CE0FAE; Thu, 22 Aug 2024 16:15:58 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3F09C32782; Thu, 22 Aug 2024 16:15:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1724343357; bh=A3rEyuw2kdPrbN4L/IO6fUCvnPWSPIRA8UpE8wG6wCU=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=i5yY+Fbvpx9C1LUn6wYiZ8SwL98ThhxDnRFGQinMyiamLNu4FTyOhQG+PSml4njHF vCz67ipdBEjiaoY0ietjKiZRwSmZdk1CEsvd29juDiCWCmBumbKqi9Gb8CaI8j5Lik sA8F9oS1HVTZdfk3ny0fJg4AuXi1blgSkCt+nDjmnAzStLSJZD/ZlTZhSncASmTJte Aag+2pTju3/aCb9JwEKcdWBxOJerhm/ZIvYgzj4AJPIcojBSVLdQyRjBaCL3UIClD8 UgpyJymZDBlus6rXBdaCzLgjDsZpk/vGc5HV5dmMxmpWg1fJtTgjmcxYKnU8tcn2bU 7nJjj/8B7aIQA== Received: from sofa.misterjones.org ([185.219.108.64] helo=goblin-girl.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1shATb-00613P-4B; Thu, 22 Aug 2024 17:15:55 +0100 Date: Thu, 22 Aug 2024 17:15:54 +0100 Message-ID: <8634mwy1mt.wl-maz@kernel.org> From: Marc Zyngier To: Sebastian Ene Cc: akpm@linux-foundation.org, alexghiti@rivosinc.com, ankita@nvidia.com, ardb@kernel.org, catalin.marinas@arm.com, christophe.leroy@csgroup.eu, james.morse@arm.com, vdonnefort@google.com, mark.rutland@arm.com, oliver.upton@linux.dev, rananta@google.com, ryan.roberts@arm.com, shahuang@redhat.com, suzuki.poulose@arm.com, will@kernel.org, yuzenghui@huawei.com, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel-team@android.com Subject: Re: [PATCH v8 5/6] KVM: arm64: Initialize the ptdump parser with stage-2 attributes In-Reply-To: <86plq3xoly.wl-maz@kernel.org> References: <20240816123906.3683425-1-sebastianene@google.com> <20240816123906.3683425-6-sebastianene@google.com> <86plq3xoly.wl-maz@kernel.org> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?UTF-8?B?R29qxY0=?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/29.4 (aarch64-unknown-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: sebastianene@google.com, akpm@linux-foundation.org, alexghiti@rivosinc.com, ankita@nvidia.com, ardb@kernel.org, catalin.marinas@arm.com, christophe.leroy@csgroup.eu, james.morse@arm.com, vdonnefort@google.com, mark.rutland@arm.com, oliver.upton@linux.dev, rananta@google.com, ryan.roberts@arm.com, shahuang@redhat.com, suzuki.poulose@arm.com, will@kernel.org, yuzenghui@huawei.com, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, kernel-team@android.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240822_091600_973366_81150731 X-CRM114-Status: GOOD ( 27.89 ) 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 On Tue, 20 Aug 2024 15:20:25 +0100, Marc Zyngier wrote: > > On Fri, 16 Aug 2024 13:39:05 +0100, > Sebastian Ene wrote: > > > > Define a set of attributes used by the ptdump parser to display the > > properties of a guest memory region covered by a pagetable descriptor. > > Build a description of the pagetable levels and initialize the parser > > with this configuration. > > > > Signed-off-by: Sebastian Ene > > --- > > arch/arm64/kvm/ptdump.c | 135 ++++++++++++++++++++++++++++++++++++++-- > > 1 file changed, 129 insertions(+), 6 deletions(-) > > > > diff --git a/arch/arm64/kvm/ptdump.c b/arch/arm64/kvm/ptdump.c > > index 52483d56be2e..79be07ec3c3c 100644 > > --- a/arch/arm64/kvm/ptdump.c > > +++ b/arch/arm64/kvm/ptdump.c > > @@ -14,6 +14,51 @@ > > #include > > > > > > +#define MARKERS_LEN (2) > > +#define KVM_PGTABLE_MAX_LEVELS (KVM_PGTABLE_LAST_LEVEL + 1) > > + > > +struct kvm_ptdump_guest_state { > > + struct kvm *kvm; > > + struct ptdump_pg_state parser_state; > > + struct addr_marker ipa_marker[MARKERS_LEN]; > > + struct ptdump_pg_level level[KVM_PGTABLE_MAX_LEVELS]; > > + struct ptdump_range range[MARKERS_LEN]; > > +}; > > + > > +static const struct ptdump_prot_bits stage2_pte_bits[] = { > > + { > > + .mask = PTE_VALID, > > + .val = PTE_VALID, > > + .set = " ", > > + .clear = "F", > > + }, { > > + .mask = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R | PTE_VALID, > > + .val = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_R | PTE_VALID, > > + .set = "R", > > + .clear = " ", > > + }, { > > + .mask = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W | PTE_VALID, > > + .val = KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W | PTE_VALID, > > + .set = "W", > > + .clear = " ", > > + }, { > > + .mask = KVM_PTE_LEAF_ATTR_HI_S2_XN | PTE_VALID, > > + .val = PTE_VALID, > > + .set = " ", > > + .clear = "X", > > + }, { > > + .mask = KVM_PTE_LEAF_ATTR_LO_S2_AF | PTE_VALID, > > + .val = KVM_PTE_LEAF_ATTR_LO_S2_AF | PTE_VALID, > > + .set = "AF", > > + .clear = " ", > > + }, { > > + .mask = PTE_TABLE_BIT | PTE_VALID, > > + .val = PTE_VALID, > > + .set = "BLK", > > + .clear = " ", > > + }, > > +}; > > + > > static int kvm_ptdump_visitor(const struct kvm_pgtable_visit_ctx *ctx, > > enum kvm_pgtable_walk_flags visit) > > { > > @@ -40,15 +85,81 @@ static int kvm_ptdump_show_common(struct seq_file *m, > > return kvm_pgtable_walk(pgtable, 0, BIT(pgtable->ia_bits), &walker); > > } > > > > +static int kvm_ptdump_build_levels(struct ptdump_pg_level *level, u32 start_lvl) > > +{ > > + static const char * const level_names[] = {"PGD", "PUD", "PMD", "PTE"}; > > How about 5 level page tables, which we support since v6.8? The > architecture uses a SL=-1 in this case, and I have the feeling this is > going to expose in a lovely way, given that you use a u32 for > start_level... :-/ Talking to Oliver, I just had an epiphany: we never have a 5th level with KVM, because we always use concatenated page tables at the start level. So the depth is still 4 levels, but we get up to 16 pages at level 0, and that's how we expand the IPA space from 48 to 52 bits. So by the look of it, your code should still be OK with only 4 levels. Apologies for leading you in the wrong direction. M. -- Without deviation from the norm, progress is not possible.