Lines Matching refs:imc
98 static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable, in __enable_retry_rd_err_log() argument
104 s = I10NM_GET_REG32(imc, chan, offsets_scrub[0]); in __enable_retry_rd_err_log()
105 d = I10NM_GET_REG32(imc, chan, offsets_demand[0]); in __enable_retry_rd_err_log()
107 d2 = I10NM_GET_REG32(imc, chan, offsets_demand2[0]); in __enable_retry_rd_err_log()
111 imc->chan[chan].retry_rd_err_log_s = s; in __enable_retry_rd_err_log()
112 imc->chan[chan].retry_rd_err_log_d = d; in __enable_retry_rd_err_log()
114 imc->chan[chan].retry_rd_err_log_d2 = d2; in __enable_retry_rd_err_log()
128 if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
130 if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_NOOVER) in __enable_retry_rd_err_log()
132 if (!(imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
134 if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
136 if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_NOOVER) in __enable_retry_rd_err_log()
138 if (!(imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
142 if (imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
144 if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_NOOVER)) in __enable_retry_rd_err_log()
146 if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
151 I10NM_SET_REG32(imc, chan, offsets_scrub[0], s); in __enable_retry_rd_err_log()
152 I10NM_SET_REG32(imc, chan, offsets_demand[0], d); in __enable_retry_rd_err_log()
154 I10NM_SET_REG32(imc, chan, offsets_demand2[0], d2); in __enable_retry_rd_err_log()
160 struct skx_imc *imc; in enable_retry_rd_err_log() local
170 imc = &d->imc[i]; in enable_retry_rd_err_log()
171 if (!imc->mbase) in enable_retry_rd_err_log()
175 __enable_retry_rd_err_log(imc, j, enable, in enable_retry_rd_err_log()
185 imc = &d->imc[i]; in enable_retry_rd_err_log()
186 if (!imc->mbase || !imc->hbm_mc) in enable_retry_rd_err_log()
190 __enable_retry_rd_err_log(imc, j, enable, in enable_retry_rd_err_log()
194 __enable_retry_rd_err_log(imc, j, enable, in enable_retry_rd_err_log()
206 struct skx_imc *imc = &res->dev->imc[res->imc]; in show_retry_rd_err_log() local
216 if (!imc->mbase) in show_retry_rd_err_log()
219 if (imc->hbm_mc) { in show_retry_rd_err_log()
237 log0 = I10NM_GET_REG32(imc, res->channel, offsets[0]); in show_retry_rd_err_log()
238 log1 = I10NM_GET_REG32(imc, res->channel, offsets[1]); in show_retry_rd_err_log()
239 log3 = I10NM_GET_REG32(imc, res->channel, offsets[3]); in show_retry_rd_err_log()
240 log4 = I10NM_GET_REG32(imc, res->channel, offsets[4]); in show_retry_rd_err_log()
241 log5 = I10NM_GET_REG64(imc, res->channel, offsets[5]); in show_retry_rd_err_log()
244 lxg0 = I10NM_GET_REG32(imc, res->channel, xffsets[0]); in show_retry_rd_err_log()
245 lxg1 = I10NM_GET_REG32(imc, res->channel, xffsets[1]); in show_retry_rd_err_log()
246 lxg3 = I10NM_GET_REG32(imc, res->channel, xffsets[3]); in show_retry_rd_err_log()
247 lxg4 = I10NM_GET_REG32(imc, res->channel, xffsets[4]); in show_retry_rd_err_log()
248 lxg5 = I10NM_GET_REG64(imc, res->channel, xffsets[5]); in show_retry_rd_err_log()
252 log2a = I10NM_GET_REG64(imc, res->channel, offsets[2]); in show_retry_rd_err_log()
258 lxg2a = I10NM_GET_REG64(imc, res->channel, xffsets[2]); in show_retry_rd_err_log()
266 log2 = I10NM_GET_REG32(imc, res->channel, offsets[2]); in show_retry_rd_err_log()
271 if (imc->hbm_mc) { in show_retry_rd_err_log()
273 corr0 = I10NM_GET_REG32(imc, res->channel, 0x2c18); in show_retry_rd_err_log()
274 corr1 = I10NM_GET_REG32(imc, res->channel, 0x2c1c); in show_retry_rd_err_log()
275 corr2 = I10NM_GET_REG32(imc, res->channel, 0x2c20); in show_retry_rd_err_log()
276 corr3 = I10NM_GET_REG32(imc, res->channel, 0x2c24); in show_retry_rd_err_log()
278 corr0 = I10NM_GET_REG32(imc, res->channel, 0x2818); in show_retry_rd_err_log()
279 corr1 = I10NM_GET_REG32(imc, res->channel, 0x281c); in show_retry_rd_err_log()
280 corr2 = I10NM_GET_REG32(imc, res->channel, 0x2820); in show_retry_rd_err_log()
281 corr3 = I10NM_GET_REG32(imc, res->channel, 0x2824); in show_retry_rd_err_log()
284 corr0 = I10NM_GET_REG32(imc, res->channel, 0x22c18); in show_retry_rd_err_log()
285 corr1 = I10NM_GET_REG32(imc, res->channel, 0x22c1c); in show_retry_rd_err_log()
286 corr2 = I10NM_GET_REG32(imc, res->channel, 0x22c20); in show_retry_rd_err_log()
287 corr3 = I10NM_GET_REG32(imc, res->channel, 0x22c24); in show_retry_rd_err_log()
302 I10NM_SET_REG32(imc, res->channel, offsets[0], log0); in show_retry_rd_err_log()
307 I10NM_SET_REG32(imc, res->channel, xffsets[0], lxg0); in show_retry_rd_err_log()
519 if (d->imc[0].src_id == m->socketid) { in i10nm_mc_decode()
529 res->imc = bank / 4; in i10nm_mc_decode()
542 res->imc = bank / 2; in i10nm_mc_decode()
558 m->socketid, res->imc); in i10nm_mc_decode()
664 static bool i10nm_imc_absent(struct skx_imc *imc) in i10nm_imc_absent() argument
672 mcmtr = I10NM_GET_MCMTR(imc, i); in i10nm_imc_absent()
745 d->imc[lmc].mbase = mbase; in i10nm_get_ddr_munits()
746 if (i10nm_imc_absent(&d->imc[lmc])) { in i10nm_get_ddr_munits()
749 d->imc[lmc].mbase = NULL; in i10nm_get_ddr_munits()
753 d->imc[lmc].mdev = mdev; in i10nm_get_ddr_munits()
818 d->imc[lmc].mdev = mdev; in i10nm_get_hbm_munits()
826 pci_dev_put(d->imc[lmc].mdev); in i10nm_get_hbm_munits()
827 d->imc[lmc].mdev = NULL; in i10nm_get_hbm_munits()
834 d->imc[lmc].mbase = mbase; in i10nm_get_hbm_munits()
835 d->imc[lmc].hbm_mc = true; in i10nm_get_hbm_munits()
837 mcmtr = I10NM_GET_MCMTR(&d->imc[lmc], 0); in i10nm_get_hbm_munits()
839 iounmap(d->imc[lmc].mbase); in i10nm_get_hbm_munits()
840 d->imc[lmc].mbase = NULL; in i10nm_get_hbm_munits()
841 d->imc[lmc].hbm_mc = false; in i10nm_get_hbm_munits()
842 pci_dev_put(d->imc[lmc].mdev); in i10nm_get_hbm_munits()
843 d->imc[lmc].mdev = NULL; in i10nm_get_hbm_munits()
955 static bool i10nm_check_ecc(struct skx_imc *imc, int chan) in i10nm_check_ecc() argument
959 mcmtr = I10NM_GET_MCMTR(imc, chan); in i10nm_check_ecc()
969 struct skx_imc *imc = pvt->imc; in i10nm_get_dimm_config() local
974 for (i = 0; i < imc->num_channels; i++) { in i10nm_get_dimm_config()
975 if (!imc->mbase) in i10nm_get_dimm_config()
981 mcddrtcfg = I10NM_GET_MCDDRTCFG(imc, i); in i10nm_get_dimm_config()
983 for (j = 0; j < imc->num_dimms; j++) { in i10nm_get_dimm_config()
985 mtr = I10NM_GET_DIMMMTR(imc, i, j); in i10nm_get_dimm_config()
987 mtr, mcddrtcfg, imc->mc, i, j); in i10nm_get_dimm_config()
991 imc, i, j, cfg); in i10nm_get_dimm_config()
993 ndimms += skx_get_nvdimm_info(dimm, imc, i, j, in i10nm_get_dimm_config()
996 if (ndimms && !i10nm_check_ecc(imc, i)) { in i10nm_get_dimm_config()
998 imc->mc, i); in i10nm_get_dimm_config()
1078 if (!d->imc[i].mdev) in i10nm_init()
1081 d->imc[i].mc = mc++; in i10nm_init()
1082 d->imc[i].lmc = i; in i10nm_init()
1083 d->imc[i].src_id = src_id; in i10nm_init()
1084 d->imc[i].node_id = node_id; in i10nm_init()
1085 if (d->imc[i].hbm_mc) { in i10nm_init()
1086 d->imc[i].chan_mmio_sz = cfg->hbm_chan_mmio_sz; in i10nm_init()
1087 d->imc[i].num_channels = cfg->hbm_chan_num; in i10nm_init()
1088 d->imc[i].num_dimms = cfg->hbm_dimm_num; in i10nm_init()
1090 d->imc[i].chan_mmio_sz = cfg->ddr_chan_mmio_sz; in i10nm_init()
1091 d->imc[i].num_channels = cfg->ddr_chan_num; in i10nm_init()
1092 d->imc[i].num_dimms = cfg->ddr_dimm_num; in i10nm_init()
1095 rc = skx_register_mci(&d->imc[i], d->imc[i].mdev, in i10nm_init()