/Linux-v5.15/arch/powerpc/platforms/powernv/ |
D | pci-ioda.c | 118 static struct pnv_ioda_pe *pnv_ioda_init_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_init_pe() argument 122 phb->ioda.pe_array[pe_no].phb = phb; in pnv_ioda_init_pe() 123 phb->ioda.pe_array[pe_no].pe_number = pe_no; in pnv_ioda_init_pe() 124 phb->ioda.pe_array[pe_no].dma_setup_done = false; in pnv_ioda_init_pe() 131 rc = opal_pci_eeh_freeze_clear(phb->opal_id, pe_no, in pnv_ioda_init_pe() 135 __func__, rc, phb->hose->global_number, pe_no); in pnv_ioda_init_pe() 137 return &phb->ioda.pe_array[pe_no]; in pnv_ioda_init_pe() 140 static void pnv_ioda_reserve_pe(struct pnv_phb *phb, int pe_no) in pnv_ioda_reserve_pe() argument 142 if (!(pe_no >= 0 && pe_no < phb->ioda.total_pe_num)) { in pnv_ioda_reserve_pe() 144 __func__, pe_no, phb->hose->global_number); in pnv_ioda_reserve_pe() [all …]
|
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 …]
|
D | pci-cxl.c | 15 struct pnv_phb *phb = hose->private_data; in pnv_phb_to_cxl_mode() local 25 rc = opal_pci_set_phb_cxl_mode(phb->opal_id, mode, pe->pe_number); in pnv_phb_to_cxl_mode() 41 struct pnv_phb *phb = hose->private_data; in pnv_cxl_alloc_hwirqs() local 42 int hwirq = msi_bitmap_alloc_hwirqs(&phb->msi_bmp, num); in pnv_cxl_alloc_hwirqs() 49 return phb->msi_base + hwirq; in pnv_cxl_alloc_hwirqs() 56 struct pnv_phb *phb = hose->private_data; in pnv_cxl_release_hwirqs() local 58 msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq - phb->msi_base, num); in pnv_cxl_release_hwirqs() 66 struct pnv_phb *phb = hose->private_data; in pnv_cxl_release_hwirq_ranges() local 75 hwirq = irqs->offset[i] - phb->msi_base; in pnv_cxl_release_hwirq_ranges() 76 msi_bitmap_free_hwirqs(&phb->msi_bmp, hwirq, in pnv_cxl_release_hwirq_ranges() [all …]
|
D | pci-sriov.c | 148 struct pnv_phb *phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_ioda_fixup_iov_resources() local 159 mul = phb->ioda.total_pe_num; in pnv_pci_ioda_fixup_iov_resources() 183 if (vf_bar_sz > (phb->ioda.m64_segsize >> 2)) { in pnv_pci_ioda_fixup_iov_resources() 257 struct pnv_phb *phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_iov_resource_alignment() local 287 return phb->ioda.total_pe_num * align; in pnv_pci_iov_resource_alignment() 293 struct pnv_phb *phb; in pnv_pci_vf_release_m64() local 296 phb = pci_bus_to_pnvhb(pdev->bus); in pnv_pci_vf_release_m64() 300 opal_pci_phb_mmio_enable(phb->opal_id, in pnv_pci_vf_release_m64() 305 clear_bit(window_id, &phb->ioda.m64_bar_alloc); in pnv_pci_vf_release_m64() 317 static int64_t pnv_ioda_map_m64_segmented(struct pnv_phb *phb, in pnv_ioda_map_m64_segmented() argument [all …]
|
D | pci.c | 489 static void pnv_pci_handle_eeh_config(struct pnv_phb *phb, u32 pe_no) in pnv_pci_handle_eeh_config() argument 494 spin_lock_irqsave(&phb->lock, flags); in pnv_pci_handle_eeh_config() 497 rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb->diag_data, in pnv_pci_handle_eeh_config() 498 phb->diag_data_size); in pnv_pci_handle_eeh_config() 502 if (phb->unfreeze_pe) { in pnv_pci_handle_eeh_config() 503 ret = phb->unfreeze_pe(phb, in pnv_pci_handle_eeh_config() 507 rc = opal_pci_eeh_freeze_clear(phb->opal_id, in pnv_pci_handle_eeh_config() 513 __func__, rc, phb->hose->global_number, in pnv_pci_handle_eeh_config() 526 pnv_pci_dump_phb_diag_data(phb->hose, phb->diag_data); in pnv_pci_handle_eeh_config() 528 spin_unlock_irqrestore(&phb->lock, flags); in pnv_pci_handle_eeh_config() [all …]
|
D | pci.h | 58 struct pnv_phb *phb; member 127 int (*init_m64)(struct pnv_phb *phb); 128 int (*get_pe_state)(struct pnv_phb *phb, int pe_no); 129 void (*freeze_pe)(struct pnv_phb *phb, int pe_no); 130 int (*unfreeze_pe)(struct pnv_phb *phb, int pe_no, int opt); 192 static inline bool pnv_pci_is_m64(struct pnv_phb *phb, struct resource *r) in pnv_pci_is_m64() argument 201 return (r->start >= phb->ioda.m64_base && in pnv_pci_is_m64() 202 r->start < (phb->ioda.m64_base + phb->ioda.m64_size)); in pnv_pci_is_m64() 212 int pnv_ioda_configure_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe); 213 int pnv_ioda_deconfigure_pe(struct pnv_phb *phb, struct pnv_ioda_pe *pe); [all …]
|
/Linux-v5.15/drivers/misc/cxl/ |
D | vphb.c | 30 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() 88 struct pci_controller *phb = bus ? pci_bus_to_host(bus) : NULL; in pci_bus_to_afu() local 90 return phb ? phb->private_data : NULL; in pci_bus_to_afu() 211 struct pci_controller *phb; in cxl_pci_vphb_add() local 237 phb = pcibios_alloc_controller(vphb_dn); in cxl_pci_vphb_add() 238 if (!phb) in cxl_pci_vphb_add() 242 phb->parent = parent; in cxl_pci_vphb_add() 245 phb->ops = &cxl_pcie_pci_ops; in cxl_pci_vphb_add() [all …]
|
/Linux-v5.15/arch/powerpc/platforms/pseries/ |
D | pci_dlpar.c | 23 struct pci_controller *phb; in init_phb_dynamic() local 27 phb = pcibios_alloc_controller(dn); in init_phb_dynamic() 28 if (!phb) in init_phb_dynamic() 30 rtas_setup_phb(phb); in init_phb_dynamic() 31 pci_process_bridge_OF_ranges(phb, dn, 0); in init_phb_dynamic() 32 phb->controller_ops = pseries_pci_controller_ops; in init_phb_dynamic() 34 pci_devs_phb_init_dynamic(phb); in init_phb_dynamic() 36 pseries_msi_allocate_domains(phb); in init_phb_dynamic() 39 eeh_phb_pe_create(phb); in init_phb_dynamic() 44 pcibios_scan_phb(phb); in init_phb_dynamic() [all …]
|
D | eeh_pseries.c | 102 struct pci_controller *phb = pdn->phb; in pseries_eeh_get_pe_config_addr() local 111 config_addr, BUID_HI(phb->buid), in pseries_eeh_get_pe_config_addr() 112 BUID_LO(phb->buid), 1); in pseries_eeh_get_pe_config_addr() 118 config_addr, BUID_HI(phb->buid), in pseries_eeh_get_pe_config_addr() 119 BUID_LO(phb->buid), 0); in pseries_eeh_get_pe_config_addr() 122 __func__, phb->global_number, config_addr); in pseries_eeh_get_pe_config_addr() 131 config_addr, BUID_HI(phb->buid), in pseries_eeh_get_pe_config_addr() 132 BUID_LO(phb->buid), 0); in pseries_eeh_get_pe_config_addr() 135 __func__, phb->global_number, config_addr); in pseries_eeh_get_pe_config_addr() 160 static int pseries_eeh_phb_reset(struct pci_controller *phb, int config_addr, int option) in pseries_eeh_phb_reset() argument [all …]
|
D | msi.c | 38 buid = pdn->phb->buid; in rtas_change_msi() 99 buid = pdn->phb->buid; in rtas_query_irq_number() 576 struct pci_controller *phb = domain->host_data; in pseries_irq_domain_alloc() local 590 phb->dn, virq, hwirq, nr_irqs); in pseries_irq_domain_alloc() 613 struct pci_controller *phb = irq_data_get_irq_chip_data(d); in pseries_irq_domain_free() local 615 pr_debug("%s bridge %pOF %d #%d\n", __func__, phb->dn, virq, nr_irqs); in pseries_irq_domain_free() 625 static int __pseries_msi_allocate_domains(struct pci_controller *phb, in __pseries_msi_allocate_domains() argument 630 phb->fwnode = irq_domain_alloc_named_id_fwnode("pSeries-MSI", in __pseries_msi_allocate_domains() 631 phb->global_number); in __pseries_msi_allocate_domains() 632 if (!phb->fwnode) in __pseries_msi_allocate_domains() [all …]
|
D | iommu.c | 523 static void iommu_table_setparms(struct pci_controller *phb, in iommu_table_setparms() argument 532 if (phb->dma_window_base_cur + phb->dma_window_size > SZ_2G) { in iommu_table_setparms() 537 node = phb->dn; in iommu_table_setparms() 546 iommu_table_setparms_common(tbl, phb->bus->number, 0, phb->dma_window_base_cur, in iommu_table_setparms() 547 phb->dma_window_size, IOMMU_PAGE_SHIFT_4K, in iommu_table_setparms() 553 phb->dma_window_base_cur += phb->dma_window_size; in iommu_table_setparms() 563 static void iommu_table_setparms_lpar(struct pci_controller *phb, in iommu_table_setparms_lpar() argument 573 iommu_table_setparms_common(tbl, phb->bus->number, liobn, offset, size, IOMMU_PAGE_SHIFT_4K, NULL, in iommu_table_setparms_lpar() 632 pci->phb->dma_window_size = 0x80000000ul; /* To be divided */ in pci_dma_bus_setup_pSeries() 634 while (pci->phb->dma_window_size * children > 0x80000000ul) in pci_dma_bus_setup_pSeries() [all …]
|
/Linux-v5.15/arch/powerpc/kernel/ |
D | of_platform.c | 37 struct pci_controller *phb; in of_pci_phb_probe() local 46 phb = pcibios_alloc_controller(dev->dev.of_node); in of_pci_phb_probe() 47 if (!phb) in of_pci_phb_probe() 51 phb->parent = &dev->dev; in of_pci_phb_probe() 54 if (ppc_md.pci_setup_phb(phb)) { in of_pci_phb_probe() 55 pcibios_free_controller(phb); in of_pci_phb_probe() 60 pci_process_bridge_OF_ranges(phb, dev->dev.of_node, 0); in of_pci_phb_probe() 63 pci_devs_phb_init_dynamic(phb); in of_pci_phb_probe() 66 eeh_phb_pe_create(phb); in of_pci_phb_probe() 69 pcibios_scan_phb(phb); in of_pci_phb_probe() [all …]
|
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()
|
D | pci-hotplug.c | 42 if (!pdn || !pdn->phb || !pdn->phb->bus) in pci_find_bus_by_node() 45 return find_bus_among_children(pdn->phb->bus, dn); in pci_find_bus_by_node() 57 struct pci_controller *phb = pci_bus_to_host(dev->bus); in pcibios_release_device() local 60 if (phb->controller_ops.release_device) in pcibios_release_device() 61 phb->controller_ops.release_device(dev); in pcibios_release_device() 110 struct pci_controller *phb; in pci_hp_add_devices() local 113 phb = pci_bus_to_host(bus); in pci_hp_add_devices() 116 if (phb->controller_ops.probe_mode) in pci_hp_add_devices() 117 mode = phb->controller_ops.probe_mode(bus); in pci_hp_add_devices()
|
D | rtas_pci.c | 62 buid = pdn->phb->buid; in rtas_read_config() 113 buid = pdn->phb->buid; in rtas_write_config() 199 unsigned long get_phb_buid(struct device_node *phb) in get_phb_buid() argument 205 if (of_address_to_resource(phb, 0, &r)) in get_phb_buid() 211 struct pci_controller *phb) in phb_set_bus_ranges() argument 221 phb->first_busno = be32_to_cpu(bus_range[0]); in phb_set_bus_ranges() 222 phb->last_busno = be32_to_cpu(bus_range[1]); in phb_set_bus_ranges() 227 int rtas_setup_phb(struct pci_controller *phb) in rtas_setup_phb() argument 229 struct device_node *dev = phb->dn; in rtas_setup_phb() 234 if (phb_set_bus_ranges(dev, phb)) in rtas_setup_phb() [all …]
|
D | io-workarounds.c | 35 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()
|
D | pci-common.c | 111 struct pci_controller *phb; in pcibios_alloc_controller() local 113 phb = zalloc_maybe_bootmem(sizeof(struct pci_controller), GFP_KERNEL); in pcibios_alloc_controller() 114 if (phb == NULL) in pcibios_alloc_controller() 117 phb->global_number = get_phb_number(dev); in pcibios_alloc_controller() 118 list_add_tail(&phb->list_node, &hose_list); in pcibios_alloc_controller() 120 phb->dn = dev; in pcibios_alloc_controller() 121 phb->is_dynamic = slab_is_available(); in pcibios_alloc_controller() 129 PHB_SET_NODE(phb, nid); in pcibios_alloc_controller() 132 return phb; in pcibios_alloc_controller() 136 void pcibios_free_controller(struct pci_controller *phb) in pcibios_free_controller() argument [all …]
|
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() 368 pdev = pci_get_domain_bus_and_slot(pdn->phb->global_number, in pci_remove_device_node_info() 466 void pci_devs_phb_init_dynamic(struct pci_controller *phb) in pci_devs_phb_init_dynamic() argument 468 struct device_node *dn = phb->dn; in pci_devs_phb_init_dynamic() 472 pdn = pci_add_device_node_info(phb, dn); in pci_devs_phb_init_dynamic() 476 pdn->phb = phb; in pci_devs_phb_init_dynamic() 477 phb->pci_data = pdn; in pci_devs_phb_init_dynamic() 481 pci_traverse_device_nodes(dn, add_pdn, phb); in pci_devs_phb_init_dynamic()
|
D | eeh_pe.c | 46 static struct eeh_pe *eeh_pe_alloc(struct pci_controller *phb, int type) in eeh_pe_alloc() argument 63 pe->phb = phb; in eeh_pe_alloc() 79 int eeh_phb_pe_create(struct pci_controller *phb) in eeh_phb_pe_create() argument 84 pe = eeh_pe_alloc(phb, EEH_PE_PHB); in eeh_phb_pe_create() 93 pr_debug("EEH: Add PE for PHB#%x\n", phb->global_number); in eeh_phb_pe_create() 157 struct eeh_pe *eeh_phb_pe_get(struct pci_controller *phb) in eeh_phb_pe_get() argument 167 if ((pe->type & EEH_PE_PHB) && pe->phb == phb) in eeh_phb_pe_get() 286 struct eeh_pe *eeh_pe_get(struct pci_controller *phb, int pe_no) in eeh_pe_get() argument 288 struct eeh_pe *root = eeh_phb_pe_get(phb); in eeh_pe_get() 854 return pe->phb->bus; in eeh_pe_bus_get()
|
/Linux-v5.15/drivers/pci/hotplug/ |
D | rpadlpar_core.c | 140 struct pci_controller *phb = pdn->phb; in dlpar_pci_add_bus() local 146 dev = of_create_pci_dev(dn, phb->bus, pdn->devfn); in dlpar_pci_add_bus() 165 pcibios_finish_adding_to_bus(phb->bus); in dlpar_pci_add_bus() 171 struct pci_controller *phb; in dlpar_add_pci_slot() local 180 phb = PCI_DN(dn)->phb; in dlpar_add_pci_slot() 181 dev = dlpar_find_new_dev(phb->bus, dn); in dlpar_add_pci_slot() 222 BUG_ON(!pdn || !pdn->phb); in dlpar_remove_phb() 223 rc = remove_phb_dynamic(pdn->phb); in dlpar_remove_phb() 227 pdn->phb = NULL; in dlpar_remove_phb() 234 struct pci_controller *phb; in dlpar_add_phb() local [all …]
|
/Linux-v5.15/arch/powerpc/platforms/pasemi/ |
D | msi.c | 141 struct pci_controller *phb; in mpic_pasemi_msi_init() local 159 list_for_each_entry(phb, &hose_list, list_node) { in mpic_pasemi_msi_init() 160 WARN_ON(phb->controller_ops.setup_msi_irqs); in mpic_pasemi_msi_init() 161 phb->controller_ops.setup_msi_irqs = pasemi_msi_setup_msi_irqs; in mpic_pasemi_msi_init() 162 phb->controller_ops.teardown_msi_irqs = pasemi_msi_teardown_msi_irqs; in mpic_pasemi_msi_init()
|
/Linux-v5.15/arch/powerpc/platforms/cell/ |
D | spider-pci.c | 68 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()
|
D | setup.c | 116 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-v5.15/arch/powerpc/sysdev/ |
D | mpic_u3msi.c | 180 struct pci_controller *phb; in mpic_u3msi_init() local 193 list_for_each_entry(phb, &hose_list, list_node) { in mpic_u3msi_init() 194 WARN_ON(phb->controller_ops.setup_msi_irqs); in mpic_u3msi_init() 195 phb->controller_ops.setup_msi_irqs = u3msi_setup_msi_irqs; in mpic_u3msi_init() 196 phb->controller_ops.teardown_msi_irqs = u3msi_teardown_msi_irqs; in mpic_u3msi_init()
|
/Linux-v5.15/arch/powerpc/platforms/4xx/ |
D | hsta_msi.c | 128 struct pci_controller *phb; in hsta_msi_probe() local 173 list_for_each_entry(phb, &hose_list, list_node) { in hsta_msi_probe() 174 phb->controller_ops.setup_msi_irqs = hsta_setup_msi_irqs; in hsta_msi_probe() 175 phb->controller_ops.teardown_msi_irqs = hsta_teardown_msi_irqs; in hsta_msi_probe()
|