Commit 1ce9cd7f authored by Borislav Petkov's avatar Borislav Petkov Committed by Thomas Gleixner
Browse files

x86/RAS: Simplify SMCA HWID descriptor struct



Call it simply smca_hwid and call local variables "hwid". More readable.

Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
Tested-by: default avatarYazen Ghannam <yazen.ghannam@amd.com>
Link: http://lkml.kernel.org/r/20161103125556.15482-2-bp@alien8.de


Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
parent 79349f52
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -365,14 +365,14 @@ extern struct smca_bank_name smca_bank_names[N_SMCA_BANK_TYPES];


#define HWID_MCATYPE(hwid, mcatype) ((hwid << 16) | mcatype)
#define HWID_MCATYPE(hwid, mcatype) ((hwid << 16) | mcatype)


struct smca_hwid_mcatype {
struct smca_hwid {
	unsigned int bank_type;	/* Use with smca_bank_types for easy indexing. */
	unsigned int bank_type;	/* Use with smca_bank_types for easy indexing. */
	u32 hwid_mcatype;	/* (hwid,mcatype) tuple */
	u32 hwid_mcatype;	/* (hwid,mcatype) tuple */
	u32 xec_bitmap;		/* Bitmap of valid ExtErrorCodes; current max is 21. */
	u32 xec_bitmap;		/* Bitmap of valid ExtErrorCodes; current max is 21. */
};
};


struct smca_bank {
struct smca_bank {
	struct smca_hwid_mcatype *type;
	struct smca_hwid *hwid;
	/* Instance ID */
	/* Instance ID */
	u32 id;
	u32 id;
};
};
+9 −15
Original line number Original line Diff line number Diff line
@@ -86,7 +86,7 @@ struct smca_bank_name smca_bank_names[] = {
};
};
EXPORT_SYMBOL_GPL(smca_bank_names);
EXPORT_SYMBOL_GPL(smca_bank_names);


static struct smca_hwid_mcatype smca_hwid_mcatypes[] = {
static struct smca_hwid smca_hwid_mcatypes[] = {
	/* { bank_type, hwid_mcatype, xec_bitmap } */
	/* { bank_type, hwid_mcatype, xec_bitmap } */


	/* ZN Core (HWID=0xB0) MCA types */
	/* ZN Core (HWID=0xB0) MCA types */
@@ -142,16 +142,11 @@ static void default_deferred_error_interrupt(void)
}
}
void (*deferred_error_int_vector)(void) = default_deferred_error_interrupt;
void (*deferred_error_int_vector)(void) = default_deferred_error_interrupt;


/*
 * CPU Initialization
 */

static void get_smca_bank_info(unsigned int bank)
static void get_smca_bank_info(unsigned int bank)
{
{
	unsigned int i, hwid_mcatype, cpu = smp_processor_id();
	unsigned int i, hwid_mcatype, cpu = smp_processor_id();
	struct smca_hwid_mcatype *type;
	struct smca_hwid *s_hwid;
	u32 high, instance_id;
	u32 high, instance_id;
	u16 hwid, mcatype;


	/* Collect bank_info using CPU 0 for now. */
	/* Collect bank_info using CPU 0 for now. */
	if (cpu)
	if (cpu)
@@ -162,14 +157,13 @@ static void get_smca_bank_info(unsigned int bank)
		return;
		return;
	}
	}


	hwid = high & MCI_IPID_HWID;
	hwid_mcatype = HWID_MCATYPE(high & MCI_IPID_HWID,
	mcatype = (high & MCI_IPID_MCATYPE) >> 16;
				    (high & MCI_IPID_MCATYPE) >> 16);
	hwid_mcatype = HWID_MCATYPE(hwid, mcatype);


	for (i = 0; i < ARRAY_SIZE(smca_hwid_mcatypes); i++) {
	for (i = 0; i < ARRAY_SIZE(smca_hwid_mcatypes); i++) {
		type = &smca_hwid_mcatypes[i];
		s_hwid = &smca_hwid_mcatypes[i];
		if (hwid_mcatype == type->hwid_mcatype) {
		if (hwid_mcatype == s_hwid->hwid_mcatype) {
			smca_banks[bank].type = type;
			smca_banks[bank].hwid = s_hwid;
			smca_banks[bank].id = instance_id;
			smca_banks[bank].id = instance_id;
			break;
			break;
		}
		}
@@ -826,10 +820,10 @@ static const char *get_name(unsigned int bank, struct threshold_block *b)
		return th_names[bank];
		return th_names[bank];
	}
	}


	if (!smca_banks[bank].type)
	if (!smca_banks[bank].hwid)
		return NULL;
		return NULL;


	bank_type = smca_banks[bank].type->bank_type;
	bank_type = smca_banks[bank].hwid->bank_type;


	if (b && bank_type == SMCA_UMC) {
	if (b && bank_type == SMCA_UMC) {
		if (b->block < ARRAY_SIZE(smca_umc_block_names))
		if (b->block < ARRAY_SIZE(smca_umc_block_names))
+5 −5
Original line number Original line Diff line number Diff line
@@ -851,7 +851,7 @@ static void decode_mc6_mce(struct mce *m)
/* Decode errors according to Scalable MCA specification */
/* Decode errors according to Scalable MCA specification */
static void decode_smca_errors(struct mce *m)
static void decode_smca_errors(struct mce *m)
{
{
	struct smca_hwid_mcatype *type;
	struct smca_hwid *hwid;
	unsigned int bank_type;
	unsigned int bank_type;
	const char *ip_name;
	const char *ip_name;
	u8 xec = XEC(m->status, xec_mask);
	u8 xec = XEC(m->status, xec_mask);
@@ -862,18 +862,18 @@ static void decode_smca_errors(struct mce *m)
	if (boot_cpu_data.x86 >= 0x17 && m->bank == 4)
	if (boot_cpu_data.x86 >= 0x17 && m->bank == 4)
		pr_emerg(HW_ERR "Bank 4 is reserved on Fam17h.\n");
		pr_emerg(HW_ERR "Bank 4 is reserved on Fam17h.\n");


	type = smca_banks[m->bank].type;
	hwid = smca_banks[m->bank].hwid;
	if (!type)
	if (!hwid)
		return;
		return;


	bank_type = type->bank_type;
	bank_type = hwid->bank_type;
	ip_name = smca_bank_names[bank_type].long_name;
	ip_name = smca_bank_names[bank_type].long_name;


	pr_emerg(HW_ERR "%s Extended Error Code: %d\n", ip_name, xec);
	pr_emerg(HW_ERR "%s Extended Error Code: %d\n", ip_name, xec);


	/* Only print the decode of valid error codes */
	/* Only print the decode of valid error codes */
	if (xec < smca_mce_descs[bank_type].num_descs &&
	if (xec < smca_mce_descs[bank_type].num_descs &&
			(type->xec_bitmap & BIT_ULL(xec))) {
			(hwid->xec_bitmap & BIT_ULL(xec))) {
		pr_emerg(HW_ERR "%s Error: ", ip_name);
		pr_emerg(HW_ERR "%s Error: ", ip_name);
		pr_cont("%s.\n", smca_mce_descs[bank_type].descs[xec]);
		pr_cont("%s.\n", smca_mce_descs[bank_type].descs[xec]);
	}
	}