Lines Matching refs:edev
168 static size_t eeh_dump_dev_log(struct eeh_dev *edev, char *buf, size_t len) in eeh_dump_dev_log() argument
176 edev->pe->phb->global_number, edev->bdfn >> 8, in eeh_dump_dev_log()
177 PCI_SLOT(edev->bdfn), PCI_FUNC(edev->bdfn)); in eeh_dump_dev_log()
179 edev->pe->phb->global_number, edev->bdfn >> 8, in eeh_dump_dev_log()
180 PCI_SLOT(edev->bdfn), PCI_FUNC(edev->bdfn)); in eeh_dump_dev_log()
182 eeh_ops->read_config(edev, PCI_VENDOR_ID, 4, &cfg); in eeh_dump_dev_log()
186 eeh_ops->read_config(edev, PCI_COMMAND, 4, &cfg); in eeh_dump_dev_log()
191 if (edev->mode & EEH_DEV_BRIDGE) { in eeh_dump_dev_log()
192 eeh_ops->read_config(edev, PCI_SEC_STATUS, 2, &cfg); in eeh_dump_dev_log()
196 eeh_ops->read_config(edev, PCI_BRIDGE_CONTROL, 2, &cfg); in eeh_dump_dev_log()
202 cap = edev->pcix_cap; in eeh_dump_dev_log()
204 eeh_ops->read_config(edev, cap, 4, &cfg); in eeh_dump_dev_log()
208 eeh_ops->read_config(edev, cap+4, 4, &cfg); in eeh_dump_dev_log()
214 cap = edev->pcie_cap; in eeh_dump_dev_log()
220 eeh_ops->read_config(edev, cap+4*i, 4, &cfg); in eeh_dump_dev_log()
241 cap = edev->aer_cap; in eeh_dump_dev_log()
247 eeh_ops->read_config(edev, cap+4*i, 4, &cfg); in eeh_dump_dev_log()
271 struct eeh_dev *edev, *tmp; in eeh_dump_pe_log() local
274 eeh_pe_for_each_dev(pe, edev, tmp) in eeh_dump_pe_log()
275 *plen += eeh_dump_dev_log(edev, pci_regs_buf + *plen, in eeh_dump_pe_log()
416 int eeh_dev_check_failure(struct eeh_dev *edev) in eeh_dev_check_failure() argument
431 if (!edev) { in eeh_dev_check_failure()
435 dev = eeh_dev_to_pci_dev(edev); in eeh_dev_check_failure()
436 pe = eeh_dev_to_pe(edev); in eeh_dev_check_failure()
441 eeh_edev_dbg(edev, "Ignored check\n"); in eeh_dev_check_failure()
476 eeh_edev_err(edev, "%d reads ignored for recovering device at location=%s driver=%s\n", in eeh_dev_check_failure()
480 eeh_edev_err(edev, "Might be infinite loop in %s driver\n", in eeh_dev_check_failure()
574 struct eeh_dev *edev; in eeh_check_failure() local
578 edev = eeh_addr_cache_get_dev(addr); in eeh_check_failure()
579 if (!edev) { in eeh_check_failure()
584 return eeh_dev_check_failure(edev); in eeh_check_failure()
666 static void eeh_disable_and_save_dev_state(struct eeh_dev *edev, in eeh_disable_and_save_dev_state() argument
669 struct pci_dev *pdev = eeh_dev_to_pci_dev(edev); in eeh_disable_and_save_dev_state()
692 static void eeh_restore_dev_state(struct eeh_dev *edev, void *userdata) in eeh_restore_dev_state() argument
694 struct pci_dev *pdev = eeh_dev_to_pci_dev(edev); in eeh_restore_dev_state()
702 eeh_ops->restore_config(edev); in eeh_restore_dev_state()
719 struct eeh_dev *edev = pci_dev_to_eeh_dev(dev); in pcibios_set_pcie_reset_state() local
720 struct eeh_pe *pe = eeh_dev_to_pe(edev); in pcibios_set_pcie_reset_state()
773 static void eeh_set_dev_freset(struct eeh_dev *edev, void *flag) in eeh_set_dev_freset() argument
778 dev = eeh_dev_to_pci_dev(edev); in eeh_set_dev_freset()
883 void eeh_save_bars(struct eeh_dev *edev) in eeh_save_bars() argument
887 if (!edev) in eeh_save_bars()
891 eeh_ops->read_config(edev, i * 4, 4, &edev->config_space[i]); in eeh_save_bars()
899 if (edev->mode & EEH_DEV_BRIDGE) in eeh_save_bars()
900 edev->config_space[1] |= PCI_COMMAND_MASTER; in eeh_save_bars()
989 struct eeh_dev *edev; in eeh_probe_device() local
1002 edev = eeh_ops->probe(dev); in eeh_probe_device()
1003 if (!edev) { in eeh_probe_device()
1017 if (edev->pdev && edev->pdev != dev) { in eeh_probe_device()
1018 eeh_pe_tree_remove(edev); in eeh_probe_device()
1019 eeh_addr_cache_rmv_dev(edev->pdev); in eeh_probe_device()
1020 eeh_sysfs_remove_device(edev->pdev); in eeh_probe_device()
1027 edev->mode |= EEH_DEV_NO_HANDLER; in eeh_probe_device()
1031 edev->pdev = dev; in eeh_probe_device()
1032 dev->dev.archdata.edev = edev; in eeh_probe_device()
1049 struct eeh_dev *edev; in eeh_remove_device() local
1053 edev = pci_dev_to_eeh_dev(dev); in eeh_remove_device()
1058 if (!edev || !edev->pdev || !edev->pe) { in eeh_remove_device()
1069 edev->pdev = NULL; in eeh_remove_device()
1075 if (edev->mode & EEH_DEV_SYSFS) in eeh_remove_device()
1084 edev->mode |= EEH_DEV_NO_HANDLER; in eeh_remove_device()
1094 edev->in_error = false; in eeh_remove_device()
1095 dev->dev.archdata.edev = NULL; in eeh_remove_device()
1096 if (!(edev->pe->state & EEH_PE_KEEP)) in eeh_remove_device()
1097 eeh_pe_tree_remove(edev); in eeh_remove_device()
1099 edev->mode |= EEH_DEV_DISCONNECTED; in eeh_remove_device()
1133 struct eeh_dev *edev, *tmp; in eeh_pe_change_owner() local
1148 eeh_pe_for_each_dev(pe, edev, tmp) { in eeh_pe_change_owner()
1149 pdev = eeh_dev_to_pci_dev(edev); in eeh_pe_change_owner()
1188 struct eeh_dev *edev; in eeh_dev_open() local
1198 edev = pci_dev_to_eeh_dev(pdev); in eeh_dev_open()
1199 if (!edev || !edev->pe) in eeh_dev_open()
1208 ret = eeh_pe_change_owner(edev->pe); in eeh_dev_open()
1213 atomic_inc(&edev->pe->pass_dev_cnt); in eeh_dev_open()
1233 struct eeh_dev *edev; in eeh_dev_release() local
1242 edev = pci_dev_to_eeh_dev(pdev); in eeh_dev_release()
1243 if (!edev || !edev->pe || !eeh_pe_passed(edev->pe)) in eeh_dev_release()
1247 WARN_ON(atomic_dec_if_positive(&edev->pe->pass_dev_cnt) < 0); in eeh_dev_release()
1248 eeh_pe_change_owner(edev->pe); in eeh_dev_release()
1281 struct eeh_dev *edev; in eeh_iommu_group_to_pe() local
1293 edev = pci_dev_to_eeh_dev(pdev); in eeh_iommu_group_to_pe()
1294 if (!edev || !edev->pe) in eeh_iommu_group_to_pe()
1297 return edev->pe; in eeh_iommu_group_to_pe()
1406 struct eeh_dev *edev, *tmp; in eeh_pe_reenable_devices() local
1416 eeh_pe_for_each_dev(pe, edev, tmp) { in eeh_pe_reenable_devices()
1417 pdev = eeh_dev_to_pci_dev(edev); in eeh_pe_reenable_devices()
1699 struct eeh_dev *edev; in eeh_dev_check_write() local
1706 edev = pci_dev_to_eeh_dev(pdev); in eeh_dev_check_write()
1707 if (!edev) { in eeh_dev_check_write()
1713 ret = eeh_dev_check_failure(edev); in eeh_dev_check_write()