Thread (57 messages) 57 messages, 9 authors, 2025-03-08

Re: [PATCH v7 5/5] Add debugfs based statistical counter support in DWC

From: Fan Ni <hidden>
Date: 2025-03-05 04:26:10
Also in: linux-pci, linux-perf-users, lkml

On Tue, Mar 04, 2025 at 10:40:43PM +0530, Shradha Todi wrote:
quoted
-----Original Message-----
From: Fan Ni <redacted>
Sent: 04 March 2025 02:33
To: Krzysztof Wilczyński <redacted>
Cc: Fan Ni <redacted>; Shradha Todi <redacted>; linux-kernel@vger.kernel.org; linux-
pci@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-perf-users@vger.kernel.org; manivannan.sadhasivam@linaro.org;
lpieralisi@kernel.org; robh@kernel.org; bhelgaas@google.com; jingoohan1@gmail.com; Jonathan.Cameron@huawei.com;
a.manzanares@samsung.com; pankaj.dubey@samsung.com; cassel@kernel.org; 18255117159@163.com;
xueshuai@linux.alibaba.com; renyu.zj@linux.alibaba.com; will@kernel.org; mark.rutland@arm.com
Subject: Re: [PATCH v7 5/5] Add debugfs based statistical counter support in DWC

On Tue, Mar 04, 2025 at 04:42:28AM +0900, Krzysztof Wilczyński wrote:
quoted
Hello,

[...]
quoted
quoted
+static ssize_t counter_value_read(struct file *file, char __user
+*buf, size_t count, loff_t *ppos) {
+	struct dwc_pcie_rasdes_priv *pdata = file->private_data;
+	struct dw_pcie *pci = pdata->pci;
+	struct dwc_pcie_rasdes_info *rinfo = pci->debugfs->rasdes_info;
+	char debugfs_buf[DWC_DEBUGFS_BUF_MAX];
+	ssize_t pos;
+	u32 val;
+
+	mutex_lock(&rinfo->reg_event_lock);
+	set_event_number(pdata, pci, rinfo);
+	val = dw_pcie_readl_dbi(pci, rinfo->ras_cap_offset + RAS_DES_EVENT_COUNTER_DATA_REG);
+	mutex_unlock(&rinfo->reg_event_lock);
+	pos = scnprintf(debugfs_buf, DWC_DEBUGFS_BUF_MAX, "Counter
+value: %d\n", val);
+
+	return simple_read_from_buffer(buf, count, ppos, debugfs_buf,
+pos); }
Do we need to check whether the counter is enabled or not for the
event before retrieving the counter value?
I believe, we have a patch that aims to address, have a look at:


https://lore.kernel.org/linux-pci/20250225171239.19574-1-manivannan.sa
dhasivam@linaro.org
Maybe I missed something, that seems to fix counter_enable_read(), but here is to retrieve counter value.
How dw_pcie_readl_dbi() can return something like "Counter Disabled"?

Fan
Hey Fan,
So the counter value will show 0 in case it is disabled so there will not be any issues as per say. We could add the
check here but I feel I have already exposed the functionality to check if a counter is enabled or disabled, (by reading the
counter_enable debugfs entry) so this could be handled in user space to only read the counter if it's enabled.
Ok. 
Returning 0 when the counter is disabled makes sense to me.

Just some thought.

It seems natural to me if we make "counter_value" only visiable to
users when the counter is enabled. 

Fan
quoted
quoted
Thank you!

	Krzysztof
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help