Thread (12 messages) 12 messages, 4 authors, 2023-03-09

Re: [PATCH v2 1/2] dyndbg: remove unused 'base' arg from __ddebug_add_module()

From: jim.cromie@gmail.com
Date: 2023-03-01 02:13:09
Also in: lkml

On Tue, Feb 28, 2023 at 1:38 PM Luis Chamberlain [off-list ref] wrote:
On Tue, Feb 28, 2023 at 02:34:21PM -0500, Jason Baron wrote:
quoted
__ddebug_add_module() doesn't use the 'base' arg. Remove it.
It would be good if the commit log explains why the base became unused.
What commit removed its use? As of what kernel?

  Luis
the base arg became obsolete with this.
I had the same patch on-deck, but Jason did it 1st.


commit b7b4eebdba7b6aea6b34dc29691b71c39d1dbd6a
Author: Jim Cromie [off-list ref]
Date:   Sun Sep 4 15:40:48 2022 -0600

    dyndbg: gather __dyndbg[] state into struct _ddebug_info

    This new struct composes the linker provided (vector,len) section,
    and provides a place to add other __dyndbg[] state-data later:

      descs - the vector of descriptors in __dyndbg section.
      num_descs - length of the data/section.

    Use it, in several different ways, as follows:

    In lib/dynamic_debug.c:

    ddebug_add_module(): Alter params-list, replacing 2 args (array,index)
    with a struct _ddebug_info * containing them both, with room for
    expansion.  This helps future-proof the function prototype against the
    looming addition of class-map info into the dyndbg-state, by providing
    a place to add more member fields later.

    NB: later add static struct _ddebug_info builtins_state declaration,
    not needed yet.

    ddebug_add_module() is called in 2 contexts:

    In dynamic_debug_init(), declare, init a struct _ddebug_info di
    auto-var to use as a cursor.  Then iterate over the prdbg blocks of
    the builtin modules, and update the di cursor before calling
    _add_module for each.

    Its called from kernel/module/main.c:load_info() for each loaded
    module:

    In internal.h, alter struct load_info, replacing the dyndbg array,len
    fields with an embedded _ddebug_info containing them both; and
    populate its members in find_module_sections().

    The 2 calling contexts differ in that _init deals with contiguous
    subranges of __dyndbgs[] section, packed together, while loadable
    modules are added one at a time.

    So rename ddebug_add_module() into outer/__inner fns, call __inner
    from _init, and provide the offset into the builtin __dyndbgs[] where
    the module's prdbgs reside.  The cursor provides start, len of the
    subrange for each.  The offset will be used later to pack the results
    of builtin __dyndbg_sites[] de-duplication, and is 0 and unneeded for
    loadable modules,
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help