Lines Matching +full:2 +full:d
33 #define MASK26 0x3FFFFFF /* Mask for 2^26 */
34 #define MASK29 0x1FFFFFFF /* Mask for 2^29 */
40 .ddr_imc_num = 2,
42 .ddr_dimm_num = 2,
47 struct skx_dev *d; in get_skx_dev() local
49 list_for_each_entry(d, skx_edac_list, list) { in get_skx_dev()
50 if (d->seg == pci_domain_nr(bus) && d->bus[idx] == bus->number) in get_skx_dev()
51 return d; in get_skx_dev()
64 u16 devfn[2];
78 { 0x2040, { PCI_DEVFN(10, 0), PCI_DEVFN(12, 0) }, 2, 2, CHAN0 },
79 { 0x2044, { PCI_DEVFN(10, 4), PCI_DEVFN(12, 4) }, 2, 2, CHAN1 },
80 { 0x2048, { PCI_DEVFN(11, 0), PCI_DEVFN(13, 0) }, 2, 2, CHAN2 },
81 { 0x2043, { PCI_DEVFN(10, 3), PCI_DEVFN(12, 3) }, 2, 2, ERRCHAN0 },
82 { 0x2047, { PCI_DEVFN(10, 7), PCI_DEVFN(12, 7) }, 2, 2, ERRCHAN1 },
83 { 0x204b, { PCI_DEVFN(11, 3), PCI_DEVFN(13, 3) }, 2, 2, ERRCHAN2 },
91 struct skx_dev *d; in get_all_munits() local
108 d = get_skx_dev(pdev->bus, m->busidx); in get_all_munits()
109 if (!d) in get_all_munits()
124 d->imc[i].chan[m->mtype].cdev = pdev; in get_all_munits()
130 d->imc[i].chan[m->mtype - ERRCHAN0].edev = pdev; in get_all_munits()
134 d->sad_all = pdev; in get_all_munits()
138 d->util_all = pdev; in get_all_munits()
149 if (d->mcroute == 0) { in get_all_munits()
150 d->mcroute = reg; in get_all_munits()
151 } else if (d->mcroute != reg) { in get_all_munits()
177 return !!GET_BITFIELD(mcmtr, 2, 2); in skx_check_ecc()
209 skx_printk(KERN_ERR, "ECC is disabled on imc %d\n", imc->mc); in skx_get_dimm_config()
219 #define SKX_GET_SAD(d, i, reg) \ argument
220 pci_read_config_dword((d)->sad_all, 0x60 + 8 * (i), &(reg))
221 #define SKX_GET_ILV(d, i, reg) \ argument
222 pci_read_config_dword((d)->sad_all, 0x64 + 8 * (i), &(reg))
229 #define SKX_SAD_INTERLEAVE(sad) GET_BITFIELD((sad), 1, 2)
271 struct skx_dev *d = list_first_entry(skx_edac_list, typeof(*d), list); in skx_sad_decode() local
287 SKX_GET_SAD(d, i, sad); in skx_sad_decode()
299 SKX_GET_ILV(d, i, ilv); in skx_sad_decode()
308 case 2: in skx_sad_decode()
325 list_for_each_entry(d, skx_edac_list, list) { in skx_sad_decode()
326 if (d->imc[0].src_id == SKX_ILV_TARGET(tgt)) in skx_sad_decode()
329 edac_dbg(0, "Can't find node %d\n", SKX_ILV_TARGET(tgt)); in skx_sad_decode()
343 case 2: in skx_sad_decode()
355 lchan = (addr >> shift) % 2; in skx_sad_decode()
357 case 2: in skx_sad_decode()
358 lchan = (addr >> shift) % 2; in skx_sad_decode()
362 lchan = ((addr >> shift) % 2) << 1; in skx_sad_decode()
368 res->dev = d; in skx_sad_decode()
369 res->socket = d->imc[0].src_id; in skx_sad_decode()
370 res->imc = GET_BITFIELD(d->mcroute, lchan * 3, lchan * 3 + 2); in skx_sad_decode()
371 res->channel = GET_BITFIELD(d->mcroute, lchan * 2 + 18, lchan * 2 + 19); in skx_sad_decode()
373 edac_dbg(2, "0x%llx: socket=%d imc=%d channel=%d\n", in skx_sad_decode()
380 #define SKX_GET_TADBASE(d, mc, i, reg) \ argument
381 pci_read_config_dword((d)->imc[mc].chan[0].cdev, 0x850 + 4 * (i), &(reg))
382 #define SKX_GET_TADWAYNESS(d, mc, i, reg) \ argument
383 pci_read_config_dword((d)->imc[mc].chan[0].cdev, 0x880 + 4 * (i), &(reg))
384 #define SKX_GET_TADCHNILVOFFSET(d, mc, ch, i, reg) \ argument
385 pci_read_config_dword((d)->imc[mc].chan[ch].cdev, 0x90 + 4 * (i), &(reg))
448 edac_dbg(2, "0x%llx: chan_addr=0x%llx sktways=%d chanways=%d\n", in skx_tad_decode()
455 #define SKX_GET_RIRWAYNESS(d, mc, ch, i, reg) \ argument
456 pci_read_config_dword((d)->imc[mc].chan[ch].cdev, \
458 #define SKX_GET_RIRILV(d, mc, ch, idx, i, reg) \ argument
459 pci_read_config_dword((d)->imc[mc].chan[ch].cdev, \
466 #define SKX_RIR_OFFSET(b) ((u64)(GET_BITFIELD((b), 2, 15) << 26))
509 edac_dbg(2, "0x%llx: dimm=%d rank=%d chan_rank=%d rank_addr=0x%llx\n", in skx_rir_decode()
576 edac_dbg(2, "0x%llx: row=0x%x col=0x%x bank_addr=%d bank_group=%d\n", in skx_mad_decode()
607 struct skx_dev *d; in skx_init() local
609 edac_dbg(2, "\n"); in skx_init()
636 edac_dbg(2, "No memory controllers found\n"); in skx_init()
646 edac_dbg(2, "Expected %d, got %d of 0x%x\n", in skx_init()
653 list_for_each_entry(d, skx_edac_list, list) { in skx_init()
654 rc = skx_get_src_id(d, 0xf0, &src_id); in skx_init()
658 edac_dbg(2, "src_id = %d\n", src_id); in skx_init()
660 d->imc[i].mc = mc++; in skx_init()
661 d->imc[i].lmc = i; in skx_init()
662 d->imc[i].src_id = src_id; in skx_init()
663 d->imc[i].num_channels = cfg->ddr_chan_num; in skx_init()
664 d->imc[i].num_dimms = cfg->ddr_dimm_num; in skx_init()
666 rc = skx_register_mci(&d->imc[i], d->imc[i].chan[0].cdev, in skx_init()
699 edac_dbg(2, "\n"); in skx_exit()