Lines Matching refs:edev
75 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pseries_pcibios_bus_add_device() local
77 edev->pe_config_addr = (pdn->busno << 16) | (pdn->devfn << 8); in pseries_pcibios_bus_add_device()
78 eeh_pe_tree_remove(edev); /* Remove as it is adding to bus pe */ in pseries_pcibios_bus_add_device()
79 eeh_pe_tree_insert(edev, physfn_pe); /* Add as VF PE type */ in pseries_pcibios_bus_add_device()
288 struct eeh_dev *edev = pdn_to_eeh_dev(pdn); in pseries_eeh_find_ecap() local
293 if (!edev || !edev->pcie_cap) in pseries_eeh_find_ecap()
323 static struct eeh_pe *pseries_eeh_pe_get_parent(struct eeh_dev *edev) in pseries_eeh_pe_get_parent() argument
326 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in pseries_eeh_pe_get_parent()
333 if (edev->physfn) in pseries_eeh_pe_get_parent()
334 pdn = pci_get_pdn(edev->physfn); in pseries_eeh_pe_get_parent()
365 struct eeh_dev *edev; in pseries_eeh_init_edev() local
378 edev = pdn_to_eeh_dev(pdn); in pseries_eeh_init_edev()
379 if (!edev) in pseries_eeh_init_edev()
388 if (edev->pe) in pseries_eeh_init_edev()
399 eeh_edev_dbg(edev, "Probing device\n"); in pseries_eeh_init_edev()
406 edev->pcix_cap = pseries_eeh_find_cap(pdn, PCI_CAP_ID_PCIX); in pseries_eeh_init_edev()
407 edev->pcie_cap = pseries_eeh_find_cap(pdn, PCI_CAP_ID_EXP); in pseries_eeh_init_edev()
408 edev->aer_cap = pseries_eeh_find_ecap(pdn, PCI_EXT_CAP_ID_ERR); in pseries_eeh_init_edev()
409 edev->mode &= 0xFFFFFF00; in pseries_eeh_init_edev()
411 edev->mode |= EEH_DEV_BRIDGE; in pseries_eeh_init_edev()
412 if (edev->pcie_cap) { in pseries_eeh_init_edev()
413 rtas_read_config(pdn, edev->pcie_cap + PCI_EXP_FLAGS, in pseries_eeh_init_edev()
417 edev->mode |= EEH_DEV_ROOT_PORT; in pseries_eeh_init_edev()
419 edev->mode |= EEH_DEV_DS_PORT; in pseries_eeh_init_edev()
426 eeh_edev_dbg(edev, "Unable to find pe_config_addr\n"); in pseries_eeh_init_edev()
435 eeh_edev_dbg(edev, "Enabling EEH on device\n"); in pseries_eeh_init_edev()
438 eeh_edev_dbg(edev, "EEH failed to enable on device (code %d)\n", ret); in pseries_eeh_init_edev()
442 edev->pe_config_addr = pe.addr; in pseries_eeh_init_edev()
446 parent = pseries_eeh_pe_get_parent(edev); in pseries_eeh_init_edev()
447 eeh_pe_tree_insert(edev, parent); in pseries_eeh_init_edev()
448 eeh_save_bars(edev); in pseries_eeh_init_edev()
449 eeh_edev_dbg(edev, "EEH enabled for device"); in pseries_eeh_init_edev()
454 eeh_edev_dbg(edev, "EEH is unsupported on device (code = %d)\n", ret); in pseries_eeh_init_edev()
459 struct eeh_dev *edev; in pseries_eeh_probe() local
470 edev = pdn_to_eeh_dev(pdn); in pseries_eeh_probe()
471 if (!edev || !edev->pe) in pseries_eeh_probe()
474 return edev; in pseries_eeh_probe()
673 static int pseries_eeh_read_config(struct eeh_dev *edev, int where, int size, u32 *val) in pseries_eeh_read_config() argument
675 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in pseries_eeh_read_config()
689 static int pseries_eeh_write_config(struct eeh_dev *edev, int where, int size, u32 val) in pseries_eeh_write_config() argument
691 struct pci_dn *pdn = eeh_dev_to_pdn(edev); in pseries_eeh_write_config()
721 static int pseries_call_allow_unfreeze(struct eeh_dev *edev) in pseries_call_allow_unfreeze() argument
730 if (pci_num_vf(edev->physfn ? edev->physfn : edev->pdev)) { in pseries_call_allow_unfreeze()
731 if (edev->pdev->is_physfn) { in pseries_call_allow_unfreeze()
732 cur_vfs = pci_num_vf(edev->pdev); in pseries_call_allow_unfreeze()
733 pdn = eeh_dev_to_pdn(edev); in pseries_call_allow_unfreeze()
745 bus = pci_iov_virtfn_bus(edev->pdev, in pseries_call_allow_unfreeze()
747 devfn = pci_iov_virtfn_devfn(edev->pdev, in pseries_call_allow_unfreeze()
756 pdn = pci_get_pdn(edev->pdev); in pseries_call_allow_unfreeze()
757 physfn_pdn = pci_get_pdn(edev->physfn); in pseries_call_allow_unfreeze()
759 vf_pe_num = physfn_pdn->pe_num_map[edev->vf_index]; in pseries_call_allow_unfreeze()
771 static int pseries_notify_resume(struct eeh_dev *edev) in pseries_notify_resume() argument
773 if (!edev) in pseries_notify_resume()
779 if (edev->pdev->is_physfn || edev->pdev->is_virtfn) in pseries_notify_resume()
780 return pseries_call_allow_unfreeze(edev); in pseries_notify_resume()