Lines Matching refs:pbm

85 	struct pci_pbm_info *pbm = p->dev->archdata.host_controller;  in iommu_batch_flush()  local
88 unsigned long devhandle = pbm->devhandle; in iommu_batch_flush()
101 if (!iommu_use_atu(pbm->iommu, mask)) { in iommu_batch_flush()
118 iotsb_num = pbm->iommu->atu->iotsb->iotsb_num; in iommu_batch_flush()
325 struct pci_pbm_info *pbm; in dma_4v_free_coherent() local
335 pbm = dev->archdata.host_controller; in dma_4v_free_coherent()
337 devhandle = pbm->devhandle; in dma_4v_free_coherent()
432 struct pci_pbm_info *pbm; in dma_4v_unmap_page() local
448 pbm = dev->archdata.host_controller; in dma_4v_unmap_page()
450 devhandle = pbm->devhandle; in dma_4v_unmap_page()
627 struct pci_pbm_info *pbm; in dma_4v_unmap_sg() local
638 pbm = dev->archdata.host_controller; in dma_4v_unmap_sg()
640 devhandle = pbm->devhandle; in dma_4v_unmap_sg()
695 static void pci_sun4v_scan_bus(struct pci_pbm_info *pbm, struct device *parent) in pci_sun4v_scan_bus() argument
700 dp = pbm->op->dev.of_node; in pci_sun4v_scan_bus()
702 pbm->is_66mhz_capable = (prop != NULL); in pci_sun4v_scan_bus()
703 pbm->pci_bus = pci_scan_one_pbm(pbm, parent); in pci_sun4v_scan_bus()
708 static unsigned long probe_existing_entries(struct pci_pbm_info *pbm, in probe_existing_entries() argument
715 devhandle = pbm->devhandle; in probe_existing_entries()
739 static int pci_sun4v_atu_alloc_iotsb(struct pci_pbm_info *pbm) in pci_sun4v_atu_alloc_iotsb() argument
741 struct atu *atu = pbm->iommu->atu; in pci_sun4v_atu_alloc_iotsb()
772 err = pci_sun4v_iotsb_conf(pbm->devhandle, in pci_sun4v_atu_alloc_iotsb()
784 err = dma_4v_iotsb_bind(pbm->devhandle, iotsb_num, pbm->pci_bus); in pci_sun4v_atu_alloc_iotsb()
800 static int pci_sun4v_atu_init(struct pci_pbm_info *pbm) in pci_sun4v_atu_init() argument
802 struct atu *atu = pbm->iommu->atu; in pci_sun4v_atu_init()
810 ranges = of_get_property(pbm->op->dev.of_node, "iommu-address-ranges", in pci_sun4v_atu_init()
817 page_size = of_get_property(pbm->op->dev.of_node, "iommu-pagesizes", in pci_sun4v_atu_init()
839 err = pci_sun4v_atu_alloc_iotsb(pbm); in pci_sun4v_atu_init()
865 static int pci_sun4v_iommu_init(struct pci_pbm_info *pbm) in pci_sun4v_iommu_init() argument
868 struct iommu *iommu = pbm->iommu; in pci_sun4v_iommu_init()
873 vdma = of_get_property(pbm->op->dev.of_node, "virtual-dma", NULL); in pci_sun4v_iommu_init()
906 sz = probe_existing_entries(pbm, &iommu->tbl); in pci_sun4v_iommu_init()
909 pbm->name, sz); in pci_sun4v_iommu_init()
959 static int pci_sun4v_get_head(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_get_head() argument
964 err = pci_sun4v_msiq_gethead(pbm->devhandle, msiqid, head); in pci_sun4v_get_head()
968 limit = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_get_head()
975 static int pci_sun4v_dequeue_msi(struct pci_pbm_info *pbm, in pci_sun4v_dequeue_msi() argument
983 ep = (pbm->msi_queues + ((msiqid - pbm->msiq_first) * in pci_sun4v_dequeue_msi()
984 (pbm->msiq_ent_count * in pci_sun4v_dequeue_msi()
998 err = pci_sun4v_msi_setstate(pbm->devhandle, in pci_sun4v_dequeue_msi()
1009 (pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry))) in pci_sun4v_dequeue_msi()
1015 static int pci_sun4v_set_head(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_set_head() argument
1020 err = pci_sun4v_msiq_sethead(pbm->devhandle, msiqid, head); in pci_sun4v_set_head()
1027 static int pci_sun4v_msi_setup(struct pci_pbm_info *pbm, unsigned long msiqid, in pci_sun4v_msi_setup() argument
1030 if (pci_sun4v_msi_setmsiq(pbm->devhandle, msi, msiqid, in pci_sun4v_msi_setup()
1034 if (pci_sun4v_msi_setstate(pbm->devhandle, msi, HV_MSISTATE_IDLE)) in pci_sun4v_msi_setup()
1036 if (pci_sun4v_msi_setvalid(pbm->devhandle, msi, HV_MSIVALID_VALID)) in pci_sun4v_msi_setup()
1041 static int pci_sun4v_msi_teardown(struct pci_pbm_info *pbm, unsigned long msi) in pci_sun4v_msi_teardown() argument
1045 err = pci_sun4v_msi_getmsiq(pbm->devhandle, msi, &msiqid); in pci_sun4v_msi_teardown()
1049 pci_sun4v_msi_setvalid(pbm->devhandle, msi, HV_MSIVALID_INVALID); in pci_sun4v_msi_teardown()
1054 static int pci_sun4v_msiq_alloc(struct pci_pbm_info *pbm) in pci_sun4v_msiq_alloc() argument
1059 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_msiq_alloc()
1060 alloc_size = (pbm->msiq_num * q_size); in pci_sun4v_msiq_alloc()
1069 pbm->msi_queues = (void *) pages; in pci_sun4v_msiq_alloc()
1071 for (i = 0; i < pbm->msiq_num; i++) { in pci_sun4v_msiq_alloc()
1075 err = pci_sun4v_msiq_conf(pbm->devhandle, in pci_sun4v_msiq_alloc()
1076 pbm->msiq_first + i, in pci_sun4v_msiq_alloc()
1077 base, pbm->msiq_ent_count); in pci_sun4v_msiq_alloc()
1084 err = pci_sun4v_msiq_info(pbm->devhandle, in pci_sun4v_msiq_alloc()
1085 pbm->msiq_first + i, in pci_sun4v_msiq_alloc()
1092 if (ret1 != base || ret2 != pbm->msiq_ent_count) { in pci_sun4v_msiq_alloc()
1095 base, pbm->msiq_ent_count, in pci_sun4v_msiq_alloc()
1108 static void pci_sun4v_msiq_free(struct pci_pbm_info *pbm) in pci_sun4v_msiq_free() argument
1113 for (i = 0; i < pbm->msiq_num; i++) { in pci_sun4v_msiq_free()
1114 unsigned long msiqid = pbm->msiq_first + i; in pci_sun4v_msiq_free()
1116 (void) pci_sun4v_msiq_conf(pbm->devhandle, msiqid, 0UL, 0); in pci_sun4v_msiq_free()
1119 q_size = pbm->msiq_ent_count * sizeof(struct pci_sun4v_msiq_entry); in pci_sun4v_msiq_free()
1120 alloc_size = (pbm->msiq_num * q_size); in pci_sun4v_msiq_free()
1123 pages = (unsigned long) pbm->msi_queues; in pci_sun4v_msiq_free()
1127 pbm->msi_queues = NULL; in pci_sun4v_msiq_free()
1130 static int pci_sun4v_msiq_build_irq(struct pci_pbm_info *pbm, in pci_sun4v_msiq_build_irq() argument
1134 unsigned int irq = sun4v_build_irq(pbm->devhandle, devino); in pci_sun4v_msiq_build_irq()
1139 if (pci_sun4v_msiq_setvalid(pbm->devhandle, msiqid, HV_MSIQ_VALID)) in pci_sun4v_msiq_build_irq()
1141 if (pci_sun4v_msiq_setstate(pbm->devhandle, msiqid, HV_MSIQSTATE_IDLE)) in pci_sun4v_msiq_build_irq()
1158 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) in pci_sun4v_msi_init() argument
1160 sparc64_pbm_msi_init(pbm, &pci_sun4v_msiq_ops); in pci_sun4v_msi_init()
1163 static void pci_sun4v_msi_init(struct pci_pbm_info *pbm) in pci_sun4v_msi_init() argument
1168 static int pci_sun4v_pbm_init(struct pci_pbm_info *pbm, in pci_sun4v_pbm_init() argument
1174 pbm->numa_node = of_node_to_nid(dp); in pci_sun4v_pbm_init()
1176 pbm->pci_ops = &sun4v_pci_ops; in pci_sun4v_pbm_init()
1177 pbm->config_space_reg_bits = 12; in pci_sun4v_pbm_init()
1179 pbm->index = pci_num_pbms++; in pci_sun4v_pbm_init()
1181 pbm->op = op; in pci_sun4v_pbm_init()
1183 pbm->devhandle = devhandle; in pci_sun4v_pbm_init()
1185 pbm->name = dp->full_name; in pci_sun4v_pbm_init()
1187 printk("%s: SUN4V PCI Bus Module\n", pbm->name); in pci_sun4v_pbm_init()
1188 printk("%s: On NUMA node %d\n", pbm->name, pbm->numa_node); in pci_sun4v_pbm_init()
1190 pci_determine_mem_io_space(pbm); in pci_sun4v_pbm_init()
1192 pci_get_pbm_props(pbm); in pci_sun4v_pbm_init()
1194 err = pci_sun4v_iommu_init(pbm); in pci_sun4v_pbm_init()
1198 pci_sun4v_msi_init(pbm); in pci_sun4v_pbm_init()
1200 pci_sun4v_scan_bus(pbm, &op->dev); in pci_sun4v_pbm_init()
1205 if (pbm->iommu->atu) { in pci_sun4v_pbm_init()
1206 err = pci_sun4v_atu_init(pbm); in pci_sun4v_pbm_init()
1208 kfree(pbm->iommu->atu); in pci_sun4v_pbm_init()
1209 pbm->iommu->atu = NULL; in pci_sun4v_pbm_init()
1214 pbm->next = pci_pbm_root; in pci_sun4v_pbm_init()
1215 pci_pbm_root = pbm; in pci_sun4v_pbm_init()
1224 struct pci_pbm_info *pbm; in pci_sun4v_probe() local
1287 pbm = kzalloc(sizeof(*pbm), GFP_KERNEL); in pci_sun4v_probe()
1288 if (!pbm) { in pci_sun4v_probe()
1299 pbm->iommu = iommu; in pci_sun4v_probe()
1309 err = pci_sun4v_pbm_init(pbm, op, devhandle); in pci_sun4v_probe()
1313 dev_set_drvdata(&op->dev, pbm); in pci_sun4v_probe()
1319 kfree(pbm->iommu); in pci_sun4v_probe()
1322 kfree(pbm); in pci_sun4v_probe()