On Tue, Sep 08, 2026 at 06:55:11PM -0600, Jim Cromie via B4 Relay wrote:
[...]

> diff --git a/Documentation/admin-guide/dynamic-debug-howto.rst 
> b/Documentation/admin-guide/dynamic-debug-howto.rst
> index 9c2f096ed1d8..99bbae37d34e 100644
> --- a/Documentation/admin-guide/dynamic-debug-howto.rst
> +++ b/Documentation/admin-guide/dynamic-debug-howto.rst
[...]
> @@ -161,17 +161,21 @@ file
>       file kernel/freezer.c   # ie column 1 of control file
>       file drivers/usb/*      # all callsites under it
>       file inode.c:start_*    # parse :tail as a func (above)
> -     file inode.c:1-100      # parse :tail as a line-range (above)
> +     file inode.c:1-100      # parse :tail as a line-range (below)
>  
>  module
> -    The given string is compared against the module name
> -    of each callsite.  The module name is the string as
> -    seen in ``lsmod``, i.e. without the directory or the ``.ko``
> -    suffix and with ``-`` changed to ``_``.  Examples::
> -
> -     module sunrpc
> -     module nfsd
> -     module drm*     # both drm, drm_kms_helper
> +    The query string is compared against the subsystem module name of
> +    each callsite, as shown in the control file, or its simple name.
> +    The simple module name is the string as seen in ``lsmod``,
> +    i.e. without the directory or the ``.ko`` suffix and with ``-``
> +    changed to ``_``.
> +    Examples::
> +
> +        module nfsd        # simple modname (as from lsmod)
> +     module init/main   # subsystem modname (as in control file)
> +     module */main      # any subsystem ending in main
> +        module main     # simple modname, selects same as above
> +     module drm*        # both drm, drm_kms_helper

The five lines above have mixed indentation, please switch them all to 
one tab (no spaces).


[...]
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 0a4fdd8bd975..e129c4d10ed8 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -23,6 +23,32 @@ modname_flags  = -DKBUILD_MODNAME=$(call 
> name-fix,$(modname)) \
>                -D__KBUILD_MODNAME=$(call name-fix-token,$(modname))
>  modfile_flags  = -DKBUILD_MODFILE=$(call stringify,$(modfile))
>  
> +# Dynamic debug subsystem modname with clean heuristic and override support
> +dd_modname_override = $(strip $(firstword $(DD_MODNAME_$(target-stem).o) \
> +                                       $(DD_MODNAME)))
> +dd_obj := $(strip $(filter-out .,\
> +             $(patsubst drivers/%,%,\
> +             $(patsubst arch/$(SRCARCH)/%,%,\
> +             $(patsubst arch/%/,%,$(obj))))))

May it become problematic if there is a conflict with

  arch/sh/drivers/dma/*
  arch/sh/drivers/pci/*

vs.

  drivers/dma/*
  drivers/pci/*

?


> +dd_modname_default = $(strip $(if $(filter $(notdir $(obj)),$(__modname)),\
> +                      $(__modname),\
> +                      $(if $(filter main core common util init snapshot \
> +                                    process,$(__modname)),\
> +                          $(dd_obj),\
> +                          $(if $(word 2,$(__modname)),\
> +                              $(dd_obj),\
> +                              $(if $(dd_obj),$(dd_obj),$(__modname))))))

This looks quite complex.  I _think_ this should be equivalent, but 
perhaps a bit more simple to maintenance:

dd_modname_default = \
    $(or \
        $(filter $(notdir obj), $(__modname)), \
        $(filter-out main core common util init snapshot process, 
$(__modname)), \
        $(dd_obj)))

(Removed $(strip) and the last $(__modname) fallback as both are already 
in definition of 'dd_modname'.)

What do you think?

> +dd_modname = $(strip $(or $(dd_modname_override),\
> +                       $(dd_modname_default),\
> +                       $(__modname)))
> +dd-name-subst = $(subst $(comma),_,$(subst -,_,$(strip $1)))
> +dd-name-fix-token = $(subst $(space),_,$(call dd-name-subst,$1))
> +dd_tok = $(call dd-name-fix-token,$(dd_modname))
> +dd_modname_flags = $(if $(dd_modname),\
> +     -DKBUILD_DD_MODNAME=$(call stringify,$(dd_tok)))
> +
> +modfile_flags += $(dd_modname_flags)

dd-name-subst and dd-name-fix-token are not needed, dd_modname_flags is 
used only once and can be folded:


dd_tok = $(call name-fix,$(subst $(space),_,$(dd_modname)))

modfile_flags += $(if (dd_modname), -DKBUILD_DD_MODNAME=$(dd_tok))




-- 
Nicolas

Attachment: signature.asc
Description: PGP signature

Reply via email to