linux-arch.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Matthias Maennich <maennich-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
To: Guenter Roeck <linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
Cc: Tomer Maimon <tmaimon77-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	lucas.de.marchi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org,
	linux-stm32-XDFAJ8BFU24N7RejjzZ/Li2xQDfSxrLKVpNB7YpNyf8@public.gmane.org,
	linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Kevin Hilman <khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org>,
	Michal Simek
	<michal.simek-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org>,
	Ludovic Desroches
	<ludovic.desroches-UWL1GkI3JZL3oGB3hsPCZA@public.gmane.org>,
	mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org,
	NXP Linux Team <linux-imx-3arQi8VN3Tc@public.gmane.org>,
	Tomas Winkler
	<tomas.winkler-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>,
	Jean Delvare <jdelvare-IBi9RG/b67k@public.gmane.org>,
	Sascha Hauer <s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
	michal.lkml-yyZNWGI4GtDR7s880joybQ@public.gmane.org,
	Scott Branden <sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org>,
	Andrew Jeffery <andrew-zrmu5oMJ5Fs@public.gmane.org>,
	gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Pengutronix Kernel Team
	<kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org>,
	Alexandre Belloni
	<alexandre.belloni-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org>,
	linux-aspeed-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
	yamada.masahiro-uWyLwvC0a2jby3iVrkZq2A@public.gmane.org,
	Thierry Reding <thierry.redin>
Subject: Re: [PATCH v3 11/11] RFC: watchdog: export core symbols in WATCHDOG_CORE namespace
Date: Wed, 21 Aug 2019 17:28:12 +0100	[thread overview]
Message-ID: <20190821162812.GB77665@google.com> (raw)
In-Reply-To: <20190821145911.GA6521-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>

Hi Guenter!

On Wed, 21 Aug, 07:59, Guenter Roeck wrote:
>On Wed, Aug 21, 2019 at 12:49:26PM +0100, Matthias Maennich wrote:
>> Modules using these symbols are required to explicitly import the
>> namespace. This patch was generated with the following steps and serves
>> as a reference to use the symbol namespace feature:
>>
>>  1) Use EXPORT_SYMBOL_NS* macros instead of EXPORT_SYMBOL* for symbols
>>     in watchdog_core.c
>>  2) make  (see warnings during modpost about missing imports)
>>  3) make nsdeps
>>
>> I used 'allmodconfig' for the above steps to ensure all occurrences are
>> patched.
>>
>> Defining DEFAULT_SYMBOL_NAMESPACE in the Makefile is not trivial in this
>> case as not only watchdog_core is defined in drivers/watchdog/Makefile.
>> Hence this patch uses the variant of using the EXPORT_SYMBOL_NS* macros
>> to export into a different namespace.
>>
>I don't have the context, and thus I am missing the point of this patch
>set. Whatever it is supposed to accomplish, it seems extreme to me
>to require extra code in each driver for it.
>

Unfortunately, get_maintainer.pl has helped me too much and this series
got blocked by some mailing lists due to the large amount of recipients.
Following versions will be sent to the previous audience + the
linux-watchdog list.
For context, the full series (including previous versions) can be found
on lore at
https://lore.kernel.org/lkml/20180716122125.175792-1-maco-z5hGa2qSFaRBDgjK7y7TUQ@public.gmane.org/
and the cover letter for v3 has made it to linux-amlogic
https://lore.kernel.org/linux-amlogic/20190821114955.12788-1-maennich-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org/

>Anyway, WATCHDOG_CORE would be the default namespace (if it is what
>I think it is) for watchdog drivers, even though not all watchdog drivers
>use it. As such, I am missing an explanation why defining it in Makefile
>is not trivial. "... as not only watchdog_core is defined in
>drivers/watchdog/Makefile" does not mean anything to me and is not a real

True, that is a bit out of context. Especially considering you did not
receive any other messages of that series.
Defining a namespace a symbol should be exported to can be done in
different ways. All of them effectively change the EXPORT_SYMBOL*
macro's behaviour. The method I am referring to is using

  ccflags-y += -DDEFAULT_SYMBOL_NAMESPACE=WATCHDOG_CORE

directly in drivers/watchdog/Makefile. Since this would also apply the
namespace to exports in non-core modules it would be incorrect. Thus I
used the method of applying the namespace directly by changing the
EXPORT_SYMBOL macro expansion.

>explanation. Also, it is not immediately obvious to me why "select
>WATCHDOG_CORE" in Kconfig would not automatically imply that WATCHDOG_CORE
>is used by a given driver, and why it is impossible to use that
>information to avoid the per-driver changes.
>

One intention of this patch series is to make exporting and using of
namespaces explicit. As such, the subsystem exporting symbols is
defining the namespace it exports to and the module using a namespace is
supposed to explicitly declare its usage via import. In case of watchdog
(and probably other cases) it might make sense to find a way to
implicitly import the namespace for in-tree drivers in the same area.

>I am also missing an explanation why WATCHDOG_CORE is going to be a
>separate namespace to start with. Maybe that discussion has happened,
>but I don't recall being advised or asked or told about it. Are we also
>going to have a new HWMON_CORE namespace ? And the same for each other
>subsystem in the kernel ?
>

This very patch is an RFC to demonstrate how Symbol Namespaces would be
used based on the current implementation (the other RFC as part of this
series is for the introduction of the namespace USB_STORAGE).
WATCHDOG_CORE serves as one of two examples. I do not think the two RFC
patches should be merged along with this series.

>Since this is being added to the watchdog API, it will have to be
>documented accordingly. Watchdog driver writers, both inside and outside
>the watchdog subsystem, will need to know that they now have to add an
>additional boilerplate declaration into their drivers.
>

Completely agree. This is just an RFC that omits these details as it
purely focuses on the introduction and consequences of such a namespace
to demonstrate how the feature works.

>Last but not least, combining patches affecting multiple subsystems in a
>single patch will make it difficult to apply and will likely result in
>conflicts. Personally I would prefer a split into one patch per affected
>subsystem. Also, please keep in mind that new pending watchdog drivers
>won't have the new boilerplate.

I understand the point. Especially as I am already now affected by the
long list of recipients when sending this patch. The problem with single
patches here is, that once a symbol is exported into a namespace, all
modules using it have to declare that import to avoid a warning at
compile time and module load time. Hence the all-in-one approach.
Luckily, the patch series also provides a way to address such a warning
(via `make nsdeps`) that creates the necessary source code fix as a
single line per module and namespace right after MODULE_LICENSE(). That
is how this patch was created in the first place.

Cheers,
Matthias

  parent reply	other threads:[~2019-08-21 16:28 UTC|newest]

Thread overview: 182+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-16 12:21 [PATCH 0/6] Symbol namespaces Martijn Coenen
2018-07-16 12:21 ` Martijn Coenen
2018-07-16 12:21 ` [PATCH 1/6] export: explicitly align struct kernel_symbol Martijn Coenen
2018-07-16 12:21   ` Martijn Coenen
2018-07-16 12:21 ` [PATCH 2/6] module: add support for symbol namespaces Martijn Coenen
2018-07-16 12:21   ` Martijn Coenen
2018-07-19 16:32   ` Jessica Yu
2018-07-19 16:32     ` Jessica Yu
2018-07-20  7:54     ` Martijn Coenen
2018-07-20  7:54       ` Martijn Coenen
2018-07-20 14:49       ` Jessica Yu
2018-07-20 14:49         ` Jessica Yu
2018-07-20 15:42         ` Martijn Coenen
2018-07-20 15:42           ` Martijn Coenen
2018-07-23 11:12           ` Jessica Yu
2018-07-23 11:12             ` Jessica Yu
2018-07-24  7:44             ` Martijn Coenen
2018-07-24  7:44               ` Martijn Coenen
2018-07-24  7:56   ` Martijn Coenen
2018-07-24  7:56     ` Martijn Coenen
2018-07-25 15:55     ` Jessica Yu
2018-07-25 15:55       ` Jessica Yu
2018-07-25 16:48       ` Lucas De Marchi
2018-07-25 16:48         ` Lucas De Marchi
2018-07-26  7:44         ` Martijn Coenen
2018-07-26  7:44           ` Martijn Coenen
2018-07-16 12:21 ` [PATCH 3/6] modpost: add support for checking " Martijn Coenen
2018-07-16 12:21   ` Martijn Coenen
2018-07-16 12:21 ` [PATCH 4/6] modpost: add support for generating namespace dependencies Martijn Coenen
2018-07-16 12:21   ` Martijn Coenen
2018-07-23  6:49   ` Jessica Yu
2018-07-23  6:49     ` Jessica Yu
2018-07-16 12:21 ` [PATCH 5/6] scripts: Coccinelle script for " Martijn Coenen
2018-07-16 12:21   ` Martijn Coenen
2018-07-16 12:21 ` [PATCH 6/6] RFC: USB: storage: move symbols into USB_STORAGE namespace Martijn Coenen
2018-07-16 12:21   ` Martijn Coenen
2018-07-16 15:33 ` [PATCH 0/6] Symbol namespaces Greg Kroah-Hartman
2018-07-16 15:33   ` Greg Kroah-Hartman
2018-07-23 14:28 ` Arnd Bergmann
2018-07-23 14:28   ` Arnd Bergmann
2018-07-24  8:09   ` Martijn Coenen
2018-07-24  8:09     ` Martijn Coenen
2018-07-24  9:08     ` Arnd Bergmann
2018-07-24  9:08       ` Arnd Bergmann
2019-08-13 12:16 ` [PATCH v2 0/10] Symbol namespaces - RFC Matthias Maennich
2019-08-13 12:16   ` Matthias Maennich
2019-08-13 12:16   ` [PATCH v2 01/10] module: support reading multiple values per modinfo tag Matthias Maennich
2019-08-13 12:16     ` Matthias Maennich
2019-08-13 12:40     ` Greg KH
2019-08-13 12:40       ` Greg KH
2019-08-13 12:16   ` [PATCH v2 02/10] export: explicitly align struct kernel_symbol Matthias Maennich
2019-08-13 12:16     ` Matthias Maennich
2019-08-13 12:41     ` Greg KH
2019-08-13 12:41       ` Greg KH
2019-08-13 12:17   ` [PATCH v2 03/10] module: add support for symbol namespaces Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 15:26     ` Greg KH
2019-08-13 15:26       ` Greg KH
2019-08-13 12:17   ` [PATCH v2 04/10] modpost: " Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 15:27     ` Greg KH
2019-08-13 15:27       ` Greg KH
2019-08-13 12:17   ` [PATCH v2 05/10] module: add config option MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 18:17     ` Greg KH
2019-08-13 18:17       ` Greg KH
2019-08-13 20:15     ` Saravana Kannan
2019-08-13 20:15       ` Saravana Kannan
2019-08-14 12:54       ` Matthias Maennich
2019-08-14 12:54         ` Matthias Maennich
2019-08-14 17:34         ` Saravana Kannan
2019-08-14 17:34           ` Saravana Kannan
2019-08-13 12:17   ` [PATCH v2 06/10] export: allow definition default namespaces in Makefiles or sources Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 18:16     ` Greg KH
2019-08-13 18:16       ` Greg KH
2019-08-13 18:16     ` Greg KH
2019-08-13 18:16       ` Greg KH
2019-08-13 12:17   ` [PATCH v2 07/10] modpost: add support for generating namespace dependencies Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 18:21     ` Greg KH
2019-08-13 18:21       ` Greg KH
2019-08-13 12:17   ` [PATCH v2 08/10] scripts: Coccinelle script for " Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 12:31     ` Julia Lawall
2019-08-13 12:31       ` Julia Lawall
2019-08-13 12:44     ` Greg KH
2019-08-13 12:44       ` Greg KH
2019-08-14  6:36     ` [Cocci] " Himanshu Jha
2019-08-14  6:36       ` Himanshu Jha
2019-08-14  8:03       ` Matthias Maennich
2019-08-14  8:03         ` Matthias Maennich
2019-08-14 12:00     ` [v2 " Markus Elfring
2019-08-14 12:00       ` Markus Elfring
2019-08-14 12:20       ` Matthias Maennich
2019-08-15 13:50     ` Markus Elfring
2019-08-15 13:50       ` Markus Elfring
2019-08-22  9:18       ` Matthias Maennich
2019-08-22  9:18         ` Matthias Maennich
2019-08-22 11:00         ` Markus Elfring
2019-08-22 11:00           ` Markus Elfring
2019-08-13 12:17   ` [PATCH v2 09/10] usb-storage: remove single-use define for debugging Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 12:42     ` Greg KH
2019-08-13 12:42       ` Greg KH
2019-08-13 13:12       ` Greg KH
2019-08-13 13:12         ` Greg KH
2019-08-13 12:17   ` [PATCH v2 10/10] RFC: usb-storage: export symbols in USB_STORAGE namespace Matthias Maennich
2019-08-13 12:17     ` Matthias Maennich
2019-08-13 12:45     ` Greg KH
2019-08-13 12:45       ` Greg KH
2019-08-13 12:47     ` Greg KH
2019-08-13 12:47       ` Greg KH
2019-08-13 15:02       ` Matthias Maennich
2019-08-13 15:02         ` Matthias Maennich
     [not found]   ` <20190813121733.52480-1-maennich-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2019-08-21 11:49     ` [PATCH v3 00/11] Symbol Namespaces Matthias Maennich
2019-08-21 11:49       ` [PATCH v3 01/11] module: support reading multiple values per modinfo tag Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-21 11:49       ` [PATCH v3 02/11] export: explicitly align struct kernel_symbol Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-21 11:49       ` [PATCH v3 03/11] module: add support for symbol namespaces Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-27 15:37         ` Jessica Yu
2019-08-27 15:37           ` Jessica Yu
2019-08-27 16:04           ` Matthias Maennich
2019-08-27 16:04             ` Matthias Maennich
2019-08-21 11:49       ` [PATCH v3 04/11] modpost: " Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-26 16:21         ` Jessica Yu
2019-08-26 16:21           ` Jessica Yu
2019-08-27 14:41           ` Matthias Maennich
2019-08-27 14:41             ` Matthias Maennich
2019-08-28  9:43             ` Jessica Yu
2019-08-28  9:43               ` Jessica Yu
2019-08-28  9:55               ` Matthias Maennich
2019-08-28  9:55                 ` Matthias Maennich
2019-08-28 10:16                 ` Jessica Yu
2019-08-28 10:16                   ` Jessica Yu
2019-08-21 11:49       ` [PATCH v3 05/11] module: add config option MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-21 11:49       ` [PATCH v3 06/11] export: allow definition default namespaces in Makefiles or sources Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-28 10:49         ` Jessica Yu
2019-08-28 10:49           ` Jessica Yu
2019-08-28 10:56           ` Matthias Maennich
2019-08-28 10:56             ` Matthias Maennich
2019-08-21 11:49       ` [PATCH v3 07/11] modpost: add support for generating namespace dependencies Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-21 11:49       ` [PATCH v3 08/11] scripts: Coccinelle script for " Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-22  6:09         ` [v3 " Markus Elfring
2019-08-22  6:09           ` Markus Elfring
2019-08-29 12:13         ` [PATCH v3 " Jessica Yu
2019-08-29 12:13           ` Jessica Yu
2019-08-21 11:49       ` [PATCH v3 09/11] usb-storage: remove single-use define for debugging Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-21 12:37         ` Greg KH
2019-08-21 12:37           ` Greg KH
2019-08-21 13:21         ` Thomas Gleixner
2019-08-21 13:21           ` Thomas Gleixner
2019-08-21 13:32           ` Greg KH
2019-08-21 13:32             ` Greg KH
2019-08-21 11:49       ` [PATCH v3 10/11] RFC: usb-storage: export symbols in USB_STORAGE namespace Matthias Maennich
2019-08-21 11:49         ` Matthias Maennich
2019-08-21 12:38         ` Greg KH
2019-08-21 12:38           ` Greg KH
2019-08-21 14:36           ` Jessica Yu
2019-08-21 14:36             ` Jessica Yu
2019-08-21 23:13         ` Christoph Hellwig
2019-08-21 23:13           ` Christoph Hellwig
2019-08-22  8:32           ` Matthias Maennich
2019-08-22  8:32             ` Matthias Maennich
     [not found]       ` <20190821114955.12788-1-maennich-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2019-08-21 11:49         ` [PATCH v3 11/11] RFC: watchdog: export core symbols in WATCHDOG_CORE namespace Matthias Maennich
     [not found]           ` <20190821114955.12788-12-maennich-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
2019-08-21 12:39             ` Greg KH
2019-08-21 14:59             ` Guenter Roeck
     [not found]               ` <20190821145911.GA6521-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org>
2019-08-21 16:28                 ` Matthias Maennich [this message]
2019-08-21 12:46         ` [PATCH v3 00/11] Symbol Namespaces Nicolas Pitre
     [not found]           ` <nycvar.YSQ.7.76.1908210840490.19480-fMhRO7WWcppj+hNMo8g0rg@public.gmane.org>
2019-08-21 13:37             ` Greg KH
     [not found]               ` <20190821133737.GB4890-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2019-08-21 20:48                 ` Nicolas Pitre
2019-08-21 13:11         ` Peter Zijlstra
     [not found]           ` <20190821131140.GC2349-Nxj+rRp3nVydTX5a5knrm8zTDFooKrT+cvkQGrU6aU0@public.gmane.org>
2019-08-21 13:38             ` Greg KH
     [not found]               ` <20190821133846.GC4890-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2019-08-21 14:03                 ` Matthias Maennich

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190821162812.GB77665@google.com \
    --to=maennich-hpiqsd4aklfqt0dzr+alfa@public.gmane.org \
    --cc=alexandre.belloni-LDxbnhwyfcJBDgjK7y7TUQ@public.gmane.org \
    --cc=andrew-zrmu5oMJ5Fs@public.gmane.org \
    --cc=geert-Td1EMuHUCqxL1ZNQvxDV9g@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=jdelvare-IBi9RG/b67k@public.gmane.org \
    --cc=kernel-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    --cc=khilman-rdvid1DuHRBWk0Htik3J/w@public.gmane.org \
    --cc=linux-0h96xk9xTtrk1uMJSBkQmQ@public.gmane.org \
    --cc=linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-aspeed-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
    --cc=linux-imx-3arQi8VN3Tc@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-samsung-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-stm32-XDFAJ8BFU24N7RejjzZ/Li2xQDfSxrLKVpNB7YpNyf8@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=lucas.de.marchi-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=ludovic.desroches-UWL1GkI3JZL3oGB3hsPCZA@public.gmane.org \
    --cc=michal.lkml-yyZNWGI4GtDR7s880joybQ@public.gmane.org \
    --cc=michal.simek-gjFFaj9aHVfQT0dZR+AlfA@public.gmane.org \
    --cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=s.hauer-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org \
    --cc=sbranden-dY08KVG/lbpWk0Htik3J/w@public.gmane.org \
    --cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
    --cc=tmaimon77-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=tomas.winkler-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=yamada.masahiro-uWyLwvC0a2jby3iVrkZq2A@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).