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 X-Spam-Level: X-Spam-Status: No, score=-10.2 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_ADSP_CUSTOM_MED,DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 276A8C07E95 for ; Tue, 20 Jul 2021 18:46:47 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id E284460720 for ; Tue, 20 Jul 2021 18:46:46 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E284460720 Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org 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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=T6tRIQ2jrZUbDdRpDvm9SmnfEhG/rpSBFEp0i0MOBCg=; b=umxXVModfq2aRU JvuquRjKiGKAMoPKIjqN2sNepIWFm3WQ1QB811F+uvN6IIWl94ULKQqtKn/VtIs9HEyhG+OzA6nZa KG0ySLN9ev9uI2wo9wVCMPgxhaRkbD2fA4AtMNNaA+xeaBwcGYHrQ2PsZOulCk9tlthzlbzeDuN3c AHEBtCmVNa5NquBvMUpmLmv/sa3vPa8xbggcsuEGIfSjxxWvLj1Ebq//MSCf4xqgmsdGKoLYW6X5M PyCXZn3l3vynuBXHWrNA83BupryHTC1ZgUJ7BPQ1HbLAa7S7ul3XbPEzRP87wZyLENWK4/LRfpkP1 X+2cZWyEYdvm1KxAqhSg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1m5ujx-00DlIG-R8; Tue, 20 Jul 2021 18:45:14 +0000 Received: from mail-qk1-x72c.google.com ([2607:f8b0:4864:20::72c]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1m5ujt-00DlHd-KM for linux-arm-kernel@lists.infradead.org; Tue, 20 Jul 2021 18:45:10 +0000 Received: by mail-qk1-x72c.google.com with SMTP id q15so7399814qkm.8 for ; Tue, 20 Jul 2021 11:45:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=h+5lhU7M8IjaNDliv1AGOCjbrZiTwbIiNZC3cRm5Ft4=; b=kBNqGrqVO0AGRsiaL21hT9uj8jYrP1RH/zUuBTrpbBUb8A42hHHzVHzCvjT3dJ+Ty9 yVNDKRMFvYehXW+I9SqWnToG1znHK9qyAECiy7F0h2h5UkSiMrAyD1iqLfcHmIRzqBa3 3gLxomE2ztzKfdxeg1Dh4QidNGCiIfjBswBQkZ+D/owBOrYD/eqpSPrICPG/l2YXwhbz 5Isa8wx3gsFgKoqDQmVfhIzKAQrNd0RLyOctfy3RpnRQJNWfmIzPwCt+VZOzjvbzpTqB PBkyGWSERoggfMqSRyQ2NYYmATiMWki7J0f+6OrXNWlGNm/0LPY1LZPNdt730Ui4K1R5 7yeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=h+5lhU7M8IjaNDliv1AGOCjbrZiTwbIiNZC3cRm5Ft4=; b=UC7c79KkyrvaONp6op+13Ud0UuCXrX4b8q5mrnH/xu5np3xCG9zLCSQ0NjtmfBlRvq p3b2lYqp/UOuv/fexPcrlwtbApQo7Zktxo9UDMCoEvRLTqqD4RMTznN+Xf61QqyKU9wc c0G15mSTTmYs/1gD1VgIlSTRGG9fUlGDK+uT/IJiEec4txCU9tVUEMsbyaC/uG+94jOW J/H8tWlQy2pllycXyNzPV1b3+RCbJdmVm/Uft5t7eoFBw1/K8osp7ZVgsEWjLOkx7Lhn Ly1LPE1vgmSynbsbthb8xp/XDikqZSKaEgqf3bSVoVv4qtA2Eh7BIl71aOSYfEl7FqvU 5aNQ== X-Gm-Message-State: AOAM532NxhZoFw2SLvFDw8mX51ZGflUU27R+RzaZdWbo7N1Uki0dsz99 eJioXo3bXzcLelUL/Xp8gGvPNLGDm7XtUzdNHiMh6w== X-Google-Smtp-Source: ABdhPJz99PqGqDiAUjrgTCjXK83j0Ii/6/WjrhhzASEWUjObSqCXnA+g3kTJMOWUTIM3pS0bEje2lpMgJ/Z6UUAhjFU= X-Received: by 2002:a37:8f44:: with SMTP id r65mr31378302qkd.20.1626806704872; Tue, 20 Jul 2021 11:45:04 -0700 (PDT) MIME-Version: 1.0 References: <20210709043713.887098-1-senozhatsky@chromium.org> <20210709043713.887098-5-senozhatsky@chromium.org> <874kcz33g5.wl-maz@kernel.org> In-Reply-To: <874kcz33g5.wl-maz@kernel.org> From: Joel Fernandes Date: Tue, 20 Jul 2021 14:44:53 -0400 Message-ID: Subject: Re: [PATCHv2 4/4] arm64: add host pv-vcpu-state support To: Marc Zyngier Cc: Sergey Senozhatsky , Will Deacon , Suleiman Souhlal , linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210720_114509_725876_259BA568 X-CRM114-Status: GOOD ( 15.74 ) 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, Jul 12, 2021 at 12:24 PM Marc Zyngier wrote: > [...] > > +} > > + > > +static inline bool > > +kvm_arm_is_vcpu_state_enabled(struct kvm_vcpu_arch *vcpu_arch) > > +{ > > + return (vcpu_arch->vcpu_state.base != GPA_INVALID); > > +} > > + > > +void kvm_update_vcpu_preempted(struct kvm_vcpu *vcpu, bool preempted); > > + > > void kvm_set_sei_esr(struct kvm_vcpu *vcpu, u64 syndrome); > > > > struct kvm_vcpu *kvm_mpidr_to_vcpu(struct kvm *kvm, unsigned long mpidr); > > diff --git a/arch/arm64/kvm/Makefile b/arch/arm64/kvm/Makefile > > index 989bb5dad2c8..2a3ee82c6d90 100644 > > --- a/arch/arm64/kvm/Makefile > > +++ b/arch/arm64/kvm/Makefile > > @@ -12,7 +12,8 @@ obj-$(CONFIG_KVM) += hyp/ > > > > kvm-y := $(KVM)/kvm_main.o $(KVM)/coalesced_mmio.o $(KVM)/eventfd.o \ > > $(KVM)/vfio.o $(KVM)/irqchip.o $(KVM)/binary_stats.o \ > > - arm.o mmu.o mmio.o psci.o perf.o hypercalls.o pvtime.o \ > > + arm.o mmu.o mmio.o psci.o perf.o hypercalls.o \ > > + pvtime.o pv-vcpu-state.o \ > > inject_fault.o va_layout.o handle_exit.o \ > > guest.o debug.o reset.o sys_regs.o \ > > vgic-sys-reg-v3.o fpsimd.o pmu.o \ > > diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c > > index e9a2b8f27792..43e995c9fddb 100644 > > --- a/arch/arm64/kvm/arm.c > > +++ b/arch/arm64/kvm/arm.c > > @@ -332,6 +332,7 @@ int kvm_arch_vcpu_create(struct kvm_vcpu *vcpu) > > kvm_arm_reset_debug_ptr(vcpu); > > > > kvm_arm_pvtime_vcpu_init(&vcpu->arch); > > + kvm_arm_vcpu_state_init(&vcpu->arch); > > > > vcpu->arch.hw_mmu = &vcpu->kvm->arch.mmu; > > > > @@ -429,10 +430,12 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) > > if (vcpu_has_ptrauth(vcpu)) > > vcpu_ptrauth_disable(vcpu); > > kvm_arch_vcpu_load_debug_state_flags(vcpu); > > + kvm_update_vcpu_preempted(vcpu, false); > > } > > > > void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) > > { > > + kvm_update_vcpu_preempted(vcpu, true); > > This doesn't look right. With this, you are now telling the guest that > a vcpu that is blocked on WFI is preempted. This really isn't the > case, as it has voluntarily entered a low-power mode while waiting for > an interrupt. Indeed, the vcpu isn't running. A physical CPU wouldn't > be running either. Can that be cured by just checking vcpu->preempted before calling kvm_update_vcpu_preempted() ? - Joel _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel