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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 509E0C433F5 for ; Tue, 26 Oct 2021 15:41:15 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id C572C610A4 for ; Tue, 26 Oct 2021 15:41:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org C572C610A4 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 45181407D1; Tue, 26 Oct 2021 11:41:14 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id TblobBXfJ-dA; Tue, 26 Oct 2021 11:41:13 -0400 (EDT) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 236F34B0AC; Tue, 26 Oct 2021 11:41:13 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 1BD044AC78 for ; Tue, 26 Oct 2021 11:41:12 -0400 (EDT) X-Virus-Scanned: at lists.cs.columbia.edu Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ahYjERXBz4kr for ; Tue, 26 Oct 2021 11:41:10 -0400 (EDT) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 6336D407D1 for ; Tue, 26 Oct 2021 11:41:10 -0400 (EDT) Received: from disco-boy.misterjones.org (disco-boy.misterjones.org [51.254.78.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9634460EFF; Tue, 26 Oct 2021 15:41:08 +0000 (UTC) Received: from sofa.misterjones.org ([185.219.108.64] helo=why.misterjones.org) by disco-boy.misterjones.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mfOZW-001iWu-7f; Tue, 26 Oct 2021 16:41:06 +0100 Date: Tue, 26 Oct 2021 16:41:05 +0100 Message-ID: <875ytjbxpq.wl-maz@kernel.org> From: Marc Zyngier To: Paolo Bonzini Subject: Re: [PATCH v2 10/43] KVM: arm64: Move vGIC v4 handling for WFI out arch callback hook In-Reply-To: <9236e715-c471-e1c8-6117-6f37b908a6bd@redhat.com> References: <20211009021236.4122790-1-seanjc@google.com> <20211009021236.4122790-11-seanjc@google.com> <9236e715-c471-e1c8-6117-6f37b908a6bd@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/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: pbonzini@redhat.com, seanjc@google.com, chenhuacai@kernel.org, aleksandar.qemu.devel@gmail.com, paulus@ozlabs.org, anup.patel@wdc.com, paul.walmsley@sifive.com, palmer@dabbelt.com, aou@eecs.berkeley.edu, borntraeger@de.ibm.com, frankja@linux.ibm.com, james.morse@arm.com, alexandru.elisei@arm.com, suzuki.poulose@arm.com, atish.patra@wdc.com, david@redhat.com, cohuck@redhat.com, imbrenda@linux.ibm.com, vkuznets@redhat.com, wanpengli@tencent.com, jmattson@google.com, joro@8bytes.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, linux-mips@vger.kernel.org, kvm@vger.kernel.org, kvm-ppc@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, dmatlack@google.com, oupton@google.com, jingzhangos@google.com X-SA-Exim-Mail-From: maz@kernel.org X-SA-Exim-Scanned: No (on disco-boy.misterjones.org); SAEximRunCond expanded to false Cc: Cornelia Huck , Wanpeng Li , kvm@vger.kernel.org, David Hildenbrand , linux-kernel@vger.kernel.org, Paul Mackerras , Atish Patra , linux-riscv@lists.infradead.org, Claudio Imbrenda , kvmarm@lists.cs.columbia.edu, Janosch Frank , Joerg Roedel , Huacai Chen , Christian Borntraeger , Aleksandar Markovic , Albert Ou , kvm-ppc@vger.kernel.org, Paul Walmsley , David Matlack , linux-arm-kernel@lists.infradead.org, Jim Mattson , Anup Patel , linux-mips@vger.kernel.org, Palmer Dabbelt , kvm-riscv@lists.infradead.org, Vitaly Kuznetsov X-BeenThere: kvmarm@lists.cs.columbia.edu X-Mailman-Version: 2.1.14 Precedence: list List-Id: Where KVM/ARM decisions are made List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu On Mon, 25 Oct 2021 14:31:48 +0100, Paolo Bonzini wrote: > > On 09/10/21 04:12, Sean Christopherson wrote: > > Move the put and reload of the vGIC out of the block/unblock callbacks > > and into a dedicated WFI helper. Functionally, this is nearly a nop as > > the block hook is called at the very beginning of kvm_vcpu_block(), and > > the only code in kvm_vcpu_block() after the unblock hook is to update the > > halt-polling controls, i.e. can only affect the next WFI. > > > > Back when the arch (un)blocking hooks were added by commits 3217f7c25bca > > ("KVM: Add kvm_arch_vcpu_{un}blocking callbacks) and d35268da6687 > > ("arm/arm64: KVM: arch_timer: Only schedule soft timer on vcpu_block"), > > the hooks were invoked only when KVM was about to "block", i.e. schedule > > out the vCPU. The use case at the time was to schedule a timer in the > > host based on the earliest timer in the guest in order to wake the > > blocking vCPU when the emulated guest timer fired. Commit accb99bcd0ca > > ("KVM: arm/arm64: Simplify bg_timer programming") reworked the timer > > logic to be even more precise, by waiting until the vCPU was actually > > scheduled out, and so move the timer logic from the (un)blocking hooks to > > vcpu_load/put. > > > > In the meantime, the hooks gained usage for enabling vGIC v4 doorbells in > > commit df9ba95993b9 ("KVM: arm/arm64: GICv4: Use the doorbell interrupt > > as an unblocking source"), and added related logic for the VMCR in commit > > 5eeaf10eec39 ("KVM: arm/arm64: Sync ICH_VMCR_EL2 back when about to block"). > > > > Finally, commit 07ab0f8d9a12 ("KVM: Call kvm_arch_vcpu_blocking early > > into the blocking sequence") hoisted the (un)blocking hooks so that they > > wrapped KVM's halt-polling logic in addition to the core "block" logic. > > > > In other words, the original need for arch hooks to take action _only_ > > in the block path is long since gone. > > > > Cc: Oliver Upton > > Cc: Marc Zyngier > > Signed-off-by: Sean Christopherson > > This needs a word on why kvm_psci_vcpu_suspend does not need the > hooks. Or it needs to be changed to also use kvm_vcpu_wfi in the PSCI > code, I don't know. > > Marc, can you review and/or advise? I was looking at that over the weekend, and that's a pre-existing bug. I would have addressed it independently, but it looks like you already have queued the patch. I guess I'll have to revisit this once the whole thing lands somewhere. M. -- Without deviation from the norm, progress is not possible. _______________________________________________ kvmarm mailing list kvmarm@lists.cs.columbia.edu https://lists.cs.columbia.edu/mailman/listinfo/kvmarm