All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexey Gladkov <legion@kernel.org>
To: Masahiro Yamada <masahiroy@kernel.org>
Cc: Petr Pavlu <petr.pavlu@suse.com>,
	Luis Chamberlain <mcgrof@kernel.org>,
	Sami Tolvanen <samitolvanen@google.com>,
	Daniel Gomez <da.gomez@samsung.com>,
	Nathan Chancellor <nathan@kernel.org>,
	Nicolas Schier <nicolas.schier@linux.dev>,
	linux-kernel@vger.kernel.org, linux-modules@vger.kernel.org,
	linux-kbuild@vger.kernel.org
Subject: Re: [PATCH v3 2/6] modules: Add macros to specify modinfo prefix
Date: Mon, 9 Jun 2025 11:37:38 +0200	[thread overview]
Message-ID: <aEarYndP4uo-a0eL@example.org> (raw)
In-Reply-To: <CAK7LNATkXFqKLPcHFg-WDynRrVy3BRs6twvcyo2YJQqZBy9xsQ@mail.gmail.com>

On Mon, Jun 02, 2025 at 04:49:24PM +0900, Masahiro Yamada wrote:
> On Tue, May 27, 2025 at 6:08 PM Alexey Gladkov <legion@kernel.org> wrote:
> >
> > The __MODULE_INFO macros always use __MODULE_INFO_PREFIX. The only way
> > to use a different prefix is to override __MODULE_INFO_PREFIX, which is
> > not very useful.
> 
> Not necessarily.
> This would be a very special case only used in modpost,
> and modpost can use MODULE_INFO() instead.
> 
> 
>         list_for_each_entry_safe(alias, next, &mod->aliases, node) {
> -               buf_printf(&buf, "MODULE_ALIAS_MODNAME(\"%s\", \"%s\");\n",
> +               buf_printf(&buf, "MODULE_INFO(\"%s\".alias, \"%s\");\n",
>                            alias->builtin_modname, alias->str);
>                 list_del(&alias->node);
>                 free(alias->builtin_modname);

You can't do that because a character can't contain quotation marks
and periods.

.vmlinux.export.c:16163:17: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘.’ token
16163 | MODULE_INFO(ahci.alias, "pci:v*d*sv*sd*bc01sc06i01*");
      |                 ^
././include/linux/compiler_types.h:83:23: note: in definition of macro ‘___PASTE’
   83 | #define ___PASTE(a,b) a##b
      |                       ^

The same thing for variant with quotes:

.vmlinux.export.c:16163:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before string constant
16163 | MODULE_INFO("ahci".alias, "pci:v*d*sv*sd*bc01sc06i01*");
      |             ^~~~~~

But I can do something like this to make it work:

	buf_printf(&buf,
		   "#undef __MODULE_INFO_PREFIX\n"
		   "#define __MODULE_INFO_PREFIX\n");

	list_for_each_entry_safe(alias, next, &mod->aliases, node) {
		buf_printf(&buf, "__MODULE_INFO(%s.alias, unused, \"%s\");\n",
			   alias->builtin_modname, alias->str);

> 
> > The new macro will be used in file2alias.c to generate modalias for
> > builtin modules.
> >
> > Signed-off-by: Alexey Gladkov <legion@kernel.org>
> > Reviewed-by: Petr Pavlu <petr.pavlu@suse.com>
> > ---
> >  include/linux/module.h      | 3 +++
> >  include/linux/moduleparam.h | 7 +++++--
> >  2 files changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/module.h b/include/linux/module.h
> > index 8050f77c3b64..88048561360f 100644
> > --- a/include/linux/module.h
> > +++ b/include/linux/module.h
> > @@ -170,6 +170,9 @@ struct module_kobject *lookup_or_create_module_kobject(const char *name);
> >  /* For userspace: you can also call me... */
> >  #define MODULE_ALIAS(_alias) MODULE_INFO(alias, _alias)
> >
> > +#define MODULE_ALIAS_MODNAME(_modname, _alias) \
> > +       __MODULE_INFO_WITH_PREFIX(_modname ".", alias, alias, _alias)
> > +
> >  /* Soft module dependencies. See man modprobe.d for details.
> >   * Example: MODULE_SOFTDEP("pre: module-foo module-bar post: module-baz")
> >   */
> > diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h
> > index bfb85fd13e1f..3f819fc67c43 100644
> > --- a/include/linux/moduleparam.h
> > +++ b/include/linux/moduleparam.h
> > @@ -20,10 +20,13 @@
> >  /* Chosen so that structs with an unsigned long line up. */
> >  #define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
> >
> > -#define __MODULE_INFO(tag, name, info)                                   \
> > +#define __MODULE_INFO_WITH_PREFIX(prefix, tag, name, info)               \
> >         static const char __UNIQUE_ID(name)[]                             \
> >                 __used __section(".modinfo") __aligned(1)                 \
> > -               = __MODULE_INFO_PREFIX __stringify(tag) "=" info
> > +               = prefix __stringify(tag) "=" info
> > +
> > +#define __MODULE_INFO(tag, name, info)                                   \
> > +       __MODULE_INFO_WITH_PREFIX(__MODULE_INFO_PREFIX, tag, name, info)
> >
> >  #define __MODULE_PARM_TYPE(name, _type)                                          \
> >         __MODULE_INFO(parmtype, name##type, #name ":" _type)
> > --
> > 2.49.0
> >
> 
> 
> -- 
> Best Regards
> Masahiro Yamada
> 

-- 
Rgrds, legion


  reply	other threads:[~2025-06-09  9:37 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-27  9:07 [PATCH v3 0/6] Add generated modalias to modules.builtin.modinfo Alexey Gladkov
2025-05-27  9:07 ` [PATCH v3 1/6] scsi: Define MODULE_DEVICE_TABLE only if necessary Alexey Gladkov
2025-05-27 11:28   ` James Bottomley
2025-05-27 11:54     ` Alexey Gladkov
2025-05-27 11:58       ` James Bottomley
2025-05-27 12:58         ` Alexey Gladkov
2025-05-27 14:06   ` [PATCH v4 1/6] scsi: Always define blogic_pci_tbl structure Alexey Gladkov
2025-05-27  9:07 ` [PATCH v3 2/6] modules: Add macros to specify modinfo prefix Alexey Gladkov
2025-06-02  7:49   ` Masahiro Yamada
2025-06-09  9:37     ` Alexey Gladkov [this message]
2025-05-27  9:07 ` [PATCH v3 3/6] modpost: Make mod_device_table aliases more unique Alexey Gladkov
2025-06-02  7:45   ` Masahiro Yamada
2025-06-02  8:06     ` Alexey Gladkov
2025-06-02 10:58       ` Masahiro Yamada
2025-06-02 14:03         ` Alexey Gladkov
2025-06-02 16:18           ` Masahiro Yamada
2025-06-02 17:09             ` Alexey Gladkov
2025-06-04 11:26             ` Alexey Gladkov
2025-06-06  5:10               ` Masahiro Yamada
2025-06-06 11:20                 ` Masahiro Yamada
2025-06-02  7:52   ` Masahiro Yamada
2025-06-02  8:24     ` Alexey Gladkov
2025-06-02 18:00       ` Masahiro Yamada
2025-06-02 18:44         ` Alexey Gladkov
2025-06-06  5:12           ` Masahiro Yamada
2025-05-27  9:07 ` [PATCH v3 4/6] modpost: Create modalias for builtin modules Alexey Gladkov
2025-05-27  9:07 ` [PATCH v3 5/6] kbuild: Move modules.builtin.modinfo to another makefile Alexey Gladkov
2025-05-28 13:21   ` kernel test robot
2025-05-28 15:20     ` Alexey Gladkov
2025-05-27  9:08 ` [PATCH v3 6/6] kbuild: Create modules.builtin.modinfo for modpost results Alexey Gladkov
2025-05-27 13:15 ` [PATCH v3 7/6] scsi: Always define MODULE_DEVICE_TABLE Alexey Gladkov
2025-05-27 13:22   ` James Bottomley
2025-05-27 13:44     ` Alexey Gladkov

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=aEarYndP4uo-a0eL@example.org \
    --to=legion@kernel.org \
    --cc=da.gomez@samsung.com \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-modules@vger.kernel.org \
    --cc=masahiroy@kernel.org \
    --cc=mcgrof@kernel.org \
    --cc=nathan@kernel.org \
    --cc=nicolas.schier@linux.dev \
    --cc=petr.pavlu@suse.com \
    --cc=samitolvanen@google.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.