All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Zide Chen" <zide.chen@intel.com>
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [PATCH V3 1/7] perf/x86/intel/uncore: Fix discovery unit lookup for multi-die systems
Date: Tue, 02 Jun 2026 15:22:08 +0000	[thread overview]
Message-ID: <20260602152208.967361F00893@smtp.kernel.org> (raw)
In-Reply-To: <20260602144908.263680-2-zide.chen@intel.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] The commit message inaccurately claims that a NULL unit can be expected when a CPU die is offline, justifying the removal of a valid WARN_ON_ONCE assertion, but the code path is structurally unreachable for missing units.
--

commit ddb51b3d3e54081e6dbacecec75a18fa773ae364
Author: Zide Chen <zide.chen@intel.com>

perf/x86/intel/uncore: Fix discovery unit lookup for multi-die systems

This commit fixes an issue where PMON units with the same unit ID may
retrieve the wrong node on multi-die systems by using box->dieid. It
also removes a WARN_ON_ONCE() under the assumption that a NULL unit
can be expected during CPU die offline/online scenarios.

> Remove WARN_ON_ONCE() because with the above change a NULL unit can be
> expected, e.g. when a CPU die is offline during uncore enumeration and
> the unit is not added to the RB-tree. In this case,
> intel_uncore_find_discovery_unit() returns NULL once the die becomes
> online, and it is expected that the PMU box is not functional for that
> die.

> diff --git a/arch/x86/events/intel/uncore_discovery.c b/arch/x86/events/intel/uncore_discovery.c
> index 583cbd06b9b88..60e1200c4691d 100644
> --- a/arch/x86/events/intel/uncore_discovery.c
> +++ b/arch/x86/events/intel/uncore_discovery.c
> @@ -481,8 +481,8 @@ static u64 intel_generic_uncore_box_ctl(struct intel_uncore_box *box)
>  	struct intel_uncore_discovery_unit *unit;
>  
>  	unit = intel_uncore_find_discovery_unit(box->pmu->type->boxes,
> -						-1, box->pmu->pmu_idx);
> -	if (WARN_ON_ONCE(!unit))
> +						box->dieid, box->pmu->pmu_idx);
> +	if (!unit)
>  		return 0;

[Severity: Medium]
Is the scenario described in the commit message actually possible in the
current codebase?

When a CPU die comes online, uncore_event_cpu_online() invokes
uncore_change_type_ctx(), which relies on uncore_die_has_box() to check
for the unit. If the unit is missing from the RB-tree, uncore_die_has_box()
returns false, and the box cpu assignment is skipped:

arch/x86/events/intel/uncore.c:uncore_change_type_ctx() {
    ...
    if (uncore_die_has_box(type, die, pmu->pmu_idx)) {
        box->cpu = new_cpu;
        cpumask_set_cpu(new_cpu, &pmu->cpu_mask);
    }
    ...
}

Because box->cpu remains -1, uncore_box_ref() bypasses initialization:

arch/x86/events/intel/uncore.c:uncore_box_ref() {
    ...
    if (box && box->cpu >= 0 && atomic_inc_return(&box->refcnt) == 1)
        uncore_box_init(box);
    ...
}

Furthermore, uncore_pmu_event_init() rejects event creations if box->cpu
is negative. Because of this, it appears the PMU operations (init, enable,
disable) are never executed for this box, making the call to
intel_generic_uncore_box_ctl() unreachable.

Does this mean the removed WARN_ON_ONCE(!unit) was actually a valid
assertion, and the !unit check is effectively dead code?

>  
>  	return unit->addr;

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260602144908.263680-1-zide.chen@intel.com?part=1

  reply	other threads:[~2026-06-02 15:22 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-02 14:49 [PATCH V3 0/7] perf/x86/intel/uncore: Bug fixes and cleanups Zide Chen
2026-06-02 14:49 ` [PATCH V3 1/7] perf/x86/intel/uncore: Fix discovery unit lookup for multi-die systems Zide Chen
2026-06-02 15:22   ` sashiko-bot [this message]
2026-06-09  8:21   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-06-02 14:49 ` [PATCH V3 2/7] perf/x86/intel/uncore: Guard against invalid box control address Zide Chen
2026-06-02 15:39   ` sashiko-bot
2026-06-09  8:21   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-06-02 14:49 ` [PATCH V3 3/7] perf/x86/intel/uncore: Fix PCI device refcount leak in UPI discovery Zide Chen
2026-06-09  8:21   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-06-02 14:49 ` [PATCH V3 4/7] perf/x86/intel/uncore: Defer ADL global PMON enable to enable_box() Zide Chen
2026-06-02 16:05   ` sashiko-bot
2026-06-09  8:21   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-06-02 14:49 ` [PATCH V3 5/7] perf/x86/intel/uncore: Move die_to_cpu() to uncore.c Zide Chen
2026-06-09  8:21   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-06-02 14:49 ` [PATCH V3 6/7] perf/x86/intel/uncore: Fix uncore_die_to_cpu() for offline dies Zide Chen
2026-06-09  8:21   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-06-02 14:49 ` [PATCH V3 7/7] perf/x86/intel/uncore: Implement global init callback for GNR uncore Zide Chen
2026-06-02 16:44   ` sashiko-bot
2026-06-09  8:21   ` [tip: perf/core] " tip-bot2 for Zide Chen
2026-06-03  2:48 ` [PATCH V3 0/7] perf/x86/intel/uncore: Bug fixes and cleanups Mi, Dapeng

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=20260602152208.967361F00893@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=zide.chen@intel.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 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.