Lines Matching refs:sbridge_dev
302 struct sbridge_dev { struct
319 struct sbridge_dev *sbridge_dev; argument
639 static struct sbridge_dev *get_sbridge_dev(u8 bus) in get_sbridge_dev()
641 struct sbridge_dev *sbridge_dev; in get_sbridge_dev() local
643 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) { in get_sbridge_dev()
644 if (sbridge_dev->bus == bus) in get_sbridge_dev()
645 return sbridge_dev; in get_sbridge_dev()
651 static struct sbridge_dev *alloc_sbridge_dev(u8 bus, in alloc_sbridge_dev()
654 struct sbridge_dev *sbridge_dev; in alloc_sbridge_dev() local
656 sbridge_dev = kzalloc(sizeof(*sbridge_dev), GFP_KERNEL); in alloc_sbridge_dev()
657 if (!sbridge_dev) in alloc_sbridge_dev()
660 sbridge_dev->pdev = kzalloc(sizeof(*sbridge_dev->pdev) * table->n_devs, in alloc_sbridge_dev()
662 if (!sbridge_dev->pdev) { in alloc_sbridge_dev()
663 kfree(sbridge_dev); in alloc_sbridge_dev()
667 sbridge_dev->bus = bus; in alloc_sbridge_dev()
668 sbridge_dev->n_devs = table->n_devs; in alloc_sbridge_dev()
669 list_add_tail(&sbridge_dev->list, &sbridge_edac_list); in alloc_sbridge_dev()
671 return sbridge_dev; in alloc_sbridge_dev()
674 static void free_sbridge_dev(struct sbridge_dev *sbridge_dev) in free_sbridge_dev() argument
676 list_del(&sbridge_dev->list); in free_sbridge_dev()
677 kfree(sbridge_dev->pdev); in free_sbridge_dev()
678 kfree(sbridge_dev); in free_sbridge_dev()
943 pvt->sbridge_dev->source_id = SOURCE_ID(reg); in get_dimm_config()
945 pvt->sbridge_dev->node_id = pvt->info.get_node_id(pvt); in get_dimm_config()
947 pvt->sbridge_dev->mc, in get_dimm_config()
948 pvt->sbridge_dev->node_id, in get_dimm_config()
949 pvt->sbridge_dev->source_id); in get_dimm_config()
1013 pvt->sbridge_dev->mc, i/4, i%4, j, in get_dimm_config()
1024 pvt->sbridge_dev->source_id, i/4, i%4, j); in get_dimm_config()
1194 struct sbridge_dev *sbridge_dev; in get_mci_for_node_id() local
1196 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) { in get_mci_for_node_id()
1197 if (sbridge_dev->node_id == node_id) in get_mci_for_node_id()
1198 return sbridge_dev->mci; in get_mci_for_node_id()
1282 pvt->sbridge_dev->mc, in get_memory_error_data()
1535 static void sbridge_put_devices(struct sbridge_dev *sbridge_dev) in sbridge_put_devices() argument
1540 for (i = 0; i < sbridge_dev->n_devs; i++) { in sbridge_put_devices()
1541 struct pci_dev *pdev = sbridge_dev->pdev[i]; in sbridge_put_devices()
1553 struct sbridge_dev *sbridge_dev, *tmp; in sbridge_put_all_devices() local
1555 list_for_each_entry_safe(sbridge_dev, tmp, &sbridge_edac_list, list) { in sbridge_put_all_devices()
1556 sbridge_put_devices(sbridge_dev); in sbridge_put_all_devices()
1557 free_sbridge_dev(sbridge_dev); in sbridge_put_all_devices()
1566 struct sbridge_dev *sbridge_dev; in sbridge_get_onedevice() local
1600 sbridge_dev = get_sbridge_dev(bus); in sbridge_get_onedevice()
1601 if (!sbridge_dev) { in sbridge_get_onedevice()
1602 sbridge_dev = alloc_sbridge_dev(bus, table); in sbridge_get_onedevice()
1603 if (!sbridge_dev) { in sbridge_get_onedevice()
1610 if (sbridge_dev->pdev[devno]) { in sbridge_get_onedevice()
1618 sbridge_dev->pdev[devno] = pdev; in sbridge_get_onedevice()
1681 struct sbridge_dev *sbridge_dev) in sbridge_mci_bind_devs() argument
1688 for (i = 0; i < sbridge_dev->n_devs; i++) { in sbridge_mci_bind_devs()
1689 pdev = sbridge_dev->pdev[i]; in sbridge_mci_bind_devs()
1731 sbridge_dev->bus, in sbridge_mci_bind_devs()
1755 struct sbridge_dev *sbridge_dev) in ibridge_mci_bind_devs() argument
1762 for (i = 0; i < sbridge_dev->n_devs; i++) { in ibridge_mci_bind_devs()
1763 pdev = sbridge_dev->pdev[i]; in ibridge_mci_bind_devs()
1819 sbridge_dev->bus, in ibridge_mci_bind_devs()
1848 struct sbridge_dev *sbridge_dev) in haswell_mci_bind_devs() argument
1862 for (i = 0; i < sbridge_dev->n_devs; i++) { in haswell_mci_bind_devs()
1863 pdev = sbridge_dev->pdev[i]; in haswell_mci_bind_devs()
1923 sbridge_dev->bus, in haswell_mci_bind_devs()
1945 struct sbridge_dev *sbridge_dev) in broadwell_mci_bind_devs() argument
1959 for (i = 0; i < sbridge_dev->n_devs; i++) { in broadwell_mci_bind_devs()
1960 pdev = sbridge_dev->pdev[i]; in broadwell_mci_bind_devs()
2014 sbridge_dev->bus, in broadwell_mci_bind_devs()
2315 static void sbridge_unregister_mci(struct sbridge_dev *sbridge_dev) in sbridge_unregister_mci() argument
2317 struct mem_ctl_info *mci = sbridge_dev->mci; in sbridge_unregister_mci()
2321 edac_dbg(0, "MC: dev = %p\n", &sbridge_dev->pdev[0]->dev); in sbridge_unregister_mci()
2330 mci, &sbridge_dev->pdev[0]->dev); in sbridge_unregister_mci()
2338 sbridge_dev->mci = NULL; in sbridge_unregister_mci()
2341 static int sbridge_register_mci(struct sbridge_dev *sbridge_dev, enum type type) in sbridge_register_mci() argument
2346 struct pci_dev *pdev = sbridge_dev->pdev[0]; in sbridge_register_mci()
2350 rc = check_if_ecc_is_active(sbridge_dev->bus, type); in sbridge_register_mci()
2361 mci = edac_mc_alloc(sbridge_dev->mc, ARRAY_SIZE(layers), layers, in sbridge_register_mci()
2374 pvt->sbridge_dev = sbridge_dev; in sbridge_register_mci()
2375 sbridge_dev->mci = mci; in sbridge_register_mci()
2406 rc = ibridge_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
2426 rc = sbridge_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
2446 rc = haswell_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
2466 rc = broadwell_mci_bind_devs(mci, sbridge_dev); in sbridge_register_mci()
2491 sbridge_dev->mci = NULL; in sbridge_register_mci()
2507 struct sbridge_dev *sbridge_dev; in sbridge_probe() local
2547 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) { in sbridge_probe()
2551 sbridge_dev->mc = mc++; in sbridge_probe()
2552 rc = sbridge_register_mci(sbridge_dev, type); in sbridge_probe()
2563 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) in sbridge_probe()
2564 sbridge_unregister_mci(sbridge_dev); in sbridge_probe()
2578 struct sbridge_dev *sbridge_dev; in sbridge_remove() local
2597 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) in sbridge_remove()
2598 sbridge_unregister_mci(sbridge_dev); in sbridge_remove()