Lines Matching refs:pseg

88     struct pci_seg *pseg = get_pseg(seg);  in alloc_pseg()  local
90 if ( pseg ) in alloc_pseg()
91 return pseg; in alloc_pseg()
93 pseg = xzalloc(struct pci_seg); in alloc_pseg()
94 if ( !pseg ) in alloc_pseg()
97 pseg->nr = seg; in alloc_pseg()
98 INIT_LIST_HEAD(&pseg->alldevs_list); in alloc_pseg()
99 spin_lock_init(&pseg->bus2bridge_lock); in alloc_pseg()
101 if ( radix_tree_insert(&pci_segments, seg, pseg) ) in alloc_pseg()
103 xfree(pseg); in alloc_pseg()
104 pseg = NULL; in alloc_pseg()
107 return pseg; in alloc_pseg()
117 struct pci_seg *pseg; in pci_segments_iterate() local
119 if ( !radix_tree_gang_lookup(&pci_segments, (void **)&pseg, seg, 1) ) in pci_segments_iterate()
121 rc = handler(pseg, arg); in pci_segments_iterate()
122 seg = pseg->nr + 1; in pci_segments_iterate()
142 struct pci_seg *pseg = get_pseg(seg); in pci_get_ro_map() local
144 return pseg ? pseg->ro_map : NULL; in pci_get_ro_map()
300 static struct pci_dev *alloc_pdev(struct pci_seg *pseg, u8 bus, u8 devfn) in alloc_pdev() argument
304 list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) in alloc_pdev()
312 *(u16*) &pdev->seg = pseg->nr; in alloc_pdev()
318 if ( pci_find_cap_offset(pseg->nr, bus, PCI_SLOT(devfn), PCI_FUNC(devfn), in alloc_pdev()
332 list_add(&pdev->alldevs_list, &pseg->alldevs_list); in alloc_pdev()
335 switch ( pdev->type = pdev_type(pseg->nr, bus, devfn) ) in alloc_pdev()
343 sec_bus = pci_conf_read8(pseg->nr, bus, PCI_SLOT(devfn), in alloc_pdev()
345 sub_bus = pci_conf_read8(pseg->nr, bus, PCI_SLOT(devfn), in alloc_pdev()
348 spin_lock(&pseg->bus2bridge_lock); in alloc_pdev()
351 pseg->bus2bridge[sec_bus].map = 1; in alloc_pdev()
352 pseg->bus2bridge[sec_bus].bus = bus; in alloc_pdev()
353 pseg->bus2bridge[sec_bus].devfn = devfn; in alloc_pdev()
355 spin_unlock(&pseg->bus2bridge_lock); in alloc_pdev()
359 pos = pci_find_cap_offset(pseg->nr, bus, PCI_SLOT(devfn), in alloc_pdev()
362 cap = pci_conf_read16(pseg->nr, bus, PCI_SLOT(devfn), in alloc_pdev()
376 if ( phantom_devs[i].seg == pseg->nr && in alloc_pdev()
394 pseg->nr, bus, PCI_SLOT(devfn), PCI_FUNC(devfn), pdev->type); in alloc_pdev()
403 static void free_pdev(struct pci_seg *pseg, struct pci_dev *pdev) in free_pdev() argument
414 sec_bus = pci_conf_read8(pseg->nr, pdev->bus, dev, func, in free_pdev()
416 sub_bus = pci_conf_read8(pseg->nr, pdev->bus, dev, func, in free_pdev()
419 spin_lock(&pseg->bus2bridge_lock); in free_pdev()
421 pseg->bus2bridge[sec_bus] = pseg->bus2bridge[pdev->bus]; in free_pdev()
422 spin_unlock(&pseg->bus2bridge_lock); in free_pdev()
461 struct pci_seg *pseg = alloc_pseg(seg); in pci_ro_device() local
464 if ( !pseg ) in pci_ro_device()
466 pdev = alloc_pdev(pseg, bus, devfn); in pci_ro_device()
470 if ( !pseg->ro_map ) in pci_ro_device()
474 pseg->ro_map = alloc_xenheap_pages(get_order_from_bytes(sz), 0); in pci_ro_device()
475 if ( !pseg->ro_map ) in pci_ro_device()
477 memset(pseg->ro_map, 0, sz); in pci_ro_device()
480 __set_bit(PCI_BDF2(bus, devfn), pseg->ro_map); in pci_ro_device()
488 struct pci_seg *pseg = get_pseg(seg); in pci_get_pdev() local
495 if ( !pseg ) in pci_get_pdev()
498 radix_tree_gang_lookup(&pci_segments, (void **)&pseg, 0, 1); in pci_get_pdev()
499 if ( !pseg ) in pci_get_pdev()
504 list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) in pci_get_pdev()
508 } while ( radix_tree_gang_lookup(&pci_segments, (void **)&pseg, in pci_get_pdev()
509 pseg->nr + 1, 1) ); in pci_get_pdev()
538 struct pci_seg *pseg = get_pseg(seg); in pci_get_pdev_by_domain() local
544 if ( !pseg ) in pci_get_pdev_by_domain()
547 radix_tree_gang_lookup(&pci_segments, (void **)&pseg, 0, 1); in pci_get_pdev_by_domain()
548 if ( !pseg ) in pci_get_pdev_by_domain()
553 list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) in pci_get_pdev_by_domain()
558 } while ( radix_tree_gang_lookup(&pci_segments, (void **)&pseg, in pci_get_pdev_by_domain()
559 pseg->nr + 1, 1) ); in pci_get_pdev_by_domain()
608 struct pci_seg *pseg; in pci_add_device() local
644 pseg = alloc_pseg(seg); in pci_add_device()
645 if ( !pseg ) in pci_add_device()
647 pdev = alloc_pdev(pseg, bus, devfn); in pci_add_device()
772 struct pci_seg *pseg = get_pseg(seg); in pci_remove_device() local
782 if ( !pseg ) in pci_remove_device()
786 list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) in pci_remove_device()
793 free_pdev(pseg, pdev); in pci_remove_device()
920 struct pci_seg *pseg = get_pseg(seg); in find_upstream_bridge() local
927 if ( !pseg ) in find_upstream_bridge()
930 if ( !pseg->bus2bridge[*bus].map ) in find_upstream_bridge()
934 spin_lock(&pseg->bus2bridge_lock); in find_upstream_bridge()
935 while ( pseg->bus2bridge[*bus].map ) in find_upstream_bridge()
938 *devfn = pseg->bus2bridge[*bus].devfn; in find_upstream_bridge()
939 *bus = pseg->bus2bridge[*bus].bus; in find_upstream_bridge()
948 spin_unlock(&pseg->bus2bridge_lock); in find_upstream_bridge()
999 static int __init _scan_pci_devices(struct pci_seg *pseg, void *arg) in _scan_pci_devices() argument
1010 if ( !pci_device_detect(pseg->nr, bus, dev, func) ) in _scan_pci_devices()
1017 pdev = alloc_pdev(pseg, bus, PCI_DEVFN(dev, func)); in _scan_pci_devices()
1021 pseg->nr, bus, dev, func); in _scan_pci_devices()
1025 if ( !func && !(pci_conf_read8(pseg->nr, bus, dev, func, in _scan_pci_devices()
1072 static int __hwdom_init _setup_hwdom_pci_devices(struct pci_seg *pseg, void *arg) in _setup_hwdom_pci_devices() argument
1081 struct pci_dev *pdev = pci_get_pdev(pseg->nr, bus, devfn); in _setup_hwdom_pci_devices()
1100 pdev->domain->domain_id, pseg->nr, bus, in _setup_hwdom_pci_devices()
1232 static int _dump_pci_devices(struct pci_seg *pseg, void *arg) in _dump_pci_devices() argument
1237 printk("==== segment %04x ====\n", pseg->nr); in _dump_pci_devices()
1239 list_for_each_entry ( pdev, &pseg->alldevs_list, alldevs_list ) in _dump_pci_devices()
1242 pseg->nr, pdev->bus, in _dump_pci_devices()