linux-edac.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [1/3] x86/MCE/AMD: Redo function to get SMCA bank type
@ 2018-02-01 18:48 Yazen Ghannam
  0 siblings, 0 replies; 4+ messages in thread
From: Yazen Ghannam @ 2018-02-01 18:48 UTC (permalink / raw)
  To: linux-edac; +Cc: Yazen Ghannam, linux-kernel, bp, tony.luck, x86

From: Yazen Ghannam <yazen.ghannam@amd.com>

Pass the bank number to smca_get_bank_type() since that's all we need.

Also, we should compare the bank number to the size of the smca_banks
array not the number of bank types. Bank types are reused for multiple
banks, so the number of types can be different from the number of banks
in a system. We could return an invalid bank type.

Use smca_get_bank_type() in get_name(), and change type of bank_type
variable to match return type of smca_get_bank_type().

Cc: <stable@vger.kernel.org> # 4.14.x: 11cf887728a3 x86/MCE/AMD: Define a function to get SMCA bank type
Cc: <stable@vger.kernel.org> # 4.14.x: c6708d50f166 x86/MCE: Report only DRAM ECC as memory errors on AMD systems
Cc: <stable@vger.kernel.org> # 4.14.x
Signed-off-by: Yazen Ghannam <yazen.ghannam@amd.com>
---
 arch/x86/kernel/cpu/mcheck/mce_amd.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
index 0f32ad242324..4e16afc0794d 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
@@ -110,14 +110,14 @@ const char *smca_get_long_name(enum smca_bank_types t)
 }
 EXPORT_SYMBOL_GPL(smca_get_long_name);
 
-static enum smca_bank_types smca_get_bank_type(struct mce *m)
+static enum smca_bank_types smca_get_bank_type(unsigned int bank)
 {
 	struct smca_bank *b;
 
-	if (m->bank >= N_SMCA_BANK_TYPES)
+	if (bank >= ARRAY_SIZE(smca_banks))
 		return N_SMCA_BANK_TYPES;
 
-	b = &smca_banks[m->bank];
+	b = &smca_banks[bank];
 	if (!b->hwid)
 		return N_SMCA_BANK_TYPES;
 
@@ -760,7 +760,7 @@ bool amd_mce_is_memory_error(struct mce *m)
 	u8 xec = (m->status >> 16) & 0x1f;
 
 	if (mce_flags.smca)
-		return smca_get_bank_type(m) == SMCA_UMC && xec == 0x0;
+		return smca_get_bank_type(m->bank) == SMCA_UMC && xec == 0x0;
 
 	return m->bank == 4 && xec == 0x8;
 }
@@ -1063,7 +1063,7 @@ static struct kobj_type threshold_ktype = {
 
 static const char *get_name(unsigned int bank, struct threshold_block *b)
 {
-	unsigned int bank_type;
+	enum smca_bank_types bank_type;
 
 	if (!mce_flags.smca) {
 		if (b && bank == 4)
@@ -1072,11 +1072,10 @@ static const char *get_name(unsigned int bank, struct threshold_block *b)
 		return th_names[bank];
 	}
 
-	if (!smca_banks[bank].hwid)
+	bank_type = smca_get_bank_type(bank);
+	if (bank_type >= N_SMCA_BANK_TYPES)
 		return NULL;
 
-	bank_type = smca_banks[bank].hwid->bank_type;
-
 	if (b && bank_type == SMCA_UMC) {
 		if (b->block < ARRAY_SIZE(smca_umc_block_names))
 			return smca_umc_block_names[b->block];

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [1/3] x86/MCE/AMD: Redo function to get SMCA bank type
@ 2018-02-08 15:04 Borislav Petkov
  0 siblings, 0 replies; 4+ messages in thread
From: Borislav Petkov @ 2018-02-08 15:04 UTC (permalink / raw)
  To: Yazen Ghannam; +Cc: linux-edac, linux-kernel, bp, tony.luck, x86

On Thu, Feb 01, 2018 at 12:48:11PM -0600, Yazen Ghannam wrote:
>  arch/x86/kernel/cpu/mcheck/mce_amd.c | 15 +++++++--------
>  1 file changed, 7 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
> index 0f32ad242324..4e16afc0794d 100644
> --- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
> +++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
> @@ -110,14 +110,14 @@ const char *smca_get_long_name(enum smca_bank_types t)
>  }
>  EXPORT_SYMBOL_GPL(smca_get_long_name);
>  
> -static enum smca_bank_types smca_get_bank_type(struct mce *m)
> +static enum smca_bank_types smca_get_bank_type(unsigned int bank)
>  {
>  	struct smca_bank *b;
>  
> -	if (m->bank >= N_SMCA_BANK_TYPES)
> +	if (bank >= ARRAY_SIZE(smca_banks))

MAX_NR_BANKS

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [1/3] x86/MCE/AMD: Redo function to get SMCA bank type
@ 2018-02-14 16:38 Yazen Ghannam
  0 siblings, 0 replies; 4+ messages in thread
From: Yazen Ghannam @ 2018-02-14 16:38 UTC (permalink / raw)
  To: Borislav Petkov
  Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org,
	bp@suse.de, tony.luck@intel.com, x86@kernel.org

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBCb3Jpc2xhdiBQZXRrb3YgW21h
aWx0bzpicEBhbGllbjguZGVdDQo+IFNlbnQ6IFRodXJzZGF5LCBGZWJydWFyeSA4LCAyMDE4IDEw
OjA1IEFNDQo+IFRvOiBHaGFubmFtLCBZYXplbiA8WWF6ZW4uR2hhbm5hbUBhbWQuY29tPg0KPiBD
YzogbGludXgtZWRhY0B2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5v
cmc7IGJwQHN1c2UuZGU7DQo+IHRvbnkubHVja0BpbnRlbC5jb207IHg4NkBrZXJuZWwub3JnDQo+
IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8zXSB4ODYvTUNFL0FNRDogUmVkbyBmdW5jdGlvbiB0byBn
ZXQgU01DQSBiYW5rIHR5cGUNCj4gDQo+IE9uIFRodSwgRmViIDAxLCAyMDE4IGF0IDEyOjQ4OjEx
UE0gLTA2MDAsIFlhemVuIEdoYW5uYW0gd3JvdGU6DQo+ID4gIGFyY2gveDg2L2tlcm5lbC9jcHUv
bWNoZWNrL21jZV9hbWQuYyB8IDE1ICsrKysrKystLS0tLS0tLQ0KPiA+ICAxIGZpbGUgY2hhbmdl
ZCwgNyBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh
L2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZV9hbWQuYw0KPiBiL2FyY2gveDg2L2tlcm5l
bC9jcHUvbWNoZWNrL21jZV9hbWQuYw0KPiA+IGluZGV4IDBmMzJhZDI0MjMyNC4uNGUxNmFmYzA3
OTRkIDEwMDY0NA0KPiA+IC0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZV9hbWQu
Yw0KPiA+ICsrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZV9hbWQuYw0KPiA+IEBA
IC0xMTAsMTQgKzExMCwxNCBAQCBjb25zdCBjaGFyICpzbWNhX2dldF9sb25nX25hbWUoZW51bQ0K
PiBzbWNhX2JhbmtfdHlwZXMgdCkNCj4gPiAgfQ0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTChzbWNh
X2dldF9sb25nX25hbWUpOw0KPiA+DQo+ID4gLXN0YXRpYyBlbnVtIHNtY2FfYmFua190eXBlcyBz
bWNhX2dldF9iYW5rX3R5cGUoc3RydWN0IG1jZSAqbSkNCj4gPiArc3RhdGljIGVudW0gc21jYV9i
YW5rX3R5cGVzIHNtY2FfZ2V0X2JhbmtfdHlwZSh1bnNpZ25lZCBpbnQgYmFuaykNCj4gPiAgew0K
PiA+ICAJc3RydWN0IHNtY2FfYmFuayAqYjsNCj4gPg0KPiA+IC0JaWYgKG0tPmJhbmsgPj0gTl9T
TUNBX0JBTktfVFlQRVMpDQo+ID4gKwlpZiAoYmFuayA+PSBBUlJBWV9TSVpFKHNtY2FfYmFua3Mp
KQ0KPiANCj4gTUFYX05SX0JBTktTDQo+IA0KDQpJIGtub3cgdGhhdCB3ZSdyZSBkZWNsYXJpbmcg
c21jYV9iYW5rc1tdIHRvIGhhdmUgTUFYX05SX0JBTktTIGl0ZW1zLiBCdXQNCnNob3VsZG4ndCB3
ZSBkaXJlY3RseSBjaGVjayB0aGF0IGFuIGluZGV4IGlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRo
ZSBhcnJheT8NCldlJ2xsIGhhdmUgYSBidWcgaWYgd2UgY2hlY2sgYWdhaW5zdCBNQVhfTlJfQkFO
S1MgYW5kIHRoZSBkZWZpbml0aW9uIG9mDQpzbWNhX2JhbmtzW10gY2hhbmdlcy4NCg0KVGhhbmtz
LA0KWWF6ZW4NCg0K
---
To unsubscribe from this list: send the line "unsubscribe linux-edac" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [1/3] x86/MCE/AMD: Redo function to get SMCA bank type
@ 2018-02-14 19:35 Boris Petkov
  0 siblings, 0 replies; 4+ messages in thread
From: Boris Petkov @ 2018-02-14 19:35 UTC (permalink / raw)
  To: Ghannam, Yazen
  Cc: linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org,
	tony.luck@intel.com, x86@kernel.org

On Wed, Feb 14, 2018 at 04:38:34PM +0000, Ghannam, Yazen wrote:
> I know that we're declaring smca_banks[] to have MAX_NR_BANKS items. But
> shouldn't we directly check that an index is within the bounds of the array?
> We'll have a bug if we check against MAX_NR_BANKS and the definition of
> smca_banks[] changes.

Then we don't need MAX_NR_BANKS. We either keep them in sync or kill it.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-02-14 19:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-02-08 15:04 [1/3] x86/MCE/AMD: Redo function to get SMCA bank type Borislav Petkov
  -- strict thread matches above, loose matches on Subject: below --
2018-02-14 19:35 Boris Petkov
2018-02-14 16:38 Yazen Ghannam
2018-02-01 18:48 Yazen Ghannam

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).