Message ID | 20231228170504.720794-1-haifeng.zhao@linux.intel.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | fix vt-d hard lockup when hotplug ATS capable device | expand |
On 12/29/23 1:05 AM, Ethan Zhao wrote: > Make pci_dev_is_disconnected() public so that it can be called from > Intel VT-d driver to quickly fix/workaround the surprise removal > unplug hang issue for those ATS capable devices on PCIe switch downstream > hotplug capable ports. > > Beside pci_device_is_present() function, this one has no config space > space access, so is light enough to optimize the normal pure surprise > removal and safe removal flow. > > Tested-by: Haorong Ye<yehaorong@bytedance.com> > Signed-off-by: Ethan Zhao<haifeng.zhao@linux.intel.com> > --- > drivers/pci/pci.h | 5 ----- > include/linux/pci.h | 5 +++++ > 2 files changed, 5 insertions(+), 5 deletions(-) This should be moved before PATCH 2/5? Otherwise, PATCH 2/5 couldn't be compiled. Best regards, baolu
On 1/10/2024 1:25 PM, Baolu Lu wrote: > On 12/29/23 1:05 AM, Ethan Zhao wrote: >> Make pci_dev_is_disconnected() public so that it can be called from >> Intel VT-d driver to quickly fix/workaround the surprise removal >> unplug hang issue for those ATS capable devices on PCIe switch >> downstream >> hotplug capable ports. >> >> Beside pci_device_is_present() function, this one has no config space >> space access, so is light enough to optimize the normal pure surprise >> removal and safe removal flow. >> >> Tested-by: Haorong Ye<yehaorong@bytedance.com> >> Signed-off-by: Ethan Zhao<haifeng.zhao@linux.intel.com> >> --- >> drivers/pci/pci.h | 5 ----- >> include/linux/pci.h | 5 +++++ >> 2 files changed, 5 insertions(+), 5 deletions(-) > > This should be moved before PATCH 2/5? Otherwise, PATCH 2/5 couldn't be Seems the order was mixed when send-email was abort by network connection and sent again. [3/5] &[4/5] goes to upset. though the subject order is right. anyway will resend in next version. Thanks, Ethan > compiled. > > Best regards, > baolu
diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 5ecbcf041179..75fa2084492f 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -366,11 +366,6 @@ static inline int pci_dev_set_disconnected(struct pci_dev *dev, void *unused) return 0; } -static inline bool pci_dev_is_disconnected(const struct pci_dev *dev) -{ - return dev->error_state == pci_channel_io_perm_failure; -} - /* pci_dev priv_flags */ #define PCI_DEV_ADDED 0 #define PCI_DPC_RECOVERED 1 diff --git a/include/linux/pci.h b/include/linux/pci.h index dea043bc1e38..4779eec8b267 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -2506,6 +2506,11 @@ static inline struct pci_dev *pcie_find_root_port(struct pci_dev *dev) return NULL; } +static inline bool pci_dev_is_disconnected(const struct pci_dev *dev) +{ + return dev->error_state == pci_channel_io_perm_failure; +} + void pci_request_acs(void); bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags); bool pci_acs_path_enabled(struct pci_dev *start,