hc
2024-05-16 8d2a02b24d66aa359e83eebc1ed3c0f85367a1cb
kernel/drivers/edac/i7core_edac.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /* Intel i7 core/Nehalem Memory Controller kernel module
23 *
34 * This driver supports the memory controllers found on the Intel
....@@ -5,13 +6,10 @@
56 * Xeon 55xx and Xeon 56xx also known as Nehalem, Nehalem-EP, Lynnfield
67 * and Westmere-EP.
78 *
8
- * This file may be distributed under the terms of the
9
- * GNU General Public License version 2 only.
10
- *
119 * Copyright (c) 2009-2010 by:
1210 * Mauro Carvalho Chehab
1311 *
14
- * Red Hat Inc. http://www.redhat.com
12
+ * Red Hat Inc. https://www.redhat.com
1513 *
1614 * Forked and adapted from the i5400_edac driver
1715 *
....@@ -587,8 +585,7 @@
587585 if (!DIMM_PRESENT(dimm_dod[j]))
588586 continue;
589587
590
- dimm = EDAC_DIMM_PTR(mci->layers, mci->dimms, mci->n_layers,
591
- i, j, 0);
588
+ dimm = edac_get_dimm(mci, i, j, 0);
592589 banks = numbank(MC_DOD_NUMBANK(dimm_dod[j]));
593590 ranks = numrank(MC_DOD_NUMRANK(dimm_dod[j]));
594591 rows = numrow(MC_DOD_NUMROW(dimm_dod[j]));
....@@ -724,7 +721,7 @@
724721 const char *data, size_t count)
725722 {
726723 struct mem_ctl_info *mci = to_mci(dev);
727
-struct i7core_pvt *pvt = mci->pvt_info;
724
+ struct i7core_pvt *pvt = mci->pvt_info;
728725 unsigned long value;
729726 int rc;
730727
....@@ -1713,9 +1710,9 @@
17131710 if (uncorrected_error) {
17141711 core_err_cnt = 1;
17151712 if (ripv)
1716
- tp_event = HW_EVENT_ERR_FATAL;
1717
- else
17181713 tp_event = HW_EVENT_ERR_UNCORRECTED;
1714
+ else
1715
+ tp_event = HW_EVENT_ERR_FATAL;
17191716 } else {
17201717 tp_event = HW_EVENT_ERR_CORRECTED;
17211718 }
....@@ -1816,14 +1813,12 @@
18161813 struct mce *mce = (struct mce *)data;
18171814 struct i7core_dev *i7_dev;
18181815 struct mem_ctl_info *mci;
1819
- struct i7core_pvt *pvt;
18201816
18211817 i7_dev = get_i7core_dev(mce->socketid);
1822
- if (!i7_dev)
1818
+ if (!i7_dev || (mce->kflags & MCE_HANDLED_CEC))
18231819 return NOTIFY_DONE;
18241820
18251821 mci = i7_dev->mci;
1826
- pvt = mci->pvt_info;
18271822
18281823 /*
18291824 * Just let mcelog handle it if the error is
....@@ -1839,7 +1834,8 @@
18391834 i7core_check_error(mci, mce);
18401835
18411836 /* Advise mcelog that the errors were handled */
1842
- return NOTIFY_STOP;
1837
+ mce->kflags |= MCE_HANDLED_EDAC;
1838
+ return NOTIFY_OK;
18431839 }
18441840
18451841 static struct notifier_block i7_mce_dec = {
....@@ -2395,7 +2391,7 @@
23952391
23962392 MODULE_LICENSE("GPL");
23972393 MODULE_AUTHOR("Mauro Carvalho Chehab");
2398
-MODULE_AUTHOR("Red Hat Inc. (http://www.redhat.com)");
2394
+MODULE_AUTHOR("Red Hat Inc. (https://www.redhat.com)");
23992395 MODULE_DESCRIPTION("MC Driver for Intel i7 Core memory controllers - "
24002396 I7CORE_REVISION);
24012397