Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp1122927ybi; Wed, 3 Jul 2019 09:52:55 -0700 (PDT) X-Google-Smtp-Source: APXvYqwQokSBx/EXBN0QfrLVMNETBNsqmbgkEMiwjR2iMNEln+UcWLnqOkdjt8q8w6J8IRPu1kOE X-Received: by 2002:a63:221c:: with SMTP id i28mr34506248pgi.114.1562172775014; Wed, 03 Jul 2019 09:52:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562172775; cv=none; d=google.com; s=arc-20160816; b=IJm7+m6pElnEyQk+qnfAW6OHqKBChCPPnvNBzuDR+JpcW0KdEIknja+nBVrzvCCZ+5 meNUnHshZjZW4bBtPFUR59Q2Y1Ms+ZQCWSAV2qqoe7CuQhNVJvd7dJc/y03TtObPdI0u IBVW3LxGxMtomESId3iqjLxJdMzkioJQpSL3338N03n12DhkrAMq7wh/naDlicpBKbB+ 2YO5QlCyykHlY7V+HnhCCZ+lIRQFxRl8dc5LW7Rhd/G7PlmB/7lZUwQGEPku2b6lyonA 32f0/hzAV3oLjWiu95hWudCa5xrJkixrz7tsSPtrfd7t+ctY6oltaKhQFGEus9jLbHG3 QDZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date; bh=sNrKHgbuNiAJqEKHtSZuZ2LxkmuMJR3AaNrNrxjF63M=; b=PHCtq15HlheUYnuMH8Bt75FRN48Ogc4aMmBUXZp3HTGKNs0xMIHlJ5n3l5QuCGa7xa RamHNsyVGTjluyHuLmvI9QAknok+1iqsigw3/wpTFNekrIS9ee54UfsW/YxRTU49UmbB 14P31bTxIzfdzjnmE7zzytBtXcEjMA8thmUSrjj8RRiluJUHeSB2HGDDfzohiLpqfcGj fAZvWnvCS83xBo/hIl3xCCuzUmM9aSVanwQl9V4u9ndVEblawp620ZjaFTJ94cPd4t2s w5KHs/UuZmEzuHnkewSZ2bFqGOHLqm9nStP48EEqvhKQNRE7SJmC9vzalyyZnpglqIIB laIg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q42si2564636pjc.103.2019.07.03.09.52.39; Wed, 03 Jul 2019 09:52:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727294AbfGCQuZ (ORCPT + 99 others); Wed, 3 Jul 2019 12:50:25 -0400 Received: from mail-pf1-f195.google.com ([209.85.210.195]:36552 "EHLO mail-pf1-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726736AbfGCQuZ (ORCPT ); Wed, 3 Jul 2019 12:50:25 -0400 Received: by mail-pf1-f195.google.com with SMTP id r7so1566798pfl.3; Wed, 03 Jul 2019 09:50:24 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=sNrKHgbuNiAJqEKHtSZuZ2LxkmuMJR3AaNrNrxjF63M=; b=p/NhCUvzQRLPhrRbKFRQ7Il/vbuKedO9IXXuDebWkYn0WwD/VvSI+BGYR5LMYMCikz z/Al/ZzOdsDvqGowAm+F+2odUhD6SltTzjsP8K1yRl2GLlPNux+3qLrNSaQyj+hNeTVK 8GaX8FWaRNyZHDpgRjb96VR7DUwJp6FOfsTUhDIMGh328QugWujSzcVuoPtE9LRWPCfP rGc/L6wyus6c8dE3ouFUNvkPFl1rh4VIuvoEUCWav7ke4C7jC3dSavZb4vugW+wQHzqN NcyYFH/X6xoGUjnu4ycDKS+gvV8hZncZS+g4NajeNLlwCcASCGu5ndiYeOeMCe/ltyqo hGCw== X-Gm-Message-State: APjAAAWZB96mEEALpqbiz1Htct8BZSCSepysQF73C0kaNu83aWukr3CX qf7H75WhHtgVH46nxhb4yYs= X-Received: by 2002:a65:404a:: with SMTP id h10mr39043395pgp.262.1562172623538; Wed, 03 Jul 2019 09:50:23 -0700 (PDT) Received: from 42.do-not-panic.com (42.do-not-panic.com. [157.230.128.187]) by smtp.gmail.com with ESMTPSA id h18sm4828442pfr.75.2019.07.03.09.50.21 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 03 Jul 2019 09:50:21 -0700 (PDT) Received: by 42.do-not-panic.com (Postfix, from userid 1000) id F283C402AC; Wed, 3 Jul 2019 16:50:20 +0000 (UTC) Date: Wed, 3 Jul 2019 16:50:20 +0000 From: Luis Chamberlain To: Greg Kroah-Hartman Cc: Christoph Hellwig , Brendan Higgins , Cristina Moraru , "vegard.nossum@gmail.com" , Valentin Rothberg , Hannes Reinecke , Sam Ravnborg , Michal Marek , "linux-kernel@vger.kernel.org" , Tom Gundersen , Kay Sievers , Rusty Russell , Andrew Morton , backports@vger.kernel.org, Guenter Roeck , "rafael.j.wysocki" , Dmitry Torokhov , Takashi Iwai , Mauro Carvalho Chehab , Johannes Berg , Hauke Mehrtens , Paul Bolle , Paul Gortmaker , Alexey Khoroshilov , Sathya Prakash Veerichetty , "Martin K. Petersen" , Laurence Oberman , Johannes Thumshirn , Tejun Heo , Jej B , Theodore Ts'o , Daniel Jonsson , Andrzej Wasowski Subject: Re: [RFC PATCH 0/5] Add CONFIG symbol as module attribute Message-ID: <20190703165020.GV19023@42.do-not-panic.com> References: <20160818175505.GM3296@wotan.suse.de> <20160825074313.GC18622@lst.de> <20160825201919.GE3296@wotan.suse.de> <20190627045052.GA7594@lst.de> <20190629084257.GA1227@kroah.com> <20190702205106.GR19023@42.do-not-panic.com> <20190703074048.GH3033@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20190703074048.GH3033@kroah.com> 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, Jul 03, 2019 at 09:40:48AM +0200, Greg Kroah-Hartman wrote: > On Tue, Jul 02, 2019 at 08:51:06PM +0000, Luis Chamberlain wrote: > > On Sat, Jun 29, 2019 at 10:42:57AM +0200, Greg Kroah-Hartman wrote: > > > On Fri, Jun 28, 2019 at 11:40:22AM -0700, Luis Chamberlain wrote: > > > > On Wed, Jun 26, 2019 at 9:51 PM Christoph Hellwig wrote: > > > > > > > > > > On Wed, Jun 26, 2019 at 03:21:08PM -0700, Luis Chamberlain wrote: > > > > > > On Tue, Feb 5, 2019 at 2:07 PM Luis Chamberlain wrote: > > > > > > > In lieu of no Luke Skywalker, if you will, for a large kconfig revamp > > > > > > > on this, I'm inclined to believe *at least* having some kconfig_symb > > > > > > > exposed for some modules is better than nothing. Christoph are you > > > > > > > totally opposed to this effort until we get a non-reverse engineered > > > > > > > effort in place? It just seems like an extraordinary amount of work > > > > > > > and I'm not quite sure who's volunteering to do it. > > > > > > > > > > > > > > Other stakeholders may benefit from at least having some config --> > > > > > > > module mapping for now. Not just backports or building slimmer > > > > > > > kernels. > > > > > > > > > > > > Christoph, *poke* > > > > > > > > > > Yes, I'm still totally opposed to a half-backed hack like this. > > > > > > > > The solution puts forward a mechanism to add a kconfig_symb where we > > > > are 100% certain we have a direct module --> config mapping. > > > > > > > > This is *currently* determined when the streamline_config.pl finds > > > > that an object has only *one* associated config symbol associated. As > > > > Cristina noted, of 62 modules on a running system 58 of them ended up > > > > getting the kconfig_symb assigned, that is 93.5% of all modules on the > > > > system being tested. For the other modules, if they did want this > > > > association, we could allow a way for modules to define their own > > > > KBUILD_KCONF variable so that this could be considered as well, or > > > > they can look at their own kconfig stuff to try to fit the model that > > > > does work. To be clear, the heuristics *can* be updated if there is > > > > confidence in alternative methods for resolution. But since it is > > > > reflective of our current situation, I cannot consider it a hack. > > > > > > > > This implementation is a reflection of our reality in the kernel, and > > > > as has been discussed in this thread, if we want to correct the gaps > > > > we need to do a lot of work. And *no one* is working towards these > > > > goals. > > > > > > > > That said, even if you go forward with an intrusive solution like the > > > > one you proposed we could still use the same kconfig_symb... > > > > > > > > So no, I don't see this as a hack. It's a reflection as to our current > > > > reality. And I cannot see how the kconfig_symb can lie or be > > > > incorrect. So in fact I think that pushing this forward also makes the > > > > problem statement clearer for the future of what semantics needs to be > > > > addressed, and helps us even annotate the problematic areas of the > > > > kernel. > > > > > > > > What negative aspects do you see with this being merged in practice? > > > > > > I'm trying to see what the actual problem that you are wanting to solve > > > here with this. What exactly is it? > > > > The problem is that there is no current maping of a module to respective > > kconfig symbol. > > That's because it is not just "one" symbol per module. This is true. But it is not the case for all modules. In fact it seems its true that most modules do have *one* main symbol. On at least Cristina's system of of 62 modules 58 *did* have one symbol. For the modules evaluated where this was not the case, it did seem wise to actually revise the symbol definition for the other modules. > If it were, you can just parse the Makefiles and get that single config > option for most modules, right? The heuristic essentially does this and only provides the module attribute where this was true. > But even then, multiple options can > influence a single module as to what actually gets built into that > module. Yes. For example one hardware device driver may support different families of chipsets, and so it could have sub-options for each family. > So, I would say, "who really cares"? For most visible modules it would seem we do have a one config symbol mapping which could enable it. And I noted who would care. The defaults of a module, for instance sub-options to enable / disable different support for different chipsets, *should* suffice for most users. > > > Who needs to determine the > > > "singular" configuration option that caused a kernel module to be built > > > at the expense of all other options? > > > > Folks wanting to slim down their kernel build, and users of backports. > > People who want to "slim" down things are rare, It is basic math though: Users of 'make localmodconfig' + backport users > Users of 'make localmodconfig' And yet we already support 'make localmodconfig'. So what is being proposed can help enhance 'make localmodconfig' and yet provides more users outside of those users, without requiring kernel sources. > and it's usually worth > it to work backwards anyway (see what functionality is needed and then > go from there, not look at the modules themselves). Or use a tool like > 'make localmodconfig' and trim. And I am noting we can further enhance a feature which we already do support, and enable *more* users requiring similar information. > > > What can that be used for and who will use it? > > > > Without a mapping there is no clean way to let you slim down your kernel > > using a distro kernel as a base, enabling only those things you really > > need. > > It's hard to determine "what you really need" :) Right, but at least for device functionality, the above would help significantly. It also poses the question whether or not device drivers *should* strive towards having one kconfig symbol to help with this. There is a lot of research over the lack of proper semantics on use of kconfig, and issues this causes. It is so bad that some researchers have tried define our semantics through *reverse engineering*. The question of whether or not we *should* strive to have *one* symbol per a driver for an actual hardware component is worth evaluating long term, for the sake of helping with semantics of kconfig use. I see there being gains with this, and I find it hard to find counters to where quite the opposite is true. Can you? > Use localmodconfig and you have a great start, then prune from there. This thread poses the question if we can do better, and suggests one small area where we can start. > Trying to put _all_ configuration dependencies in a single module isn't > going to work, our configuration language does not distill down to that. The question we should be evaluating if we *should* strive to buckle up on this and have at least one config symbol per module associated with hardware. I'm suggesting there are gains for this, and am providing two groups of users that would benefit from this clearly. And I'm also suggesting that it could help with kconfig semantics, long term. Luis