From: Zenghui Yu <yuzenghui@huawei.com>
To: Marc Zyngier <maz@kernel.org>
Cc: Oliver Upton <oliver.upton@linux.dev>, <kvmarm@lists.linux.dev>,
James Morse <james.morse@arm.com>,
Suzuki K Poulose <suzuki.poulose@arm.com>,
Eric Auger <eric.auger@redhat.com>, <kvm@vger.kernel.org>
Subject: Re: [PATCH v3 05/19] KVM: arm64: vgic-debug: Use an xarray mark for debug iterator
Date: Wed, 7 Aug 2024 13:23:23 +0800 [thread overview]
Message-ID: <4794ce2f-dc60-ca10-44f4-cdff27e2cbc0@huawei.com> (raw)
In-Reply-To: <86h6bx39m0.wl-maz@kernel.org>
On 2024/8/7 0:21, Marc Zyngier wrote:
> On Tue, 06 Aug 2024 17:00:44 +0100,
> Zenghui Yu <zenghui.yu@linux.dev> wrote:
> >
> > On 2024/8/6 22:11, Zenghui Yu wrote:
> > > @@ -112,7 +113,7 @@ static bool end_of_vgic(struct vgic_state_iter *iter)
> > > return iter->dist_id > 0 &&
> > > iter->vcpu_id == iter->nr_cpus &&
> > > iter->intid >= (iter->nr_spis + VGIC_NR_PRIVATE_IRQS) &&
> > > - iter->lpi_idx > iter->nr_lpis;
> > > + (iter->lpi_idx > iter->nr_lpis || !iter->nr_lpis);
> >
> > And this should actually be written as:
> >
> > iter->lpi_idx >= iter->nr_lpis
> >
> > even in the first commit adding the LPI status in debugfs (e294cb3a6d1a)
> > if I understand it correctly. I will give it a bit more tests tomorrow..
>
> Yup, this looks like a long-standing bug (/me pleads guilty).
>
> Maybe worth fixing them independently in order to facilitate the
> inevitable backports?
I'm sorry that I misread the code again (shouldn't have sent spam late
at night :-( ).
Consider the last LPI:
|vgic_debug_next() {
| iter_next() // get the last valid LPI intid
| end_of_vgic() // lpi_idx == nr_lpis
|}
We need to go ahead to print this LPI's state and go through one more
vgic_debug_next() to exit the iterator. So there's no problem in the
current implementation for LPI, it's just that the code is a bit hard to
follow.
I've sent the "easiest approach" [*] out now.
Thanks,
Zenghui
[*]
https://lore.kernel.org/kvmarm/20240807052024.2084-1-yuzenghui@huawei.com
next prev parent reply other threads:[~2024-08-07 5:23 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-22 20:01 [PATCH v3 00/19] KVM: arm64: Transition to a per-ITS translation cache Oliver Upton
2024-04-22 20:01 ` [PATCH v3 01/19] KVM: Treat the device list as an rculist Oliver Upton
2024-04-23 0:15 ` Sean Christopherson
2024-04-22 20:01 ` [PATCH v3 02/19] KVM: arm64: vgic-its: Walk LPI xarray in its_sync_lpi_pending_table() Oliver Upton
2024-04-22 20:01 ` [PATCH v3 03/19] KVM: arm64: vgic-its: Walk LPI xarray in vgic_its_invall() Oliver Upton
2024-04-22 20:01 ` [PATCH v3 04/19] KVM: arm64: vgic-its: Walk LPI xarray in vgic_its_cmd_handle_movall() Oliver Upton
2024-04-22 20:01 ` [PATCH v3 05/19] KVM: arm64: vgic-debug: Use an xarray mark for debug iterator Oliver Upton
2024-08-06 9:23 ` Zenghui Yu
2024-08-06 12:39 ` Zenghui Yu
2024-08-06 14:11 ` Zenghui Yu
2024-08-06 16:00 ` Zenghui Yu
2024-08-06 16:21 ` Marc Zyngier
2024-08-07 5:23 ` Zenghui Yu [this message]
2024-04-22 20:01 ` [PATCH v3 06/19] KVM: arm64: vgic-its: Get rid of vgic_copy_lpi_list() Oliver Upton
2024-04-22 20:01 ` [PATCH v3 07/19] KVM: arm64: vgic-its: Scope translation cache invalidations to an ITS Oliver Upton
2024-04-22 20:01 ` [PATCH v3 08/19] KVM: arm64: vgic-its: Maintain a translation cache per ITS Oliver Upton
2024-04-22 20:01 ` [PATCH v3 09/19] KVM: arm64: vgic-its: Spin off helper for finding ITS by doorbell addr Oliver Upton
2024-04-22 20:01 ` [PATCH v3 10/19] KVM: arm64: vgic-its: Use the per-ITS translation cache for injection Oliver Upton
2024-04-22 20:01 ` [PATCH v3 11/19] KVM: arm64: vgic-its: Rip out the global translation cache Oliver Upton
2024-04-22 20:01 ` [PATCH v3 12/19] KVM: arm64: vgic-its: Get rid of the lpi_list_lock Oliver Upton
2024-04-22 20:01 ` [PATCH v3 13/19] KVM: selftests: Align with kernel's GIC definitions Oliver Upton
2024-04-22 20:01 ` [PATCH v3 14/19] KVM: selftests: Standardise layout of GIC frames Oliver Upton
2024-04-22 20:01 ` [PATCH v3 15/19] KVM: selftests: Add quadword MMIO accessors Oliver Upton
2024-04-22 20:01 ` [PATCH v3 16/19] KVM: selftests: Add a minimal library for interacting with an ITS Oliver Upton
2024-04-22 20:01 ` [PATCH v3 17/19] KVM: selftests: Add helper for enabling LPIs on a redistributor Oliver Upton
2024-04-22 20:01 ` [PATCH v3 18/19] KVM: selftests: Use MPIDR_HWID_BITMASK from cputype.h Oliver Upton
2024-04-22 20:01 ` [PATCH v3 19/19] KVM: selftests: Add stress test for LPI injection Oliver Upton
2024-04-25 12:33 ` [PATCH v3 00/19] KVM: arm64: Transition to a per-ITS translation cache 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=4794ce2f-dc60-ca10-44f4-cdff27e2cbc0@huawei.com \
--to=yuzenghui@huawei.com \
--cc=eric.auger@redhat.com \
--cc=james.morse@arm.com \
--cc=kvm@vger.kernel.org \
--cc=kvmarm@lists.linux.dev \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=suzuki.poulose@arm.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