Lines Matching defs:sbridge_dev
354 struct sbridge_dev {
385 struct sbridge_dev *sbridge_dev;
734 static struct sbridge_dev *get_sbridge_dev(int seg, u8 bus, enum domain dom,
736 struct sbridge_dev *prev)
738 struct sbridge_dev *sbridge_dev;
746 struct sbridge_dev, list);
749 sbridge_dev = list_entry(prev ? prev->list.next
750 : sbridge_edac_list.next, struct sbridge_dev, list);
752 list_for_each_entry_from(sbridge_dev, &sbridge_edac_list, list) {
753 if ((sbridge_dev->seg == seg) && (sbridge_dev->bus == bus) &&
754 (dom == SOCK || dom == sbridge_dev->dom))
755 return sbridge_dev;
761 static struct sbridge_dev *alloc_sbridge_dev(int seg, u8 bus, enum domain dom,
764 struct sbridge_dev *sbridge_dev;
766 sbridge_dev = kzalloc(sizeof(*sbridge_dev), GFP_KERNEL);
767 if (!sbridge_dev)
770 sbridge_dev->pdev = kcalloc(table->n_devs_per_imc,
771 sizeof(*sbridge_dev->pdev),
773 if (!sbridge_dev->pdev) {
774 kfree(sbridge_dev);
778 sbridge_dev->seg = seg;
779 sbridge_dev->bus = bus;
780 sbridge_dev->dom = dom;
781 sbridge_dev->n_devs = table->n_devs_per_imc;
782 list_add_tail(&sbridge_dev->list, &sbridge_edac_list);
784 return sbridge_dev;
787 static void free_sbridge_dev(struct sbridge_dev *sbridge_dev)
789 list_del(&sbridge_dev->list);
790 kfree(sbridge_dev->pdev);
791 kfree(sbridge_dev);
1575 pvt->sbridge_dev->source_id = SOURCE_ID_KNL(reg);
1577 pvt->sbridge_dev->source_id = SOURCE_ID(reg);
1633 pvt->sbridge_dev->source_id,
1634 pvt->sbridge_dev->dom, i);
1655 pvt->sbridge_dev->mc, pvt->sbridge_dev->dom, i, j,
1666 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom, i, j);
1681 pvt->sbridge_dev->node_id = pvt->info.get_node_id(pvt);
1683 pvt->sbridge_dev->mc,
1684 pvt->sbridge_dev->node_id,
1685 pvt->sbridge_dev->source_id);
1916 struct sbridge_dev *sbridge_dev;
1918 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) {
1919 if (sbridge_dev->node_id == node_id && sbridge_dev->dom == ha)
1920 return sbridge_dev->mci;
2004 pvt->sbridge_dev->mc,
2301 static void sbridge_put_devices(struct sbridge_dev *sbridge_dev)
2306 for (i = 0; i < sbridge_dev->n_devs; i++) {
2307 struct pci_dev *pdev = sbridge_dev->pdev[i];
2319 struct sbridge_dev *sbridge_dev, *tmp;
2321 list_for_each_entry_safe(sbridge_dev, tmp, &sbridge_edac_list, list) {
2322 sbridge_put_devices(sbridge_dev);
2323 free_sbridge_dev(sbridge_dev);
2333 struct sbridge_dev *sbridge_dev = NULL;
2371 sbridge_dev = get_sbridge_dev(seg, bus, dev_descr->dom,
2372 multi_bus, sbridge_dev);
2373 if (!sbridge_dev) {
2385 sbridge_dev = alloc_sbridge_dev(seg, bus, dev_descr->dom, table);
2386 if (!sbridge_dev) {
2393 if (sbridge_dev->pdev[sbridge_dev->i_devs]) {
2401 sbridge_dev->pdev[sbridge_dev->i_devs++] = pdev;
2487 struct sbridge_dev *sbridge_dev)
2494 for (i = 0; i < sbridge_dev->n_devs; i++) {
2495 pdev = sbridge_dev->pdev[i];
2537 sbridge_dev->bus,
2561 struct sbridge_dev *sbridge_dev)
2568 for (i = 0; i < sbridge_dev->n_devs; i++) {
2569 pdev = sbridge_dev->pdev[i];
2620 sbridge_dev->bus,
2647 struct sbridge_dev *sbridge_dev)
2661 for (i = 0; i < sbridge_dev->n_devs; i++) {
2662 pdev = sbridge_dev->pdev[i];
2711 sbridge_dev->bus,
2732 struct sbridge_dev *sbridge_dev)
2746 for (i = 0; i < sbridge_dev->n_devs; i++) {
2747 pdev = sbridge_dev->pdev[i];
2792 sbridge_dev->bus,
2813 struct sbridge_dev *sbridge_dev)
2822 for (i = 0; i < sbridge_dev->n_devs; i++) {
2823 pdev = sbridge_dev->pdev[i];
3196 static void sbridge_unregister_mci(struct sbridge_dev *sbridge_dev)
3198 struct mem_ctl_info *mci = sbridge_dev->mci;
3201 edac_dbg(0, "MC: dev = %p\n", &sbridge_dev->pdev[0]->dev);
3208 mci, &sbridge_dev->pdev[0]->dev);
3216 sbridge_dev->mci = NULL;
3219 static int sbridge_register_mci(struct sbridge_dev *sbridge_dev, enum type type)
3224 struct pci_dev *pdev = sbridge_dev->pdev[0];
3235 mci = edac_mc_alloc(sbridge_dev->mc, ARRAY_SIZE(layers), layers,
3247 /* Associate sbridge_dev and mci for future usage */
3248 pvt->sbridge_dev = sbridge_dev;
3249 sbridge_dev->mci = mci;
3279 rc = ibridge_mci_bind_devs(mci, sbridge_dev);
3284 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom);
3304 rc = sbridge_mci_bind_devs(mci, sbridge_dev);
3309 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom);
3329 rc = haswell_mci_bind_devs(mci, sbridge_dev);
3334 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom);
3354 rc = broadwell_mci_bind_devs(mci, sbridge_dev);
3359 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom);
3378 rc = knl_mci_bind_devs(mci, sbridge_dev);
3383 pvt->sbridge_dev->source_id, pvt->sbridge_dev->dom);
3416 sbridge_dev->mci = NULL;
3444 struct sbridge_dev *sbridge_dev;
3457 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list) {
3461 sbridge_dev->mc = mc++;
3462 rc = sbridge_register_mci(sbridge_dev, ptable->type);
3472 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list)
3473 sbridge_unregister_mci(sbridge_dev);
3486 struct sbridge_dev *sbridge_dev;
3490 list_for_each_entry(sbridge_dev, &sbridge_edac_list, list)
3491 sbridge_unregister_mci(sbridge_dev);