Skip to content

Commit 0a42a37

Browse files
muralimk-amdbp3tk0v
authored andcommitted
EDAC/amd64: Split setup_mci_misc_attrs() into dct/umc functions
The init_one_instance() path is shared between legacy and modern systems. So add the new functions to a function pointer in pvt->ops. No functional change is intended. [ Yazen: Rebased/reworked patch and reworded commit message. ] Signed-off-by: Muralidhara M K <muralidhara.mk@amd.com> Co-developed-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com> Signed-off-by: Naveen Krishna Chatradhi <naveenkrishna.chatradhi@amd.com> Co-developed-by: Yazen Ghannam <yazen.ghannam@amd.com> Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de> Link: https://lore.kernel.org/r/20230127170419.1824692-18-yazen.ghannam@amd.com
1 parent eb2bcdf commit 0a42a37

2 files changed

Lines changed: 25 additions & 13 deletions

File tree

drivers/edac/amd64_edac.c

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3616,37 +3616,46 @@ f17h_determine_edac_ctl_cap(struct mem_ctl_info *mci, struct amd64_pvt *pvt)
36163616
}
36173617
}
36183618

3619-
static void setup_mci_misc_attrs(struct mem_ctl_info *mci)
3619+
static void dct_setup_mci_misc_attrs(struct mem_ctl_info *mci)
36203620
{
36213621
struct amd64_pvt *pvt = mci->pvt_info;
36223622

36233623
mci->mtype_cap = MEM_FLAG_DDR2 | MEM_FLAG_RDDR2;
36243624
mci->edac_ctl_cap = EDAC_FLAG_NONE;
36253625

3626-
if (pvt->umc) {
3627-
f17h_determine_edac_ctl_cap(mci, pvt);
3628-
} else {
3629-
if (pvt->nbcap & NBCAP_SECDED)
3630-
mci->edac_ctl_cap |= EDAC_FLAG_SECDED;
3626+
if (pvt->nbcap & NBCAP_SECDED)
3627+
mci->edac_ctl_cap |= EDAC_FLAG_SECDED;
36313628

3632-
if (pvt->nbcap & NBCAP_CHIPKILL)
3633-
mci->edac_ctl_cap |= EDAC_FLAG_S4ECD4ED;
3634-
}
3629+
if (pvt->nbcap & NBCAP_CHIPKILL)
3630+
mci->edac_ctl_cap |= EDAC_FLAG_S4ECD4ED;
36353631

36363632
mci->edac_cap = determine_edac_cap(pvt);
36373633
mci->mod_name = EDAC_MOD_STR;
36383634
mci->ctl_name = pvt->ctl_name;
36393635
mci->dev_name = pci_name(pvt->F3);
36403636
mci->ctl_page_to_phys = NULL;
36413637

3642-
if (pvt->fam >= 0x17)
3643-
return;
3644-
36453638
/* memory scrubber interface */
36463639
mci->set_sdram_scrub_rate = set_scrub_rate;
36473640
mci->get_sdram_scrub_rate = get_scrub_rate;
36483641
}
36493642

3643+
static void umc_setup_mci_misc_attrs(struct mem_ctl_info *mci)
3644+
{
3645+
struct amd64_pvt *pvt = mci->pvt_info;
3646+
3647+
mci->mtype_cap = MEM_FLAG_DDR4 | MEM_FLAG_RDDR4;
3648+
mci->edac_ctl_cap = EDAC_FLAG_NONE;
3649+
3650+
f17h_determine_edac_ctl_cap(mci, pvt);
3651+
3652+
mci->edac_cap = determine_edac_cap(pvt);
3653+
mci->mod_name = EDAC_MOD_STR;
3654+
mci->ctl_name = pvt->ctl_name;
3655+
mci->dev_name = pci_name(pvt->F3);
3656+
mci->ctl_page_to_phys = NULL;
3657+
}
3658+
36503659
static int dct_hw_info_get(struct amd64_pvt *pvt)
36513660
{
36523661
int ret = reserve_mc_sibling_devs(pvt, pvt->f1_id, pvt->f2_id);
@@ -3686,6 +3695,7 @@ static void hw_info_put(struct amd64_pvt *pvt)
36863695
static struct low_ops umc_ops = {
36873696
.hw_info_get = umc_hw_info_get,
36883697
.ecc_enabled = umc_ecc_enabled,
3698+
.setup_mci_misc_attrs = umc_setup_mci_misc_attrs,
36893699
};
36903700

36913701
/* Use Family 16h versions for defaults and adjust as needed below. */
@@ -3694,6 +3704,7 @@ static struct low_ops dct_ops = {
36943704
.dbam_to_cs = f16_dbam_to_chip_select,
36953705
.hw_info_get = dct_hw_info_get,
36963706
.ecc_enabled = dct_ecc_enabled,
3707+
.setup_mci_misc_attrs = dct_setup_mci_misc_attrs,
36973708
};
36983709

36993710
static int per_family_init(struct amd64_pvt *pvt)
@@ -3856,7 +3867,7 @@ static int init_one_instance(struct amd64_pvt *pvt)
38563867
mci->pvt_info = pvt;
38573868
mci->pdev = &pvt->F3->dev;
38583869

3859-
setup_mci_misc_attrs(mci);
3870+
pvt->ops->setup_mci_misc_attrs(mci);
38603871

38613872
if (init_csrows(mci))
38623873
mci->edac_cap = EDAC_FLAG_NONE;

drivers/edac/amd64_edac.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,6 +468,7 @@ struct low_ops {
468468
unsigned int cs_mode, int cs_mask_nr);
469469
int (*hw_info_get)(struct amd64_pvt *pvt);
470470
bool (*ecc_enabled)(struct amd64_pvt *pvt);
471+
void (*setup_mci_misc_attrs)(struct mem_ctl_info *mci);
471472
};
472473

473474
int __amd64_read_pci_cfg_dword(struct pci_dev *pdev, int offset,

0 commit comments

Comments
 (0)