Lines Matching refs:imc

102 static void __enable_retry_rd_err_log(struct skx_imc *imc, int chan, bool enable,  in __enable_retry_rd_err_log()  argument
108 s = I10NM_GET_REG32(imc, chan, offsets_scrub[0]); in __enable_retry_rd_err_log()
109 d = I10NM_GET_REG32(imc, chan, offsets_demand[0]); in __enable_retry_rd_err_log()
111 d2 = I10NM_GET_REG32(imc, chan, offsets_demand2[0]); in __enable_retry_rd_err_log()
115 imc->chan[chan].retry_rd_err_log_s = s; in __enable_retry_rd_err_log()
116 imc->chan[chan].retry_rd_err_log_d = d; in __enable_retry_rd_err_log()
118 imc->chan[chan].retry_rd_err_log_d2 = d2; in __enable_retry_rd_err_log()
132 if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
134 if (imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_NOOVER) in __enable_retry_rd_err_log()
136 if (!(imc->chan[chan].retry_rd_err_log_s & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
138 if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
140 if (imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_NOOVER) in __enable_retry_rd_err_log()
142 if (!(imc->chan[chan].retry_rd_err_log_d & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
146 if (imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_UC) in __enable_retry_rd_err_log()
148 if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_NOOVER)) in __enable_retry_rd_err_log()
150 if (!(imc->chan[chan].retry_rd_err_log_d2 & RETRY_RD_ERR_LOG_EN)) in __enable_retry_rd_err_log()
155 I10NM_SET_REG32(imc, chan, offsets_scrub[0], s); in __enable_retry_rd_err_log()
156 I10NM_SET_REG32(imc, chan, offsets_demand[0], d); in __enable_retry_rd_err_log()
158 I10NM_SET_REG32(imc, chan, offsets_demand2[0], d2); in __enable_retry_rd_err_log()
164 struct skx_imc *imc; in enable_retry_rd_err_log() local
174 imc = &d->imc[i]; in enable_retry_rd_err_log()
175 if (!imc->mbase) in enable_retry_rd_err_log()
179 __enable_retry_rd_err_log(imc, j, enable, in enable_retry_rd_err_log()
189 imc = &d->imc[i]; in enable_retry_rd_err_log()
190 if (!imc->mbase || !imc->hbm_mc) in enable_retry_rd_err_log()
194 __enable_retry_rd_err_log(imc, j, enable, in enable_retry_rd_err_log()
198 __enable_retry_rd_err_log(imc, j, enable, in enable_retry_rd_err_log()
210 struct skx_imc *imc = &res->dev->imc[res->imc]; in show_retry_rd_err_log() local
220 if (!imc->mbase) in show_retry_rd_err_log()
223 if (imc->hbm_mc) { in show_retry_rd_err_log()
241 log0 = I10NM_GET_REG32(imc, res->channel, offsets[0]); in show_retry_rd_err_log()
242 log1 = I10NM_GET_REG32(imc, res->channel, offsets[1]); in show_retry_rd_err_log()
243 log3 = I10NM_GET_REG32(imc, res->channel, offsets[3]); in show_retry_rd_err_log()
244 log4 = I10NM_GET_REG32(imc, res->channel, offsets[4]); in show_retry_rd_err_log()
245 log5 = I10NM_GET_REG64(imc, res->channel, offsets[5]); in show_retry_rd_err_log()
248 lxg0 = I10NM_GET_REG32(imc, res->channel, xffsets[0]); in show_retry_rd_err_log()
249 lxg1 = I10NM_GET_REG32(imc, res->channel, xffsets[1]); in show_retry_rd_err_log()
250 lxg3 = I10NM_GET_REG32(imc, res->channel, xffsets[3]); in show_retry_rd_err_log()
251 lxg4 = I10NM_GET_REG32(imc, res->channel, xffsets[4]); in show_retry_rd_err_log()
252 lxg5 = I10NM_GET_REG64(imc, res->channel, xffsets[5]); in show_retry_rd_err_log()
256 log2a = I10NM_GET_REG64(imc, res->channel, offsets[2]); in show_retry_rd_err_log()
262 lxg2a = I10NM_GET_REG64(imc, res->channel, xffsets[2]); in show_retry_rd_err_log()
270 log2 = I10NM_GET_REG32(imc, res->channel, offsets[2]); in show_retry_rd_err_log()
275 if (imc->hbm_mc) { in show_retry_rd_err_log()
277 corr0 = I10NM_GET_REG32(imc, res->channel, 0x2c18); in show_retry_rd_err_log()
278 corr1 = I10NM_GET_REG32(imc, res->channel, 0x2c1c); in show_retry_rd_err_log()
279 corr2 = I10NM_GET_REG32(imc, res->channel, 0x2c20); in show_retry_rd_err_log()
280 corr3 = I10NM_GET_REG32(imc, res->channel, 0x2c24); in show_retry_rd_err_log()
282 corr0 = I10NM_GET_REG32(imc, res->channel, 0x2818); in show_retry_rd_err_log()
283 corr1 = I10NM_GET_REG32(imc, res->channel, 0x281c); in show_retry_rd_err_log()
284 corr2 = I10NM_GET_REG32(imc, res->channel, 0x2820); in show_retry_rd_err_log()
285 corr3 = I10NM_GET_REG32(imc, res->channel, 0x2824); in show_retry_rd_err_log()
288 corr0 = I10NM_GET_REG32(imc, res->channel, 0x22c18); in show_retry_rd_err_log()
289 corr1 = I10NM_GET_REG32(imc, res->channel, 0x22c1c); in show_retry_rd_err_log()
290 corr2 = I10NM_GET_REG32(imc, res->channel, 0x22c20); in show_retry_rd_err_log()
291 corr3 = I10NM_GET_REG32(imc, res->channel, 0x22c24); in show_retry_rd_err_log()
306 I10NM_SET_REG32(imc, res->channel, offsets[0], log0); in show_retry_rd_err_log()
311 I10NM_SET_REG32(imc, res->channel, xffsets[0], lxg0); in show_retry_rd_err_log()
523 if (d->imc[0].src_id == m->socketid) { in i10nm_mc_decode()
533 res->imc = bank / 4; in i10nm_mc_decode()
546 res->imc = bank / 2; in i10nm_mc_decode()
562 m->socketid, res->imc); in i10nm_mc_decode()
668 static bool i10nm_imc_absent(struct skx_imc *imc) in i10nm_imc_absent() argument
676 mcmtr = I10NM_GET_MCMTR(imc, i); in i10nm_imc_absent()
749 d->imc[lmc].mbase = mbase; in i10nm_get_ddr_munits()
750 if (i10nm_imc_absent(&d->imc[lmc])) { in i10nm_get_ddr_munits()
753 d->imc[lmc].mbase = NULL; in i10nm_get_ddr_munits()
757 d->imc[lmc].mdev = mdev; in i10nm_get_ddr_munits()
822 d->imc[lmc].mdev = mdev; in i10nm_get_hbm_munits()
830 pci_dev_put(d->imc[lmc].mdev); in i10nm_get_hbm_munits()
831 d->imc[lmc].mdev = NULL; in i10nm_get_hbm_munits()
838 d->imc[lmc].mbase = mbase; in i10nm_get_hbm_munits()
839 d->imc[lmc].hbm_mc = true; in i10nm_get_hbm_munits()
841 mcmtr = I10NM_GET_MCMTR(&d->imc[lmc], 0); in i10nm_get_hbm_munits()
843 iounmap(d->imc[lmc].mbase); in i10nm_get_hbm_munits()
844 d->imc[lmc].mbase = NULL; in i10nm_get_hbm_munits()
845 d->imc[lmc].hbm_mc = false; in i10nm_get_hbm_munits()
846 pci_dev_put(d->imc[lmc].mdev); in i10nm_get_hbm_munits()
847 d->imc[lmc].mdev = NULL; in i10nm_get_hbm_munits()
958 static bool i10nm_check_ecc(struct skx_imc *imc, int chan) in i10nm_check_ecc() argument
962 mcmtr = I10NM_GET_MCMTR(imc, chan); in i10nm_check_ecc()
972 struct skx_imc *imc = pvt->imc; in i10nm_get_dimm_config() local
977 for (i = 0; i < imc->num_channels; i++) { in i10nm_get_dimm_config()
978 if (!imc->mbase) in i10nm_get_dimm_config()
982 amap = I10NM_GET_AMAP(imc, i); in i10nm_get_dimm_config()
985 mcddrtcfg = I10NM_GET_MCDDRTCFG(imc, i); in i10nm_get_dimm_config()
987 for (j = 0; j < imc->num_dimms; j++) { in i10nm_get_dimm_config()
989 mtr = I10NM_GET_DIMMMTR(imc, i, j); in i10nm_get_dimm_config()
991 mtr, mcddrtcfg, imc->mc, i, j); in i10nm_get_dimm_config()
995 imc, i, j, cfg); in i10nm_get_dimm_config()
997 ndimms += skx_get_nvdimm_info(dimm, imc, i, j, in i10nm_get_dimm_config()
1000 if (ndimms && !i10nm_check_ecc(imc, i)) { in i10nm_get_dimm_config()
1002 imc->mc, i); in i10nm_get_dimm_config()
1130 if (!d->imc[i].mdev) in i10nm_init()
1133 d->imc[i].mc = mc++; in i10nm_init()
1134 d->imc[i].lmc = i; in i10nm_init()
1135 d->imc[i].src_id = src_id; in i10nm_init()
1136 d->imc[i].node_id = node_id; in i10nm_init()
1137 if (d->imc[i].hbm_mc) { in i10nm_init()
1138 d->imc[i].chan_mmio_sz = cfg->hbm_chan_mmio_sz; in i10nm_init()
1139 d->imc[i].num_channels = cfg->hbm_chan_num; in i10nm_init()
1140 d->imc[i].num_dimms = cfg->hbm_dimm_num; in i10nm_init()
1142 d->imc[i].chan_mmio_sz = cfg->ddr_chan_mmio_sz; in i10nm_init()
1143 d->imc[i].num_channels = cfg->ddr_chan_num; in i10nm_init()
1144 d->imc[i].num_dimms = cfg->ddr_dimm_num; in i10nm_init()
1147 rc = skx_register_mci(&d->imc[i], d->imc[i].mdev, in i10nm_init()