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 0F8EAC38142 for ; Tue, 31 Jan 2023 22:05:40 +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:MIME-Version:References:In-Reply-To: Subject:Cc:To:From:Message-ID:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cv0mMl64b7IX8RUqKDY2mALYwBMBXyJ0MT6XcrOZkUk=; b=lM3GkoccQCQwRC tFQLuXRZA3n7lWhhJsgwPWpRDy+aUWnlKbpwQC1jofNAg7HmnZic6xf/aCgpJ493joSyr3k1jiCUN oH3qAJd/XcBWemuGJhijxI4kw/qF+mgCDcxB9UJil70sHpGljinDdI02fU+aX/kP92q7LQYMfII7R DYS+sGwr76XNSqBIHzLQjVDlIIcjAhh0OLwFLay+JvzJLXCVOHUyyB0NLJiW7DD95IGoEFWAGllgX yOALNpbA18JOkibwecXQWSmraZR2awsFOeT5Gqyj8CwN1HoadXuWVr+dmgcQp8ekzXeJPZ4H55mce IyBk0VlW+DDymgHwD+2Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1pMykD-009T99-5b; Tue, 31 Jan 2023 22:04:49 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1pMyk9-009T7u-Py for linux-arm-kernel@lists.infradead.org; Tue, 31 Jan 2023 22:04:47 +0000 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 73DD8B81F05; Tue, 31 Jan 2023 22:04:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 0EE74C433D2; Tue, 31 Jan 2023 22:04:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1675202683; bh=QyEnfFrU4jzPsRHieCZShQfZdjS0kUZi0FdbqSHqlvk=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=EMrVPrFky0qxWHgpJ56HHG7MGI57MhJ9atMErWLxoXVhhxVXDO0wpob1wWbWS0eh6 4rfVgy15QPqYUhNh5bWGR3W+cxVW3m4HpUAugmAS/P7THlzy5BGQn3b6XFk1C5/kUU adJqG2JeQ6YeH/7m5280K4NoBulFaWZ1/S54Onpr5cnl8Lea1yUvGneXhmhqPPJO2h eNsXVv6CBLlJuHsMJhAeJWC1q5ppN+wOX0MyFHFGo2GEzfZRMjB/S6cU0bhWvTersJ 6SVJ4PNLOuolg7wuLBZI4lZCMDO9e6NdSS7AgzVkGOq7sq1KJwFFQTRYOAbNrWqmDe 5sSzxY8Vyj1zw== Received: from sofa.misterjones.org ([185.219.108.64] helo=wait-a-minute.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 1pMyk4-006Km0-Lk; Tue, 31 Jan 2023 22:04:40 +0000 Date: Tue, 31 Jan 2023 22:04:40 +0000 Message-ID: <87zg9ycqdj.wl-maz@kernel.org> From: Marc Zyngier To: Oliver Upton Cc: kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Alexandru Elisei , Andre Przywara , Chase Conklin , Christoffer Dall , Ganapatrao Kulkarni , Jintack Lim , Russell King , James Morse , Suzuki K Poulose , Zenghui Yu Subject: Re: [PATCH v8 09/69] KVM: arm64: nv: Reset VMPIDR_EL2 and VPIDR_EL2 to sane values In-Reply-To: References: <20230131092504.2880505-1-maz@kernel.org> <20230131092504.2880505-10-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/27.1 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") X-SA-Exim-Connect-IP: 185.219.108.64 X-SA-Exim-Rcpt-To: oliver.upton@linux.dev, kvmarm@lists.linux.dev, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, alexandru.elisei@arm.com, andre.przywara@arm.com, chase.conklin@arm.com, christoffer.dall@arm.com, gankulkarni@os.amperecomputing.com, jintack@cs.columbia.edu, rmk+kernel@armlinux.org.uk, james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.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-20230131_140446_145933_63A532C1 X-CRM114-Status: GOOD ( 22.93 ) 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: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, 31 Jan 2023 20:17:50 +0000, Oliver Upton wrote: > > On Tue, Jan 31, 2023 at 09:24:04AM +0000, Marc Zyngier wrote: > > From: Christoffer Dall > > > > The VMPIDR_EL2 and VPIDR_EL2 are architecturally UNKNOWN at reset, but > > let's be nice to a guest hypervisor behaving foolishly and reset these > > to something reasonable anyway. > > Must we be so kind? :) > > In all seriousness, I've found the hexspeak value of reset_unknown() to > be a rather useful debugging aid. And I can promise you that I'll use NV > to debug my own crap changes! > > Any particular reason against just using reset_unknown()? Because debugging NV itself is hell when all you have is a model! As we were trying to debug the early code base, we really wanted to make it easy to run tiny guests without much setup, and work out of the box. That's how this sort of changes came about. In any case, something like this the hack below works as well (I just booted an L1 and a couple of L2s with it, and nothing caught fire). M. diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c index 924afc40ab8b..c1016a35a996 100644 --- a/arch/arm64/kvm/sys_regs.c +++ b/arch/arm64/kvm/sys_regs.c @@ -924,16 +924,6 @@ static void reset_mpidr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) vcpu_write_sys_reg(vcpu, compute_reset_mpidr(vcpu), MPIDR_EL1); } -static void reset_vmpidr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) -{ - vcpu_write_sys_reg(vcpu, compute_reset_mpidr(vcpu), VMPIDR_EL2); -} - -static void reset_vpidr(struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) -{ - vcpu_write_sys_reg(vcpu, read_cpuid_id(), VPIDR_EL2); -} - static unsigned int pmu_visibility(const struct kvm_vcpu *vcpu, const struct sys_reg_desc *r) { @@ -2678,8 +2668,8 @@ static const struct sys_reg_desc sys_reg_descs[] = { { PMU_SYS_REG(SYS_PMCCFILTR_EL0), .access = access_pmu_evtyper, .reset = reset_val, .reg = PMCCFILTR_EL0, .val = 0 }, - EL2_REG(VPIDR_EL2, access_rw, reset_vpidr, 0), - EL2_REG(VMPIDR_EL2, access_rw, reset_vmpidr, 0), + EL2_REG(VPIDR_EL2, access_rw, reset_unknown, 0), + EL2_REG(VMPIDR_EL2, access_rw, reset_unknown, 0), EL2_REG(SCTLR_EL2, access_rw, reset_val, SCTLR_EL2_RES1), EL2_REG(ACTLR_EL2, access_rw, reset_val, 0), EL2_REG(HCR_EL2, access_rw, reset_val, 0), -- Without deviation from the norm, progress is not possible. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel