From: "Zanussi, Tom" <tom.zanussi@linux.intel.com>
To: Vinod Koul <vkoul@kernel.org>
Cc: peterz@infradead.org, acme@kernel.org, mingo@kernel.org,
kan.liang@linux.intel.com, dave.jiang@intel.com,
tony.luck@intel.com, dan.j.williams@intel.com,
linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org
Subject: Re: [PATCH v2 1/1] dmaengine: idxd: Add IDXD performance monitor support
Date: Tue, 20 Apr 2021 09:13:20 -0500 [thread overview]
Message-ID: <34f61cc9-a6d6-e5a3-5f8c-6ffae8858cce@linux.intel.com> (raw)
In-Reply-To: <YH623ULPRbdi1ker@vkoul-mobl.Dlink>
Hi Vinod,
On 4/20/2021 6:11 AM, Vinod Koul wrote:
> On 03-04-21, 11:45, Tom Zanussi wrote:
>
>> +config INTEL_IDXD_PERFMON
>> + bool "Intel Data Accelerators performance monitor support"
>> + depends on INTEL_IDXD
>> + default y
>
> default y..?
Will change to n.
>
>> /* IDXD software descriptor */
>> @@ -369,4 +399,19 @@ int idxd_cdev_get_major(struct idxd_device *idxd);
>> int idxd_wq_add_cdev(struct idxd_wq *wq);
>> void idxd_wq_del_cdev(struct idxd_wq *wq);
>>
>> +/* perfmon */
>> +#ifdef CONFIG_INTEL_IDXD_PERFMON
>
> maybe use IS_ENABLED()
>
>> @@ -556,6 +562,8 @@ static int __init idxd_init_module(void)
>> for (i = 0; i < IDXD_TYPE_MAX; i++)
>> idr_init(&idxd_idrs[i]);
>>
>> + perfmon_init();
>> +
>> err = idxd_register_bus_type();
>> if (err < 0)
>> return err;
>> @@ -589,5 +597,6 @@ static void __exit idxd_exit_module(void)
>> pci_unregister_driver(&idxd_pci_driver);
>> idxd_cdev_remove();
>> idxd_unregister_bus_type();
>> + perfmon_exit();
>
> Ideally would make sense to add perfmon module first and then add use in
> idxd..
>
OK, I'll separate this out into a separate patch.
>> +static ssize_t cpumask_show(struct device *dev, struct device_attribute *attr,
>> + char *buf);
>> +
>> +static cpumask_t perfmon_dsa_cpu_mask;
>> +static bool cpuhp_set_up;
>> +static enum cpuhp_state cpuhp_slot;
>> +
>> +static DEVICE_ATTR_RO(cpumask);
>
> Pls document these new attributes added
>
>> +static int perfmon_collect_events(struct idxd_pmu *idxd_pmu,
>> + struct perf_event *leader,
>> + bool dogrp)
>
> dogrp..?
>
Yeah, bad name, first thought on seeing it is always 'dog'. ;-)
>> +static int perfmon_validate_group(struct idxd_pmu *pmu,
>> + struct perf_event *event)
>> +{
>> + struct perf_event *leader = event->group_leader;
>> + struct idxd_pmu *fake_pmu;
>> + int i, ret = 0, n;
>> +
>> + fake_pmu = kzalloc(sizeof(*fake_pmu), GFP_KERNEL);
>> + if (!fake_pmu)
>> + return -ENOMEM;
>> +
>> + fake_pmu->pmu.name = pmu->pmu.name;
>> + fake_pmu->n_counters = pmu->n_counters;
>> +
>> + n = perfmon_collect_events(fake_pmu, leader, true);
>> + if (n < 0) {
>> + ret = n;
>> + goto out;
>> + }
>> +
>> + fake_pmu->n_events = n;
>> + n = perfmon_collect_events(fake_pmu, event, false);
>> + if (n < 0) {
>> + ret = n;
>> + goto out;
>> + }
>> +
>> + fake_pmu->n_events = n;
>> +
>> + for (i = 0; i < n; i++) {
>> + int idx;
>
> lets move it to top of the function please
>
>> +static inline u64 perfmon_pmu_read_counter(struct perf_event *event)
>> +{
>> + struct hw_perf_event *hwc = &event->hw;
>> + struct idxd_device *idxd;
>> + int cntr = hwc->idx;
>> + u64 cntrdata;
>> +
>> + idxd = event_to_idxd(event);
>> +
>> + cntrdata = ioread64(CNTRDATA_REG(idxd, cntr));
>> +
>> + return cntrdata;
>
> return ioread64() ?
>
Yeah, I removed some intervening code and didn't change this, will do.
Thanks for reviewing this,
Tom
next prev parent reply other threads:[~2021-04-20 14:13 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-03 16:45 [PATCH v2 0/1] dmaengine: idxd: IDXD pmu support Tom Zanussi
2021-04-03 16:45 ` [PATCH v2 1/1] dmaengine: idxd: Add IDXD performance monitor support Tom Zanussi
2021-04-20 11:11 ` Vinod Koul
2021-04-20 14:13 ` Zanussi, Tom [this message]
2021-04-21 6:01 ` Vinod Koul
2021-04-21 12:50 ` Zanussi, Tom
2021-04-21 15:03 ` Vinod Koul
2021-04-21 15:47 ` Zanussi, Tom
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=34f61cc9-a6d6-e5a3-5f8c-6ffae8858cce@linux.intel.com \
--to=tom.zanussi@linux.intel.com \
--cc=acme@kernel.org \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=dmaengine@vger.kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=tony.luck@intel.com \
--cc=vkoul@kernel.org \
/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;
as well as URLs for NNTP newsgroup(s).