* [v2,7/7] edac drivers: add MC owner check in init
@ 2017-08-05 5:49 Borislav Petkov
0 siblings, 0 replies; 5+ messages in thread
From: Borislav Petkov @ 2017-08-05 5:49 UTC (permalink / raw)
To: Kani, Toshimitsu
Cc: linux-edac@vger.kernel.org, lenb@kernel.org, mchehab@kernel.org,
tony.luck@intel.com, linux-kernel@vger.kernel.org,
rjw@rjwysocki.net, linux-acpi@vger.kernel.org
On Fri, Aug 04, 2017 at 09:48:23PM +0000, Kani, Toshimitsu wrote:
> Not sure if anyone cares, but I thought it should return with -ENODEV
> when this modules found no target, and -EBUSY when it found a target
> but it's busy. Hence, this ordering.
You can still return -EBUSY. Just do the owner check first because if
we're going to return due to ghes_edac being loaded already, we might
just as well skip the other checks as they're a pointless waste of
cycles and energy.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [v2,7/7] edac drivers: add MC owner check in init
@ 2017-08-07 14:57 Toshi Kani
0 siblings, 0 replies; 5+ messages in thread
From: Toshi Kani @ 2017-08-07 14:57 UTC (permalink / raw)
To: bp@alien8.de
Cc: linux-acpi@vger.kernel.org, lenb@kernel.org, mchehab@kernel.org,
tony.luck@intel.com, linux-kernel@vger.kernel.org,
linux-edac@vger.kernel.org, rjw@rjwysocki.net
T24gU2F0LCAyMDE3LTA4LTA1IGF0IDA3OjQ5ICswMjAwLCBCb3Jpc2xhdiBQZXRrb3Ygd3JvdGU6
DQo+IE9uIEZyaSwgQXVnIDA0LCAyMDE3IGF0IDA5OjQ4OjIzUE0gKzAwMDAsIEthbmksIFRvc2hp
bWl0c3Ugd3JvdGU6DQo+ID4gTm90IHN1cmUgaWYgYW55b25lIGNhcmVzLCBidXQgSSB0aG91Z2h0
IGl0IHNob3VsZCByZXR1cm4gd2l0aA0KPiA+IC1FTk9ERVYgd2hlbiB0aGlzIG1vZHVsZXMgZm91
bmQgbm8gdGFyZ2V0LCBhbmQgLUVCVVNZIHdoZW4gaXQgZm91bmQNCj4gPiBhIHRhcmdldCBidXQg
aXQncyBidXN5LsKgwqBIZW5jZSwgdGhpcyBvcmRlcmluZy4NCj4gDQo+IFlvdSBjYW4gc3RpbGwg
cmV0dXJuIC1FQlVTWS4gSnVzdCBkbyB0aGUgb3duZXIgY2hlY2sgZmlyc3QgYmVjYXVzZSBpZg0K
PiB3ZSdyZSBnb2luZyB0byByZXR1cm4gZHVlIHRvIGdoZXNfZWRhYyBiZWluZyBsb2FkZWQgYWxy
ZWFkeSwgd2UgbWlnaHQNCj4ganVzdCBhcyB3ZWxsIHNraXAgdGhlIG90aGVyIGNoZWNrcyBhcyB0
aGV5J3JlIGEgcG9pbnRsZXNzIHdhc3RlIG9mDQo+IGN5Y2xlcyBhbmQgZW5lcmd5Lg0KDQpHb3Qg
aXQuICBXaWxsIG1vdmUgdXAgdGhlIGNoZWNrLg0KDQpUaGFua3MsDQotVG9zaGkNCg0K
---
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] 5+ messages in thread
* [v2,7/7] edac drivers: add MC owner check in init
@ 2017-08-04 21:48 Toshi Kani
0 siblings, 0 replies; 5+ messages in thread
From: Toshi Kani @ 2017-08-04 21:48 UTC (permalink / raw)
To: bp@alien8.de
Cc: linux-edac@vger.kernel.org, lenb@kernel.org, mchehab@kernel.org,
tony.luck@intel.com, linux-kernel@vger.kernel.org,
rjw@rjwysocki.net, linux-acpi@vger.kernel.org
T24gRnJpLCAyMDE3LTA4LTA0IGF0IDEwOjM5ICswMjAwLCBCb3Jpc2xhdiBQZXRrb3Ygd3JvdGU6
DQo+IE9uIFRodSwgQXVnIDAzLCAyMDE3IGF0IDAzOjU3OjUzUE0gLTA2MDAsIFRvc2hpIEthbmkg
d3JvdGU6DQo+ID4gQ2hhbmdlIGdlbmVyaWMgeDg2IGVkYWMgZHJpdmVycywgd2hpY2ggcHJvYmUg
Q1BVIHR5cGUgd2l0aA0KPiA+IHg4Nl9tYXRjaF9jcHUoKSwgdG8gY2FsbCBlZGFjX2NoZWNrX21j
X293bmVyKCkgaW4gdGhlaXINCj4gPiBtb2R1bGUgaW5pdCBmdW5jdGlvbnMuwqDCoFRoaXMgYWxs
b3dzIHRoZW0gdG8gZmFpbCB0aGVpciBpbml0DQo+ID4gYXQgdGhlIGJlZ2lubmluZyB3aGVuIGdo
ZXNfZWRhYyBpcyBlbmFibGVkLsKgwqBTaW1pbGFyIGNoYW5nZQ0KPiA+IGNhbiBiZSBtYWRlIHRv
IG90aGVyIGVkYWMgZHJpdmVycyBhcyBuZWNlc3NhcnkuDQo+ID4gDQo+ID4gVGhpcyBpcyBhbiBv
cHRpbWl6YXRpb24gYW5kIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLg0KPiA+IA0KPiA+
IFNpZ25lZC1vZmYtYnk6IFRvc2hpIEthbmkgPHRvc2hpLmthbmlAaHBlLmNvbT4NCj4gPiBTdWdn
ZXN0ZWQtYnk6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPg0KPiA+IENjOiBCb3Jpc2xh
diBQZXRrb3YgPGJwQGFsaWVuOC5kZT4NCj4gPiBDYzogTWF1cm8gQ2FydmFsaG8gQ2hlaGFiIDxt
Y2hlaGFiQGtlcm5lbC5vcmc+DQo+ID4gQ2M6IFRvbnkgTHVjayA8dG9ueS5sdWNrQGludGVsLmNv
bT4NCj4gPiAtLS0NCj4gPiDCoGRyaXZlcnMvZWRhYy9hbWQ2NF9lZGFjLmMgfMKgwqDCoMKgMyAr
KysNCj4gPiDCoGRyaXZlcnMvZWRhYy9wbmQyX2VkYWMuY8KgwqB8wqDCoMKgwqA3ICsrKysrKy0N
Cj4gPiDCoGRyaXZlcnMvZWRhYy9zYl9lZGFjLmPCoMKgwqDCoHzCoMKgwqDCoDcgKysrKystLQ0K
PiA+IMKgZHJpdmVycy9lZGFjL3NreF9lZGFjLmPCoMKgwqB8wqDCoMKgwqA2ICsrKysrLQ0KPiA+
IMKgNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQ0KPiA+
IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvYW1kNjRfZWRhYy5jIGIvZHJpdmVycy9l
ZGFjL2FtZDY0X2VkYWMuYw0KPiA+IGluZGV4IDNhZWE1NTYuLmNkYjQwZDYgMTAwNjQ0DQo+ID4g
LS0tIGEvZHJpdmVycy9lZGFjL2FtZDY0X2VkYWMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZWRhYy9h
bWQ2NF9lZGFjLmMNCj4gPiBAQCAtMzQ0NCw2ICszNDQ0LDkgQEAgc3RhdGljIGludCBfX2luaXQg
YW1kNjRfZWRhY19pbml0KHZvaWQpDQo+ID4gwqAJaWYgKGFtZF9jYWNoZV9ub3J0aGJyaWRnZXMo
KSA8IDApDQo+ID4gwqAJCXJldHVybiAtRU5PREVWOw0KPiA+IMKgDQo+ID4gKwlpZiAoIWVkYWNf
Y2hlY2tfbWNfb3duZXIoRURBQ19NT0RfU1RSKSkNCj4gPiArCQlyZXR1cm4gLUVCVVNZOw0KPiA+
ICsNCj4gDQo+IFRoYXQgbmVlZHMgdG8gaGFwcGVuIGZpcnN0IGluIHRoZSBpbml0IGZ1bmN0aW9u
Lg0KDQpOb3Qgc3VyZSBpZiBhbnlvbmUgY2FyZXMsIGJ1dCBJIHRob3VnaHQgaXQgc2hvdWxkIHJl
dHVybiB3aXRoIC1FTk9ERVYNCndoZW4gdGhpcyBtb2R1bGVzIGZvdW5kIG5vIHRhcmdldCwgYW5k
IC1FQlVTWSB3aGVuIGl0IGZvdW5kIGEgdGFyZ2V0DQpidXQgaXQncyBidXN5LiAgSGVuY2UsIHRo
aXMgb3JkZXJpbmcuDQoNCj4gPiDCoAlvcHN0YXRlX2luaXQoKTsNCj4gPiDCoA0KPiA+IMKgCWVy
ciA9IC1FTk9NRU07DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZWRhYy9wbmQyX2VkYWMuYyBi
L2RyaXZlcnMvZWRhYy9wbmQyX2VkYWMuYw0KPiA+IGluZGV4IDhlNTk5NDkuLmE1Yjc4NTUgMTAw
NjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9lZGFjL3BuZDJfZWRhYy5jDQo+ID4gKysrIGIvZHJpdmVy
cy9lZGFjL3BuZDJfZWRhYy5jDQo+ID4gQEAgLTQ1LDYgKzQ1LDggQEANCj4gPiDCoCNpbmNsdWRl
ICJlZGFjX21vZHVsZS5oIg0KPiA+IMKgI2luY2x1ZGUgInBuZDJfZWRhYy5oIg0KPiA+IMKgDQo+
ID4gKyNkZWZpbmUgUE5EMl9NT0RfTkFNRQkJInBuZDJfZWRhYy5jIg0KPiANCj4gRURBQ19NT0Rf
U1RSIGFuZCBsb29rIGhvdyB0aGUgb3RoZXIgZHJpdmVycyBkZWZpbmUgaXQsIGkuZS4sIHdpdGhv
dXQNCj4gdGhlICIuYyINCg0KT0ssIEkgd2lsbCBjaGFuZ2UgdG8gdXNlIEVEQUNfTU9EX1NUUiBh
bmQgcmVtb3ZlICIuYyIuDQoNCj4gPiArDQo+ID4gwqAjZGVmaW5lIEFQTF9OVU1fQ0hBTk5FTFMJ
NA0KPiA+IMKgI2RlZmluZSBETlZfTlVNX0NIQU5ORUxTCTINCj4gPiDCoCNkZWZpbmUgRE5WX01B
WF9ESU1NUwkJMiAvKiBNYXggRElNTXMgcGVyIGNoYW5uZWwgKi8NCj4gPiBAQCAtMTMxMyw3ICsx
MzE1LDcgQEAgc3RhdGljIGludCBwbmQyX3JlZ2lzdGVyX21jaShzdHJ1Y3QNCj4gPiBtZW1fY3Rs
X2luZm8gKipwcG1jaSkNCj4gPiDCoAlwdnQgPSBtY2ktPnB2dF9pbmZvOw0KPiA+IMKgCW1lbXNl
dChwdnQsIDAsIHNpemVvZigqcHZ0KSk7DQo+ID4gwqANCj4gPiAtCW1jaS0+bW9kX25hbWUgPSAi
cG5kMl9lZGFjLmMiOw0KPiA+ICsJbWNpLT5tb2RfbmFtZSA9IFBORDJfTU9EX05BTUU7DQo+ID4g
wqAJbWNpLT5kZXZfbmFtZSA9IG9wcy0+bmFtZTsNCj4gPiDCoAltY2ktPmN0bF9uYW1lID0gIlBv
bmRpY2hlcnJ5MiI7DQo+ID4gwqANCj4gPiBAQCAtMTUxMyw2ICsxNTE1LDkgQEAgc3RhdGljIGlu
dCBfX2luaXQgcG5kMl9pbml0KHZvaWQpDQo+ID4gwqAJaWYgKCFpZCkNCj4gPiDCoAkJcmV0dXJu
IC1FTk9ERVY7DQo+ID4gwqANCj4gPiArCWlmICghZWRhY19jaGVja19tY19vd25lcihQTkQyX01P
RF9OQU1FKSkNCj4gPiArCQlyZXR1cm4gLUVCVVNZOw0KPiANCj4gQWxzbyBmaXJzdCB0aGluZyB0
byBkbyBpbiB0aGUgZnVuY3Rpb24uDQo+DQo+ID4gKw0KPiA+IMKgCW9wcyA9IChzdHJ1Y3QgZHVu
aXRfb3BzICopaWQtPmRyaXZlcl9kYXRhOw0KPiA+IMKgDQo+ID4gwqAJLyogRW5zdXJlIHRoYXQg
dGhlIE9QU1RBVEUgaXMgc2V0IGNvcnJlY3RseSBmb3IgUE9MTCBvcg0KPiA+IE5NSSAqLw0KPiA+
IGRpZmYgLS1naXQgYS9kcml2ZXJzL2VkYWMvc2JfZWRhYy5jIGIvZHJpdmVycy9lZGFjL3NiX2Vk
YWMuYw0KPiA+IGluZGV4IDgwZDg2MGMuLjcxYmQ2NmUgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVy
cy9lZGFjL3NiX2VkYWMuYw0KPiA+ICsrKyBiL2RyaXZlcnMvZWRhYy9zYl9lZGFjLmMNCj4gPiBA
QCAtMzYsNyArMzYsNyBAQCBzdGF0aWMgTElTVF9IRUFEKHNicmlkZ2VfZWRhY19saXN0KTsNCj4g
PiDCoCAqIEFsdGVyIHRoaXMgdmVyc2lvbiBmb3IgdGhlIG1vZHVsZSB3aGVuIG1vZGlmaWNhdGlv
bnMgYXJlIG1hZGUNCj4gPiDCoCAqLw0KPiA+IMKgI2RlZmluZSBTQlJJREdFX1JFVklTSU9OwqDC
oMKgwqAiIFZlcjogMS4xLjIgIg0KPiA+IC0jZGVmaW5lIEVEQUNfTU9EX1NUUsKgwqDCoMKgwqDC
oCJzYnJpZGdlX2VkYWMiDQo+ID4gKyNkZWZpbmUgU0JSSURHRV9NT0RfTkFNRcKgwqDCoMKgInNi
X2VkYWMuYyINCj4gDQo+IFdoeT8gRURBQ19NT0RfU1RSIGlzIGp1c3QgZmluZS4NCg0KSSBzaW1w
bHkga2VwdCB3aGF0IGl0IGhhcyB0b2RheS4gIFdpbGwgcmVtb3ZlICIuYyIuDQoNClRoYW5rcywN
Ci1Ub3NoaQ0K
---
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] 5+ messages in thread
* [v2,7/7] edac drivers: add MC owner check in init
@ 2017-08-04 8:39 Borislav Petkov
0 siblings, 0 replies; 5+ messages in thread
From: Borislav Petkov @ 2017-08-04 8:39 UTC (permalink / raw)
To: Toshi Kani
Cc: rjw, mchehab, tony.luck, lenb, linux-acpi, linux-edac,
linux-kernel
On Thu, Aug 03, 2017 at 03:57:53PM -0600, Toshi Kani wrote:
> Change generic x86 edac drivers, which probe CPU type with
> x86_match_cpu(), to call edac_check_mc_owner() in their
> module init functions. This allows them to fail their init
> at the beginning when ghes_edac is enabled. Similar change
> can be made to other edac drivers as necessary.
>
> This is an optimization and there is no functional change.
>
> Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
> Suggested-by: Borislav Petkov <bp@alien8.de>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Tony Luck <tony.luck@intel.com>
> ---
> drivers/edac/amd64_edac.c | 3 +++
> drivers/edac/pnd2_edac.c | 7 ++++++-
> drivers/edac/sb_edac.c | 7 +++++--
> drivers/edac/skx_edac.c | 6 +++++-
> 4 files changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
> index 3aea556..cdb40d6 100644
> --- a/drivers/edac/amd64_edac.c
> +++ b/drivers/edac/amd64_edac.c
> @@ -3444,6 +3444,9 @@ static int __init amd64_edac_init(void)
> if (amd_cache_northbridges() < 0)
> return -ENODEV;
>
> + if (!edac_check_mc_owner(EDAC_MOD_STR))
> + return -EBUSY;
> +
That needs to happen first in the init function.
> opstate_init();
>
> err = -ENOMEM;
> diff --git a/drivers/edac/pnd2_edac.c b/drivers/edac/pnd2_edac.c
> index 8e59949..a5b7855 100644
> --- a/drivers/edac/pnd2_edac.c
> +++ b/drivers/edac/pnd2_edac.c
> @@ -45,6 +45,8 @@
> #include "edac_module.h"
> #include "pnd2_edac.h"
>
> +#define PND2_MOD_NAME "pnd2_edac.c"
EDAC_MOD_STR and look how the other drivers define it, i.e., without the ".c"
> +
> #define APL_NUM_CHANNELS 4
> #define DNV_NUM_CHANNELS 2
> #define DNV_MAX_DIMMS 2 /* Max DIMMs per channel */
> @@ -1313,7 +1315,7 @@ static int pnd2_register_mci(struct mem_ctl_info **ppmci)
> pvt = mci->pvt_info;
> memset(pvt, 0, sizeof(*pvt));
>
> - mci->mod_name = "pnd2_edac.c";
> + mci->mod_name = PND2_MOD_NAME;
> mci->dev_name = ops->name;
> mci->ctl_name = "Pondicherry2";
>
> @@ -1513,6 +1515,9 @@ static int __init pnd2_init(void)
> if (!id)
> return -ENODEV;
>
> + if (!edac_check_mc_owner(PND2_MOD_NAME))
> + return -EBUSY;
Also first thing to do in the function.
> +
> ops = (struct dunit_ops *)id->driver_data;
>
> /* Ensure that the OPSTATE is set correctly for POLL or NMI */
> diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
> index 80d860c..71bd66e 100644
> --- a/drivers/edac/sb_edac.c
> +++ b/drivers/edac/sb_edac.c
> @@ -36,7 +36,7 @@ static LIST_HEAD(sbridge_edac_list);
> * Alter this version for the module when modifications are made
> */
> #define SBRIDGE_REVISION " Ver: 1.1.2 "
> -#define EDAC_MOD_STR "sbridge_edac"
> +#define SBRIDGE_MOD_NAME "sb_edac.c"
Why? EDAC_MOD_STR is just fine.
> /*
> * Debug macros
> @@ -3124,7 +3124,7 @@ static int sbridge_register_mci(struct sbridge_dev *sbridge_dev, enum type type)
> MEM_FLAG_DDR4 : MEM_FLAG_DDR3;
> mci->edac_ctl_cap = EDAC_FLAG_NONE;
> mci->edac_cap = EDAC_FLAG_NONE;
> - mci->mod_name = "sb_edac.c";
> + mci->mod_name = SBRIDGE_MOD_NAME;
> mci->mod_ver = SBRIDGE_REVISION;
> mci->dev_name = pci_name(pdev);
> mci->ctl_page_to_phys = NULL;
> @@ -3380,6 +3380,9 @@ static int __init sbridge_init(void)
> if (!id)
> return -ENODEV;
>
> + if (!edac_check_mc_owner(SBRIDGE_MOD_NAME))
> + return -EBUSY;
See above.
> +
> /* Ensure that the OPSTATE is set correctly for POLL or NMI */
> opstate_init();
>
> diff --git a/drivers/edac/skx_edac.c b/drivers/edac/skx_edac.c
> index 64bef6c9..8347969 100644
> --- a/drivers/edac/skx_edac.c
> +++ b/drivers/edac/skx_edac.c
> @@ -31,6 +31,7 @@
>
> #include "edac_module.h"
>
> +#define SKX_MOD_NAME "skx_edac.c"
> #define SKX_REVISION " Ver: 1.0 "
Ditto.
>
> /*
> @@ -471,7 +472,7 @@ static int skx_register_mci(struct skx_imc *imc)
> mci->mtype_cap = MEM_FLAG_DDR4;
> mci->edac_ctl_cap = EDAC_FLAG_NONE;
> mci->edac_cap = EDAC_FLAG_NONE;
> - mci->mod_name = "skx_edac.c";
> + mci->mod_name = SKX_MOD_NAME;
> mci->dev_name = pci_name(imc->chan[0].cdev);
> mci->mod_ver = SKX_REVISION;
> mci->ctl_page_to_phys = NULL;
> @@ -1052,6 +1053,9 @@ static int __init skx_init(void)
> if (!id)
> return -ENODEV;
>
> + if (!edac_check_mc_owner(SKX_MOD_NAME))
> + return -EBUSY;
> +
Ditto.
^ permalink raw reply [flat|nested] 5+ messages in thread
* [v2,7/7] edac drivers: add MC owner check in init
@ 2017-08-03 21:57 Toshi Kani
0 siblings, 0 replies; 5+ messages in thread
From: Toshi Kani @ 2017-08-03 21:57 UTC (permalink / raw)
To: rjw, bp
Cc: mchehab, tony.luck, lenb, linux-acpi, linux-edac, linux-kernel,
Toshi Kani
Change generic x86 edac drivers, which probe CPU type with
x86_match_cpu(), to call edac_check_mc_owner() in their
module init functions. This allows them to fail their init
at the beginning when ghes_edac is enabled. Similar change
can be made to other edac drivers as necessary.
This is an optimization and there is no functional change.
Signed-off-by: Toshi Kani <toshi.kani@hpe.com>
Suggested-by: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Tony Luck <tony.luck@intel.com>
---
drivers/edac/amd64_edac.c | 3 +++
drivers/edac/pnd2_edac.c | 7 ++++++-
drivers/edac/sb_edac.c | 7 +++++--
drivers/edac/skx_edac.c | 6 +++++-
4 files changed, 19 insertions(+), 4 deletions(-)
--
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
diff --git a/drivers/edac/amd64_edac.c b/drivers/edac/amd64_edac.c
index 3aea556..cdb40d6 100644
--- a/drivers/edac/amd64_edac.c
+++ b/drivers/edac/amd64_edac.c
@@ -3444,6 +3444,9 @@ static int __init amd64_edac_init(void)
if (amd_cache_northbridges() < 0)
return -ENODEV;
+ if (!edac_check_mc_owner(EDAC_MOD_STR))
+ return -EBUSY;
+
opstate_init();
err = -ENOMEM;
diff --git a/drivers/edac/pnd2_edac.c b/drivers/edac/pnd2_edac.c
index 8e59949..a5b7855 100644
--- a/drivers/edac/pnd2_edac.c
+++ b/drivers/edac/pnd2_edac.c
@@ -45,6 +45,8 @@
#include "edac_module.h"
#include "pnd2_edac.h"
+#define PND2_MOD_NAME "pnd2_edac.c"
+
#define APL_NUM_CHANNELS 4
#define DNV_NUM_CHANNELS 2
#define DNV_MAX_DIMMS 2 /* Max DIMMs per channel */
@@ -1313,7 +1315,7 @@ static int pnd2_register_mci(struct mem_ctl_info **ppmci)
pvt = mci->pvt_info;
memset(pvt, 0, sizeof(*pvt));
- mci->mod_name = "pnd2_edac.c";
+ mci->mod_name = PND2_MOD_NAME;
mci->dev_name = ops->name;
mci->ctl_name = "Pondicherry2";
@@ -1513,6 +1515,9 @@ static int __init pnd2_init(void)
if (!id)
return -ENODEV;
+ if (!edac_check_mc_owner(PND2_MOD_NAME))
+ return -EBUSY;
+
ops = (struct dunit_ops *)id->driver_data;
/* Ensure that the OPSTATE is set correctly for POLL or NMI */
diff --git a/drivers/edac/sb_edac.c b/drivers/edac/sb_edac.c
index 80d860c..71bd66e 100644
--- a/drivers/edac/sb_edac.c
+++ b/drivers/edac/sb_edac.c
@@ -36,7 +36,7 @@ static LIST_HEAD(sbridge_edac_list);
* Alter this version for the module when modifications are made
*/
#define SBRIDGE_REVISION " Ver: 1.1.2 "
-#define EDAC_MOD_STR "sbridge_edac"
+#define SBRIDGE_MOD_NAME "sb_edac.c"
/*
* Debug macros
@@ -3124,7 +3124,7 @@ static int sbridge_register_mci(struct sbridge_dev *sbridge_dev, enum type type)
MEM_FLAG_DDR4 : MEM_FLAG_DDR3;
mci->edac_ctl_cap = EDAC_FLAG_NONE;
mci->edac_cap = EDAC_FLAG_NONE;
- mci->mod_name = "sb_edac.c";
+ mci->mod_name = SBRIDGE_MOD_NAME;
mci->mod_ver = SBRIDGE_REVISION;
mci->dev_name = pci_name(pdev);
mci->ctl_page_to_phys = NULL;
@@ -3380,6 +3380,9 @@ static int __init sbridge_init(void)
if (!id)
return -ENODEV;
+ if (!edac_check_mc_owner(SBRIDGE_MOD_NAME))
+ return -EBUSY;
+
/* Ensure that the OPSTATE is set correctly for POLL or NMI */
opstate_init();
diff --git a/drivers/edac/skx_edac.c b/drivers/edac/skx_edac.c
index 64bef6c9..8347969 100644
--- a/drivers/edac/skx_edac.c
+++ b/drivers/edac/skx_edac.c
@@ -31,6 +31,7 @@
#include "edac_module.h"
+#define SKX_MOD_NAME "skx_edac.c"
#define SKX_REVISION " Ver: 1.0 "
/*
@@ -471,7 +472,7 @@ static int skx_register_mci(struct skx_imc *imc)
mci->mtype_cap = MEM_FLAG_DDR4;
mci->edac_ctl_cap = EDAC_FLAG_NONE;
mci->edac_cap = EDAC_FLAG_NONE;
- mci->mod_name = "skx_edac.c";
+ mci->mod_name = SKX_MOD_NAME;
mci->dev_name = pci_name(imc->chan[0].cdev);
mci->mod_ver = SKX_REVISION;
mci->ctl_page_to_phys = NULL;
@@ -1052,6 +1053,9 @@ static int __init skx_init(void)
if (!id)
return -ENODEV;
+ if (!edac_check_mc_owner(SKX_MOD_NAME))
+ return -EBUSY;
+
rc = skx_get_hi_lo();
if (rc)
return rc;
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2017-08-07 14:57 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-08-05 5:49 [v2,7/7] edac drivers: add MC owner check in init Borislav Petkov
-- strict thread matches above, loose matches on Subject: below --
2017-08-07 14:57 Toshi Kani
2017-08-04 21:48 Toshi Kani
2017-08-04 8:39 Borislav Petkov
2017-08-03 21:57 Toshi Kani
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox