From: Fan Ni <nifan.cxl@gmail.com>
To: Davidlohr Bueso <dave@stgolabs.net>
Cc: dave.jiang@intel.com, dan.j.williams@intel.com,
jonathan.cameron@huawei.com, alison.schofield@intel.com,
ira.weiny@intel.com, vishal.l.verma@intel.com,
seven.yi.lee@gmail.com, ming.li@zohomail.com,
a.manzanares@samsung.com, anisa.su@samsung.com,
linux-cxl@vger.kernel.org
Subject: Re: [PATCH 1/4] cxl/pci: Introduce cxl_gpf_get_dvsec()
Date: Thu, 20 Feb 2025 16:15:21 -0800 [thread overview]
Message-ID: <67b7c59c.050a0220.6348c.723b@mx.google.com> (raw)
In-Reply-To: <20250220013604.263489-2-dave@stgolabs.net>
On Wed, Feb 19, 2025 at 05:36:01PM -0800, Davidlohr Bueso wrote:
> Add a helper to fetch the port/device GPF dvsecs. This is
> currently only used for ports, but a later patch to export
> dirty count to users will make use of the device one.
>
> Reviewed-by: Li Ming <ming.li@zohomail.com>
> Signed-off-by: Davidlohr Bueso <dave@stgolabs.net>
> ---
Reviewed-by: Fan Ni <fan.ni@samsung.com>
> drivers/cxl/core/pci.c | 30 ++++++++++++++++++++----------
> drivers/cxl/cxl.h | 2 ++
> 2 files changed, 22 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/cxl/core/pci.c b/drivers/cxl/core/pci.c
> index a5c65f79db18..96fecb799cbc 100644
> --- a/drivers/cxl/core/pci.c
> +++ b/drivers/cxl/core/pci.c
> @@ -1072,6 +1072,22 @@ int cxl_pci_get_bandwidth(struct pci_dev *pdev, struct access_coordinate *c)
> #define GPF_TIMEOUT_BASE_MAX 2
> #define GPF_TIMEOUT_SCALE_MAX 7 /* 10 seconds */
>
> +u16 cxl_gpf_get_dvsec(struct device *dev, bool is_port)
> +{
> + u16 dvsec;
> +
> + if (!dev_is_pci(dev))
> + return 0;
> +
> + dvsec = pci_find_dvsec_capability(to_pci_dev(dev), PCI_VENDOR_ID_CXL,
> + is_port ? CXL_DVSEC_PORT_GPF : CXL_DVSEC_DEVICE_GPF);
> + if (!dvsec)
> + dev_warn(dev, "%s GPF DVSEC not present\n",
> + is_port ? "Port" : "Device");
> + return dvsec;
> +}
> +EXPORT_SYMBOL_NS_GPL(cxl_gpf_get_dvsec, "CXL");
> +
> static int update_gpf_port_dvsec(struct pci_dev *pdev, int dvsec, int phase)
> {
> u64 base, scale;
> @@ -1116,26 +1132,20 @@ int cxl_gpf_port_setup(struct device *dport_dev, struct cxl_port *port)
> {
> struct pci_dev *pdev;
>
> - if (!dev_is_pci(dport_dev))
> - return 0;
> -
> - pdev = to_pci_dev(dport_dev);
> - if (!pdev || !port)
> + if (!port)
> return -EINVAL;
>
> if (!port->gpf_dvsec) {
> int dvsec;
>
> - dvsec = pci_find_dvsec_capability(pdev, PCI_VENDOR_ID_CXL,
> - CXL_DVSEC_PORT_GPF);
> - if (!dvsec) {
> - pci_warn(pdev, "Port GPF DVSEC not present\n");
> + dvsec = cxl_gpf_get_dvsec(dport_dev, true);
> + if (!dvsec)
> return -EINVAL;
> - }
>
> port->gpf_dvsec = dvsec;
> }
>
> + pdev = to_pci_dev(dport_dev);
> update_gpf_port_dvsec(pdev, port->gpf_dvsec, 1);
> update_gpf_port_dvsec(pdev, port->gpf_dvsec, 2);
>
> diff --git a/drivers/cxl/cxl.h b/drivers/cxl/cxl.h
> index 6baec4ba9141..29f2ab0d5bf6 100644
> --- a/drivers/cxl/cxl.h
> +++ b/drivers/cxl/cxl.h
> @@ -901,4 +901,6 @@ bool cxl_endpoint_decoder_reset_detected(struct cxl_port *port);
> #define __mock static
> #endif
>
> +u16 cxl_gpf_get_dvsec(struct device *dev, bool is_port);
> +
> #endif /* __CXL_H__ */
> --
> 2.39.5
>
next prev parent reply other threads:[~2025-02-21 0:15 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-20 1:36 [PATCH v4 0/4] cxl: Dirty shutdown followups Davidlohr Bueso
2025-02-20 1:36 ` [PATCH 1/4] cxl/pci: Introduce cxl_gpf_get_dvsec() Davidlohr Bueso
2025-02-20 15:34 ` Dave Jiang
2025-02-20 16:08 ` Ira Weiny
2025-02-20 17:04 ` Jonathan Cameron
2025-02-21 0:15 ` Fan Ni [this message]
2025-02-20 1:36 ` [PATCH 2/4] cxl/pmem: Rename cxl_dirty_shutdown_state() Davidlohr Bueso
2025-02-20 16:08 ` Ira Weiny
2025-02-20 17:12 ` Jonathan Cameron
2025-02-20 19:51 ` Davidlohr Bueso
2025-02-20 1:36 ` [PATCH 3/4] cxl/pmem: Export dirty shutdown count via sysfs Davidlohr Bueso
2025-02-20 16:11 ` Ira Weiny
2025-02-20 17:29 ` Jonathan Cameron
2025-02-20 19:28 ` Davidlohr Bueso
2025-02-20 1:36 ` [PATCH 4/4] tools/testing/cxl: Set Shutdown State support Davidlohr Bueso
2025-02-20 16:13 ` Ira Weiny
2025-02-20 17:30 ` Jonathan Cameron
-- strict thread matches above, loose matches on Subject: below --
2025-02-20 22:02 [PATCH v5 0/4] cxl: Dirty shutdown followups Davidlohr Bueso
2025-02-20 22:02 ` [PATCH 1/4] cxl/pci: Introduce cxl_gpf_get_dvsec() Davidlohr Bueso
2025-02-21 11:46 ` Jonathan Cameron
2025-02-19 6:28 [PATCH v3 0/4] cxl: Dirty shutdown followups Davidlohr Bueso
2025-02-19 6:28 ` [PATCH 1/4] cxl/pci: Introduce cxl_gpf_get_dvsec() Davidlohr Bueso
2025-02-19 16:27 ` Dave Jiang
2025-02-19 22:54 ` Davidlohr Bueso
2025-02-20 0:55 ` Li Ming
2025-02-19 3:05 [PATCH v3 0/4] cxl: Dirty shutdown followups Davidlohr Bueso
2025-02-19 3:05 ` [PATCH 1/4] cxl/pci: Introduce cxl_gpf_get_dvsec() Davidlohr Bueso
2025-02-19 2:14 [PATCH v2 0/4] cxl: Dirty shutdown followups Davidlohr Bueso
2025-02-19 2:14 ` [PATCH 1/4] cxl/pci: Introduce cxl_gpf_get_dvsec() Davidlohr Bueso
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=67b7c59c.050a0220.6348c.723b@mx.google.com \
--to=nifan.cxl@gmail.com \
--cc=a.manzanares@samsung.com \
--cc=alison.schofield@intel.com \
--cc=anisa.su@samsung.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=ira.weiny@intel.com \
--cc=jonathan.cameron@huawei.com \
--cc=linux-cxl@vger.kernel.org \
--cc=ming.li@zohomail.com \
--cc=seven.yi.lee@gmail.com \
--cc=vishal.l.verma@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox