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 270FEC88E5C for ; Wed, 16 Sep 2026 08:16:53 +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=ZJiy+EQgetwOr93GvKDb0H7whWYuf28kIErFLyYFFc8=; b=VGYDz1HUyYTdukIZv2WaFEfMmY PN9FZKNAj06daeqUVE8b/Dh64hPO+OHBhngUHe9mvQyRkiH0jWuohf6Zn8OcBrM5J5YyoRVqmkyLZ 5JrM1/4/b4msWK97+cIYidmhA28Q+0yNfez3zaof62v242RsSdZZnF9DVYOW5FYiLjUxJI3t1yotH Dali3+zEB10uHi1wuxTHxmQB3X5kK/0QGqoj2iiL6YgTTaUI3YChh5qvuR25pXDDgFuLM6ozTPw1U oVWVD1C6II9NggPt43B7mvkKJYiehcFRPKyNcposlrBaL7enjoh5Y3Y0qhJlcNg7AmG9yRBZkuY0d jwJuZoww==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6kow-00000008hTE-3lR3; Wed, 16 Sep 2026 08:16:46 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1x6kov-00000008hSR-2qq4 for linux-arm-kernel@lists.infradead.org; Wed, 16 Sep 2026 08:16:45 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id C4DE36053B; Wed, 16 Sep 2026 08:16:44 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 77E9A1F000FF; Wed, 16 Sep 2026 08:16:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1789546604; bh=ZJiy+EQgetwOr93GvKDb0H7whWYuf28kIErFLyYFFc8=; h=Date:From:To:Cc:Subject:In-Reply-To:References; b=OJSzhIY+9YFR7vTobkyFlM67gI7Nd8rxuhwx+l8fI9Od3FMyji5O5PMePTRto08TJ BtdgC7Tocn2rZFyGXEB2C0jVq8PpAzOvTjAPV4ZlV6I/EBH/FE6e4uXL6LfnJTLtAP B12okfMVFwD3XoS+mmCoVp0GI5Ijuvp38O1rExuR4zma5UxX2jzB1W3NBQXgENhs6z 0XCVmmrKrV8/dNzqhBJjcDZiP0Aq6NYJnnPJMQOOpizHVeocE3X5lepWNkDg+/+YfR RN7wEWSfYCk1vXy+f2+9h7+r4baEIYhn/3OZGpTlLb3Lrbk+zg24GOAHfGAiCJbPzz lvnuUoetnMh1Q== 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.98.2) (envelope-from ) id 1x6kos-00000009VTD-0vIh; Wed, 16 Sep 2026 08:16:42 +0000 Date: Wed, 16 Sep 2026 09:16:41 +0100 Message-ID: <86ik45626u.wl-maz@kernel.org> From: Marc Zyngier To: Suzuki K Poulose Cc: kvm@vger.kernel.org, kvmarm@lists.linux.dev, will@kernel.org, catalin.marinas@arm.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, steven.price@arm.com, aneesh.kumar@kernel.org, oupton@kernel.org, gshan@redhat.com, joey.gouly@arm.com, tabba@google.com, yuzenghui@huawei.com, linux-coco@lists.linux.dev, gankulkarni@os.amperecomputing.com, sdonthineni@nvidia.com, alpergun@google.com, fj0570is@fujitsu.com, WeiLin.Chang@arm.com, lpieralisi@kernel.org, enju.kohei@fujitsu.com, Marc Zyngier Subject: Re: [PATCH v18 01/23] KVM: arm64: protected VM: Handle set_one_reg CNTVCT_EL0/CNTPCT_EL0 In-Reply-To: References: <20260915160141.3543048-1-suzuki.poulose@arm.com> <20260915160141.3543048-2-suzuki.poulose@arm.com> <86o6dy5uob.wl-maz@kernel.org> <7c26c860-0543-459e-974b-72c59af261f9@arm.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/30.1 (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: suzuki.poulose@arm.com, kvm@vger.kernel.org, kvmarm@lists.linux.dev, will@kernel.org, catalin.marinas@arm.com, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, steven.price@arm.com, aneesh.kumar@kernel.org, oupton@kernel.org, gshan@redhat.com, joey.gouly@arm.com, tabba@google.com, yuzenghui@huawei.com, linux-coco@lists.linux.dev, gankulkarni@os.amperecomputing.com, sdonthineni@nvidia.com, alpergun@google.com, fj0570is@fujitsu.com, WeiLin.Chang@arm.com, lpieralisi@kernel.org, enju.kohei@fujitsu.com, maz@krenel.org X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false 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, 15 Sep 2026 22:20:36 +0100, Suzuki K Poulose wrote: > > This is how it looks like now, reworked. > > > diff --git a/arch/arm64/kvm/arch_timer.c b/arch/arm64/kvm/arch_timer.c > index 6ac3321f4c575..1c8fac222a643 100644 > --- a/arch/arm64/kvm/arch_timer.c > +++ b/arch/arm64/kvm/arch_timer.c > @@ -1110,8 +1110,7 @@ void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu) > timer_context_init(vcpu, i); > > /* Synchronize offsets across timers of a VM if not already > provided */ > - if (!vcpu_is_protected(vcpu) && > - !test_bit(KVM_ARCH_FLAG_VM_COUNTER_OFFSET, > &vcpu->kvm->arch.flags)) { > + if (!test_bit(KVM_ARCH_FLAG_VM_COUNTER_OFFSET, > &vcpu->kvm->arch.flags)) { > timer_set_offset(vcpu_vtimer(vcpu), kvm_phys_timer_read()); > timer_set_offset(vcpu_ptimer(vcpu), 0); > } > @@ -1133,6 +1132,15 @@ void kvm_timer_init_vm(struct kvm *kvm) > */ > for (int i = 0; i < NR_KVM_TIMERS; i++) > kvm->arch.timer_data.ppi[i] = get_vgic_ppi(kvm, > default_ppi[i]); > + > + /* > + * For the protected VMs, fix the counter offset to 0 by marking the > + * KVM_ARCH_FLAG_VM_COUNTER_OFFSET. This would also prevent > userspace > + * writes to CNTVCT_ELO & CNTPCT_EL0. > + * The user can't set the offset via vm ioctl > KVM_ARM_SET_COUNTER_OFFSET. > + */ This is a bit wordy. Something like: Protected VMs don't allow any offset being set from userspace, either set via writes to the counters or using the dedicated ioctl. Pretend the offset has already been set and rely on the default offset being 0. > + if (kvm_vm_is_protected(kvm)) > + set_bit(KVM_ARCH_FLAG_VM_COUNTER_OFFSET, &kvm->arch.flags); > } > > void kvm_timer_cpu_up(void) Otherwise LGTM. M. -- Without deviation from the norm, progress is not possible.