From: Marc Zyngier <maz@kernel.org>
To: Shenming Lu <lushenming@huawei.com>
Cc: Eric Auger <eric.auger@redhat.com>,
"Will\ Deacon" <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 <alex.williamson@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
<wanghaibin.wang@huawei.com>, <yuzenghui@huawei.com>
Subject: Re: [PATCH v3 1/4] KVM: arm64: GICv4.1: Add function to get VLPI state
Date: Thu, 11 Mar 2021 08:57:48 +0000 [thread overview]
Message-ID: <87wnuef4oj.wl-maz@kernel.org> (raw)
In-Reply-To: <20210127121337.1092-2-lushenming@huawei.com>
On Wed, 27 Jan 2021 12:13:34 +0000,
Shenming Lu <lushenming@huawei.com> 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 <lushenming@huawei.com>
> ---
> 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.
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-03-11 8:59 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-27 12:13 [PATCH v3 0/4] KVM: arm64: Add VLPI migration support on GICv4.1 Shenming Lu
2021-01-27 12:13 ` [PATCH v3 1/4] KVM: arm64: GICv4.1: Add function to get VLPI state Shenming Lu
2021-03-11 8:57 ` Marc Zyngier [this message]
2021-03-11 12:26 ` Shenming Lu
2021-03-12 8:52 ` Marc Zyngier
2021-01-27 12:13 ` [PATCH v3 2/4] KVM: arm64: GICv4.1: Try to save hw pending state in save_pending_tables Shenming Lu
2021-03-11 9:09 ` Marc Zyngier
2021-03-11 12:31 ` Shenming Lu
2021-03-12 9:02 ` Marc Zyngier
2021-03-12 10:47 ` Shenming Lu
2021-01-27 12:13 ` [PATCH v3 3/4] KVM: arm64: GICv4.1: Restore VLPI's pending state to physical side Shenming Lu
2021-03-11 9:14 ` Marc Zyngier
2021-03-11 12:32 ` Shenming Lu
2021-03-12 9:05 ` Marc Zyngier
2021-03-12 10:48 ` Shenming Lu
2021-03-12 11:10 ` Marc Zyngier
2021-03-12 11:34 ` Shenming Lu
2021-03-12 12:02 ` Marc Zyngier
2021-03-12 12:31 ` Shenming Lu
2021-01-27 12:13 ` [PATCH v3 4/4] KVM: arm64: GICv4.1: Give a chance to save VLPI's pending state Shenming Lu
2021-02-26 8:58 ` [PATCH v3 0/4] KVM: arm64: Add VLPI migration support on GICv4.1 Shenming Lu
2021-03-11 7:03 ` Shenming Lu
2021-03-11 9:17 ` Marc Zyngier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87wnuef4oj.wl-maz@kernel.org \
--to=maz@kernel.org \
--cc=alex.williamson@redhat.com \
--cc=cohuck@redhat.com \
--cc=eric.auger@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=lushenming@huawei.com \
--cc=wanghaibin.wang@huawei.com \
--cc=will@kernel.org \
--cc=yuzenghui@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).