> -----Original Message-----
> From: [email protected] <[email protected]> On 
> Behalf Of Borislav Petkov
> Sent: Friday, August 2, 2019 2:42 AM
> To: Ghannam, Yazen <[email protected]>
> Cc: [email protected]; [email protected]
> Subject: Re: [PATCH v2 2/7] EDAC/amd64: Recognize DRAM device type with 
> EDAC_CTL_CAP
> 
> On Tue, Jul 09, 2019 at 09:56:55PM +0000, Ghannam, Yazen wrote:
> > From: Yazen Ghannam <[email protected]>
> >
> > AMD Family 17h systems support x4 and x16 DRAM devices. However, the
> > device type is not checked when setting EDAC_CTL_CAP.
> >
> > Set the appropriate EDAC_CTL_CAP flag based on the device type.
> >
> > Fixes: 2d09d8f301f5 ("EDAC, amd64: Determine EDAC MC capabilities on 
> > Fam17h")
> 
> This is better: a patch which fixes a previous patch and is simple,
> small and clear. That you can tag with Fixes: just fine.
> 
> > Signed-off-by: Yazen Ghannam <[email protected]>
> > ---
> > Link:
> > https://lkml.kernel.org/r/[email protected]
> >
> > v1->v2:
> > * No change.
> >
> >  drivers/edac/amd64_edac.c | 13 ++++++++++---
> >  1 file changed, 10 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
> > index dd60cf5a3d96..125d6e2a828e 100644
> > --- a/drivers/edac/amd64_edac.c
> > +++ b/drivers/edac/amd64_edac.c
> > @@ -3150,12 +3150,15 @@ static bool ecc_enabled(struct pci_dev *F3, u16 nid)
> >  static inline void
> >  f17h_determine_edac_ctl_cap(struct mem_ctl_info *mci, struct amd64_pvt 
> > *pvt)
> >  {
> > -   u8 i, ecc_en = 1, cpk_en = 1;
> > +   u8 i, ecc_en = 1, cpk_en = 1, dev_x4 = 1, dev_x16 = 1;
> >
> >     for_each_umc(i) {
> >             if (pvt->umc[i].sdp_ctrl & UMC_SDP_INIT) {
> >                     ecc_en &= !!(pvt->umc[i].umc_cap_hi & UMC_ECC_ENABLED);
> >                     cpk_en &= !!(pvt->umc[i].umc_cap_hi & 
> > UMC_ECC_CHIPKILL_CAP);
> > +
> > +                   dev_x4 &= !!(pvt->umc[i].dimm_cfg & BIT(6));
> > +                   dev_x16 &= !!(pvt->umc[i].dimm_cfg & BIT(7));
> 
> Are those bits mutually exclusive?
> 
> I.e., so that you can do:
> 
>       if (dev_x4)
>               mci->edac_ctl_cap |= EDAC_FLAG_S4ECD4ED;
>       else
>               mci->edac_ctl_cap |= EDAC_FLAG_S16ECD16ED;
> 
> ?
> 

I don't think so. I believe they can both be zero. I'll verify and make the 
change if they are mutually exclusive.

Thanks,
Yazen

Reply via email to