Lines Matching refs:sbridge_dev
360 struct sbridge_dev { struct
391 struct sbridge_dev *sbridge_dev; argument
740 static struct sbridge_dev *get_sbridge_dev(int seg, u8 bus, enum domain dom, in get_sbridge_dev()
742 struct sbridge_dev *prev) in get_sbridge_dev()
744 struct sbridge_dev *sbridge_dev; in get_sbridge_dev() local
752 struct sbridge_dev, list); in get_sbridge_dev()
755 sbridge_dev = list_entry(prev ? prev->list.next in get_sbridge_dev()
756 : sbridge_edac_list.next, struct sbridge_dev, list); in get_sbridge_dev()
758 list_for_each_entry_from(sbridge_dev, &sbridge_edac_list, list) { in get_sbridge_dev()
759 if ((sbridge_dev->seg == seg) && (sbridge_dev->bus == bus) && in get_sbridge_dev()
760 (dom == SOCK || dom == sbridge_dev->dom)) in get_sbridge_dev()
761 return sbridge_dev; in get_sbridge_dev()
767 static struct sbridge_dev *alloc_sbridge_dev(int seg, u8 bus, enum domain dom, in alloc_sbridge_dev()
770 struct sbridge_dev *sbridge_dev; in alloc_sbridge_dev() local
772 sbridge_dev = kzalloc(sizeof(*sbridge_dev), GFP_KERNEL); in alloc_sbridge_dev()
773 if (!sbridge_dev) in alloc_sbridge_dev()
776 sbridge_dev->pdev = kcalloc(table->n_devs_per_imc, in alloc_sbridge_dev()
777 sizeof(*sbridge_dev->pdev), in alloc_sbridge_dev()
779 if (!sbridge_dev->pdev) { in alloc_sbridge_dev()
780 kfree(sbridge_dev); in alloc_sbridge_dev()
784 sbridge_dev->seg = seg; in alloc_sbridge_dev()
785 sbridge_dev->bus = bus; in alloc_sbridge_dev()
786 sbridge_dev->dom = dom; in alloc_sbridge_dev()
787 sbridge_dev->n_devs = table->n_devs_per_imc; in alloc_sbridge_dev()
788 list_add_tail(&sbridge_dev->list, &sbridge_edac_list); in alloc_sbridge_dev()
790 return sbridge_dev; in alloc_sbridge_dev()
793 static void free_sbridge_dev(struct sbridge_dev *sbridge_dev) in free_sbridge_dev() argument
795 list_del(&sbridge_dev->list); in free_sbridge_dev()
796 kfree(sbridge_dev->pdev); in free_sbridge_dev()
797 kfree(sbridge_dev); in free_sbridge_dev()
1581 pvt->sbridge_dev->source_id = SOURCE_ID_KNL(reg); in get_source_id()
1583 pvt->sbridge_dev->source_id = SOURCE_ID(reg); in get_source_id()
1641 pvt->sbridge_dev->source_id, in __populate_dimms()
1642 pvt->sbridge_dev->dom, i); in __populate_dimms()
1663 pvt->sbridge_dev->mc, pvt->sbridge_dev->dom, i, j, in __populate_dimms()
1679 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom, i, j); in __populate_dimms()
1694 pvt->sbridge_dev->node_id = pvt->info.get_node_id(pvt); in get_dimm_config()
1696 pvt->sbridge_dev->mc, in get_dimm_config()
1697 pvt->sbridge_dev->node_id, in get_dimm_config()
1698 pvt->sbridge_dev->source_id); in get_dimm_config()
1929 struct sbridge_dev *sbridge_dev; in get_mci_for_node_id() local
1931 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) { in get_mci_for_node_id()
1932 if (sbridge_dev->node_id == node_id && sbridge_dev->dom == ha) in get_mci_for_node_id()
1933 return sbridge_dev->mci; in get_mci_for_node_id()
2111 pvt->sbridge_dev->mc, in get_memory_error_data()
2430 static void sbridge_put_devices(struct sbridge_dev *sbridge_dev) in sbridge_put_devices() argument
2435 for (i = 0; i < sbridge_dev->n_devs; i++) { in sbridge_put_devices()
2436 struct pci_dev *pdev = sbridge_dev->pdev[i]; in sbridge_put_devices()
2448 struct sbridge_dev *sbridge_dev, *tmp; in sbridge_put_all_devices() local
2450 list_for_each_entry_safe(sbridge_dev, tmp, &sbridge_edac_list, list) { in sbridge_put_all_devices()
2451 sbridge_put_devices(sbridge_dev); in sbridge_put_all_devices()
2452 free_sbridge_dev(sbridge_dev); in sbridge_put_all_devices()
2462 struct sbridge_dev *sbridge_dev = NULL; in sbridge_get_onedevice() local
2500 sbridge_dev = get_sbridge_dev(seg, bus, dev_descr->dom, in sbridge_get_onedevice()
2501 multi_bus, sbridge_dev); in sbridge_get_onedevice()
2502 if (!sbridge_dev) { in sbridge_get_onedevice()
2514 sbridge_dev = alloc_sbridge_dev(seg, bus, dev_descr->dom, table); in sbridge_get_onedevice()
2515 if (!sbridge_dev) { in sbridge_get_onedevice()
2522 if (sbridge_dev->pdev[sbridge_dev->i_devs]) { in sbridge_get_onedevice()
2530 sbridge_dev->pdev[sbridge_dev->i_devs++] = pdev; in sbridge_get_onedevice()
2616 struct sbridge_dev *sbridge_dev) in sbridge_mci_bind_devs() argument
2623 for (i = 0; i < sbridge_dev->n_devs; i++) { in sbridge_mci_bind_devs()
2624 pdev = sbridge_dev->pdev[i]; in sbridge_mci_bind_devs()
2666 sbridge_dev->bus, in sbridge_mci_bind_devs()
2690 struct sbridge_dev *sbridge_dev) in ibridge_mci_bind_devs() argument
2697 for (i = 0; i < sbridge_dev->n_devs; i++) { in ibridge_mci_bind_devs()
2698 pdev = sbridge_dev->pdev[i]; in ibridge_mci_bind_devs()
2749 sbridge_dev->bus, in ibridge_mci_bind_devs()
2776 struct sbridge_dev *sbridge_dev) in haswell_mci_bind_devs() argument
2790 for (i = 0; i < sbridge_dev->n_devs; i++) { in haswell_mci_bind_devs()
2791 pdev = sbridge_dev->pdev[i]; in haswell_mci_bind_devs()
2840 sbridge_dev->bus, in haswell_mci_bind_devs()
2861 struct sbridge_dev *sbridge_dev) in broadwell_mci_bind_devs() argument
2875 for (i = 0; i < sbridge_dev->n_devs; i++) { in broadwell_mci_bind_devs()
2876 pdev = sbridge_dev->pdev[i]; in broadwell_mci_bind_devs()
2921 sbridge_dev->bus, in broadwell_mci_bind_devs()
2942 struct sbridge_dev *sbridge_dev) in knl_mci_bind_devs() argument
2951 for (i = 0; i < sbridge_dev->n_devs; i++) { in knl_mci_bind_devs()
2952 pdev = sbridge_dev->pdev[i]; in knl_mci_bind_devs()
3324 static void sbridge_unregister_mci(struct sbridge_dev *sbridge_dev) in sbridge_unregister_mci() argument
3326 struct mem_ctl_info *mci = sbridge_dev->mci; in sbridge_unregister_mci()
3329 edac_dbg(0, "MC: dev = %p\n", &sbridge_dev->pdev[0]->dev); in sbridge_unregister_mci()
3336 mci, &sbridge_dev->pdev[0]->dev); in sbridge_unregister_mci()
3344 sbridge_dev->mci = NULL; in sbridge_unregister_mci()
3347 static int sbridge_register_mci(struct sbridge_dev *sbridge_dev, enum type type) in sbridge_register_mci() argument
3352 struct pci_dev *pdev = sbridge_dev->pdev[0]; in sbridge_register_mci()
3363 mci = edac_mc_alloc(sbridge_dev->mc, ARRAY_SIZE(layers), layers, in sbridge_register_mci()
3376 pvt->sbridge_dev = sbridge_dev; in sbridge_register_mci()
3377 sbridge_dev->mci = mci; in sbridge_register_mci()
3407 rc = ibridge_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
3412 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom); in sbridge_register_mci()
3432 rc = sbridge_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
3437 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom); in sbridge_register_mci()
3457 rc = haswell_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
3462 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom); in sbridge_register_mci()
3482 rc = broadwell_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
3487 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom); in sbridge_register_mci()
3506 rc = knl_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
3511 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom); in sbridge_register_mci()
3544 sbridge_dev->mci = NULL; in sbridge_register_mci()
3572 struct sbridge_dev *sbridge_dev; in sbridge_probe() local
3585 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) { in sbridge_probe()
3589 sbridge_dev->mc = mc++; in sbridge_probe()
3590 rc = sbridge_register_mci(sbridge_dev, ptable->type); in sbridge_probe()
3600 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) in sbridge_probe()
3601 sbridge_unregister_mci(sbridge_dev); in sbridge_probe()
3614 struct sbridge_dev *sbridge_dev; in sbridge_remove() local
3618 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) in sbridge_remove()
3619 sbridge_unregister_mci(sbridge_dev); in sbridge_remove()