From: sashiko-bot@kernel.org
To: "Gautam Menghani" <gautam@linux.ibm.com>
Cc: kvm@vger.kernel.org
Subject: Re: [PATCH v3 3/3] KVM: PPC: Book3s HV: Ensure reliable usage of latency counters
Date: Fri, 06 Nov 2026 15:50:26 +0000 [thread overview]
Message-ID: <sashiko-outbox-201736@kernel.org> (raw)
In-Reply-To: <20261106153136.330165-4-gautam@linux.ibm.com>
Thank you for your contribution! Sashiko AI review found 2 potential
issues to consider:
- [Medium] KVM: PPC: Book3S HV: u8 overflow in
kvmhv_set_l2_counters_status()
- [Medium] KVM: PPC: Book3S HV: l2_counters_enable underflow across CPU
hotplug
--
commit c5caaeddc35ba638841a3b81b1767bed8f97a3e3
Author: Gautam Menghani <gautam@linux.ibm.com>
KVM: PPC: Book3s HV: Ensure reliable usage of latency counters
This commit replaces the boolean assignment of l2_counters_enable in
kvmhv_set_l2_counters_status() with spinlock-protected increments and
decrements so the kvmppc_vcpu_stats tracepoint and vpa-pmu driver can
enable VPA latency counters concurrently.
> diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
> index 5fa6f93548add..e1bde3c6b0c4e 100644
> --- a/arch/powerpc/kvm/book3s_hv.c
> +++ b/arch/powerpc/kvm/book3s_hv.c
> @@ -4142,14 +4142,19 @@ int kvmhv_get_l2_counters_status(void)
> get_lppaca()->l2_counters_enable;
> }
>
> +static DEFINE_RAW_SPINLOCK(l2_counters_lock);
> void kvmhv_set_l2_counters_status(int cpu, bool status)
> {
> + unsigned long flags;
> +
> if (!firmware_has_feature(FW_FEATURE_LPAR))
> return;
> + raw_spin_lock_irqsave(&l2_counters_lock, flags);
> if (status)
> - lppaca_of(cpu).l2_counters_enable = 1;
> + lppaca_of(cpu).l2_counters_enable++;
[Severity: Medium]
Can lppaca_of(cpu).l2_counters_enable overflow here?
In struct lppaca, l2_counters_enable is a u8, while vpa_pmu_event_init()
places no upper bound on how many perf_sw_context events can be opened and
scheduled on the same CPU via vpa_pmu_add(). When 256 consumers enable
the counters on one CPU, l2_counters_enable wraps to 0, causing the
hypervisor to stop accumulating VPA latency counters and
kvmhv_get_l2_counters_status() to return 0 while active consumers are
running.
> else
> - lppaca_of(cpu).l2_counters_enable = 0;
> + lppaca_of(cpu).l2_counters_enable--;
> + raw_spin_unlock_irqrestore(&l2_counters_lock, flags);
> }
> EXPORT_SYMBOL(kvmhv_set_l2_counters_status);
[Severity: Medium]
Could lppaca_of(cpu).l2_counters_enable underflow across CPU hotplug?
kvmhv_counters_tracepoint_regfunc() and
kvmhv_counters_tracepoint_unregfunc() both iterate over
for_each_present_cpu(cpu) without CPU hotplug callbacks:
arch/powerpc/kvm/book3s_hv.c:kvmhv_counters_tracepoint_regfunc() {
for_each_present_cpu(cpu) {
kvmhv_set_l2_counters_status(cpu, true);
}
return 0;
}
If a CPU is hot-added via pseries_add_processor() while the
kvmppc_vcpu_stats tracepoint is enabled, disabling the tracepoint
decrements l2_counters_enable on that CPU from 0 to 255 (or drops an
active vpa_pmu event's reference), leaving the VPA counters enabled after
all users exit. Conversely, hot-removing a CPU while the tracepoint is
active skips the decrement on that CPU when the tracepoint is later
disabled.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261106153136.330165-1-gautam@linux.ibm.com?part=3
next prev parent reply other threads:[~2026-11-06 15:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-06 15:31 [PATCH v3 0/3] powerpc/perf: Fix vpa-pmu driver to report correct numbers Gautam Menghani
2026-11-06 15:31 ` [PATCH v3 1/3] Revert "powerpc/perf: Add per-task/process monitoring to vpa_pmu driver" Gautam Menghani
2026-11-06 15:31 ` [PATCH v3 2/3] powerpc/perf: Update prev_count of event to get accurate values Gautam Menghani
2026-11-06 15:40 ` sashiko-bot
2026-11-06 15:31 ` [PATCH v3 3/3] KVM: PPC: Book3s HV: Ensure reliable usage of latency counters Gautam Menghani
2026-11-06 15:50 ` sashiko-bot [this message]
2026-11-06 16:02 ` [PATCH v3 0/3] powerpc/perf: Fix vpa-pmu driver to report correct numbers Gautam Menghani
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=sashiko-outbox-201736@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=gautam@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.