Home
last modified time | relevance | path

Searched refs:phb (Results 1 – 25 of 44) sorted by relevance

12

/linux/arch/powerpc/platforms/powernv/
H A Dpci-ioda.c116 static struct pnv_ioda_pe *pnv_ioda_init_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_init_pe() argument
120 phb->ioda.pe_array[pe_no].phb = phb; in pnv_ioda_init_pe()
121 phb->ioda.pe_array[pe_no].pe_number = pe_no; in pnv_ioda_init_pe()
122 phb->ioda.pe_array[pe_no].dma_setup_done = false; in pnv_ioda_init_pe()
129 rc = opal_pci_eeh_freeze_clear(phb->opal_id, pe_no, in pnv_ioda_init_pe()
133 __func__, rc, phb->hose->global_number, pe_no); in pnv_ioda_init_pe()
135 return &phb->ioda.pe_array[pe_no]; in pnv_ioda_init_pe()
138 static void pnv_ioda_reserve_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_reserve_pe() argument
140 if (!(pe_no >= 0 && pe_no < phb->ioda.total_pe_num)) { in pnv_ioda_reserve_pe()
142 __func__, pe_no, phb->hose->global_number); in pnv_ioda_reserve_pe()
[all …]
H A Dpci-sriov.c145 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 Dpci-cxl.c16 struct pnv_phb *phb = hose->private_data; in pnv_phb_to_cxl_mode() local
26 rc = opal_pci_set_phb_cxl_mode(phb->opal_id, mode, pe->pe_number); in pnv_phb_to_cxl_mode()
42 struct pnv_phb *phb = hose->private_data; in pnv_cxl_alloc_hwirqs() local
43 int hwirq = msi_bitmap_alloc_hwirqs(&phb->msi_bmp, num); in pnv_cxl_alloc_hwirqs()
50 return phb->msi_base + hwirq; in pnv_cxl_alloc_hwirqs()
57 struct pnv_phb *phb = hose->private_data; in pnv_cxl_release_hwirqs() local
59 msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq - phb->msi_base, num); in pnv_cxl_release_hwirqs()
67 struct pnv_phb *phb = hose->private_data; in pnv_cxl_release_hwirq_ranges() local
76 hwirq = irqs->offset[i] - phb->msi_base; in pnv_cxl_release_hwirq_ranges()
77 msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq, in pnv_cxl_release_hwirq_ranges()
[all …]
H A Dpci.c488 static void pnv_pci_handle_eeh_config(struct pnv_phb *phb, u32 pe_no) in pnv_pci_handle_eeh_config() argument
493 spin_lock_irqsave(&phb->lock, flags); in pnv_pci_handle_eeh_config()
496 rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag_data, in pnv_pci_handle_eeh_config()
497 phb->diag_data_size); in pnv_pci_handle_eeh_config()
501 if (phb->unfreeze_pe) { in pnv_pci_handle_eeh_config()
502 ret = phb->unfreeze_pe(phb, in pnv_pci_handle_eeh_config()
506 rc = opal_pci_eeh_freeze_clear(phb->opal_id, in pnv_pci_handle_eeh_config()
512 __func__, rc, phb->hose->global_number, in pnv_pci_handle_eeh_config()
525 pnv_pci_dump_phb_diag_data(phb->hose, phb->diag_data); in pnv_pci_handle_eeh_config()
527 spin_unlock_irqrestore(&phb->lock, flags); in pnv_pci_handle_eeh_config()
[all …]
H A Docxl.c165 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()
356 struct pnv_phb *phb = hose->private_data; in pnv_ocxl_set_tl_conf() local
362 rc = opal_npu_tl_set(phb->opal_id, dev->devfn, cap, in pnv_ocxl_set_tl_conf()
443 struct pnv_phb *phb = hose->private_data; in pnv_ocxl_spa_setup() local
453 rc = opal_npu_spa_setup(phb->opal_id, bdfn, virt_to_phys(spa_mem), in pnv_ocxl_spa_setup()
460 data->phb_opal_id = phb->opal_id; in pnv_ocxl_spa_setup()
490 struct pnv_phb *phb = hose->private_data; in pnv_ocxl_map_lpar() local
508 rc = opal_npu_map_lpar(phb->opal_id, pci_dev_id(dev), in pnv_ocxl_map_lpar()
/linux/drivers/misc/cxl/
H A Dvphb.c30 struct pci_controller *phb; in cxl_pci_enable_device_hook() local
34 phb = pci_bus_to_host(dev->bus); in cxl_pci_enable_device_hook()
35 afu = (struct cxl_afu *)phb->private_data; in cxl_pci_enable_device_hook()
82 struct pci_controller *phb = bus ? pci_bus_to_host(bus) : NULL; in pci_bus_to_afu() local
84 return phb ? phb->private_data : NULL; in pci_bus_to_afu()
204 struct pci_controller *phb; in cxl_pci_vphb_add() local
230 phb = pcibios_alloc_controller(vphb_dn); in cxl_pci_vphb_add()
231 if (!phb) in cxl_pci_vphb_add()
235 phb->parent = parent; in cxl_pci_vphb_add()
238 phb->ops = &cxl_pcie_pci_ops; in cxl_pci_vphb_add()
[all …]
/linux/arch/powerpc/platforms/pseries/
H A Dpci_dlpar.c24 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 Dmsi.c40 buid = pdn->phb->buid; in rtas_change_msi()
101 buid = pdn->phb->buid; in rtas_query_irq_number()
561 struct pci_controller *phb = domain->host_data; in pseries_irq_domain_alloc() local
575 phb->dn, virq, hwirq, nr_irqs); in pseries_irq_domain_alloc()
598 struct pci_controller *phb = irq_data_get_irq_chip_data(d); in pseries_irq_domain_free() local
600 pr_debug("%s bridge %pOF %d #%d\n", __func__, phb->dn, virq, nr_irqs); in pseries_irq_domain_free()
610 static int __pseries_msi_allocate_domains(struct pci_controller *phb, in __pseries_msi_allocate_domains() argument
615 phb->fwnode = irq_domain_alloc_named_id_fwnode("pSeries-MSI", in __pseries_msi_allocate_domains()
616 phb->global_number); in __pseries_msi_allocate_domains()
617 if (!phb->fwnode) in __pseries_msi_allocate_domains()
[all …]
H A Diommu.c580 static void iommu_table_setparms(struct pci_controller *phb, in iommu_table_setparms() argument
589 if (phb->dma_window_base_cur + phb->dma_window_size > SZ_2G) { in iommu_table_setparms()
594 node = phb->dn; in iommu_table_setparms()
603 iommu_table_setparms_common(tbl, phb->bus->number, 0, phb->dma_window_base_cur, in iommu_table_setparms()
604 phb->dma_window_size, IOMMU_PAGE_SHIFT_4K, in iommu_table_setparms()
610 phb->dma_window_base_cur += phb->dma_window_size; in iommu_table_setparms()
666 pci->phb->dma_window_size = 0x80000000ul; /* To be divided */ in pci_dma_bus_setup_pSeries()
668 while (pci->phb->dma_window_size * children > 0x80000000ul) in pci_dma_bus_setup_pSeries()
669 pci->phb->dma_window_size >>= 1; in pci_dma_bus_setup_pSeries()
671 pci->phb->dma_window_size); in pci_dma_bus_setup_pSeries()
[all …]
H A Dsetup.c292 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 Dof_platform.c35 struct pci_controller *phb; in of_pci_phb_probe() local
44 phb = pcibios_alloc_controller(dev->dev.of_node); in of_pci_phb_probe()
45 if (!phb) in of_pci_phb_probe()
49 phb->parent = &dev->dev; in of_pci_phb_probe()
52 if (ppc_md.pci_setup_phb(phb)) { in of_pci_phb_probe()
53 pcibios_free_controller(phb); in of_pci_phb_probe()
58 pci_process_bridge_OF_ranges(phb, dev->dev.of_node, 0); in of_pci_phb_probe()
61 pci_devs_phb_init_dynamic(phb); in of_pci_phb_probe()
64 eeh_phb_pe_create(phb); in of_pci_phb_probe()
67 pcibios_scan_phb(phb); in of_pci_phb_probe()
[all …]
H A Dmsi.c14 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 Drtas_pci.c63 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 Dpci-hotplug.c43 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
144 phb = pci_bus_to_host(bus); in pci_hp_add_devices()
147 if (phb->controller_ops.probe_mode) in pci_hp_add_devices()
148 mode = phb->controller_ops.probe_mode(bus); in pci_hp_add_devices()
H A Dpci-common.c126 struct pci_controller *phb; in pcibios_alloc_controller() local
128 phb = kzalloc(sizeof(struct pci_controller), GFP_KERNEL); in pcibios_alloc_controller()
129 if (phb == NULL) in pcibios_alloc_controller()
132 phb->global_number = get_phb_number(dev); in pcibios_alloc_controller()
135 list_add_tail(&phb->list_node, &hose_list); in pcibios_alloc_controller()
138 phb->dn = of_node_get(dev); in pcibios_alloc_controller()
139 phb->is_dynamic = slab_is_available(); in pcibios_alloc_controller()
147 PHB_SET_NODE(phb, nid); in pcibios_alloc_controller()
150 return phb; in pcibios_alloc_controller()
154 void pcibios_free_controller(struct pci_controller *phb) in pcibios_free_controller() argument
197 struct pci_controller *phb = (struct pci_controller *) pcibios_free_controller_deferred() local
215 struct pci_controller *phb = pci_bus_to_host(bus); pcibios_window_alignment() local
238 struct pci_controller *phb = pci_bus_to_host(dev->bus); pcibios_reset_secondary_bus() local
1036 struct pci_controller *phb; pcibios_setup_bus_self() local
1056 struct pci_controller *phb; pcibios_bus_add_device() local
1506 struct pci_controller *phb = pci_bus_to_host(dev->bus); pcibios_enable_device() local
1517 struct pci_controller *phb = pci_bus_to_host(dev->bus); pcibios_disable_device() local
[all...]
H A Dio-workarounds.c35 struct pci_controller *phb = bus->phb; in iowa_pci_find() local
38 vstart = (unsigned long)phb->io_base_virt; in iowa_pci_find()
39 vend = vstart + phb->pci_io_size - 1; in iowa_pci_find()
46 res = &phb->mem_resources[j]; in iowa_pci_find()
170 void iowa_register_bus(struct pci_controller *phb, struct ppc_pci_io *ops, in iowa_register_bus() argument
174 struct device_node *np = phb->dn; in iowa_register_bus()
185 bus->phb = phb; in iowa_register_bus()
H A Dpci_dn.c141 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 Deeh_pe.c47 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()
855 return pe->phb->bus; in eeh_pe_bus_get()
/linux/drivers/pci/hotplug/
H A Drpadlpar_core.c141 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 …]
/linux/arch/powerpc/include/asm/
H A Dppc-pci.h31 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);
/linux/arch/powerpc/platforms/pasemi/
H A Dmsi.c137 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/platforms/cell/
H A Dspider-pci.c68 static int __init spiderpci_pci_setup_chip(struct pci_controller *phb, in spiderpci_pci_setup_chip() argument
98 dummy_page_da = dma_map_single(phb->parent, dummy_page_va, in spiderpci_pci_setup_chip()
100 if (dma_mapping_error(phb->parent, dummy_page_da)) { in spiderpci_pci_setup_chip()
115 struct device_node *np = bus->phb->dn; in spiderpci_iowa_init()
142 if (spiderpci_pci_setup_chip(bus->phb, regs)) in spiderpci_iowa_init()
H A Dsetup.c116 static int cell_setup_phb(struct pci_controller *phb) in cell_setup_phb() argument
121 int rc = rtas_setup_phb(phb); in cell_setup_phb()
125 phb->controller_ops = cell_pci_controller_ops; in cell_setup_phb()
127 np = phb->dn; in cell_setup_phb()
136 iowa_register_bus(phb, &spiderpci_ops, &spiderpci_iowa_init, in cell_setup_phb()
/linux/arch/powerpc/sysdev/
H A Dmpic_u3msi.c176 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()
/linux/arch/powerpc/platforms/44x/
H A Dhsta_msi.c127 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()

12