From: Srirangan Madhavan <smadhavan@nvidia.com>
To: "Lucero Palau, Alejandro" <alejandro.lucero-palau@amd.com>,
Alison Schofield <alison.schofield@intel.com>,
Bjorn Helgaas <bhelgaas@google.com>,
Dave Jiang <dave.jiang@intel.com>,
Davidlohr Bueso <dave@stgolabs.net>,
Ira Weiny <ira.weiny@intel.com>,
Jonathan Cameron <jic23@kernel.org>,
Vishal Verma <vishal.l.verma@intel.com>,
linux-cxl@vger.kernel.org, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org
Cc: Alex Williamson <alex.williamson@redhat.com>,
vsethi@nvidia.com, alwilliamson@nvidia.com,
Sai Yashwanth Reddy Kancherla <skancherla@nvidia.com>,
Vishal Aslot <vaslot@nvidia.com>,
Manish Honap <mhonap@nvidia.com>, Jiandi An <jan@nvidia.com>,
Richard Cheng <icheng@nvidia.com>,
linux-tegra@vger.kernel.org
Subject: Re: [PATCH v10 06/12] cxl: Add CXL Device Reset helper
Date: Tue, 1 Sep 2026 20:52:25 -0700 [thread overview]
Message-ID: <f3cccf7e-c002-4c79-868a-cb29f72d8869@nvidia.com> (raw)
In-Reply-To: <ad7227ce-3b14-4350-b21c-3b3ac414f84e@amd.com>
On 8/26/26 11:09 AM, Lucero Palau, Alejandro wrote:
>> + ctrl2 &= ~clear;
>> + return cxl_reset_write_ctrl2(pdev, dvsec, ctrl2);
>> +}
>
>
> These two functions are almost the same code. Merging them and using a
> bool for set or clear seems reasonable to me.
>
I merged the set and clear helpers into cxl_reset_modify_ctrl2(), which
accepts separate set and clear masks. I used masks instead of a boolean
because reset initiation needs to set INIT_CXL_RST and clear
RST_MEM_CLR_EN in the same read-modify-write operation.
>
>> +static int cxl_reset_enable_cache(struct pci_dev *pdev, int dvsec)
>> +{
>> + return cxl_reset_clear_ctrl2(pdev, dvsec,
>> + PCI_DVSEC_CXL_DISABLE_CACHING);
>> +}
>> +
>> +static int cxl_reset_initiate(struct pci_dev *pdev, int dvsec)
>> +{
>> + u16 ctrl2;
>> + int rc;
>> +
>> + rc = cxl_reset_read_ctrl2(pdev, dvsec, &ctrl2);
>> + if (rc)
>> + return rc;
>> +
>> + ctrl2 &= ~PCI_DVSEC_CXL_RST_MEM_CLR_EN;
>> + ctrl2 |= PCI_DVSEC_CXL_INIT_CXL_RST;
>> + return cxl_reset_write_ctrl2(pdev, dvsec, ctrl2);
>> +}
>> +
>> +static int cxl_reset_wait_cache_wbi(struct pci_dev *pdev, int dvsec)
>> +{
>> + unsigned long deadline;
>> + u16 status2;
>> + int rc;
>> +
>> + rc = cxl_reset_set_ctrl2(pdev, dvsec,
>> PCI_DVSEC_CXL_INIT_CACHE_WBI);
>> + if (rc)
>> + return rc;
>> +
>> + deadline = jiffies + usecs_to_jiffies(CXL_CACHE_WBI_TIMEOUT_US);
>> + do {
>> + usleep_range(CXL_CACHE_WBI_POLL_US,
>> CXL_CACHE_WBI_POLL_US + 1);
>> +
>> + rc = pci_read_config_word(pdev, dvsec +
>> PCI_DVSEC_CXL_STATUS2,
>> + &status2);
>> + if (rc)
>> + return pcibios_err_to_errno(rc);
>> + if (status2 != U16_MAX && (status2 &
>> PCI_DVSEC_CXL_CACHE_INV))
>> + return 0;
>> + } while (time_before(jiffies, deadline));
>> +
>> + return -ETIMEDOUT;
>> +}
>> +
>> +static int cxl_reset_disable_cache(struct pci_dev *pdev, int dvsec,
>> u16 cap)
>> +{
>> + int rc, rc2;
>> +
>> + rc = cxl_reset_set_ctrl2(pdev, dvsec,
>> + PCI_DVSEC_CXL_DISABLE_CACHING);
>> + if (rc)
>> + return rc;
>> +
>> + if (!(cap & PCI_DVSEC_CXL_CACHE_WBI_CAPABLE))
>> + return 0;
>> +
>> + rc = cxl_reset_wait_cache_wbi(pdev, dvsec);
>> + if (!rc)
>> + return 0;
>> +
>> + rc2 = cxl_reset_enable_cache(pdev, dvsec);
>
>
> Why do you re-enable the caching? I understand it needs to be disabled
> for safely doing the reset, but why to enable it?
>
> If there is a reason, maybe adding a comment would help to future readers.
>
>
> Thanks,
>
> Alejandro
The reset path sets it temporarily. My concern was if WBI or reset
preparation fails before reset is issued, leaving the bit set would
leave the device operating with caching disabled. The error and
completion path therefore clears the bit to restore the default caching
policy. I added a comment explaining this cleanup.
--
Regards,
Srirangan
next prev parent reply other threads:[~2026-09-02 3:52 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-04 19:29 [PATCH v10 00/12] PCI/CXL: Add CXL reset support for Type 2 devices Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 01/12] cxl: Move HDM decoder programming helpers Srirangan Madhavan
2026-08-04 19:46 ` sashiko-bot
2026-08-05 2:13 ` Alison Schofield
2026-09-02 0:52 ` Srirangan Madhavan
2026-08-20 21:13 ` Dave Jiang
2026-08-24 7:11 ` Li Ming
2026-08-24 7:19 ` Li Ming
2026-09-02 1:18 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 02/12] cxl: Pass decoder settings to HDM commit helpers Srirangan Madhavan
2026-08-04 19:49 ` sashiko-bot
2026-08-20 22:21 ` Dave Jiang
2026-09-02 1:51 ` Srirangan Madhavan
2026-08-24 7:33 ` Li Ming
2026-09-02 1:53 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 03/12] cxl: Share HDM decoder decode logic Srirangan Madhavan
2026-08-04 19:45 ` sashiko-bot
2026-08-20 23:25 ` Dave Jiang
2026-09-02 1:58 ` Srirangan Madhavan
2026-09-02 2:06 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 04/12] cxl: Cache decoder settings on PCI devices Srirangan Madhavan
2026-08-04 19:40 ` sashiko-bot
2026-08-21 22:12 ` Dave Jiang
2026-09-02 2:12 ` Srirangan Madhavan
2026-08-24 7:53 ` Li Ming
2026-09-02 2:13 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 05/12] cxl: Cache endpoint decoder settings during PCI enumeration Srirangan Madhavan
2026-08-04 19:51 ` sashiko-bot
2026-08-05 2:28 ` Alison Schofield
2026-09-02 2:14 ` Srirangan Madhavan
2026-08-17 5:30 ` Richard Cheng
2026-09-02 2:23 ` Srirangan Madhavan
2026-08-21 23:33 ` Dave Jiang
2026-09-02 2:30 ` Srirangan Madhavan
2026-08-25 6:58 ` Li Ming
2026-09-02 2:48 ` Srirangan Madhavan
2026-08-26 18:30 ` Lucero Palau, Alejandro
2026-09-02 3:22 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 06/12] cxl: Add CXL Device Reset helper Srirangan Madhavan
2026-08-04 19:42 ` sashiko-bot
2026-08-24 22:24 ` Dave Jiang
2026-08-26 18:09 ` Lucero Palau, Alejandro
2026-09-02 3:52 ` Srirangan Madhavan [this message]
2026-08-04 19:29 ` [PATCH v10 07/12] cxl: Validate HDM ranges before CXL reset Srirangan Madhavan
2026-08-04 19:38 ` sashiko-bot
2026-08-25 20:30 ` Dave Jiang
2026-09-02 4:39 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 08/12] cxl: Reject CXL Reset on multifunction devices Srirangan Madhavan
2026-08-04 19:40 ` sashiko-bot
2026-08-25 20:32 ` Dave Jiang
2026-08-26 18:47 ` Lucero Palau, Alejandro
2026-09-02 4:52 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 09/12] cxl: Restore CXL HDM state after PCI reset Srirangan Madhavan
2026-08-04 19:44 ` sashiko-bot
2026-08-17 7:12 ` Richard Cheng
2026-09-02 5:17 ` Srirangan Madhavan
2026-08-04 19:29 ` [PATCH v10 10/12] PCI/CXL: Expose CXL Reset as a PCI reset method Srirangan Madhavan
2026-08-04 20:00 ` sashiko-bot
2026-08-04 19:29 ` [PATCH v10 11/12] Documentation/ABI: Document CXL Reset " Srirangan Madhavan
2026-08-04 19:41 ` sashiko-bot
2026-08-04 19:29 ` [PATCH v10 12/12] PCI/CXL: Restore HDM state after CXL bus reset Srirangan Madhavan
2026-08-04 19:59 ` sashiko-bot
2026-08-13 9:35 ` [PATCH v10 00/12] PCI/CXL: Add CXL reset support for Type 2 devices Alejandro Lucero Palau
2026-08-25 21:13 ` Dave Jiang
2026-09-02 5:11 ` Srirangan Madhavan
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=f3cccf7e-c002-4c79-868a-cb29f72d8869@nvidia.com \
--to=smadhavan@nvidia.com \
--cc=alejandro.lucero-palau@amd.com \
--cc=alex.williamson@redhat.com \
--cc=alison.schofield@intel.com \
--cc=alwilliamson@nvidia.com \
--cc=bhelgaas@google.com \
--cc=dave.jiang@intel.com \
--cc=dave@stgolabs.net \
--cc=icheng@nvidia.com \
--cc=ira.weiny@intel.com \
--cc=jan@nvidia.com \
--cc=jic23@kernel.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-tegra@vger.kernel.org \
--cc=mhonap@nvidia.com \
--cc=skancherla@nvidia.com \
--cc=vaslot@nvidia.com \
--cc=vishal.l.verma@intel.com \
--cc=vsethi@nvidia.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