[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <MWHPR11MB1696E70F1DFFFD0F1B1AE55297340@MWHPR11MB1696.namprd11.prod.outlook.com>
Date: Sun, 27 Sep 2020 06:43:57 +0000
From: "Zhao, Haifeng" <haifeng.zhao@...el.com>
To: Christoph Hellwig <hch@...radead.org>
CC: "bhelgaas@...gle.com" <bhelgaas@...gle.com>,
"oohall@...il.com" <oohall@...il.com>,
"ruscur@...sell.cc" <ruscur@...sell.cc>,
"lukas@...ner.de" <lukas@...ner.de>,
"andriy.shevchenko@...ux.intel.com"
<andriy.shevchenko@...ux.intel.com>,
"stuart.w.hayes@...il.com" <stuart.w.hayes@...il.com>,
"mr.nuke.me@...il.com" <mr.nuke.me@...il.com>,
"mika.westerberg@...ux.intel.com" <mika.westerberg@...ux.intel.com>,
"linux-pci@...r.kernel.org" <linux-pci@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"Jia, Pei P" <pei.p.jia@...el.com>,
"ashok.raj@...ux.intel.com" <ashok.raj@...ux.intel.com>,
"Kuppuswamy, Sathyanarayanan" <sathyanarayanan.kuppuswamy@...el.com>
Subject: RE: [PATCH 1/5 V2] PCI: define a function to check and wait till port
finish DPC handling
Yep, I am think the same question, is there any other files better to put this function ?
How about pci.c ?
Thanks,
Ethan
-----Original Message-----
From: Christoph Hellwig <hch@...radead.org>
Sent: Sunday, September 27, 2020 2:24 PM
To: Zhao, Haifeng <haifeng.zhao@...el.com>
Cc: bhelgaas@...gle.com; oohall@...il.com; ruscur@...sell.cc; lukas@...ner.de; andriy.shevchenko@...ux.intel.com; stuart.w.hayes@...il.com; mr.nuke.me@...il.com; mika.westerberg@...ux.intel.com; linux-pci@...r.kernel.org; linux-kernel@...r.kernel.org; Jia, Pei P <pei.p.jia@...el.com>; ashok.raj@...ux.intel.com; Kuppuswamy, Sathyanarayanan <sathyanarayanan.kuppuswamy@...el.com>
Subject: Re: [PATCH 1/5 V2] PCI: define a function to check and wait till port finish DPC handling
> +#ifdef CONFIG_PCIE_DPC
> +static inline bool pci_wait_port_outdpc(struct pci_dev *pdev) {
> + u16 cap = pdev->dpc_cap, status;
> + u16 loop = 0;
> +
> + if (!cap) {
> + pci_WARN_ONCE(pdev, !cap, "No DPC capability initiated\n");
> + return false;
> + }
> + pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &status);
> + pci_dbg(pdev, "DPC status %x, cap %x\n", status, cap);
> + while (status & PCI_EXP_DPC_STATUS_TRIGGER && loop < 100) {
> + msleep(10);
> + loop++;
> + pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &status);
> + }
> + if (!(status & PCI_EXP_DPC_STATUS_TRIGGER)) {
> + pci_dbg(pdev, "Out of DPC %x, cost %d ms\n", status, loop*10);
> + return true;
> + }
> + pci_dbg(pdev, "Timeout to wait port out of DPC status\n");
> + return false;
> +}
I don't think that there is any good reason to have this as an inline function.
Powered by blists - more mailing lists