Lines Matching refs:imc
83 static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable) in __enable_retry_rd_err_log() argument
87 if (!imc->mbase) in __enable_retry_rd_err_log()
90 s = I10NM_GET_REG32(imc, chan, res_cfg->offsets_scrub[0]); in __enable_retry_rd_err_log()
91 d = I10NM_GET_REG32(imc, chan, res_cfg->offsets_demand[0]); in __enable_retry_rd_err_log()
95 imc->chan[chan].retry_rd_err_log_s = s; in __enable_retry_rd_err_log()
96 imc->chan[chan].retry_rd_err_log_d = d; in __enable_retry_rd_err_log()
104 if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
106 if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_NOOVER) in __enable_retry_rd_err_log()
108 if (!(imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
110 if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
112 if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_NOOVER) in __enable_retry_rd_err_log()
114 if (!(imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
118 I10NM_SET_REG32(imc, chan, res_cfg->offsets_scrub[0], s); in __enable_retry_rd_err_log()
119 I10NM_SET_REG32(imc, chan, res_cfg->offsets_demand[0], d); in __enable_retry_rd_err_log()
132 __enable_retry_rd_err_log(&d->imc[i], j, enable); in enable_retry_rd_err_log()
138 struct skx_imc *imc = &res->dev->imc[res->imc]; in show_retry_rd_err_log() local
145 if (!imc->mbase) in show_retry_rd_err_log()
150 log0 = I10NM_GET_REG32(imc, res->channel, offsets[0]); in show_retry_rd_err_log()
151 log1 = I10NM_GET_REG32(imc, res->channel, offsets[1]); in show_retry_rd_err_log()
152 log3 = I10NM_GET_REG32(imc, res->channel, offsets[3]); in show_retry_rd_err_log()
153 log4 = I10NM_GET_REG32(imc, res->channel, offsets[4]); in show_retry_rd_err_log()
154 log5 = I10NM_GET_REG64(imc, res->channel, offsets[5]); in show_retry_rd_err_log()
157 log2a = I10NM_GET_REG64(imc, res->channel, offsets[2]); in show_retry_rd_err_log()
161 log2 = I10NM_GET_REG32(imc, res->channel, offsets[2]); in show_retry_rd_err_log()
166 corr0 = I10NM_GET_REG32(imc, res->channel, 0x22c18); in show_retry_rd_err_log()
167 corr1 = I10NM_GET_REG32(imc, res->channel, 0x22c1c); in show_retry_rd_err_log()
168 corr2 = I10NM_GET_REG32(imc, res->channel, 0x22c20); in show_retry_rd_err_log()
169 corr3 = I10NM_GET_REG32(imc, res->channel, 0x22c24); in show_retry_rd_err_log()
182 I10NM_SET_REG32(imc, res->channel, offsets[0], log0); in show_retry_rd_err_log()
272 d->imc[i].mdev = mdev; in i10nm_get_ddr_munits()
291 d->imc[i].mbase = mbase; in i10nm_get_ddr_munits()
353 d->imc[lmc].mdev = mdev; in i10nm_get_hbm_munits()
361 pci_dev_put(d->imc[lmc].mdev); in i10nm_get_hbm_munits()
362 d->imc[lmc].mdev = NULL; in i10nm_get_hbm_munits()
369 d->imc[lmc].mbase = mbase; in i10nm_get_hbm_munits()
370 d->imc[lmc].hbm_mc = true; in i10nm_get_hbm_munits()
372 mcmtr = I10NM_GET_MCMTR(&d->imc[lmc], 0); in i10nm_get_hbm_munits()
374 iounmap(d->imc[lmc].mbase); in i10nm_get_hbm_munits()
375 d->imc[lmc].mbase = NULL; in i10nm_get_hbm_munits()
376 d->imc[lmc].hbm_mc = false; in i10nm_get_hbm_munits()
377 pci_dev_put(d->imc[lmc].mdev); in i10nm_get_hbm_munits()
378 d->imc[lmc].mdev = NULL; in i10nm_get_hbm_munits()
437 static bool i10nm_check_ecc(struct skx_imc *imc, int chan) in i10nm_check_ecc() argument
441 mcmtr = I10NM_GET_MCMTR(imc, chan); in i10nm_check_ecc()
451 struct skx_imc *imc = pvt->imc; in i10nm_get_dimm_config() local
456 for (i = 0; i < imc->num_channels; i++) { in i10nm_get_dimm_config()
457 if (!imc->mbase) in i10nm_get_dimm_config()
461 amap = I10NM_GET_AMAP(imc, i); in i10nm_get_dimm_config()
462 mcddrtcfg = I10NM_GET_MCDDRTCFG(imc, i); in i10nm_get_dimm_config()
463 for (j = 0; j < imc->num_dimms; j++) { in i10nm_get_dimm_config()
465 mtr = I10NM_GET_DIMMMTR(imc, i, j); in i10nm_get_dimm_config()
467 mtr, mcddrtcfg, imc->mc, i, j); in i10nm_get_dimm_config()
471 imc, i, j, cfg); in i10nm_get_dimm_config()
473 ndimms += skx_get_nvdimm_info(dimm, imc, i, j, in i10nm_get_dimm_config()
476 if (ndimms && !i10nm_check_ecc(imc, i)) { in i10nm_get_dimm_config()
478 imc->mc, i); in i10nm_get_dimm_config()
595 if (!d->imc[i].mdev) in i10nm_init()
598 d->imc[i].mc = mc++; in i10nm_init()
599 d->imc[i].lmc = i; in i10nm_init()
600 d->imc[i].src_id = src_id; in i10nm_init()
601 d->imc[i].node_id = node_id; in i10nm_init()
602 if (d->imc[i].hbm_mc) { in i10nm_init()
603 d->imc[i].chan_mmio_sz = cfg->hbm_chan_mmio_sz; in i10nm_init()
604 d->imc[i].num_channels = I10NM_NUM_HBM_CHANNELS; in i10nm_init()
605 d->imc[i].num_dimms = I10NM_NUM_HBM_DIMMS; in i10nm_init()
607 d->imc[i].chan_mmio_sz = cfg->ddr_chan_mmio_sz; in i10nm_init()
608 d->imc[i].num_channels = I10NM_NUM_DDR_CHANNELS; in i10nm_init()
609 d->imc[i].num_dimms = I10NM_NUM_DDR_DIMMS; in i10nm_init()
612 rc = skx_register_mci(&d->imc[i], d->imc[i].mdev, in i10nm_init()