Message ID | 20231120221932.213710-3-namhyung@kernel.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2b07:b0:403:3b70:6f57 with SMTP id io7csp252084vqb; Mon, 20 Nov 2023 14:20:08 -0800 (PST) X-Google-Smtp-Source: AGHT+IHISBRmpYFKjMS/y3C1bUu02dFzr3CrpLaE4KywxGyDE0M7g+xCQokuPwnppEu2F0RsC5JW X-Received: by 2002:a05:6a20:3942:b0:189:c852:562e with SMTP id r2-20020a056a20394200b00189c852562emr9758336pzg.38.1700518808549; Mon, 20 Nov 2023 14:20:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1700518808; cv=none; d=google.com; s=arc-20160816; b=eerglpaC4QTrsmh6mYTatlN+ufVvVeu1hkir2ZY5L0Q8Zbgreq+hi2NgmSJZsgiObk C6WrGsg+K+siwgV0ZAYB4bLIZ15XHLCLqOVZBXN+2YRhi7GaZKwet8QFJC/FsbekChow CWEXEQST2YoathVtQN7WqRXzYD8xbrmJKqrTgEVmUnsDtUNPzEuXkzJyPbrZWzkH7Qk5 i/OwjpH2aSaYuk84hhY6o2v53OmEAV/Tc50Kh4JmLz4Fzj9miUD63q1r53hZ+jkaaE/0 0JitWBmTferGZq7TIpUhSnLrH7CYNrrojK28aJYYWt9cDqor8gHcgf7RIQEAPj7uWXL+ R0NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:sender :dkim-signature; bh=ZU36NcT9RPyJC6TQdfEVGdreh7ck6Zb0oyJfbLqLJ4s=; fh=b3TeBIs+CttSBZm6Hnbb3kJFExQaS46Vc9Vx9fOC4sY=; b=YDtP4XoEj4yWprYaL9n/hse3skhpUHWORTYajT3nDdH0aQcuvIZVH7VFrYATt/+PGD kHCs6oRw/W1B0QcfD/NDI6kmvKE3X4NI2K9N4PcC/UE+WOCJXBiYtqhlYxyYmmf3LXVX PwhLqiR6/b0SX95INAel3ZCikQMlwGaDGeM639Ft/Pn5UdUEnvF7GIf7clgObybLYCzu /2teLcPGGNF5VBcFhrSiVBVH3Os8AHvCDDPMZhX1MhZu26dECOipFHmd28yz7oJhy0JY hGvcR6EC+wzlVnSmOUfJyB8d7azxGnfRaSUjaXoMofTPSgwUvUpCSPh5xr4cMLSxPX0J pp1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=BHBZSCe9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id i17-20020a170902c95100b001c3da86939csi9244059pla.546.2023.11.20.14.20.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Nov 2023 14:20:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=BHBZSCe9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 62A358032EEF; Mon, 20 Nov 2023 14:20:06 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232677AbjKTWTp (ORCPT <rfc822;heyuhang3455@gmail.com> + 27 others); Mon, 20 Nov 2023 17:19:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232587AbjKTWTk (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 20 Nov 2023 17:19:40 -0500 Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1FEE391 for <linux-kernel@vger.kernel.org>; Mon, 20 Nov 2023 14:19:37 -0800 (PST) Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-1cc2575dfc7so34247355ad.1 for <linux-kernel@vger.kernel.org>; Mon, 20 Nov 2023 14:19:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700518776; x=1701123576; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:from:to:cc:subject:date :message-id:reply-to; bh=ZU36NcT9RPyJC6TQdfEVGdreh7ck6Zb0oyJfbLqLJ4s=; b=BHBZSCe9TsuJXRnWjynxNsorVEt2YpNDI5jBGvOdc0lS2BVO9kGRDmab+buvBF1XDF tu7hhr7ZR57P73qhf0EssUW7071iC1TrGWXMxb+lHzpNMTmhWE+USEYdog1DDnmPwp4Q 0vIg0Yx3r5cEKb5thX8sJKUejl3RdXbrFh3xyIeSHaCbSIsJUpsmIVmkVzoqERBCFbI1 dMuzWfVSVANEeHQJT/1YFOUWgXz08OkQuHh4w0MqSasRlrR26BbTI7010TgZh5i0YnB8 4HECP1qFKRiwv3VUpWERU4lX4yA1OgrQEvnawmrFjngupfDQAPLfkrRQV6hqQ89LY1ps Jkgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700518776; x=1701123576; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZU36NcT9RPyJC6TQdfEVGdreh7ck6Zb0oyJfbLqLJ4s=; b=oRbh/2nLsIn5vL9DcpTuDtfwbE53T25yoO4k5WXlbXDhAGPV3zsWJOf3JCF1LwtZ/j ZfknrOOgbn6E6kqscGIjQrO0nBVSLrDIPPfAz2Xs7ex1MZbAj6eZd7SDyr7QOIVfNKH+ myYUjEZ9SuUJVAwOUIm9FVBe0xmw3VaUHdGuugvuqcKJiBaUcL9jPJgTl9hVEyx+THOr biBgcFX/wNzwtJ5N1H3HOd/7tBtrX8ASs6kMaKFWHr68EEDkT1fyJ0WhcFVaenHOBioc 0uW2OoDJMfEbBMlu77C9NrxIKJstGdvP3wC27PwhvDha0Sis9E7k6H8RGSoGfNIkpuco Y3WA== X-Gm-Message-State: AOJu0YzWNk03KCIBqzJQqTfFRJR8K82BDcVMyPFVjKXIlU0V6NKEfDJJ lzm/INv/xYYlt7z2H9FopeY= X-Received: by 2002:a17:902:a985:b0:1cc:58f1:8646 with SMTP id bh5-20020a170902a98500b001cc58f18646mr7364589plb.50.1700518776489; Mon, 20 Nov 2023 14:19:36 -0800 (PST) Received: from bangji.hsd1.ca.comcast.net ([2601:647:6780:42e0:75c6:4212:ae99:93b6]) by smtp.gmail.com with ESMTPSA id d4-20020a170902c18400b001c9c47d6cb9sm3528246pld.99.2023.11.20.14.19.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Nov 2023 14:19:36 -0800 (PST) Sender: Namhyung Kim <namhyung@gmail.com> From: Namhyung Kim <namhyung@kernel.org> To: Peter Zijlstra <peterz@infradead.org>, Ingo Molnar <mingo@kernel.org> Cc: Mark Rutland <mark.rutland@arm.com>, Alexander Shishkin <alexander.shishkin@linux.intel.com>, Arnaldo Carvalho de Melo <acme@kernel.org>, LKML <linux-kernel@vger.kernel.org>, Ian Rogers <irogers@google.com>, Kan Liang <kan.liang@linux.intel.com>, Mingwei Zhang <mizhang@google.com> Subject: [PATCH 3/3] perf/x86: Add CAP_NO_INTERRUPT for uncore PMUs Date: Mon, 20 Nov 2023 14:19:32 -0800 Message-ID: <20231120221932.213710-3-namhyung@kernel.org> X-Mailer: git-send-email 2.43.0.rc1.413.gea7ed67945-goog In-Reply-To: <20231120221932.213710-1-namhyung@kernel.org> References: <20231120221932.213710-1-namhyung@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Mon, 20 Nov 2023 14:20:06 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783123210208432177 X-GMAIL-MSGID: 1783123210208432177 |
Series |
[1/3] perf/core: Update perf_adjust_freq_unthr_context()
|
|
Commit Message
Namhyung Kim
Nov. 20, 2023, 10:19 p.m. UTC
It doesn't support sampling in uncore PMU events. While it's
technically possible to generate interrupts, let's treat it as if it
has no interrupt in order to skip the freq adjust/unthrottling logic
in the timer handler which is only meaningful to sampling events.
Also remove the sampling event check because it'd be done in the general
code in the perf_event_open syscall.
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
---
arch/x86/events/intel/uncore.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
Comments
On 2023-11-20 5:19 p.m., Namhyung Kim wrote: > It doesn't support sampling in uncore PMU events. While it's > technically possible to generate interrupts, let's treat it as if it > has no interrupt in order to skip the freq adjust/unthrottling logic > in the timer handler which is only meaningful to sampling events. > > Also remove the sampling event check because it'd be done in the general > code in the perf_event_open syscall. > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- > arch/x86/events/intel/uncore.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c > index 69043e02e8a7..f7e6228bd1b1 100644 > --- a/arch/x86/events/intel/uncore.c > +++ b/arch/x86/events/intel/uncore.c > @@ -744,10 +744,6 @@ static int uncore_pmu_event_init(struct perf_event *event) > if (pmu->func_id < 0) > return -ENOENT; > > - /* Sampling not supported yet */ > - if (hwc->sample_period) > - return -EINVAL; > - > /* > * Place all uncore events for a particular physical package > * onto a single cpu > @@ -919,7 +915,12 @@ static int uncore_pmu_register(struct intel_uncore_pmu *pmu) > .stop = uncore_pmu_event_stop, > .read = uncore_pmu_event_read, > .module = THIS_MODULE, > - .capabilities = PERF_PMU_CAP_NO_EXCLUDE, > + /* > + * It doesn't allow sampling for uncore events, let's > + * treat the PMU has no interrupts to skip them in the > + * perf_adjust_freq_unthr_context(). > + */ > + .capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT, > .attr_update = pmu->type->attr_update, > }; There is a special customized uncore PMU which needs the flag as well. diff --git a/arch/x86/events/intel/uncore_snb.c b/arch/x86/events/intel/uncore_snb.c index 7fd4334e12a1..46a63e291975 100644 --- a/arch/x86/events/intel/uncore_snb.c +++ b/arch/x86/events/intel/uncore_snb.c @@ -1013,7 +1013,7 @@ static struct pmu snb_uncore_imc_pmu = { .start = uncore_pmu_event_start, .stop = uncore_pmu_event_stop, .read = uncore_pmu_event_read, - .capabilities = PERF_PMU_CAP_NO_EXCLUDE, + .capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT, }; static struct intel_uncore_ops snb_uncore_imc_ops = { Thanks, Kan > } else {
Hi Kan, On Tue, Nov 21, 2023 at 7:59 AM Liang, Kan <kan.liang@linux.intel.com> wrote: > > > > On 2023-11-20 5:19 p.m., Namhyung Kim wrote: > > It doesn't support sampling in uncore PMU events. While it's > > technically possible to generate interrupts, let's treat it as if it > > has no interrupt in order to skip the freq adjust/unthrottling logic > > in the timer handler which is only meaningful to sampling events. > > > > Also remove the sampling event check because it'd be done in the general > > code in the perf_event_open syscall. > > > > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > > --- > > arch/x86/events/intel/uncore.c | 11 ++++++----- > > 1 file changed, 6 insertions(+), 5 deletions(-) > > > > diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c > > index 69043e02e8a7..f7e6228bd1b1 100644 > > --- a/arch/x86/events/intel/uncore.c > > +++ b/arch/x86/events/intel/uncore.c > > @@ -744,10 +744,6 @@ static int uncore_pmu_event_init(struct perf_event *event) > > if (pmu->func_id < 0) > > return -ENOENT; > > > > - /* Sampling not supported yet */ > > - if (hwc->sample_period) > > - return -EINVAL; > > - > > /* > > * Place all uncore events for a particular physical package > > * onto a single cpu > > @@ -919,7 +915,12 @@ static int uncore_pmu_register(struct intel_uncore_pmu *pmu) > > .stop = uncore_pmu_event_stop, > > .read = uncore_pmu_event_read, > > .module = THIS_MODULE, > > - .capabilities = PERF_PMU_CAP_NO_EXCLUDE, > > + /* > > + * It doesn't allow sampling for uncore events, let's > > + * treat the PMU has no interrupts to skip them in the > > + * perf_adjust_freq_unthr_context(). > > + */ > > + .capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT, > > .attr_update = pmu->type->attr_update, > > }; > > > There is a special customized uncore PMU which needs the flag as well. Ok, I will add that too. Btw, during the work I noticed many PMU drivers didn't set the CAP_NO_INTERRUPT flag even if they didn't support sampling and rejected the sampling events manually in the ->event_init() callback. I guess it's because the name of the flag is somewhat misleading. As the PMU drivers handle IRQ (for overflows), they thought they had interrupts and didn't set the flag. I think it'd be better to rename it to CAP_NO_SAMPLING to reveal the intention. And then we could just set the flag in the pmu.capabilities and remove the manual checks. The benefit is it can skip the PMUs in the timer tick handler even if it needs to unthrottle some events. What do you think? Thanks, Namhyung > > diff --git a/arch/x86/events/intel/uncore_snb.c > b/arch/x86/events/intel/uncore_snb.c > index 7fd4334e12a1..46a63e291975 100644 > --- a/arch/x86/events/intel/uncore_snb.c > +++ b/arch/x86/events/intel/uncore_snb.c > @@ -1013,7 +1013,7 @@ static struct pmu snb_uncore_imc_pmu = { > .start = uncore_pmu_event_start, > .stop = uncore_pmu_event_stop, > .read = uncore_pmu_event_read, > - .capabilities = PERF_PMU_CAP_NO_EXCLUDE, > + .capabilities = PERF_PMU_CAP_NO_EXCLUDE | > PERF_PMU_CAP_NO_INTERRUPT, > }; > > static struct intel_uncore_ops snb_uncore_imc_ops = { > > > Thanks, > Kan > > } else {
On 2023-11-21 1:30 p.m., Namhyung Kim wrote: > Hi Kan, > > On Tue, Nov 21, 2023 at 7:59 AM Liang, Kan <kan.liang@linux.intel.com> wrote: >> >> >> >> On 2023-11-20 5:19 p.m., Namhyung Kim wrote: >>> It doesn't support sampling in uncore PMU events. While it's >>> technically possible to generate interrupts, let's treat it as if it >>> has no interrupt in order to skip the freq adjust/unthrottling logic >>> in the timer handler which is only meaningful to sampling events. >>> >>> Also remove the sampling event check because it'd be done in the general >>> code in the perf_event_open syscall. >>> >>> Signed-off-by: Namhyung Kim <namhyung@kernel.org> >>> --- >>> arch/x86/events/intel/uncore.c | 11 ++++++----- >>> 1 file changed, 6 insertions(+), 5 deletions(-) >>> >>> diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c >>> index 69043e02e8a7..f7e6228bd1b1 100644 >>> --- a/arch/x86/events/intel/uncore.c >>> +++ b/arch/x86/events/intel/uncore.c >>> @@ -744,10 +744,6 @@ static int uncore_pmu_event_init(struct perf_event *event) >>> if (pmu->func_id < 0) >>> return -ENOENT; >>> >>> - /* Sampling not supported yet */ >>> - if (hwc->sample_period) >>> - return -EINVAL; >>> - >>> /* >>> * Place all uncore events for a particular physical package >>> * onto a single cpu >>> @@ -919,7 +915,12 @@ static int uncore_pmu_register(struct intel_uncore_pmu *pmu) >>> .stop = uncore_pmu_event_stop, >>> .read = uncore_pmu_event_read, >>> .module = THIS_MODULE, >>> - .capabilities = PERF_PMU_CAP_NO_EXCLUDE, >>> + /* >>> + * It doesn't allow sampling for uncore events, let's >>> + * treat the PMU has no interrupts to skip them in the >>> + * perf_adjust_freq_unthr_context(). >>> + */ >>> + .capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT, >>> .attr_update = pmu->type->attr_update, >>> }; >> >> >> There is a special customized uncore PMU which needs the flag as well. > > Ok, I will add that too. > > Btw, during the work I noticed many PMU drivers didn't set the > CAP_NO_INTERRUPT flag even if they didn't support sampling and > rejected the sampling events manually in the ->event_init() callback. > > I guess it's because the name of the flag is somewhat misleading. > As the PMU drivers handle IRQ (for overflows), they thought they had > interrupts and didn't set the flag. I think it'd be better to rename it to > CAP_NO_SAMPLING to reveal the intention. And then we could just set > the flag in the pmu.capabilities and remove the manual checks. > > The benefit is it can skip the PMUs in the timer tick handler even if > it needs to unthrottle some events. What do you think? > I agree. The current name is kind of misleading. The patch, which introduced the flag (commit id 53b25335dd60 ("perf: Disable sampled events if no PMU interrupt")), also tried to disable the sampled events on a no-sampling supported platform. The renaming sounds good to me. Thanks, Kan
On Tue, Nov 21, 2023 at 11:26 AM Liang, Kan <kan.liang@linux.intel.com> wrote: > > > > On 2023-11-21 1:30 p.m., Namhyung Kim wrote: > > Hi Kan, > > > > On Tue, Nov 21, 2023 at 7:59 AM Liang, Kan <kan.liang@linux.intel.com> wrote: > >> > >> > >> > >> On 2023-11-20 5:19 p.m., Namhyung Kim wrote: > >>> It doesn't support sampling in uncore PMU events. While it's > >>> technically possible to generate interrupts, let's treat it as if it > >>> has no interrupt in order to skip the freq adjust/unthrottling logic > >>> in the timer handler which is only meaningful to sampling events. > >>> > >>> Also remove the sampling event check because it'd be done in the general > >>> code in the perf_event_open syscall. > >>> > >>> Signed-off-by: Namhyung Kim <namhyung@kernel.org> > >>> --- > >>> arch/x86/events/intel/uncore.c | 11 ++++++----- > >>> 1 file changed, 6 insertions(+), 5 deletions(-) > >>> > >>> diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c > >>> index 69043e02e8a7..f7e6228bd1b1 100644 > >>> --- a/arch/x86/events/intel/uncore.c > >>> +++ b/arch/x86/events/intel/uncore.c > >>> @@ -744,10 +744,6 @@ static int uncore_pmu_event_init(struct perf_event *event) > >>> if (pmu->func_id < 0) > >>> return -ENOENT; > >>> > >>> - /* Sampling not supported yet */ > >>> - if (hwc->sample_period) > >>> - return -EINVAL; > >>> - > >>> /* > >>> * Place all uncore events for a particular physical package > >>> * onto a single cpu > >>> @@ -919,7 +915,12 @@ static int uncore_pmu_register(struct intel_uncore_pmu *pmu) > >>> .stop = uncore_pmu_event_stop, > >>> .read = uncore_pmu_event_read, > >>> .module = THIS_MODULE, > >>> - .capabilities = PERF_PMU_CAP_NO_EXCLUDE, > >>> + /* > >>> + * It doesn't allow sampling for uncore events, let's > >>> + * treat the PMU has no interrupts to skip them in the > >>> + * perf_adjust_freq_unthr_context(). > >>> + */ > >>> + .capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT, > >>> .attr_update = pmu->type->attr_update, > >>> }; > >> > >> > >> There is a special customized uncore PMU which needs the flag as well. > > > > Ok, I will add that too. > > > > Btw, during the work I noticed many PMU drivers didn't set the > > CAP_NO_INTERRUPT flag even if they didn't support sampling and > > rejected the sampling events manually in the ->event_init() callback. > > > > I guess it's because the name of the flag is somewhat misleading. > > As the PMU drivers handle IRQ (for overflows), they thought they had > > interrupts and didn't set the flag. I think it'd be better to rename it to > > CAP_NO_SAMPLING to reveal the intention. And then we could just set > > the flag in the pmu.capabilities and remove the manual checks. > > > > The benefit is it can skip the PMUs in the timer tick handler even if > > it needs to unthrottle some events. What do you think? > > > > I agree. The current name is kind of misleading. > > The patch, which introduced the flag (commit id 53b25335dd60 ("perf: > Disable sampled events if no PMU interrupt")), also tried to disable the > sampled events on a no-sampling supported platform. > > The renaming sounds good to me. Thank Kan for the review. Peter and Ingo, would you please pick up the first two patches if you don't have any concerns? Then I can work on the renaming on top. Thanks, Namhyung
diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c index 69043e02e8a7..f7e6228bd1b1 100644 --- a/arch/x86/events/intel/uncore.c +++ b/arch/x86/events/intel/uncore.c @@ -744,10 +744,6 @@ static int uncore_pmu_event_init(struct perf_event *event) if (pmu->func_id < 0) return -ENOENT; - /* Sampling not supported yet */ - if (hwc->sample_period) - return -EINVAL; - /* * Place all uncore events for a particular physical package * onto a single cpu @@ -919,7 +915,12 @@ static int uncore_pmu_register(struct intel_uncore_pmu *pmu) .stop = uncore_pmu_event_stop, .read = uncore_pmu_event_read, .module = THIS_MODULE, - .capabilities = PERF_PMU_CAP_NO_EXCLUDE, + /* + * It doesn't allow sampling for uncore events, let's + * treat the PMU has no interrupts to skip them in the + * perf_adjust_freq_unthr_context(). + */ + .capabilities = PERF_PMU_CAP_NO_EXCLUDE | PERF_PMU_CAP_NO_INTERRUPT, .attr_update = pmu->type->attr_update, }; } else {