From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_PASS,USER_AGENT_MUTT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C0CF8C43382 for ; Wed, 26 Sep 2018 15:27:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8284D21508 for ; Wed, 26 Sep 2018 15:27:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8284D21508 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=alien8.de Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728394AbeIZVlS (ORCPT ); Wed, 26 Sep 2018 17:41:18 -0400 Received: from mail.skyhub.de ([5.9.137.197]:59172 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727067AbeIZVlR (ORCPT ); Wed, 26 Sep 2018 17:41:17 -0400 X-Virus-Scanned: Nedap ESD1 at mail.skyhub.de Received: from mail.skyhub.de ([127.0.0.1]) by localhost (blast.alien8.de [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id ZsclDkjV1Snl; Wed, 26 Sep 2018 17:27:48 +0200 (CEST) Received: from zn.tnic (p200300EC2BCA1F00329C23FFFEA6A903.dip0.t-ipconnect.de [IPv6:2003:ec:2bca:1f00:329c:23ff:fea6:a903]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.skyhub.de (SuperMail on ZX Spectrum 128k) with ESMTPSA id 0D3411EC0347; Wed, 26 Sep 2018 17:27:48 +0200 (CEST) Date: Wed, 26 Sep 2018 17:27:52 +0200 From: Borislav Petkov To: "Luck, Tony" Cc: Greg KH , Justin Ernst , russ.anderson@hpe.com, Mauro Carvalho Chehab , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] Raise maximum number of memory controllers Message-ID: <20180926152752.GG5584@zn.tnic> References: <20180925143449.284634-1-justin.ernst@hpe.com> <20180925152659.GE23986@zn.tnic> <20180925175023.GA16725@agluck-desk> <20180925180458.GG23986@zn.tnic> <20180926093510.GA5584@zn.tnic> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180926093510.GA5584@zn.tnic> User-Agent: Mutt/1.10.1 (2018-07-13) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Sep 26, 2018 at 11:35:11AM +0200, Borislav Petkov wrote: > * or Greg coming and saying, you're using bus_type all wrong and you > shouldn't and you should remove it completely! :-) Yap, and so he did! :-) It looks like we can remove the whole per-MC bus thing, see below. Patch seems to work here and grepping sysfs hierarchy before and after: find /sys/ | grep -i edac > ... doesn't show any differences. Tony, I'd appreciate running this on one of your big boxes to check nothing is missing in sysfs... Thx. --- drivers/edac/edac_mc.c | 9 +-------- drivers/edac/edac_mc_sysfs.c | 30 ++---------------------------- include/linux/edac.h | 6 ------ 3 files changed, 3 insertions(+), 42 deletions(-) diff --git a/drivers/edac/edac_mc.c b/drivers/edac/edac_mc.c index 7d3edd713932..13594ffadcb3 100644 --- a/drivers/edac/edac_mc.c +++ b/drivers/edac/edac_mc.c @@ -55,8 +55,6 @@ static LIST_HEAD(mc_devices); */ static const char *edac_mc_owner; -static struct bus_type mc_bus[EDAC_MAX_MCS]; - int edac_get_report_status(void) { return edac_report; @@ -716,11 +714,6 @@ int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci, int ret = -EINVAL; edac_dbg(0, "\n"); - if (mci->mc_idx >= EDAC_MAX_MCS) { - pr_warn_once("Too many memory controllers: %d\n", mci->mc_idx); - return -ENODEV; - } - #ifdef CONFIG_EDAC_DEBUG if (edac_debug_level >= 3) edac_mc_dump_mci(mci); @@ -760,7 +753,7 @@ int edac_mc_add_mc_with_groups(struct mem_ctl_info *mci, /* set load time so that error rate can be tracked */ mci->start_time = jiffies; - mci->bus = &mc_bus[mci->mc_idx]; + mci->bus = edac_get_sysfs_subsys(); if (edac_create_sysfs_mci_device(mci, groups)) { edac_mc_printk(mci, KERN_WARNING, diff --git a/drivers/edac/edac_mc_sysfs.c b/drivers/edac/edac_mc_sysfs.c index 20374b8248f0..2ca2012f2857 100644 --- a/drivers/edac/edac_mc_sysfs.c +++ b/drivers/edac/edac_mc_sysfs.c @@ -914,27 +914,8 @@ static const struct device_type mci_attr_type = { int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, const struct attribute_group **groups) { - char *name; int i, err; - /* - * The memory controller needs its own bus, in order to avoid - * namespace conflicts at /sys/bus/edac. - */ - name = kasprintf(GFP_KERNEL, "mc%d", mci->mc_idx); - if (!name) - return -ENOMEM; - - mci->bus->name = name; - - edac_dbg(0, "creating bus %s\n", mci->bus->name); - - err = bus_register(mci->bus); - if (err < 0) { - kfree(name); - return err; - } - /* get the /sys/devices/system/edac subsys reference */ mci->dev.type = &mci_attr_type; device_initialize(&mci->dev); @@ -950,7 +931,7 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, err = device_add(&mci->dev); if (err < 0) { edac_dbg(1, "failure: create device %s\n", dev_name(&mci->dev)); - goto fail_unregister_bus; + goto out; } /* @@ -998,10 +979,8 @@ int edac_create_sysfs_mci_device(struct mem_ctl_info *mci, device_unregister(&dimm->dev); } device_unregister(&mci->dev); -fail_unregister_bus: - bus_unregister(mci->bus); - kfree(name); +out: return err; } @@ -1032,13 +1011,8 @@ void edac_remove_sysfs_mci_device(struct mem_ctl_info *mci) void edac_unregister_sysfs(struct mem_ctl_info *mci) { - struct bus_type *bus = mci->bus; - const char *name = mci->bus->name; - edac_dbg(1, "Unregistering device %s\n", dev_name(&mci->dev)); device_unregister(&mci->dev); - bus_unregister(bus); - kfree(name); } static void mc_attr_release(struct device *dev) diff --git a/include/linux/edac.h b/include/linux/edac.h index a45ce1f84bfc..dd8d006f1837 100644 --- a/include/linux/edac.h +++ b/include/linux/edac.h @@ -668,10 +668,4 @@ struct mem_ctl_info { bool fake_inject_ue; u16 fake_inject_count; }; - -/* - * Maximum number of memory controllers in the coherent fabric. - */ -#define EDAC_MAX_MCS 16 - #endif -- 2.17.0.582.gccdcbd54c -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply. From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: Raise maximum number of memory controllers From: Borislav Petkov Message-Id: <20180926152752.GG5584@zn.tnic> Date: Wed, 26 Sep 2018 17:27:52 +0200 To: "Luck, Tony" Cc: Greg KH , Justin Ernst , russ.anderson@hpe.com, Mauro Carvalho Chehab , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: T24gV2VkLCBTZXAgMjYsIDIwMTggYXQgMTE6MzU6MTFBTSArMDIwMCwgQm9yaXNsYXYgUGV0a292 IHdyb3RlOgo+ICogb3IgR3JlZyBjb21pbmcgYW5kIHNheWluZywgeW91J3JlIHVzaW5nIGJ1c190 eXBlIGFsbCB3cm9uZyBhbmQgeW91Cj4gc2hvdWxkbid0IGFuZCB5b3Ugc2hvdWxkIHJlbW92ZSBp dCBjb21wbGV0ZWx5ISA6LSkKCllhcCwgYW5kIHNvIGhlIGRpZCEgOi0pCgpJdCBsb29rcyBsaWtl IHdlIGNhbiByZW1vdmUgdGhlIHdob2xlIHBlci1NQyBidXMgdGhpbmcsIHNlZSBiZWxvdy4gUGF0 Y2gKc2VlbXMgdG8gd29yayBoZXJlIGFuZCBncmVwcGluZyBzeXNmcyBoaWVyYXJjaHkgYmVmb3Jl IGFuZCBhZnRlcjoKCmZpbmQgL3N5cy8gfCBncmVwIC1pIGVkYWMgPiAuLi4KCmRvZXNuJ3Qgc2hv dyBhbnkgZGlmZmVyZW5jZXMuCgpUb255LCBJJ2QgYXBwcmVjaWF0ZSBydW5uaW5nIHRoaXMgb24g b25lIG9mIHlvdXIgYmlnIGJveGVzIHRvIGNoZWNrCm5vdGhpbmcgaXMgbWlzc2luZyBpbiBzeXNm cy4uLgoKVGh4LgotLS0KIGRyaXZlcnMvZWRhYy9lZGFjX21jLmMgICAgICAgfCAgOSArLS0tLS0t LS0KIGRyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmMgfCAzMCArKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIGluY2x1ZGUvbGludXgvZWRhYy5oICAgICAgICAgfCAgNiAtLS0tLS0KIDMg ZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2VkYWMvZWRhY19tYy5jIGIvZHJpdmVycy9lZGFjL2VkYWNfbWMuYwppbmRl eCA3ZDNlZGQ3MTM5MzIuLjEzNTk0ZmZhZGNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9lZGFjL2Vk YWNfbWMuYworKysgYi9kcml2ZXJzL2VkYWMvZWRhY19tYy5jCkBAIC01NSw4ICs1NSw2IEBAIHN0 YXRpYyBMSVNUX0hFQUQobWNfZGV2aWNlcyk7CiAgKi8KIHN0YXRpYyBjb25zdCBjaGFyICplZGFj X21jX293bmVyOwogCi1zdGF0aWMgc3RydWN0IGJ1c190eXBlIG1jX2J1c1tFREFDX01BWF9NQ1Nd OwotCiBpbnQgZWRhY19nZXRfcmVwb3J0X3N0YXR1cyh2b2lkKQogewogCXJldHVybiBlZGFjX3Jl cG9ydDsKQEAgLTcxNiwxMSArNzE0LDYgQEAgaW50IGVkYWNfbWNfYWRkX21jX3dpdGhfZ3JvdXBz KHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwKIAlpbnQgcmV0ID0gLUVJTlZBTDsKIAllZGFjX2Ri ZygwLCAiXG4iKTsKIAotCWlmIChtY2ktPm1jX2lkeCA+PSBFREFDX01BWF9NQ1MpIHsKLQkJcHJf d2Fybl9vbmNlKCJUb28gbWFueSBtZW1vcnkgY29udHJvbGxlcnM6ICVkXG4iLCBtY2ktPm1jX2lk eCk7Ci0JCXJldHVybiAtRU5PREVWOwotCX0KLQogI2lmZGVmIENPTkZJR19FREFDX0RFQlVHCiAJ aWYgKGVkYWNfZGVidWdfbGV2ZWwgPj0gMykKIAkJZWRhY19tY19kdW1wX21jaShtY2kpOwpAQCAt NzYwLDcgKzc1Myw3IEBAIGludCBlZGFjX21jX2FkZF9tY193aXRoX2dyb3VwcyhzdHJ1Y3QgbWVt X2N0bF9pbmZvICptY2ksCiAJLyogc2V0IGxvYWQgdGltZSBzbyB0aGF0IGVycm9yIHJhdGUgY2Fu IGJlIHRyYWNrZWQgKi8KIAltY2ktPnN0YXJ0X3RpbWUgPSBqaWZmaWVzOwogCi0JbWNpLT5idXMg PSAmbWNfYnVzW21jaS0+bWNfaWR4XTsKKwltY2ktPmJ1cyA9IGVkYWNfZ2V0X3N5c2ZzX3N1YnN5 cygpOwogCiAJaWYgKGVkYWNfY3JlYXRlX3N5c2ZzX21jaV9kZXZpY2UobWNpLCBncm91cHMpKSB7 CiAJCWVkYWNfbWNfcHJpbnRrKG1jaSwgS0VSTl9XQVJOSU5HLApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9lZGFjL2VkYWNfbWNfc3lzZnMuYyBiL2RyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmMKaW5k ZXggMjAzNzRiODI0OGYwLi4yY2EyMDEyZjI4NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZWRhYy9l ZGFjX21jX3N5c2ZzLmMKKysrIGIvZHJpdmVycy9lZGFjL2VkYWNfbWNfc3lzZnMuYwpAQCAtOTE0 LDI3ICs5MTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRldmljZV90eXBlIG1jaV9hdHRyX3R5 cGUgPSB7CiBpbnQgZWRhY19jcmVhdGVfc3lzZnNfbWNpX2RldmljZShzdHJ1Y3QgbWVtX2N0bF9p bmZvICptY2ksCiAJCQkJIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKipncm91cHMpCiB7 Ci0JY2hhciAqbmFtZTsKIAlpbnQgaSwgZXJyOwogCi0JLyoKLQkgKiBUaGUgbWVtb3J5IGNvbnRy b2xsZXIgbmVlZHMgaXRzIG93biBidXMsIGluIG9yZGVyIHRvIGF2b2lkCi0JICogbmFtZXNwYWNl IGNvbmZsaWN0cyBhdCAvc3lzL2J1cy9lZGFjLgotCSAqLwotCW5hbWUgPSBrYXNwcmludGYoR0ZQ X0tFUk5FTCwgIm1jJWQiLCBtY2ktPm1jX2lkeCk7Ci0JaWYgKCFuYW1lKQotCQlyZXR1cm4gLUVO T01FTTsKLQotCW1jaS0+YnVzLT5uYW1lID0gbmFtZTsKLQotCWVkYWNfZGJnKDAsICJjcmVhdGlu ZyBidXMgJXNcbiIsIG1jaS0+YnVzLT5uYW1lKTsKLQotCWVyciA9IGJ1c19yZWdpc3RlcihtY2kt PmJ1cyk7Ci0JaWYgKGVyciA8IDApIHsKLQkJa2ZyZWUobmFtZSk7Ci0JCXJldHVybiBlcnI7Ci0J fQotCiAJLyogZ2V0IHRoZSAvc3lzL2RldmljZXMvc3lzdGVtL2VkYWMgc3Vic3lzIHJlZmVyZW5j ZSAqLwogCW1jaS0+ZGV2LnR5cGUgPSAmbWNpX2F0dHJfdHlwZTsKIAlkZXZpY2VfaW5pdGlhbGl6 ZSgmbWNpLT5kZXYpOwpAQCAtOTUwLDcgKzkzMSw3IEBAIGludCBlZGFjX2NyZWF0ZV9zeXNmc19t Y2lfZGV2aWNlKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwKIAllcnIgPSBkZXZpY2VfYWRkKCZt Y2ktPmRldik7CiAJaWYgKGVyciA8IDApIHsKIAkJZWRhY19kYmcoMSwgImZhaWx1cmU6IGNyZWF0 ZSBkZXZpY2UgJXNcbiIsIGRldl9uYW1lKCZtY2ktPmRldikpOwotCQlnb3RvIGZhaWxfdW5yZWdp c3Rlcl9idXM7CisJCWdvdG8gb3V0OwogCX0KIAogCS8qCkBAIC05OTgsMTAgKzk3OSw4IEBAIGlu dCBlZGFjX2NyZWF0ZV9zeXNmc19tY2lfZGV2aWNlKHN0cnVjdCBtZW1fY3RsX2luZm8gKm1jaSwK IAkJZGV2aWNlX3VucmVnaXN0ZXIoJmRpbW0tPmRldik7CiAJfQogCWRldmljZV91bnJlZ2lzdGVy KCZtY2ktPmRldik7Ci1mYWlsX3VucmVnaXN0ZXJfYnVzOgotCWJ1c191bnJlZ2lzdGVyKG1jaS0+ YnVzKTsKLQlrZnJlZShuYW1lKTsKIAorb3V0OgogCXJldHVybiBlcnI7CiB9CiAKQEAgLTEwMzIs MTMgKzEwMTEsOCBAQCB2b2lkIGVkYWNfcmVtb3ZlX3N5c2ZzX21jaV9kZXZpY2Uoc3RydWN0IG1l bV9jdGxfaW5mbyAqbWNpKQogCiB2b2lkIGVkYWNfdW5yZWdpc3Rlcl9zeXNmcyhzdHJ1Y3QgbWVt X2N0bF9pbmZvICptY2kpCiB7Ci0Jc3RydWN0IGJ1c190eXBlICpidXMgPSBtY2ktPmJ1czsKLQlj b25zdCBjaGFyICpuYW1lID0gbWNpLT5idXMtPm5hbWU7Ci0KIAllZGFjX2RiZygxLCAiVW5yZWdp c3RlcmluZyBkZXZpY2UgJXNcbiIsIGRldl9uYW1lKCZtY2ktPmRldikpOwogCWRldmljZV91bnJl Z2lzdGVyKCZtY2ktPmRldik7Ci0JYnVzX3VucmVnaXN0ZXIoYnVzKTsKLQlrZnJlZShuYW1lKTsK IH0KIAogc3RhdGljIHZvaWQgbWNfYXR0cl9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldikKZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZWRhYy5oIGIvaW5jbHVkZS9saW51eC9lZGFjLmgKaW5k ZXggYTQ1Y2UxZjg0YmZjLi5kZDhkMDA2ZjE4MzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgv ZWRhYy5oCisrKyBiL2luY2x1ZGUvbGludXgvZWRhYy5oCkBAIC02NjgsMTAgKzY2OCw0IEBAIHN0 cnVjdCBtZW1fY3RsX2luZm8gewogCWJvb2wgZmFrZV9pbmplY3RfdWU7CiAJdTE2IGZha2VfaW5q ZWN0X2NvdW50OwogfTsKLQotLyoKLSAqIE1heGltdW0gbnVtYmVyIG9mIG1lbW9yeSBjb250cm9s bGVycyBpbiB0aGUgY29oZXJlbnQgZmFicmljLgotICovCi0jZGVmaW5lIEVEQUNfTUFYX01DUwkx NgotCiAjZW5kaWYK