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=-14.0 required=3.0 tests=BAYES_00,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 9ED2AC433E0 for ; Thu, 11 Mar 2021 08:57:57 +0000 (UTC) Received: from mm01.cs.columbia.edu (mm01.cs.columbia.edu [128.59.11.253]) by mail.kernel.org (Postfix) with ESMTP id C023964FB1 for ; Thu, 11 Mar 2021 08:57:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C023964FB1 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=kernel.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kvmarm-bounces@lists.cs.columbia.edu Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 405D94B6B4; Thu, 11 Mar 2021 03:57:56 -0500 (EST) 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 QL-XabsMAGKA; Thu, 11 Mar 2021 03:57:54 -0500 (EST) Received: from mm01.cs.columbia.edu (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 712A54B6A7; Thu, 11 Mar 2021 03:57:54 -0500 (EST) Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 903094B69D for ; Thu, 11 Mar 2021 03:57:53 -0500 (EST) 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 LSYP0kHw6dMR for ; Thu, 11 Mar 2021 03:57:52 -0500 (EST) Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 84BF84B6A5 for ; Thu, 11 Mar 2021 03:57:52 -0500 (EST) 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 2E84064FAF; Thu, 11 Mar 2021 08:57:51 +0000 (UTC) Received: from 78.163-31-62.static.virginmediabusiness.co.uk ([62.31.163.78] 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) (envelope-from ) id 1lKH8e-000wyZ-Rr; Thu, 11 Mar 2021 08:57:48 +0000 Date: Thu, 11 Mar 2021 08:57:48 +0000 Message-ID: <87wnuef4oj.wl-maz@kernel.org> From: Marc Zyngier To: Shenming Lu Subject: Re: [PATCH v3 1/4] KVM: arm64: GICv4.1: Add function to get VLPI state In-Reply-To: <20210127121337.1092-2-lushenming@huawei.com> References: <20210127121337.1092-1-lushenming@huawei.com> <20210127121337.1092-2-lushenming@huawei.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: 62.31.163.78 X-SA-Exim-Rcpt-To: lushenming@huawei.com, eric.auger@redhat.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.cs.columbia.edu, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, alex.williamson@redhat.com, cohuck@redhat.com, lorenzo.pieralisi@arm.com, wanghaibin.wang@huawei.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 Cc: Lorenzo Pieralisi , kvm@vger.kernel.org, Cornelia Huck , linux-kernel@vger.kernel.org, Alex Williamson , Will Deacon , kvmarm@lists.cs.columbia.edu, linux-arm-kernel@lists.infradead.org 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 Wed, 27 Jan 2021 12:13:34 +0000, Shenming Lu wrote: > > With GICv4.1 and the vPE unmapped, which indicates the invalidation > of any VPT caches associated with the vPE, we can get the VLPI state > by peeking at the VPT. So we add a function for this. > > Signed-off-by: Shenming Lu > --- > arch/arm64/kvm/vgic/vgic-v4.c | 19 +++++++++++++++++++ > arch/arm64/kvm/vgic/vgic.h | 1 + > 2 files changed, 20 insertions(+) > > diff --git a/arch/arm64/kvm/vgic/vgic-v4.c b/arch/arm64/kvm/vgic/vgic-v4.c > index 66508b03094f..ac029ba3d337 100644 > --- a/arch/arm64/kvm/vgic/vgic-v4.c > +++ b/arch/arm64/kvm/vgic/vgic-v4.c > @@ -203,6 +203,25 @@ void vgic_v4_configure_vsgis(struct kvm *kvm) > kvm_arm_resume_guest(kvm); > } > > +/* > + * Must be called with GICv4.1 and the vPE unmapped, which > + * indicates the invalidation of any VPT caches associated > + * with the vPE, thus we can get the VLPI state by peeking > + * at the VPT. > + */ > +void vgic_v4_get_vlpi_state(struct vgic_irq *irq, bool *val) > +{ > + struct its_vpe *vpe = &irq->target_vcpu->arch.vgic_cpu.vgic_v3.its_vpe; > + int mask = BIT(irq->intid % BITS_PER_BYTE); > + void *va; > + u8 *ptr; > + > + va = page_address(vpe->vpt_page); > + ptr = va + irq->intid / BITS_PER_BYTE; > + > + *val = !!(*ptr & mask); What guarantees that you can actually read anything valid? Yes, the VPT caches are clean. But that doesn't make them coherent with CPU caches. You need some level of cache maintenance here. Thanks, 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