All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vinod Koul <vkoul@kernel.org>
To: Tom Zanussi <tom.zanussi@linux.intel.com>
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 16:41:25 +0530	[thread overview]
Message-ID: <YH623ULPRbdi1ker@vkoul-mobl.Dlink> (raw)
In-Reply-To: <d38a8b3a5d087f1df918fa98627938ef0c898208.1617467772.git.zanussi@kernel.org>

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..?

>  /* 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..

> +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..?

> +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() ?
-- 
~Vinod

  reply	other threads:[~2021-04-20 11:11 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 [this message]
2021-04-20 14:13     ` Zanussi, Tom
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=YH623ULPRbdi1ker@vkoul-mobl.Dlink \
    --to=vkoul@kernel.org \
    --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=tom.zanussi@linux.intel.com \
    --cc=tony.luck@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.