Skip to content

Commit b3d7005

Browse files
qzhuo2aegl
authored andcommitted
EDAC/{skx_common,skx,i10nm}: Make skx_register_mci() independent of pci_dev
Memory controllers in the new Intel server CPUs, such as Diamond Rapids, are presented as MMIO-based devices rather than PCI devices. Modify skx_register_mci() to be independent of 'pci_dev' and use a generic 'dev' of 'struct device' to prepare for support of such MMIO-based memory controllers. Tested-by: Yi Lai <yi1.lai@intel.com> Signed-off-by: Qiuxu Zhuo <qiuxu.zhuo@intel.com> Signed-off-by: Tony Luck <tony.luck@intel.com> Link: https://patch.msgid.link/20251119134132.2389472-2-qiuxu.zhuo@intel.com
1 parent cdf5ecc commit b3d7005

4 files changed

Lines changed: 10 additions & 9 deletions

File tree

drivers/edac/i10nm_base.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,8 @@ static int __init i10nm_init(void)
11981198
d->imc[i].num_dimms = cfg->ddr_dimm_num;
11991199
}
12001200

1201-
rc = skx_register_mci(&d->imc[i], d->imc[i].mdev,
1201+
rc = skx_register_mci(&d->imc[i], &d->imc[i].mdev->dev,
1202+
pci_name(d->imc[i].mdev),
12021203
"Intel_10nm Socket", EDAC_MOD_STR,
12031204
i10nm_get_dimm_config, cfg);
12041205
if (rc < 0)

drivers/edac/skx_base.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -662,8 +662,8 @@ static int __init skx_init(void)
662662
d->imc[i].src_id = src_id;
663663
d->imc[i].num_channels = cfg->ddr_chan_num;
664664
d->imc[i].num_dimms = cfg->ddr_dimm_num;
665-
666-
rc = skx_register_mci(&d->imc[i], d->imc[i].chan[0].cdev,
665+
rc = skx_register_mci(&d->imc[i], &d->imc[i].chan[0].cdev->dev,
666+
pci_name(d->imc[i].chan[0].cdev),
667667
"Skylake Socket", EDAC_MOD_STR,
668668
skx_get_dimm_config, cfg);
669669
if (rc < 0)

drivers/edac/skx_common.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -545,9 +545,9 @@ int skx_get_nvdimm_info(struct dimm_info *dimm, struct skx_imc *imc,
545545
}
546546
EXPORT_SYMBOL_GPL(skx_get_nvdimm_info);
547547

548-
int skx_register_mci(struct skx_imc *imc, struct pci_dev *pdev,
549-
const char *ctl_name, const char *mod_str,
550-
get_dimm_config_f get_dimm_config,
548+
int skx_register_mci(struct skx_imc *imc, struct device *dev,
549+
const char *dev_name, const char *ctl_name,
550+
const char *mod_str, get_dimm_config_f get_dimm_config,
551551
struct res_config *cfg)
552552
{
553553
struct mem_ctl_info *mci;
@@ -588,15 +588,15 @@ int skx_register_mci(struct skx_imc *imc, struct pci_dev *pdev,
588588
mci->edac_ctl_cap = EDAC_FLAG_NONE;
589589
mci->edac_cap = EDAC_FLAG_NONE;
590590
mci->mod_name = mod_str;
591-
mci->dev_name = pci_name(pdev);
591+
mci->dev_name = dev_name;
592592
mci->ctl_page_to_phys = NULL;
593593

594594
rc = get_dimm_config(mci, cfg);
595595
if (rc < 0)
596596
goto fail;
597597

598598
/* Record ptr to the generic device */
599-
mci->pdev = &pdev->dev;
599+
mci->pdev = dev;
600600

601601
/* Add this new MC control structure to EDAC's list of MCs */
602602
if (unlikely(edac_mc_add_mc(mci))) {

drivers/edac/skx_common.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -302,7 +302,7 @@ int skx_get_dimm_info(u32 mtr, u32 mcmtr, u32 amap, struct dimm_info *dimm,
302302
int skx_get_nvdimm_info(struct dimm_info *dimm, struct skx_imc *imc,
303303
int chan, int dimmno, const char *mod_str);
304304

305-
int skx_register_mci(struct skx_imc *imc, struct pci_dev *pdev,
305+
int skx_register_mci(struct skx_imc *imc, struct device *dev, const char *dev_name,
306306
const char *ctl_name, const char *mod_str,
307307
get_dimm_config_f get_dimm_config,
308308
struct res_config *cfg);

0 commit comments

Comments
 (0)