| /linux/arch/powerpc/platforms/powernv/ |
| H A D | pci-ioda.c | 114 static struct pnv_ioda_pe *pnv_ioda_init_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_init_pe() argument 118 phb->ioda.pe_array[pe_no].phb = phb; in pnv_ioda_init_pe() 119 phb->ioda.pe_array[pe_no].pe_number = pe_no; in pnv_ioda_init_pe() 120 phb->ioda.pe_array[pe_no].dma_setup_done = false; in pnv_ioda_init_pe() 127 rc = opal_pci_eeh_freeze_clear(phb->opal_id, pe_no, in pnv_ioda_init_pe() 131 __func__, rc, phb->hose->global_number, pe_no); in pnv_ioda_init_pe() 133 return &phb->ioda.pe_array[pe_no]; in pnv_ioda_init_pe() 136 static void pnv_ioda_reserve_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_reserve_pe() argument 138 if (!(pe_no >= 0 && pe_no < phb->ioda.total_pe_num)) { in pnv_ioda_reserve_pe() 140 __func__, pe_no, phb->hose->global_number); in pnv_ioda_reserve_pe() [all …]
|
| H A D | eeh-powernv.c | 108 struct pnv_phb *phb = hose->private_data; in pnv_eeh_dbgfs_set() local 110 out_be64(phb->regs + offset, val); in pnv_eeh_dbgfs_set() 117 struct pnv_phb *phb = hose->private_data; in pnv_eeh_dbgfs_get() local 119 *val = in_be64(phb->regs + offset); in pnv_eeh_dbgfs_get() 148 struct pnv_phb *phb; in pnv_eeh_enable_phbs() local 151 phb = hose->private_data; in pnv_eeh_enable_phbs() 158 phb->flags |= PNV_PHB_FLAG_EEH; in pnv_eeh_enable_phbs() 160 phb->flags &= ~PNV_PHB_FLAG_EEH; in pnv_eeh_enable_phbs() 175 struct pnv_phb *phb; in pnv_eeh_post_init() local 203 phb = hose->private_data; in pnv_eeh_post_init() [all …]
|
| H A D | pci-sriov.c | 145 struct pnv_phb *phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_ioda_fixup_iov_resources() local 156 mul = phb->ioda.total_pe_num; in pnv_pci_ioda_fixup_iov_resources() 180 if (vf_bar_sz > (phb->ioda.m64_segsize >> 2)) { in pnv_pci_ioda_fixup_iov_resources() 251 struct pnv_phb *phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_iov_resource_alignment() local 281 return phb->ioda.total_pe_num * align; in pnv_pci_iov_resource_alignment() 287 struct pnv_phb *phb; in pnv_pci_vf_release_m64() local 290 phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_vf_release_m64() 294 opal_pci_phb_mmio_enable(phb->opal_id, in pnv_pci_vf_release_m64() 299 clear_bit(window_id, &phb->ioda.m64_bar_alloc); in pnv_pci_vf_release_m64() 311 static int64_t pnv_ioda_map_m64_segmented(struct pnv_phb *phb, in pnv_ioda_map_m64_segmented() argument [all …]
|
| H A D | ocxl.c | 165 struct pnv_phb *phb = hose->private_data; in pnv_ocxl_fixup_actag() local 172 if (phb->type != PNV_PHB_NPU_OCAPI) in pnv_ocxl_fixup_actag() 350 struct pnv_phb *phb = hose->private_data; in pnv_ocxl_set_tl_conf() local 356 rc = opal_npu_tl_set(phb->opal_id, dev->devfn, cap, in pnv_ocxl_set_tl_conf() 437 struct pnv_phb *phb = hose->private_data; in pnv_ocxl_spa_setup() local 447 rc = opal_npu_spa_setup(phb->opal_id, bdfn, virt_to_phys(spa_mem), in pnv_ocxl_spa_setup() 454 data->phb_opal_id = phb->opal_id; in pnv_ocxl_spa_setup() 484 struct pnv_phb *phb = hose->private_data; in pnv_ocxl_map_lpar() local 502 rc = opal_npu_map_lpar(phb->opal_id, pci_dev_id(dev), in pnv_ocxl_map_lpar()
|
| /linux/arch/powerpc/platforms/pseries/ |
| H A D | pci_dlpar.c | 24 struct pci_controller *phb; in init_phb_dynamic() local 41 phb = pcibios_alloc_controller(dn); in init_phb_dynamic() 42 if (!phb) in init_phb_dynamic() 44 rtas_setup_phb(phb); in init_phb_dynamic() 45 pci_process_bridge_OF_ranges(phb, dn, 0); in init_phb_dynamic() 46 phb->controller_ops = pseries_pci_controller_ops; in init_phb_dynamic() 48 pci_devs_phb_init_dynamic(phb); in init_phb_dynamic() 50 pseries_msi_allocate_domains(phb); in init_phb_dynamic() 52 ppc_iommu_register_device(phb); in init_phb_dynamic() 55 eeh_phb_pe_create(phb); in init_phb_dynamic() [all …]
|
| H A D | msi.c | 41 buid = pdn->phb->buid; in rtas_change_msi() 102 buid = pdn->phb->buid; in rtas_query_irq_number() 548 struct pci_controller *phb = domain->host_data; in pseries_irq_domain_alloc() local 562 phb->dn, virq, hwirq, nr_irqs); in pseries_irq_domain_alloc() 585 struct pci_controller *phb = irq_data_get_irq_chip_data(d); in pseries_irq_domain_free() local 587 pr_debug("%s bridge %pOF %d #%d\n", __func__, phb->dn, virq, nr_irqs); in pseries_irq_domain_free() 597 static int __pseries_msi_allocate_domains(struct pci_controller *phb, in __pseries_msi_allocate_domains() argument 602 .fwnode = of_fwnode_handle(phb->dn), in __pseries_msi_allocate_domains() 604 .host_data = phb, in __pseries_msi_allocate_domains() 609 phb->dev_domain = msi_create_parent_irq_domain(&info, &pseries_msi_parent_ops); in __pseries_msi_allocate_domains() [all …]
|
| H A D | setup.c | 292 pci_add_device_node_info(pdn->phb, np); in pci_dn_reconfig_notifier() 501 struct pci_controller *phb; in pSeries_discover_phbs() local 509 phb = pcibios_alloc_controller(node); in pSeries_discover_phbs() 510 if (!phb) in pSeries_discover_phbs() 512 rtas_setup_phb(phb); in pSeries_discover_phbs() 513 pci_process_bridge_OF_ranges(phb, node, 0); in pSeries_discover_phbs() 514 isa_bridge_find_early(phb); in pSeries_discover_phbs() 515 phb->controller_ops = pseries_pci_controller_ops; in pSeries_discover_phbs() 518 pci_devs_phb_init_dynamic(phb); in pSeries_discover_phbs() 520 pseries_msi_allocate_domains(phb); in pSeries_discover_phbs()
|
| /linux/arch/powerpc/kernel/ |
| H A D | msi.c | 14 struct pci_controller *phb = pci_bus_to_host(dev->bus); in arch_setup_msi_irqs() local 16 if (!phb->controller_ops.setup_msi_irqs || in arch_setup_msi_irqs() 17 !phb->controller_ops.teardown_msi_irqs) { in arch_setup_msi_irqs() 26 return phb->controller_ops.setup_msi_irqs(dev, nvec, type); in arch_setup_msi_irqs() 31 struct pci_controller *phb = pci_bus_to_host(dev->bus); in arch_teardown_msi_irqs() local 37 if (phb->controller_ops.teardown_msi_irqs) in arch_teardown_msi_irqs() 38 phb->controller_ops.teardown_msi_irqs(dev); in arch_teardown_msi_irqs()
|
| H A D | rtas_pci.c | 63 buid = pdn->phb->buid; in rtas_pci_dn_read_config() 114 buid = pdn->phb->buid; in rtas_pci_dn_write_config() 200 unsigned long get_phb_buid(struct device_node *phb) in get_phb_buid() argument 206 if (of_address_to_resource(phb, 0, &r)) in get_phb_buid() 212 struct pci_controller *phb) in phb_set_bus_ranges() argument 222 phb->first_busno = be32_to_cpu(bus_range[0]); in phb_set_bus_ranges() 223 phb->last_busno = be32_to_cpu(bus_range[1]); in phb_set_bus_ranges() 228 int rtas_setup_phb(struct pci_controller *phb) in rtas_setup_phb() argument 230 struct device_node *dev = phb->dn; in rtas_setup_phb() 235 if (phb_set_bus_ranges(dev, phb)) in rtas_setup_phb() [all …]
|
| H A D | pci-hotplug.c | 43 if (!pdn || !pdn->phb || !pdn->phb->bus) in pci_find_bus_by_node() 46 return find_bus_among_children(pdn->phb->bus, dn); in pci_find_bus_by_node() 58 struct pci_controller *phb = pci_bus_to_host(dev->bus); in pcibios_release_device() local 61 if (phb->controller_ops.release_device) in pcibios_release_device() 62 phb->controller_ops.release_device(dev); in pcibios_release_device() 141 struct pci_controller *phb; in pci_hp_add_devices() local 147 phb = pci_bus_to_host(bus); in pci_hp_add_devices() 150 if (phb->controller_ops.probe_mode) in pci_hp_add_devices() 151 mode = phb->controller_ops.probe_mode(bus); in pci_hp_add_devices()
|
| H A D | pci_dn.c | 141 edev->controller = pdn->phb; in eeh_dev_init() 161 pdn->phb = parent->phb; in add_one_sriov_vf_pdn() 297 pdn->phb = hose; in pci_add_device_node_info() 369 pdev = pci_get_domain_bus_and_slot(pdn->phb->global_number, in pci_remove_device_node_info() 467 void pci_devs_phb_init_dynamic(struct pci_controller *phb) in pci_devs_phb_init_dynamic() argument 469 struct device_node *dn = phb->dn; in pci_devs_phb_init_dynamic() 473 pdn = pci_add_device_node_info(phb, dn); in pci_devs_phb_init_dynamic() 477 pdn->phb = phb; in pci_devs_phb_init_dynamic() 478 phb->pci_data = pdn; in pci_devs_phb_init_dynamic() 482 pci_traverse_device_nodes(dn, add_pdn, phb); in pci_devs_phb_init_dynamic()
|
| H A D | eeh_pe.c | 47 static struct eeh_pe *eeh_pe_alloc(struct pci_controller *phb, int type) in eeh_pe_alloc() argument 64 pe->phb = phb; in eeh_pe_alloc() 80 int eeh_phb_pe_create(struct pci_controller *phb) in eeh_phb_pe_create() argument 85 pe = eeh_pe_alloc(phb, EEH_PE_PHB); in eeh_phb_pe_create() 94 pr_debug("EEH: Add PE for PHB#%x\n", phb->global_number); in eeh_phb_pe_create() 158 struct eeh_pe *eeh_phb_pe_get(struct pci_controller *phb) in eeh_phb_pe_get() argument 168 if ((pe->type & EEH_PE_PHB) && pe->phb == phb) in eeh_phb_pe_get() 287 struct eeh_pe *eeh_pe_get(struct pci_controller *phb, int pe_no) in eeh_pe_get() argument 289 struct eeh_pe *root = eeh_phb_pe_get(phb); in eeh_pe_get() 857 return pe->phb->bus; in eeh_pe_bus_get()
|
| H A D | eeh.c | 176 edev->pe->phb->global_number, edev->bdfn >> 8, in eeh_dump_dev_log() 179 edev->pe->phb->global_number, edev->bdfn >> 8, in eeh_dump_dev_log() 367 phb_pe = eeh_phb_pe_get(pe->phb); in eeh_phb_check_failure() 370 __func__, pe->phb->global_number); in eeh_phb_check_failure() 394 phb_pe->phb->global_number, eeh_pe_loc_get(phb_pe)); in eeh_phb_check_failure() 543 pe->phb->global_number, pe->addr, in eeh_dev_check_failure() 544 pe->phb->global_number, parent_pe->addr); in eeh_dev_check_failure() 565 __func__, pe->phb->global_number, pe->addr); in eeh_dev_check_failure() 666 __func__, function, pe->phb->global_number, in eeh_pci_enable() 812 pe->phb->global_number, pe->addr); in eeh_pe_refreeze_passed() [all …]
|
| H A D | eeh_driver.c | 852 __func__, pe->phb->global_number, pe->addr); in eeh_handle_normal_event() 873 pe->phb->global_number, pe->addr); in eeh_handle_normal_event() 889 pe->phb->global_number, eeh_pe_loc_get(pe)); in eeh_handle_normal_event() 891 struct eeh_pe *phb_pe = eeh_phb_pe_get(pe->phb); in eeh_handle_normal_event() 894 pe->phb->global_number, pe->addr); in eeh_handle_normal_event() 909 pe->phb->global_number, pe->addr); in eeh_handle_normal_event() 928 pe->phb->global_number, pe->addr, in eeh_handle_normal_event() 1076 pe->phb->global_number, pe->addr); in eeh_handle_normal_event() 1106 __func__, pe->phb->global_number, pe->addr); in eeh_handle_normal_event() 1230 pe->phb->global_number, in eeh_handle_special_event()
|
| H A D | pci_64.c | 262 hose = PCI_DN(hose_node)->phb; in SYSCALL_DEFINE3() 283 struct pci_controller *phb = pci_bus_to_host(bus); in pcibus_to_node() local 284 return phb->node; in pcibus_to_node()
|
| H A D | dma-iommu.c | 135 struct pci_controller *phb = pci_bus_to_host(pdev->bus); in dma_iommu_bypass_supported() local 137 if (!phb->controller_ops.iommu_bypass_supported) in dma_iommu_bypass_supported() 139 return phb->controller_ops.iommu_bypass_supported(pdev, mask); in dma_iommu_bypass_supported()
|
| /linux/drivers/pci/hotplug/ |
| H A D | rpadlpar_core.c | 141 struct pci_controller *phb = pdn->phb; in dlpar_pci_add_bus() local 147 dev = of_create_pci_dev(dn, phb->bus, pdn->devfn); in dlpar_pci_add_bus() 166 pcibios_finish_adding_to_bus(phb->bus); in dlpar_pci_add_bus() 172 struct pci_controller *phb; in dlpar_add_pci_slot() local 181 phb = PCI_DN(dn)->phb; in dlpar_add_pci_slot() 182 dev = dlpar_find_new_dev(phb->bus, dn); in dlpar_add_pci_slot() 223 BUG_ON(!pdn || !pdn->phb); in dlpar_remove_phb() 224 rc = remove_phb_dynamic(pdn->phb); in dlpar_remove_phb() 228 pdn->phb = NULL; in dlpar_remove_phb() 235 struct pci_controller *phb; in dlpar_add_phb() local [all …]
|
| H A D | rpaphp_pci.c | 78 struct pci_controller *phb = PCI_DN(slot->dn)->phb; in __rpaphp_get_sensor_state() local 87 pdn = list_first_entry_or_null(&PCI_DN(phb->dn)->child_list, in __rpaphp_get_sensor_state()
|
| /linux/arch/powerpc/include/asm/ |
| H A D | ppc-pci.h | 31 extern void pci_devs_phb_init_dynamic(struct pci_controller *phb); 35 extern void ppc_iommu_register_device(struct pci_controller *phb); 36 extern void ppc_iommu_unregister_device(struct pci_controller *phb); 38 static inline void ppc_iommu_register_device(struct pci_controller *phb) { } in ppc_iommu_register_device() argument 39 static inline void ppc_iommu_unregister_device(struct pci_controller *phb) { } in ppc_iommu_unregister_device() argument 46 extern int rtas_setup_phb(struct pci_controller *phb);
|
| H A D | eeh.h | 77 struct pci_controller *phb; /* Associated PHB */ member 277 int eeh_phb_pe_create(struct pci_controller *phb); 279 struct eeh_pe *eeh_phb_pe_get(struct pci_controller *phb); 281 struct eeh_pe *eeh_pe_get(struct pci_controller *phb, int pe_no); 352 static inline int eeh_phb_pe_create(struct pci_controller *phb) { return 0; } in eeh_phb_pe_create() argument
|
| /linux/arch/powerpc/platforms/pasemi/ |
| H A D | msi.c | 137 struct pci_controller *phb; in mpic_pasemi_msi_init() local 155 list_for_each_entry(phb, &hose_list, list_node) { in mpic_pasemi_msi_init() 156 WARN_ON(phb->controller_ops.setup_msi_irqs); in mpic_pasemi_msi_init() 157 phb->controller_ops.setup_msi_irqs = pasemi_msi_setup_msi_irqs; in mpic_pasemi_msi_init() 158 phb->controller_ops.teardown_msi_irqs = pasemi_msi_teardown_msi_irqs; in mpic_pasemi_msi_init()
|
| /linux/arch/powerpc/sysdev/ |
| H A D | mpic_u3msi.c | 176 struct pci_controller *phb; in mpic_u3msi_init() local 189 list_for_each_entry(phb, &hose_list, list_node) { in mpic_u3msi_init() 190 WARN_ON(phb->controller_ops.setup_msi_irqs); in mpic_u3msi_init() 191 phb->controller_ops.setup_msi_irqs = u3msi_setup_msi_irqs; in mpic_u3msi_init() 192 phb->controller_ops.teardown_msi_irqs = u3msi_teardown_msi_irqs; in mpic_u3msi_init()
|
| H A D | fsl_msi.c | 402 struct pci_controller *phb; in fsl_of_msi_probe() local 540 list_for_each_entry(phb, &hose_list, list_node) { in fsl_of_msi_probe() 541 if (!phb->controller_ops.setup_msi_irqs) { in fsl_of_msi_probe() 542 phb->controller_ops.setup_msi_irqs = fsl_setup_msi_irqs; in fsl_of_msi_probe() 543 phb->controller_ops.teardown_msi_irqs = fsl_teardown_msi_irqs; in fsl_of_msi_probe() 544 } else if (phb->controller_ops.setup_msi_irqs != fsl_setup_msi_irqs) { in fsl_of_msi_probe()
|
| /linux/arch/powerpc/platforms/44x/ |
| H A D | hsta_msi.c | 127 struct pci_controller *phb; in hsta_msi_probe() local 172 list_for_each_entry(phb, &hose_list, list_node) { in hsta_msi_probe() 173 phb->controller_ops.setup_msi_irqs = hsta_setup_msi_irqs; in hsta_msi_probe() 174 phb->controller_ops.teardown_msi_irqs = hsta_teardown_msi_irqs; in hsta_msi_probe()
|
| /linux/arch/powerpc/platforms/amigaone/ |
| H A D | setup.c | 77 int phb = -ENODEV; in amigaone_discover_phbs() local 81 phb = amigaone_add_bridge(np); in amigaone_discover_phbs() 83 BUG_ON(phb != 0); in amigaone_discover_phbs()
|