All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: "Kobayashi,Daisuke" <kobayashi.da-06@fujitsu.com>
Cc: linux-pci@vger.kernel.org
Subject: Re: [RFC PATCH v1] Export PBEC Data register into sysfs
Date: Wed, 10 Jul 2024 07:28:11 -0500	[thread overview]
Message-ID: <20240710122811.GA241615@bhelgaas> (raw)
In-Reply-To: <20240626044330.106658-1-kobayashi.da-06@fujitsu.com>

Note subject line convention for drivers/pci (use "git log --oneline
drivers/pci/pci-sysfs.c")

On Wed, Jun 26, 2024 at 01:43:30PM +0900, Kobayashi,Daisuke wrote:
> This proposal aims to add a feature that outputs PCIe device power 
> consumption information to sysfs.
> 
> This feature can be implemented by adding support for PBEC (Power 
> Budgeting Extended Capability) output to the PCIe driver. PBEC is 
> defined in the PCIe specification(7.8.1) and is a standard method for
> obtaining device power consumption information.

s/This feature can be implemented by adding support/Add support/

(To change this to imperative mood and say what the patch actually
*does*, as opposed to what *could* be done.)

Include spec revision, e.g., "PCIe r6.0, sec 7.8.1"

> PCIe devices can significantly impact the overall power consumption of
> a system. However, obtaining PCIe device power consumption information 
> has traditionally been difficult. This is because the 'lspci' command, 
> which is a standard tool for displaying information about PCI devices, 
> cannot access PBEC information. `lspci` is a standard tool for displaying
> information about PCI devices.

lspci detail isn't really necessary here.  Maybe lspci *could* be
extended to display PBEC information, but that's a separate project.
It looks like the Data/Data Select issue might mean lspci would have
to get the info from the kernel, e.g., from this sysfs file, to avoid
synchronization issues.

> The PBEC Data register changes depending on the value of the PBEC Data 
> Select register. To obtain all PBEC Data register values defined in the 
> device, obtain the value of the PBEC Data register while changing the 
> value of the PBEC Data Select register.
> 
> Signed-off-by: "Kobayashi,Daisuke" <kobayashi.da-06@fujitsu.com>
> ---
>  drivers/pci/pci-sysfs.c | 28 ++++++++++++++++++++++++++++
>  1 file changed, 28 insertions(+)
> 
> diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
> index 2321fdfefd7d..b13d30da38a1 100644
> --- a/drivers/pci/pci-sysfs.c
> +++ b/drivers/pci/pci-sysfs.c
> @@ -182,6 +182,33 @@ static ssize_t resource_show(struct device *dev, struct device_attribute *attr,
>  }
>  static DEVICE_ATTR_RO(resource);
>  
> +static ssize_t pbec_show(struct device *dev, struct device_attribute *attr,
> +			 char *buf)
> +{
> +	struct pci_dev *pci_dev = to_pci_dev(dev);
> +	size_t len = 0;
> +	int i, pos;
> +	u32 data;
> +
> +	if (!pci_is_pcie(pci_dev))
> +		return 0;

Unnecessary.  Already covered by pcie_dev_attrs_are_visible().

> +	pos = pci_find_ext_capability(pci_dev, PCI_EXT_CAP_ID_PWR);
> +	if (!pos)
> +		return 0;
> +
> +	for (i = 0; i < 0xff; i++) {
> +		pci_write_config_byte(pci_dev, pos + PCI_PWR_DSR, (u8)i);
> +		pci_read_config_dword(pci_dev, pos + PCI_PWR_DATA, &data);
> +		if (!data)
> +			break;
> +		len += sysfs_emit_at(buf, len, "%04x\n", data);
> +	}
> +
> +	return len;
> +}
> +static DEVICE_ATTR_RO(pbec);

Needs a more descriptive name, I think.  Also some documentation in
Documentation/ABI/.

>  static ssize_t max_link_speed_show(struct device *dev,
>  				   struct device_attribute *attr, char *buf)
>  {
> @@ -629,6 +656,7 @@ static struct attribute *pcie_dev_attrs[] = {
>  	&dev_attr_current_link_width.attr,
>  	&dev_attr_max_link_width.attr,
>  	&dev_attr_max_link_speed.attr,
> +	&dev_attr_pbec.attr,
>  	NULL,
>  };
>  
> -- 
> 2.44.0
> 

      parent reply	other threads:[~2024-07-10 12:28 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-26  4:43 [RFC PATCH v1] Export PBEC Data register into sysfs Kobayashi,Daisuke
2024-07-10  8:22 ` Daisuke Kobayashi (Fujitsu)
2024-07-10 11:06   ` Krzysztof Wilczyński
2024-07-10 11:05 ` Krzysztof Wilczyński
2024-07-16  7:04   ` Daisuke Kobayashi (Fujitsu)
2024-08-29  8:03     ` Daisuke Kobayashi (Fujitsu)
2024-09-02 17:28       ` 'Krzysztof Wilczyński'
2024-09-03  7:55         ` Daisuke Kobayashi (Fujitsu)
2024-07-10 12:28 ` Bjorn Helgaas [this message]

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=20240710122811.GA241615@bhelgaas \
    --to=helgaas@kernel.org \
    --cc=kobayashi.da-06@fujitsu.com \
    --cc=linux-pci@vger.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 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.