Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4a4389ab authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull sb_edac patches from Mauro Carvalho Chehab:
 "A couple sb_edac driver improvements, cleaning a little bit the amount
  of data sent to dmesg, and fixing one error message"

* 'linux_next' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac:
  sb_edac: mark MCE messages as KERN_DEBUG
  sb_edac: use "event" instead of "exception" when MC wasnt signaled
parents 73f10274 49856dc9
Loading
Loading
Loading
Loading
+16 −9
Original line number Original line Diff line number Diff line
@@ -1828,6 +1828,7 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val,
	struct mce *mce = (struct mce *)data;
	struct mce *mce = (struct mce *)data;
	struct mem_ctl_info *mci;
	struct mem_ctl_info *mci;
	struct sbridge_pvt *pvt;
	struct sbridge_pvt *pvt;
	char *type;


	if (get_edac_report_status() == EDAC_REPORTING_DISABLED)
	if (get_edac_report_status() == EDAC_REPORTING_DISABLED)
		return NOTIFY_DONE;
		return NOTIFY_DONE;
@@ -1846,17 +1847,23 @@ static int sbridge_mce_check_error(struct notifier_block *nb, unsigned long val,
	if ((mce->status & 0xefff) >> 7 != 1)
	if ((mce->status & 0xefff) >> 7 != 1)
		return NOTIFY_DONE;
		return NOTIFY_DONE;


	printk("sbridge: HANDLING MCE MEMORY ERROR\n");
	if (mce->mcgstatus & MCG_STATUS_MCIP)
		type = "Exception";
	else
		type = "Event";

	sbridge_mc_printk(mci, KERN_DEBUG, "HANDLING MCE MEMORY ERROR\n");


	printk("CPU %d: Machine Check Exception: %Lx Bank %d: %016Lx\n",
	sbridge_mc_printk(mci, KERN_DEBUG, "CPU %d: Machine Check %s: %Lx "
	       mce->extcpu, mce->mcgstatus, mce->bank, mce->status);
			  "Bank %d: %016Lx\n", mce->extcpu, type,
	printk("TSC %llx ", mce->tsc);
			  mce->mcgstatus, mce->bank, mce->status);
	printk("ADDR %llx ", mce->addr);
	sbridge_mc_printk(mci, KERN_DEBUG, "TSC %llx ", mce->tsc);
	printk("MISC %llx ", mce->misc);
	sbridge_mc_printk(mci, KERN_DEBUG, "ADDR %llx ", mce->addr);
	sbridge_mc_printk(mci, KERN_DEBUG, "MISC %llx ", mce->misc);


	printk("PROCESSOR %u:%x TIME %llu SOCKET %u APIC %x\n",
	sbridge_mc_printk(mci, KERN_DEBUG, "PROCESSOR %u:%x TIME %llu SOCKET "
		mce->cpuvendor, mce->cpuid, mce->time,
			  "%u APIC %x\n", mce->cpuvendor, mce->cpuid,
		mce->socketid, mce->apicid);
			  mce->time, mce->socketid, mce->apicid);


	/* Only handle if it is the right mc controller */
	/* Only handle if it is the right mc controller */
	if (cpu_data(mce->cpu).phys_proc_id != pvt->sbridge_dev->mc)
	if (cpu_data(mce->cpu).phys_proc_id != pvt->sbridge_dev->mc)