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 6E5CEC54E58 for ; Mon, 18 Mar 2024 12:03:41 +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=iYljwTk+3YgnDZ5PbhBukwmzuTfGKdgOQGRO3GhMkJ4=; b=d3BZQxGF6MbEch DpqmA68C3yVE5IfMu5eMgb4ko8Kx0N3Io4+n+3E6WjJgv+4iLGrSUTT1Y+H66Lyn5gIrvw0HmLNWJ PXBAVXCPyV+CJ8YHc7VWi4ua40yJq0pOtMAthef6Yw5nvxLuol2LARdXfD4dwNhUreXMJtKg9UFR/ W/Xmc5blnnde9DOheGfDTwtq+9M7amUXjl21BSExk1Vst1WHPX+2nl9Is/H5Duhg1+L7YrI5mGoOi LE75KZOHsLGehDQiYyfWtJHj6rt+SsdP3s08Es6cQlgaB/WpeLwFOTS3pil0aXsEnGDoc8CWmMY8G nrjOfov8Kaq29nRVuHnQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmBhw-00000008Si4-0BIB; Mon, 18 Mar 2024 12:03:18 +0000 Received: from dfw.source.kernel.org ([139.178.84.217]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rmBht-00000008ShJ-3iWE for linux-arm-kernel@lists.infradead.org; Mon, 18 Mar 2024 12:03:11 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 84EB260109; Mon, 18 Mar 2024 12:03:08 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 33489C433F1; Mon, 18 Mar 2024 12:03:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1710763388; bh=akXN2x6E+I+oCYzYwpsHj8WjYxZt5RVWF9cXOjfzdSo=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=KK+o1ZH5RnIYMOBv7zuKb5BV7nBvtmpjUqYW0l+5UskOqYokytzJrjmgvA2lBKt6q 6/ROkuLMknyzkAsbCQOZTweZqLxkxC1pKVQvzRNDmjZXiOHZNdJegBT3l8FmMN6ftG a6SaMbTMvL6ikWR5jnG/sYTDKw1u5cciJhFXDmSszifN/KQv4pFL1UHcBn1dRu2V6x /sAh2WVKaoOY0AM1LQdWjneixjCMr9Gg9Qyix7IotNfZOk7TIFjTbR+etmvZMHRNWP WuKDDuVXgB+JislWXTrI4g4BZnYPQKoZKWqjOEILP6dVZvAhYVYsdFMLMZiZm5/PNG RCteFf3LpRSww== 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 1rmBhq-00DGaM-2e; Mon, 18 Mar 2024 12:03:06 +0000 Date: Mon, 18 Mar 2024 12:03:04 +0000 Message-ID: <86zfuvzr0n.wl-maz@kernel.org> From: Marc Zyngier To: Sebastian Ott Cc: linux-arm-kernel@lists.infradead.org, Oliver Upton Subject: Re: [PATCH 3/4] KVM: arm64: show writable masks for feature registers In-Reply-To: <20240318111636.10613-4-sebott@redhat.com> References: <20240318111636.10613-1-sebott@redhat.com> <20240318111636.10613-4-sebott@redhat.com> 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.1 (aarch64-unknown-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: sebott@redhat.com, linux-arm-kernel@lists.infradead.org, oliver.upton@linux.dev 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-20240318_050310_099535_6DD00A1A X-CRM114-Status: GOOD ( 24.46 ) 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 Mon, 18 Mar 2024 11:16:35 +0000, Sebastian Ott wrote: > > Instead of using ~0UL provide the actual writable mask for > non-id feature registers in the output of the > KVM_ARM_GET_REG_WRITABLE_MASKS ioctl. CTR_EL0 definitely seems to be in the feature ID range. And so does CLIDR_EL1. > > This changes the mask for the CTR_EL0 register. Only that? > > Signed-off-by: Sebastian Ott > --- > arch/arm64/kvm/sys_regs.c | 21 ++++++--------------- > 1 file changed, 6 insertions(+), 15 deletions(-) > > diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c > index b2019faa9d73..0f8fe7790c35 100644 > --- a/arch/arm64/kvm/sys_regs.c > +++ b/arch/arm64/kvm/sys_regs.c > @@ -2489,12 +2489,12 @@ static const struct sys_reg_desc sys_reg_descs[] = { > > { SYS_DESC(SYS_CCSIDR_EL1), access_ccsidr }, > { SYS_DESC(SYS_CLIDR_EL1), access_clidr, reset_clidr, CLIDR_EL1, > - .set_user = set_clidr }, > + .set_user = set_clidr, .val = ~0UL }, How is CLIDR_EL1 (and all the crap that depend on it) recomputed when CTR_EL0 is changed? > { SYS_DESC(SYS_CCSIDR2_EL1), undef_access }, > { SYS_DESC(SYS_SMIDR_EL1), undef_access }, > { SYS_DESC(SYS_CSSELR_EL1), access_csselr, reset_unknown, CSSELR_EL1 }, > { SYS_DESC(SYS_CTR_EL0), access_ctr, .reset = reset_ctr, > - .get_user = get_ctr, .set_user = set_ctr}, > + .get_user = get_ctr, .set_user = set_ctr, .val = CTR_EL0_DIC_MASK}, This is all extremely fragile. We need a better solution for this. And we need far more than just DIC here. > { SYS_DESC(SYS_SVCR), undef_access }, > > { PMU_SYS_REG(PMCR_EL0), .access = access_pmcr, .reset = reset_pmcr, > @@ -3934,20 +3934,11 @@ int kvm_vm_ioctl_get_reg_writable_masks(struct kvm *kvm, struct reg_mask_range * > if (!is_feature_id_reg(encoding) || !reg->set_user) > continue; > > - /* > - * For ID registers, we return the writable mask. Other feature > - * registers return a full 64bit mask. That's not necessary > - * compliant with a given revision of the architecture, but the > - * RES0/RES1 definitions allow us to do that. > - */ > - if (is_id_reg(encoding)) { > - if (!reg->val || > - (is_aa32_id_reg(encoding) && !kvm_supports_32bit_el0())) > - continue; > - val = reg->val; > - } else { > - val = ~0UL; > + if (!reg->val || > + (is_aa32_id_reg(encoding) && !kvm_supports_32bit_el0())) { > + continue; > } > + val = reg->val; Are CLIDR_EL1 and CTR_EL0 the only two ID registers that had a set_user callback without an encoded mask? M. -- 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