Linux Perf Users
 help / color / mirror / Atom feed
From: "Mi, Dapeng" <dapeng1.mi@linux.intel.com>
To: sashiko@lists.linux.dev
Cc: linux-perf-users@vger.kernel.org
Subject: Re: [Patch v7 21/24] perf/x86/intel: Enable PERF_PMU_CAP_SIMD_REGS capability
Date: Wed, 29 Apr 2026 13:25:49 +0800	[thread overview]
Message-ID: <50ba62b0-8c43-43d9-940c-ca4ac3f40fbe@linux.intel.com> (raw)
In-Reply-To: <20260425020129.77518C19425@smtp.kernel.org>


On 4/25/2026 10:01 AM, sashiko-bot@kernel.org wrote:
> Sashiko AI review found 1 potential issue(s):
> - [Medium] When sample_simd_regs_enabled is true, large PEBS incorrectly remains enabled if unsupported legacy standard registers (such as segment registers) are requested.
> --
>
> commit add2d25bc2536ced31489740914a43c7ed8e02eb
> Author: Kan Liang <kan.liang@linux.intel.com>
>
> perf/x86/intel: Enable PERF_PMU_CAP_SIMD_REGS capability
>
> This commit enables the PERF_PMU_CAP_SIMD_REGS capability when XSAVES
> support is available. It also temporarily disables large PEBS sampling
> for these new registers until arch-PEBS sampling support is added.
>
>> diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
>> --- a/arch/x86/events/intel/core.c
>> +++ b/arch/x86/events/intel/core.c
>> @@ -4424,11 +4424,33 @@ static unsigned long intel_pmu_large_pebs_flags(struct perf_event *event)
>>  		flags &= ~PERF_SAMPLE_TIME;
>>  	if (!event->attr.exclude_kernel)
>>  		flags &= ~PERF_SAMPLE_REGS_USER;
>> -	if (event->attr.sample_regs_user & ~PEBS_GP_REGS)
>> -		flags &= ~PERF_SAMPLE_REGS_USER;
>> -	if (event->attr.sample_regs_intr &
>> -	    ~(PEBS_GP_REGS | PERF_REG_EXTENDED_MASK))
>> -		flags &= ~PERF_SAMPLE_REGS_INTR;
>> +	if (event->attr.sample_simd_regs_enabled) {
>> +		u64 nolarge = PERF_X86_EGPRS_MASK | BIT_ULL(PERF_REG_X86_SSP);
>> +
>> +		/*
>> +		 * PEBS HW can only collect the XMM0-XMM15 for now.
>> +		 * Disable large PEBS for other vector registers, predicate
>> +		 * registers, eGPRs, and SSP.
>> +		 */
>> +		if (event->attr.sample_regs_user & nolarge ||
>> +		    fls64(event->attr.sample_simd_vec_reg_user) > PERF_X86_H16ZMM_BASE ||
>> +		    event->attr.sample_simd_pred_reg_user)
>> +			flags &= ~PERF_SAMPLE_REGS_USER;
>> +
>> +		if (event->attr.sample_regs_intr & nolarge ||
>> +		    fls64(event->attr.sample_simd_vec_reg_intr) > PERF_X86_H16ZMM_BASE ||
>> +		    event->attr.sample_simd_pred_reg_intr)
>> +			flags &= ~PERF_SAMPLE_REGS_INTR;
> When sample_simd_regs_enabled is true, nolarge is used to disable large PEBS
> if eGPRs or SSP are requested. However, it looks like the pre-existing
> ~PEBS_GP_REGS check was dropped in this branch.
>
> If unsupported legacy registers like segment registers (e.g. PERF_REG_X86_CS)
> are requested alongside SIMD sampling, will this bypass the check and
> incorrectly leave PERF_SAMPLE_REGS_USER or PERF_SAMPLE_REGS_INTR enabled?
>
> Since PEBS hardware batches samples and does not natively capture segment
> registers, wouldn't the delayed PMI overflow populate these missing segment
> registers using the interrupt context?
>
> Could this result in stale or delayed segment register values being provided
> for the entire batch instead of precise per-sample values?

That's right. We needs to check the bitmask of all supported registers
including eGPRs when sample_simd_regs_enabled is set. 

Besides, I would swap this patch with the next patch, then we don't need to
introduce the code and then delete them.

Thanks.


>

  reply	other threads:[~2026-04-29  5:25 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-24  0:40 [Patch v7 00/24] Support SIMD/eGPRs/SSP registers sampling for perf Dapeng Mi
2026-03-24  0:40 ` [Patch v7 01/24] perf/x86: Move hybrid PMU initialization before x86_pmu_starting_cpu() Dapeng Mi
2026-03-24  0:40 ` [Patch v7 02/24] perf/x86/intel: Avoid PEBS event on fixed counters without extended PEBS Dapeng Mi
2026-03-24  0:40 ` [Patch v7 03/24] perf/x86/intel: Enable large PEBS sampling for XMMs Dapeng Mi
2026-03-24  0:40 ` [Patch v7 04/24] perf/x86/intel: Convert x86_perf_regs to per-cpu variables Dapeng Mi
2026-03-24  0:40 ` [Patch v7 05/24] perf: Eliminate duplicate arch-specific functions definations Dapeng Mi
2026-03-24  0:41 ` [Patch v7 06/24] perf/x86: Use x86_perf_regs in the x86 nmi handler Dapeng Mi
2026-03-24  0:41 ` [Patch v7 07/24] perf/x86: Introduce x86-specific x86_pmu_setup_regs_data() Dapeng Mi
2026-03-25  5:18   ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 08/24] x86/fpu/xstate: Add xsaves_nmi() helper Dapeng Mi
2026-03-24  0:41 ` [Patch v7 09/24] x86/fpu: Ensure TIF_NEED_FPU_LOAD is set after saving FPU state Dapeng Mi
2026-03-24  0:41 ` [Patch v7 10/24] perf: Move and rename has_extended_regs() for ARCH-specific use Dapeng Mi
2026-03-24  0:41 ` [Patch v7 11/24] perf/x86: Enable XMM Register Sampling for Non-PEBS Events Dapeng Mi
2026-03-25  7:30   ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 12/24] perf/x86: Enable XMM register sampling for REGS_USER case Dapeng Mi
2026-03-25  7:58   ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 13/24] perf: Add sampling support for SIMD registers Dapeng Mi
2026-03-25  8:44   ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 14/24] perf/x86: Enable XMM sampling using sample_simd_vec_reg_* fields Dapeng Mi
2026-03-25  9:01   ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 15/24] perf/x86: Enable YMM " Dapeng Mi
2026-03-24  0:41 ` [Patch v7 16/24] perf/x86: Enable ZMM " Dapeng Mi
2026-03-24  0:41 ` [Patch v7 17/24] perf/x86: Enable OPMASK sampling using sample_simd_pred_reg_* fields Dapeng Mi
2026-03-24  0:41 ` [Patch v7 18/24] perf: Enhance perf_reg_validate() with simd_enabled argument Dapeng Mi
2026-03-24  0:41 ` [Patch v7 19/24] perf/x86: Enable eGPRs sampling using sample_regs_* fields Dapeng Mi
2026-03-24  0:41 ` [Patch v7 20/24] perf/x86: Enable SSP " Dapeng Mi
2026-03-25  9:25   ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 21/24] perf/x86/intel: Enable PERF_PMU_CAP_SIMD_REGS capability Dapeng Mi
2026-04-25  2:01   ` sashiko-bot
2026-04-29  5:25     ` Mi, Dapeng [this message]
2026-03-24  0:41 ` [Patch v7 22/24] perf/x86/intel: Enable arch-PEBS based SIMD/eGPRs/SSP sampling Dapeng Mi
2026-04-25  3:08   ` sashiko-bot
2026-04-29  5:36     ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 23/24] perf/x86: Activate back-to-back NMI detection for arch-PEBS induced NMIs Dapeng Mi
2026-04-25  3:31   ` sashiko-bot
2026-04-29  6:00     ` Mi, Dapeng
2026-03-24  0:41 ` [Patch v7 24/24] perf/x86/intel: Add sanity check for PEBS fragment size Dapeng Mi
2026-04-25  3:53   ` sashiko-bot
2026-04-29  7:04     ` Mi, Dapeng
2026-03-24  1:08 ` [Patch v7 00/24] Support SIMD/eGPRs/SSP registers sampling for perf Mi, Dapeng
2026-03-25  9:41 ` Mi, Dapeng
2026-05-13  5:52 ` 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=50ba62b0-8c43-43d9-940c-ca4ac3f40fbe@linux.intel.com \
    --to=dapeng1.mi@linux.intel.com \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=sashiko@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox