Lines Matching refs:edev
202 struct eeh_dev *edev, *tmp; in eeh_pe_dev_traverse() local
213 eeh_pe_for_each_dev(pe, edev, tmp) { in eeh_pe_dev_traverse()
214 ret = fn(edev, flag); in eeh_pe_dev_traverse()
236 struct eeh_dev *edev = (struct eeh_dev *)flag; in __eeh_pe_get() local
247 if (edev->pe_config_addr == pe->addr) in __eeh_pe_get()
250 if (edev->pe_config_addr && in __eeh_pe_get()
251 (edev->pe_config_addr == pe->addr)) in __eeh_pe_get()
256 if (edev->config_addr && in __eeh_pe_get()
257 (edev->config_addr == pe->config_addr)) in __eeh_pe_get()
274 struct eeh_pe *eeh_pe_get(struct eeh_dev *edev) in eeh_pe_get() argument
276 struct eeh_pe *root = eeh_phb_pe_get(edev->phb); in eeh_pe_get()
279 pe = eeh_pe_traverse(root, __eeh_pe_get, edev); in eeh_pe_get()
292 static struct eeh_pe *eeh_pe_get_parent(struct eeh_dev *edev) in eeh_pe_get_parent() argument
295 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in eeh_pe_get_parent()
327 int eeh_add_to_parent_pe(struct eeh_dev *edev) in eeh_add_to_parent_pe() argument
332 if (!eeh_has_flag(EEH_VALID_PE_ZERO) && !edev->pe_config_addr) { in eeh_add_to_parent_pe()
334 __func__, edev->config_addr, edev->phb->global_number); in eeh_add_to_parent_pe()
344 pe = eeh_pe_get(edev); in eeh_add_to_parent_pe()
348 edev->pe = pe; in eeh_add_to_parent_pe()
351 list_add_tail(&edev->list, &pe->edevs); in eeh_add_to_parent_pe()
353 edev->phb->global_number, in eeh_add_to_parent_pe()
354 edev->config_addr >> 8, in eeh_add_to_parent_pe()
355 PCI_SLOT(edev->config_addr & 0xFF), in eeh_add_to_parent_pe()
356 PCI_FUNC(edev->config_addr & 0xFF), in eeh_add_to_parent_pe()
360 list_add_tail(&edev->list, &pe->edevs); in eeh_add_to_parent_pe()
361 edev->pe = pe; in eeh_add_to_parent_pe()
376 edev->phb->global_number, in eeh_add_to_parent_pe()
377 edev->config_addr >> 8, in eeh_add_to_parent_pe()
378 PCI_SLOT(edev->config_addr & 0xFF), in eeh_add_to_parent_pe()
379 PCI_FUNC(edev->config_addr & 0xFF), in eeh_add_to_parent_pe()
385 pe = eeh_pe_alloc(edev->phb, EEH_PE_DEVICE); in eeh_add_to_parent_pe()
390 pe->addr = edev->pe_config_addr; in eeh_add_to_parent_pe()
391 pe->config_addr = edev->config_addr; in eeh_add_to_parent_pe()
399 parent = eeh_pe_get_parent(edev); in eeh_add_to_parent_pe()
401 parent = eeh_phb_pe_get(edev->phb); in eeh_add_to_parent_pe()
404 __func__, edev->phb->global_number); in eeh_add_to_parent_pe()
405 edev->pe = NULL; in eeh_add_to_parent_pe()
417 list_add_tail(&edev->list, &pe->edevs); in eeh_add_to_parent_pe()
418 edev->pe = pe; in eeh_add_to_parent_pe()
421 edev->phb->global_number, in eeh_add_to_parent_pe()
422 edev->config_addr >> 8, in eeh_add_to_parent_pe()
423 PCI_SLOT(edev->config_addr & 0xFF), in eeh_add_to_parent_pe()
424 PCI_FUNC(edev->config_addr & 0xFF), in eeh_add_to_parent_pe()
439 int eeh_rmv_from_parent_pe(struct eeh_dev *edev) in eeh_rmv_from_parent_pe() argument
444 if (!edev->pe) { in eeh_rmv_from_parent_pe()
446 __func__, edev->phb->global_number, in eeh_rmv_from_parent_pe()
447 edev->config_addr >> 8, in eeh_rmv_from_parent_pe()
448 PCI_SLOT(edev->config_addr & 0xFF), in eeh_rmv_from_parent_pe()
449 PCI_FUNC(edev->config_addr & 0xFF)); in eeh_rmv_from_parent_pe()
454 pe = eeh_dev_to_pe(edev); in eeh_rmv_from_parent_pe()
455 edev->pe = NULL; in eeh_rmv_from_parent_pe()
456 list_del(&edev->list); in eeh_rmv_from_parent_pe()
540 struct eeh_dev *edev, *tmp; in __eeh_pe_state_mark() local
553 eeh_pe_for_each_dev(pe, edev, tmp) { in __eeh_pe_state_mark()
554 pdev = eeh_dev_to_pci_dev(edev); in __eeh_pe_state_mark()
581 struct eeh_dev *edev = data; in __eeh_pe_dev_mode_mark() local
584 edev->mode |= mode; in __eeh_pe_dev_mode_mark()
613 struct eeh_dev *edev, *tmp; in __eeh_pe_state_clear() local
631 eeh_pe_for_each_dev(pe, edev, tmp) { in __eeh_pe_state_clear()
632 pdev = eeh_dev_to_pci_dev(edev); in __eeh_pe_state_clear()
671 static void eeh_bridge_check_link(struct eeh_dev *edev) in eeh_bridge_check_link() argument
673 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in eeh_bridge_check_link()
682 if (!(edev->mode & (EEH_DEV_ROOT_PORT | EEH_DEV_DS_PORT))) in eeh_bridge_check_link()
686 __func__, edev->phb->global_number, in eeh_bridge_check_link()
687 edev->config_addr >> 8, in eeh_bridge_check_link()
688 PCI_SLOT(edev->config_addr & 0xFF), in eeh_bridge_check_link()
689 PCI_FUNC(edev->config_addr & 0xFF)); in eeh_bridge_check_link()
692 cap = edev->pcie_cap; in eeh_bridge_check_link()
744 #define SAVED_BYTE(OFF) (((u8 *)(edev->config_space))[BYTE_SWAP(OFF)])
746 static void eeh_restore_bridge_bars(struct eeh_dev *edev) in eeh_restore_bridge_bars() argument
748 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in eeh_restore_bridge_bars()
756 eeh_ops->write_config(pdn, i*4, 4, edev->config_space[i]); in eeh_restore_bridge_bars()
758 eeh_ops->write_config(pdn, 14*4, 4, edev->config_space[14]); in eeh_restore_bridge_bars()
766 eeh_ops->write_config(pdn, 15*4, 4, edev->config_space[15]); in eeh_restore_bridge_bars()
769 eeh_ops->write_config(pdn, PCI_COMMAND, 4, edev->config_space[1]); in eeh_restore_bridge_bars()
772 eeh_bridge_check_link(edev); in eeh_restore_bridge_bars()
775 static void eeh_restore_device_bars(struct eeh_dev *edev) in eeh_restore_device_bars() argument
777 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in eeh_restore_device_bars()
782 eeh_ops->write_config(pdn, i*4, 4, edev->config_space[i]); in eeh_restore_device_bars()
784 eeh_ops->write_config(pdn, 12*4, 4, edev->config_space[12]); in eeh_restore_device_bars()
792 eeh_ops->write_config(pdn, 15*4, 4, edev->config_space[15]); in eeh_restore_device_bars()
799 if (edev->config_space[1] & PCI_COMMAND_PARITY) in eeh_restore_device_bars()
803 if (edev->config_space[1] & PCI_COMMAND_SERR) in eeh_restore_device_bars()
821 struct eeh_dev *edev = (struct eeh_dev *)data; in eeh_restore_one_device_bars() local
822 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in eeh_restore_one_device_bars()
825 if (edev->mode & EEH_DEV_BRIDGE) in eeh_restore_one_device_bars()
826 eeh_restore_bridge_bars(edev); in eeh_restore_one_device_bars()
828 eeh_restore_device_bars(edev); in eeh_restore_one_device_bars()
902 struct eeh_dev *edev; in eeh_pe_bus_get() local
914 edev = list_first_entry(&pe->edevs, struct eeh_dev, list); in eeh_pe_bus_get()
915 pdev = eeh_dev_to_pci_dev(edev); in eeh_pe_bus_get()