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=-2.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, 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 53DC1C43382 for ; Tue, 25 Sep 2018 18:07:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 0951D2086E for ; Tue, 25 Sep 2018 18:07:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 0951D2086E 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 S1727232AbeIZAQN (ORCPT ); Tue, 25 Sep 2018 20:16:13 -0400 Received: from mail.skyhub.de ([5.9.137.197]:42286 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726312AbeIZAQM (ORCPT ); Tue, 25 Sep 2018 20:16:12 -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 ke0neSv0rauJ; Tue, 25 Sep 2018 20:07:29 +0200 (CEST) Received: from zn.tnic (p200300EC2BC69500329C23FFFEA6A903.dip0.t-ipconnect.de [IPv6:2003:ec:2bc6:9500: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 18E051EC0104; Tue, 25 Sep 2018 20:07:29 +0200 (CEST) Date: Tue, 25 Sep 2018 20:07:33 +0200 From: Borislav Petkov To: "Luck, Tony" Cc: 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: <20180925180458.GG23986@zn.tnic> References: <20180925143449.284634-1-justin.ernst@hpe.com> <20180925152659.GE23986@zn.tnic> <20180925175023.GA16725@agluck-desk> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20180925175023.GA16725@agluck-desk> 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 Tue, Sep 25, 2018 at 10:50:23AM -0700, Luck, Tony wrote: > There are way too many places where we use the identifier "bus" > in the edac core and drivers. But I'm not sure that we need a > static array mc_bus[EDAC_MAX_MCS]. That, of course, is another way of looking at it which I didn't think of. > Why can't we: > > > - mci->bus = &mc_bus[mci->mc_idx]; > + mci->bus = kmalloc(sizeof *(mci->bus), GFP_KERNEL); > > and then figure out where to kfree(mci->bus) on driver removal? AFAICT, in _edac_mc_free(). We free there mci itself so kfree(mci->bus) can happen directly before it. > Do we every do arithmetic on different mci->bus pointers that > assume they are all part of a single array? AFAICT, we use that thing for the bus_reg/unreg functions and we hand it back'n'forth in edac_mc_sysfs.c, see $ git grep -E "mci.*bus" drivers/edac/ drivers/edac/edac_mc.c:763: mci->bus = &mc_bus[mci->mc_idx]; drivers/edac/edac_mc_sysfs.c:408: csrow->dev.bus = mci->bus; drivers/edac/edac_mc_sysfs.c:639: dimm->dev.bus = mci->bus; drivers/edac/edac_mc_sysfs.c:928: mci->bus->name = name; drivers/edac/edac_mc_sysfs.c:930: edac_dbg(0, "creating bus %s\n", mci->bus->name); drivers/edac/edac_mc_sysfs.c:932: err = bus_register(mci->bus); drivers/edac/edac_mc_sysfs.c:943: mci->dev.bus = mci->bus; drivers/edac/edac_mc_sysfs.c:1002: bus_unregister(mci->bus); drivers/edac/edac_mc_sysfs.c:1035: struct bus_type *bus = mci->bus; drivers/edac/edac_mc_sysfs.c:1036: const char *name = mci->bus->name; drivers/edac/edac_mc_sysfs.c:1071: mci_pdev->bus = edac_get_sysfs_subsys(); drivers/edac/i5100_edac.c:967: priv->debugfs = edac_debugfs_create_dir_at(mci->bus->name, i5100_debugfs); drivers/edac/i7core_edac.c:1170: pvt->addrmatch_dev->bus = mci->dev.bus; drivers/edac/i7core_edac.c:1191: pvt->chancounts_dev->bus = mci->dev.bus; HOWEVER, look at 88d84ac97378 ("EDAC: Fix lockdep splat") Now I remember. I did that for lockdep because it wants statically allocated memory. I'll try to think of something tomorrow. Thx. -- 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: <20180925180458.GG23986@zn.tnic> Date: Tue, 25 Sep 2018 20:07:33 +0200 To: "Luck, Tony" Cc: Justin Ernst , russ.anderson@hpe.com, Mauro Carvalho Chehab , linux-edac@vger.kernel.org, linux-kernel@vger.kernel.org List-ID: T24gVHVlLCBTZXAgMjUsIDIwMTggYXQgMTA6NTA6MjNBTSAtMDcwMCwgTHVjaywgVG9ueSB3cm90 ZToKPiBUaGVyZSBhcmUgd2F5IHRvbyBtYW55IHBsYWNlcyB3aGVyZSB3ZSB1c2UgdGhlIGlkZW50 aWZpZXIgImJ1cyIKPiBpbiB0aGUgZWRhYyBjb3JlIGFuZCBkcml2ZXJzLiBCdXQgSSdtIG5vdCBz dXJlIHRoYXQgd2UgbmVlZCBhCj4gc3RhdGljIGFycmF5IG1jX2J1c1tFREFDX01BWF9NQ1NdLgoK VGhhdCwgb2YgY291cnNlLCBpcyBhbm90aGVyIHdheSBvZiBsb29raW5nIGF0IGl0IHdoaWNoIEkg ZGlkbid0IHRoaW5rCm9mLgoKPiBXaHkgY2FuJ3Qgd2U6Cj4gCj4gCj4gLQltY2ktPmJ1cyA9ICZt Y19idXNbbWNpLT5tY19pZHhdOwo+ICsJbWNpLT5idXMgPSBrbWFsbG9jKHNpemVvZiAqKG1jaS0+ YnVzKSwgR0ZQX0tFUk5FTCk7Cj4gCj4gYW5kIHRoZW4gZmlndXJlIG91dCB3aGVyZSB0byBrZnJl ZShtY2ktPmJ1cykgb24gZHJpdmVyIHJlbW92YWw/CgpBRkFJQ1QsIGluIF9lZGFjX21jX2ZyZWUo KS4gV2UgZnJlZSB0aGVyZSBtY2kgaXRzZWxmIHNvIGtmcmVlKG1jaS0+YnVzKQpjYW4gaGFwcGVu IGRpcmVjdGx5IGJlZm9yZSBpdC4KCj4gRG8gd2UgZXZlcnkgZG8gYXJpdGhtZXRpYyBvbiBkaWZm ZXJlbnQgbWNpLT5idXMgcG9pbnRlcnMgdGhhdAo+IGFzc3VtZSB0aGV5IGFyZSBhbGwgcGFydCBv ZiBhIHNpbmdsZSBhcnJheT8KCkFGQUlDVCwgd2UgdXNlIHRoYXQgdGhpbmcgZm9yIHRoZSBidXNf cmVnL3VucmVnIGZ1bmN0aW9ucyBhbmQgd2UgaGFuZCBpdApiYWNrJ24nZm9ydGggaW4gZWRhY19t Y19zeXNmcy5jLCBzZWUKCiQgZ2l0IGdyZXAgLUUgIm1jaS4qYnVzIiBkcml2ZXJzL2VkYWMvCmRy aXZlcnMvZWRhYy9lZGFjX21jLmM6NzYzOiAgICAgbWNpLT5idXMgPSAmbWNfYnVzW21jaS0+bWNf aWR4XTsKZHJpdmVycy9lZGFjL2VkYWNfbWNfc3lzZnMuYzo0MDg6ICAgICAgIGNzcm93LT5kZXYu YnVzID0gbWNpLT5idXM7CmRyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmM6NjM5OiAgICAgICBk aW1tLT5kZXYuYnVzID0gbWNpLT5idXM7CmRyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmM6OTI4 OiAgICAgICBtY2ktPmJ1cy0+bmFtZSA9IG5hbWU7CmRyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2Zz LmM6OTMwOiAgICAgICBlZGFjX2RiZygwLCAiY3JlYXRpbmcgYnVzICVzXG4iLCBtY2ktPmJ1cy0+ bmFtZSk7CmRyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmM6OTMyOiAgICAgICBlcnIgPSBidXNf cmVnaXN0ZXIobWNpLT5idXMpOwpkcml2ZXJzL2VkYWMvZWRhY19tY19zeXNmcy5jOjk0MzogICAg ICAgbWNpLT5kZXYuYnVzID0gbWNpLT5idXM7CmRyaXZlcnMvZWRhYy9lZGFjX21jX3N5c2ZzLmM6 MTAwMjogICAgICBidXNfdW5yZWdpc3RlcihtY2ktPmJ1cyk7CmRyaXZlcnMvZWRhYy9lZGFjX21j X3N5c2ZzLmM6MTAzNTogICAgICBzdHJ1Y3QgYnVzX3R5cGUgKmJ1cyA9IG1jaS0+YnVzOwpkcml2 ZXJzL2VkYWMvZWRhY19tY19zeXNmcy5jOjEwMzY6ICAgICAgY29uc3QgY2hhciAqbmFtZSA9IG1j aS0+YnVzLT5uYW1lOwpkcml2ZXJzL2VkYWMvZWRhY19tY19zeXNmcy5jOjEwNzE6ICAgICAgbWNp X3BkZXYtPmJ1cyA9IGVkYWNfZ2V0X3N5c2ZzX3N1YnN5cygpOwpkcml2ZXJzL2VkYWMvaTUxMDBf ZWRhYy5jOjk2NzogIHByaXYtPmRlYnVnZnMgPSBlZGFjX2RlYnVnZnNfY3JlYXRlX2Rpcl9hdCht Y2ktPmJ1cy0+bmFtZSwgaTUxMDBfZGVidWdmcyk7CmRyaXZlcnMvZWRhYy9pN2NvcmVfZWRhYy5j OjExNzA6ICAgICAgICBwdnQtPmFkZHJtYXRjaF9kZXYtPmJ1cyA9IG1jaS0+ZGV2LmJ1czsKZHJp dmVycy9lZGFjL2k3Y29yZV9lZGFjLmM6MTE5MTogICAgICAgICAgICAgICAgcHZ0LT5jaGFuY291 bnRzX2Rldi0+YnVzID0gbWNpLT5kZXYuYnVzOwoKSE9XRVZFUiwgbG9vayBhdAoKICA4OGQ4NGFj OTczNzggKCJFREFDOiBGaXggbG9ja2RlcCBzcGxhdCIpCgpOb3cgSSByZW1lbWJlci4gSSBkaWQg dGhhdCBmb3IgbG9ja2RlcCBiZWNhdXNlIGl0IHdhbnRzIHN0YXRpY2FsbHkKYWxsb2NhdGVkIG1l bW9yeS4gSSdsbCB0cnkgdG8gdGhpbmsgb2Ygc29tZXRoaW5nIHRvbW9ycm93LgoKVGh4Lgo=