Re: [PATCH modules-next v10 00/13] kallsyms: reliable symbol->address lookup with /proc/kallmodsyms

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This topic came up at LSFMM, presented by Jiri.

I'm Cc'ing this email to the BPF mailing list.

-- Steve


On Mon,  5 Dec 2022 16:31:44 +0000
Nick Alcock <nick.alcock@xxxxxxxxxx> wrote:

> The kallmodsyms patch series was originally posted in Nov 2019, and the thread
> (https://lore.kernel.org/linux-kbuild/20191114223036.9359-1-eugene.loh@xxxxxxxxxx/t/#u)
> shows review comments, questions, and feedback from interested parties.
> Most recent posting: <https://lore.kernel.org/linux-modules/20221109134132.9052-1-nick.alcock@xxxxxxxxxx/T/#t>.
> 
> All review comments have been satisfied, as far as I know: in particular
> Yamada's note about translation units that are shared between built-in
> modules is satisfied with a better representation which is also much, much
> smaller, and we are no longer using modules_thick.builtin but Luis's new
> modules.builtin.objs.
> 
> A kernel tree containing this series alone:
>    https://github.com/oracle/dtrace-linux-kernel kallmodsyms/6.1-rc4-modules-next
> 
> 
> The whole point of symbols is that their names are unique: you can look up a
> symbol and get back a unique address, and vice versa.  Alas, because
> /proc/kallsyms (rightly) reports all symbols, even hidden ones, it does not
> really satisfy this requirement.  Large numbers of symbols are duplicated
> many times (just search for __list_del_entry!), and while usually these are
> just out-of-lined things defined in header files and thus all have the same
> implementation, it does make it needlessly hard to figure out which one is
> which in stack dumps, when tracing, and such things.  Some configuration
> options make things much worse: my test make allyesconfig runs introduced
> thousands of text symbols named _sub_I_65535_1, one per compiler-generated
> object file, and it was fairly easy to make them appear in ftrace output.
> 
> Right now the kernel has no way at all to tell such symbols apart, and nor
> has the user: their address differs and that's all.  Which module did they
> come from?  Which object file?  We don't know.  Figuring out which is which
> when tracing needs a combination of guesswork and luck, and if there are
> thousands of them that's not a pleasant prospect.  In discussions at LPC it
> became clear that this is not just annoying me but Steve Rostedt and others,
> so it's probably desirable to fix this.
> 
> It turns out that the linker, and the kernel build system, can be made to
> give us everything we need to resolve this once and for all.  This series
> provides a new /proc/kallmodsyms which is like /proc/kallsyms except that it
> annotates every (textual) symbol which comes from a built-in kernel module
> with the module's name, in square brackets: if a symbol is used by multiple
> modules, it gets [multiple] [names]; if a symbol is still ambiguous it gets
> a cut-down {object file name}; the combination of symbol, [module] [names]
> and {object file name} is unique (with one minor exception: the arm64 nvhe
> module is pre-linked with ld -r, causing all symbols in it to appear to come
> from the same object file: if it was reworked to use thin archives this
> problem would go away).
> 
> The object file names are cut down to save space: we store only the shortest
> suffix needed to distinguish symbols from each other.  It's fairly rare even
> to see two/level names, let alone three/level/ones.  We also save even more
> space by annotating every symbol in a given object file with the object file
> name if we annotate any of them.
> 
> We also add new fields that let you get at this new info in the kallsyms
> iterator.
> 
> In brief we do this by mapping from address ranges to object files (with
> assistance from the linker map file), then mapping from those object files
> to built-in kernel modules and object file names.  Because the number of
> object files is much smaller than the number of symbols, because we fuse
> address range and object file entries together if possible, and because we
> don't even store object file names unless we need to, this is a fairly
> efficient representation, even with a bit of extra complexity to allow
> object files to be in more than one module at once.
> 
> The size impact of all of this is minimal: in testing, vmlinux grew by 16632
> bytes, and the compressed vmlinux only grew by 12544 bytes (about .1% of a
> 10MiB kernel): though this is very configuration-dependent, it seems likely
> to scale roughly with the kernel as a whole.
> 
> This is all controlled by a new config parameter CONFIG_KALLMODSYMS, which when
> set results in output in /proc/kallmodsyms that looks like this:
> 
> ffffffff97606e50 t not_visible
> ffffffff97606e70 T perf_msr_probe
> ffffffff97606f80 t test_msr     [rapl]
> ffffffffa6007350 t rapl_pmu_event_stop  [rapl]
> ffffffffa6007440 t rapl_pmu_event_del   [rapl]
> ffffffffa6007460 t rapl_hrtimer_handle  [rapl]
> ffffffffa6007500 t rapl_pmu_event_read  [rapl]
> ffffffffa6007520 t rapl_pmu_event_init  [rapl]
> ffffffffa6007630 t rapl_cpu_offline     [rapl]
> ffffffffa6007710 t amd_pmu_event_map    {core.o}
> ffffffffa6007750 t amd_pmu_add_event    {core.o}
> ffffffffa6007760 t amd_put_event_constraints_f17h       {core.o}
> 
> The modular symbols are notated as [rapl] even if rapl is built into the
> kernel.  Further, at least one symbol nottated as {core.o} would have been
> ambiguous without that notation.  If we look a little further down, we see:
> 
> ffffffff97607a70 t cmask_show   {core.o}
> ffffffff97607ab0 t inv_show     {core.o}
> ffffffff97607ae0 t edge_show    {core.o}
> ffffffff97607b10 t umask_show   {core.o}
> ffffffff97607b40 t event_show   {core.o}
> 
> where event_show in particular is highly ambiguous and appears in many
> object files, all of which are now notated with different {object file
> names}.
> 
> Further down, we see what happens when object files are reused by multiple
> modules, all of which are built in to the kernel, and some of which contain
> symbols that are ambiguously-named even within that set of modules:
> 
> ffffffff97d7aed0 t liquidio_pcie_mmio_enabled   [liquidio]
> ffffffff97d7aef0 t liquidio_pcie_resume [liquidio]
> ffffffff97d7af00 t liquidio_ptp_adjtime [liquidio]
> ffffffff97d7af50 t liquidio_ptp_enable  [liquidio]
> ffffffff97d7af70 t liquidio_get_stats64 [liquidio]
> ffffffff97d7b0f0 t liquidio_fix_features        [liquidio]
> ffffffff97d7b1c0 t liquidio_get_port_parent_id  [liquidio]
> [...]
> ffffffff97d824c0 t lio_vf_rep_modinit   [liquidio]
> ffffffff97d824f0 t lio_vf_rep_modexit   [liquidio]
> ffffffff97d82520 t lio_ethtool_get_channels     [liquidio] [liquidio_vf]
> ffffffff97d82600 t lio_ethtool_get_ringparam    [liquidio] [liquidio_vf]
> ffffffff97d826a0 t lio_get_msglevel     [liquidio] [liquidio_vf]
> ffffffff97d826c0 t lio_vf_set_msglevel  [liquidio] [liquidio_vf]
> ffffffff97d826e0 t lio_get_pauseparam   [liquidio] [liquidio_vf]
> ffffffff97d82710 t lio_get_ethtool_stats        [liquidio] [liquidio_vf]
> ffffffff97d82e70 t lio_vf_get_ethtool_stats     [liquidio] [liquidio_vf]
> [...]
> ffffffff97d91a80 t cn23xx_vf_mbox_thread        [liquidio] [liquidio_vf] {cn23xx_vf_device.o}
> ffffffff97d91aa0 t cpumask_weight.constprop.0   [liquidio] [liquidio_vf] {cn23xx_vf_device.o}
> ffffffff97d91ac0 t cn23xx_vf_msix_interrupt_handler     [liquidio] [liquidio_vf] {cn23xx_vf_device.o}
> ffffffff97d91bd0 t cn23xx_vf_get_oq_ticks       [liquidio] [liquidio_vf] {cn23xx_vf_device.o}
> ffffffff97d91c00 t cn23xx_vf_ask_pf_to_do_flr   [liquidio] [liquidio_vf] {cn23xx_vf_device.o}
> ffffffff97d91c70 t cn23xx_octeon_pfvf_handshake [liquidio] [liquidio_vf] {cn23xx_vf_device.o}
> ffffffff97d91e20 t cn23xx_setup_octeon_vf_device        [liquidio] [liquidio_vf] {cn23xx_vf_device.o}
> ffffffff97d92060 t octeon_mbox_read     [liquidio] [liquidio_vf]
> ffffffff97d92230 t octeon_mbox_write    [liquidio] [liquidio_vf]
> [...]
> ffffffff97d946b0 t octeon_alloc_soft_command_resp       [liquidio] [liquidio_vf]
> ffffffff97d947e0 t octnet_send_nic_data_pkt     [liquidio] [liquidio_vf]
> ffffffff97d94820 t octnet_send_nic_ctrl_pkt     [liquidio] [liquidio_vf]
> ffffffff97d94ab0 t liquidio_get_stats64 [liquidio_vf]
> ffffffff97d94c10 t liquidio_fix_features        [liquidio_vf]
> ffffffff97d94cd0 t wait_for_pending_requests    [liquidio_vf]
> 
> Like /proc/kallsyms, the output is sorted by address, so keeps the curious
> property of /proc/kallsyms that symbols may appear repeatedly with different
> addresses: but now, unlike in /proc/kallsyms, we can see that those symbols
> appear repeatedly because they are *different symbols* that ultimately
> belong to different modules or different object files, all of which are
> built in to the kernel.
> 
> Note that kernel symbols for built-in modules will probably appear
> interspersed with other symbols that are part of different modules and
> non-modular always-built-in symbols, which, as usual, have no
> square-bracketed module denotation (though they might have an {object file
> name}.
> 
> As with /proc/kallsyms, non-root usage produces addresses that are all zero.
> 
> Tested with a make allyesconfig and allmodconfig, and with and without
> CONFIG_X86_KERNEL_IBT.
> 
> Limitations:
> 
>  - this approach only works for textual symbols (and weak ones).  I don't
>    see any way to make it work for data symbols etc: except for initialized
>    data they don't really have corresponding object files at all and they
>    tend to get merged together anyway.
> 
>  - Compiling with clang LTO is untested.  Compiling with X86 IBT now works,
>    but .cold-partitioned symbols are not attributed to any objfiles right
>    now (currently, this results in no conflicts on a make allyesconfig
>    build, so it's harmless).
> 
>  - Non-built-in modules can also have ambiguous symbols in them in different
>    input object files: they aren't handled yet because kallsyms never runs
>    over modules to create the necessary sections.  This is fixable, but it's
>    probably best handled in another patch series.  (kallsyms would need to
>    do much less work for modules: only the sections introduced by this patch
>    series would need emission at all, and no [module] notations would be
>    needed, only {objfile}.)
> 
>  - Section start/end symbols necessarily lie on the boundary between object
>    files, so are sometimes misreported as being in the wrong object file or
>    module.  This is unlikely to be too troublesome for these symbols in
>    particular, but if anyone can figure out a way to fix this I'd be happy
>    to do it.
> 
>  - There is no BPF iterator support yet (it's just a matter of adding it
>    if needed).
> 
> The commits in this series all have reviewed-by tags: they're all from
> internal reviews, so please ignore them.
> 
> Differences from v9, early November 2022:
> 
>  - Rework to use Luis Chamberlain's modules.builtin.objs rather than a
>    tristate-generated "modules_thick.builtin".  Keep the iterator over
>    modules_thick.builtin, but rename it to scripts/modules_builtin.c and
>    make it more robust against strange lines in modules.builtin.objs,
>    such as lines with no colon in.
>  - Rework the old modules_thick.builtin stuff into a "tristate checker"
>    which warns about source files that contain MODULE_LICENSE for which
>    the corresponding Kconfig symbol is of type 'bool' rather than
>    'tristate'.  It no longer runs unless requested, so doesn't slow
>    the build down with a big recursion across the whole source tree.
>  - Fix up a bunch of places where the tristate checker (and the old
>    modules_thick.builtin and modules.builtin generators) gave the wrong
>    answers, usually considering things to be modules that actually
>    unconditionally built in.  (16 makefiles touched.)
>  - Eliminate MODULE_LICENSE/AUTHOR/DESCRIPTION from a bunch of things
>    that cannot actually be modules: aarch64 and x86_64 are now clean,
>    other arches not checked. Verified with make allmodconfig on both
>    arches. (189 not-actually-modules touched.)
>  - Use the CONFIG_VMLINUX_MAP machinery rather than generating a whole
>    second linker mapfile.
>  - Add (in a separate commit since it is largely conceptually separate)
>    support for the ld -r linking used by CONFIG_X86_KERNEL_IBT.
>  - Add a special kallsyms build-time warning for ambiguous symbols that
>    came from the same object file: note that they are probably the
>    result of ld -r.
>  - When lengthening shortened objfile names to resolve an ambiguity,
>    always lengthen the name of the objfile with the longer (unshortened)
>    length, fixing ambiguous objfiles with names which are substrings of
>    other objfiles' names.
>  - Fix a bug which could cause inflooping when outputting the
>    .kallsyms_mod_objnames section.
>  - Rebase atop modules-next.
> 
> Differences from v8, February 2022:
> 
>  - Add object file name handling, emitting only those object names needed to
>    disambiguate symbols, shortening them as much as possible compatible with
>    that.
>  - Rename .kallsyms_module_names to .kallsyms_mod_objnames now that it
>    contains object file names too.
>  - Fix a bug in optimize_obj2mod that prevented proper reuse of module names
>    for object files appearing in both multimodule modules and single-module
>    modules: saves a few KiB more, often more than the space increase due to
>    object file name handling.
>  - Rebased atop v6.1-rc2: move modules_thick.builtin generation into
>    the top-level Kbuild accordingly, and adjust to getopt_long use in
>    scripts/kallsyms.
>  - Significant revisions to the cover letter.
>  - Add proof-of-concept kallmodsyms module support to perf.
>  - (This ping) confirmed that series applies atop v6.1-rc4 without
>    further changes.
> 
> Differences from v7, December 2021:
> 
>  - Adjust for changes in the v5.17 merge window.  Adjust a few commit
>    messages and shrink the cover letter.
>  - Drop the symbol-size patch, probably better done from userspace.
> 
> Differences from v6, November 2021:
> 
>  - Adjust for rewrite of confdata machinery in v5.16 (tristate.conf
>    handling is now more of a rewrite than a reversion)
> 
> Differences from v5, October 2021:
> 
>  - Fix generation of mapfiles under UML
> 
> Differences from v4, September 2021:
> 
>  - Fix building of tristate.conf if missing (usually concealed by the
>    syncconfig being run for other reasons, but not always: the kernel
>    test robot spotted it).
>  - Forward-port atop v5.15-rc3.
> 
> Differences from v3, August 2021:
> 
>  - Fix a kernel test robot warning in get_ksymbol_core (possible
>    use of uninitialized variable if kallmodsyms was wanted but
>    kallsyms_module_offsets was not present, which is most unlikely).
> 
> Differences from v2, June 2021:
> 
>  - Split the series up.  In particular, the size impact of the table
>    optimizer is now quantified, and the symbol-size patch is split out and
>    turned into an RFC patch, with the /proc/kallmodsyms format before that
>    patch lacking a size column.  Some speculation on how to make the symbol
>    sizes less space-wasteful is added (but not yet implemented).
> 
>  - Drop a couple of unnecessary #includes, one unnecessarily exported
>    symbol, and a needless de-staticing.
> 
> Differences from v1, in 2019:
> 
>  - Move from a straight symbol->module name mapping to a mapping from
>    address-range to TU to module name list, bringing major space savings
>    over the previous approach and support for object files used by many
>    built-in modules at the same time, at the cost of a slightly more complex
>    approach (unavoidably so, I think, given that we have to merge three data
>    sources together: the link map in .tmp_vmlinux.ranges, the nm output on
>    stdin, and the mapping from TU name to module names in
>    modules_thick.builtin).
> 
>    We do opportunistic merging of TUs if they cite the same modules and
>    reuse module names where doing so is simple: see optimize_obj2mod below.
>    I considered more extensive searches for mergeable entries and more
>    intricate encodings of the module name list allowing TUs that are used by
>    overlapping sets of modules to share their names, but such modules are
>    rare enough (and such overlapping sharings are vanishingly rare) that it
>    seemed likely to save only a few bytes at the cost of much more
>    hard-to-test code.  This is doubly true now that the tables needed are
>    only a few kilobytes in length.
> 
> Signed-off-by: Nick Alcock <nick.alcock@xxxxxxxxxx>
> Signed-off-by: Eugene Loh <eugene.loh@xxxxxxxxxx>
> Reviewed-by: Kris Van Hees <kris.van.hees@xxxxxxxxxx>
> 
> Luis Chamberlain (1):
>   kbuild: add modules.builtin.objs
> 
> Nick Alcock (12):
>   kbuild: bring back tristate.conf
>   kbuild: add tristate checker
>   kbuild: fix up substitutions in makefiles to allow for tristate
>     checker
>   kbuild: remove MODULE_LICENSE/AUTHOR/DESCRIPTION in non-modules
>   build: add a simple iterator over modules.builtin.objs
>   kbuild: generate an address ranges map at vmlinux link time
>   kbuild: make address ranges map work with IBT
>   kallsyms: introduce sections needed to map symbols to built-in modules
>   kallsyms: optimize .kallsyms_modules*
>   kallsyms: distinguish text symbols fully using object file names
>   kallsyms: add /proc/kallmodsyms for text symbol disambiguation
>   perf: proof-of-concept kallmodsyms support
> 
>  .gitignore                                    |    3 +-
>  Documentation/dontdiff                        |    4 +-
>  Documentation/kbuild/kbuild.rst               |    5 +
>  Documentation/kbuild/kconfig.rst              |    5 +
>  Makefile                                      |   35 +-
>  arch/x86/crypto/blake2s-glue.c                |    1 -
>  arch/x86/mm/debug_pagetables.c                |    3 -
>  crypto/asymmetric_keys/asymmetric_type.c      |    1 -
>  drivers/Makefile                              |    2 +-
>  .../accessibility/braille/braille_console.c   |    4 -
>  drivers/amba/tegra-ahb.c                      |    3 -
>  drivers/android/binder.c                      |    1 -
>  drivers/bus/arm-cci.c                         |    2 -
>  drivers/bus/arm-integrator-lm.c               |    3 -
>  drivers/bus/bt1-apb.c                         |    3 -
>  drivers/bus/bt1-axi.c                         |    3 -
>  drivers/bus/imx-weim.c                        |    3 -
>  drivers/bus/intel-ixp4xx-eb.c                 |    3 -
>  drivers/bus/qcom-ebi2.c                       |    3 -
>  drivers/bus/qcom-ssc-block-bus.c              |    3 -
>  drivers/bus/simple-pm-bus.c                   |    3 -
>  drivers/clk/bcm/clk-bcm2835-aux.c             |    3 -
>  drivers/clk/bcm/clk-bcm2835.c                 |    3 -
>  drivers/clk/clk-bm1880.c                      |    3 -
>  drivers/clk/clk-fixed-mmio.c                  |    3 -
>  drivers/clk/clk-fsl-sai.c                     |    3 -
>  drivers/clk/hisilicon/clk-hi3559a.c           |    2 -
>  drivers/clk/microchip/clk-mpfs-ccc.c          |    3 -
>  drivers/clk/microchip/clk-mpfs.c              |    5 -
>  drivers/clk/renesas/rcar-usb2-clock-sel.c     |    2 -
>  drivers/clk/renesas/renesas-cpg-mssr.c        |    2 -
>  drivers/clk/renesas/rzg2l-cpg.c               |    2 -
>  drivers/clocksource/em_sti.c                  |    3 -
>  drivers/clocksource/sh_cmt.c                  |    3 -
>  drivers/clocksource/sh_mtu2.c                 |    3 -
>  drivers/clocksource/sh_tmu.c                  |    3 -
>  drivers/clocksource/timer-stm32-lp.c          |    2 -
>  drivers/clocksource/timer-tegra186.c          |    3 -
>  drivers/clocksource/timer-ti-dm.c             |    3 -
>  drivers/cpufreq/freq_table.c                  |    3 -
>  drivers/cpufreq/intel_pstate.c                |    3 -
>  drivers/cpufreq/tegra124-cpufreq.c            |    3 -
>  drivers/dma-buf/heaps/cma_heap.c              |    2 -
>  drivers/dma-buf/heaps/system_heap.c           |    1 -
>  drivers/dma-buf/udmabuf.c                     |    2 -
>  drivers/dma/ep93xx_dma.c                      |    3 -
>  drivers/dma/ipu/ipu_idmac.c                   |    3 -
>  drivers/dma/mv_xor_v2.c                       |    2 -
>  drivers/dma/s3c24xx-dma.c                     |    3 -
>  drivers/dma/sh/shdma-base.c                   |    3 -
>  drivers/dma/stm32-dmamux.c                    |    4 -
>  drivers/dma/stm32-mdma.c                      |    4 -
>  drivers/edac/altera_edac.c                    |    3 -
>  drivers/firmware/broadcom/bcm47xx_nvram.c     |    1 -
>  drivers/firmware/imx/imx-scu.c                |    3 -
>  drivers/firmware/imx/scu-pd.c                 |    3 -
>  drivers/gpio/gpio-aspeed-sgpio.c              |    2 -
>  drivers/gpio/gpio-imx-scu.c                   |    3 -
>  drivers/gpio/gpio-mxs.c                       |    6 -
>  drivers/gpio/gpio-rda.c                       |    3 -
>  drivers/gpu/drm/drm_mipi_dsi.c                |    3 -
>  drivers/hv/Makefile                           |    2 +-
>  drivers/hwspinlock/hwspinlock_core.c          |    3 -
>  drivers/interconnect/core.c                   |    3 -
>  drivers/iommu/sun50i-iommu.c                  |    4 -
>  drivers/irqchip/irq-al-fic.c                  |    3 -
>  drivers/irqchip/irq-ls-scfg-msi.c             |    3 -
>  drivers/irqchip/irq-mbigen.c                  |    4 -
>  drivers/irqchip/irq-mchp-eic.c                |    3 -
>  drivers/irqchip/irq-mvebu-pic.c               |    3 -
>  drivers/irqchip/irq-renesas-intc-irqpin.c     |    3 -
>  drivers/irqchip/irq-renesas-irqc.c            |    3 -
>  drivers/irqchip/irq-renesas-rza1.c            |    3 -
>  drivers/irqchip/irq-renesas-rzg2l.c           |    3 -
>  drivers/irqchip/irq-sl28cpld.c                |    3 -
>  drivers/irqchip/irq-ti-sci-inta.c             |    3 -
>  drivers/irqchip/irq-ti-sci-intr.c             |    3 -
>  drivers/leds/leds-asic3.c                     |    3 -
>  drivers/mailbox/rockchip-mailbox.c            |    4 -
>  drivers/mailbox/zynqmp-ipi-mailbox.c          |    3 -
>  drivers/memory/bt1-l2-ctl.c                   |    3 -
>  drivers/memory/da8xx-ddrctl.c                 |    3 -
>  drivers/memory/fsl_ifc.c                      |    3 -
>  drivers/memory/mvebu-devbus.c                 |    3 -
>  drivers/memory/tegra/mc.c                     |    3 -
>  drivers/memory/tegra/tegra186-emc.c           |    3 -
>  drivers/mfd/88pm860x-core.c                   |    3 -
>  drivers/mfd/altera-sysmgr.c                   |    3 -
>  drivers/mfd/bcm2835-pm.c                      |    3 -
>  drivers/mfd/da903x.c                          |    4 -
>  drivers/mfd/da9052-core.c                     |    3 -
>  drivers/mfd/da9052-i2c.c                      |    3 -
>  drivers/mfd/da9052-spi.c                      |    3 -
>  drivers/mfd/da9055-core.c                     |    3 -
>  drivers/mfd/da9055-i2c.c                      |    3 -
>  drivers/mfd/ezx-pcap.c                        |    3 -
>  drivers/mfd/intel_soc_pmic_crc.c              |    4 -
>  drivers/mfd/lp8788.c                          |    3 -
>  drivers/mfd/omap-usb-host.c                   |    4 -
>  drivers/mfd/omap-usb-tll.c                    |    4 -
>  drivers/mfd/palmas.c                          |    3 -
>  drivers/mfd/stmpe-i2c.c                       |    3 -
>  drivers/mfd/stmpe-spi.c                       |    3 -
>  drivers/mfd/tc3589x.c                         |    3 -
>  drivers/mfd/tps6586x.c                        |    3 -
>  drivers/mfd/twl4030-audio.c                   |    3 -
>  drivers/mfd/twl6040.c                         |    4 -
>  drivers/mmc/Makefile                          |    2 +-
>  drivers/mtd/parsers/bcm63xxpart.c             |    6 -
>  drivers/net/wireless/silabs/wfx/Makefile      |    2 +-
>  drivers/nvmem/core.c                          |    4 -
>  drivers/nvmem/zynqmp_nvmem.c                  |    3 -
>  drivers/pci/controller/dwc/pcie-histb.c       |    2 -
>  .../controller/mobiveil/pcie-mobiveil-plat.c  |    3 -
>  drivers/pci/controller/pci-tegra.c            |    1 -
>  drivers/pci/controller/pci-versatile.c        |    2 -
>  drivers/pci/controller/pcie-hisi-error.c      |    2 -
>  drivers/pci/controller/pcie-microchip-host.c  |    3 -
>  drivers/pci/endpoint/pci-ep-cfs.c             |    3 -
>  drivers/pci/endpoint/pci-epc-core.c           |    3 -
>  drivers/pci/endpoint/pci-epc-mem.c            |    3 -
>  drivers/pci/endpoint/pci-epf-core.c           |    3 -
>  drivers/pci/hotplug/acpiphp_core.c            |    3 -
>  drivers/pci/hotplug/shpchp_core.c             |    3 -
>  drivers/perf/apple_m1_cpu_pmu.c               |    1 -
>  drivers/phy/intel/phy-intel-lgm-combo.c       |    2 -
>  drivers/pinctrl/actions/pinctrl-s500.c        |    4 -
>  drivers/pinctrl/actions/pinctrl-s700.c        |    3 -
>  drivers/pinctrl/actions/pinctrl-s900.c        |    4 -
>  drivers/pinctrl/bcm/pinctrl-ns.c              |    2 -
>  drivers/pinctrl/mediatek/pinctrl-mt8188.c     |    2 -
>  drivers/pinctrl/mediatek/pinctrl-mt8192.c     |    2 -
>  drivers/pinctrl/mediatek/pinctrl-mt8365.c     |    3 -
>  drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c     |    4 -
>  drivers/pinctrl/pinctrl-amd.c                 |    3 -
>  drivers/pinctrl/renesas/pinctrl-rza1.c        |    3 -
>  drivers/pinctrl/renesas/pinctrl-rza2.c        |    3 -
>  drivers/pinctrl/renesas/pinctrl-rzg2l.c       |    3 -
>  drivers/pinctrl/renesas/pinctrl-rzn1.c        |    3 -
>  drivers/pinctrl/renesas/pinctrl-rzv2m.c       |    3 -
>  drivers/power/reset/as3722-poweroff.c         |    3 -
>  drivers/power/reset/gpio-poweroff.c           |    3 -
>  drivers/power/reset/gpio-restart.c            |    3 -
>  drivers/power/reset/keystone-reset.c          |    3 -
>  drivers/power/reset/ltc2952-poweroff.c        |    3 -
>  drivers/power/reset/mt6323-poweroff.c         |    3 -
>  drivers/power/reset/regulator-poweroff.c      |    3 -
>  drivers/power/reset/restart-poweroff.c        |    3 -
>  drivers/power/reset/tps65086-restart.c        |    3 -
>  drivers/power/supply/power_supply_core.c      |    6 -
>  drivers/power/supply/wm97xx_battery.c         |    3 -
>  drivers/powercap/powercap_sys.c               |    3 -
>  drivers/regulator/stm32-pwr.c                 |    3 -
>  drivers/remoteproc/remoteproc_core.c          |    2 -
>  drivers/reset/reset-axs10x.c                  |    3 -
>  drivers/reset/reset-hsdk.c                    |    3 -
>  drivers/reset/reset-lantiq.c                  |    3 -
>  drivers/reset/reset-microchip-sparx5.c        |    3 -
>  drivers/reset/reset-mpfs.c                    |    3 -
>  drivers/s390/char/Makefile                    |    2 +-
>  drivers/s390/crypto/Makefile                  |    2 +-
>  drivers/soc/apple/apple-pmgr-pwrstate.c       |    3 -
>  drivers/soc/bcm/bcm2835-power.c               |    3 -
>  drivers/soc/bcm/raspberrypi-power.c           |    4 -
>  drivers/soc/fujitsu/a64fx-diag.c              |    3 -
>  drivers/soc/sunxi/sunxi_sram.c                |    3 -
>  drivers/soc/tegra/cbb/tegra194-cbb.c          |    3 -
>  drivers/soc/tegra/cbb/tegra234-cbb.c          |    2 -
>  drivers/tty/n_null.c                          |    3 -
>  drivers/tty/serial/imx_earlycon.c             |    3 -
>  drivers/tty/serial/rda-uart.c                 |    3 -
>  drivers/video/console/vgacon.c                |    1 -
>  drivers/video/fbdev/asiliantfb.c              |    1 -
>  drivers/video/fbdev/gbefb.c                   |    1 -
>  drivers/video/fbdev/imsttfb.c                 |    1 -
>  drivers/video/fbdev/mmp/hw/mmp_ctrl.c         |    3 -
>  .../video/fbdev/mmp/panel/tpo_tj032md01bw.c   |    3 -
>  drivers/video/fbdev/vesafb.c                  |    1 -
>  drivers/video/fbdev/wm8505fb.c                |    3 -
>  drivers/video/fbdev/wmt_ge_rops.c             |    4 -
>  drivers/xen/grant-dma-ops.c                   |    3 -
>  drivers/xen/xenbus/xenbus_probe.c             |    1 -
>  fs/binfmt_elf.c                               |    1 -
>  fs/nfs_common/nfs_ssc.c                       |    1 -
>  fs/unicode/utf8-core.c                        |    1 -
>  include/linux/module.h                        |    4 +-
>  init/Kconfig                                  |   10 +
>  kernel/dma/map_benchmark.c                    |    3 -
>  kernel/events/hw_breakpoint_test.c            |    2 -
>  kernel/kallsyms.c                             |  277 +++-
>  kernel/kallsyms_internal.h                    |   14 +
>  kernel/trace/rv/reactor_panic.c               |    3 -
>  kernel/trace/rv/reactor_printk.c              |    3 -
>  kernel/watch_queue.c                          |    3 -
>  lib/btree.c                                   |    3 -
>  lib/crypto/blake2s-generic.c                  |    3 -
>  lib/crypto/blake2s.c                          |    3 -
>  lib/glob.c                                    |    2 -
>  lib/packing.c                                 |    2 -
>  lib/pldmfw/pldmfw.c                           |    3 -
>  lib/test_fprobe.c                             |    1 -
>  mm/zpool.c                                    |    3 -
>  mm/zswap.c                                    |    3 -
>  net/8021q/Makefile                            |    2 +-
>  net/Makefile                                  |    2 +-
>  net/bridge/Makefile                           |    4 +-
>  net/dccp/Makefile                             |    4 +-
>  net/ipv6/Makefile                             |    2 +-
>  net/l2tp/Makefile                             |   12 +-
>  net/mctp/af_mctp.c                            |    3 -
>  net/netfilter/Makefile                        |    2 +-
>  net/netlabel/Makefile                         |    2 +-
>  net/sctp/Makefile                             |    2 +-
>  scripts/.gitignore                            |    1 +
>  scripts/Kbuild.include                        |   21 +
>  scripts/Makefile                              |    7 +
>  scripts/Makefile.lib                          |   13 +-
>  scripts/Makefile.vmlinux_o                    |   21 +-
>  scripts/addaddrs.c                            |   28 +
>  scripts/check-tristates.mk                    |   56 +
>  scripts/kallsyms.c                            | 1223 ++++++++++++++++-
>  scripts/kconfig/confdata.c                    |   41 +-
>  scripts/link-vmlinux.sh                       |   38 +-
>  scripts/modules_builtin.c                     |  200 +++
>  scripts/modules_builtin.h                     |   48 +
>  tools/perf/builtin-kallsyms.c                 |   35 +-
>  tools/perf/util/event.c                       |   14 +-
>  tools/perf/util/machine.c                     |    6 +-
>  tools/perf/util/machine.h                     |    1 +
>  tools/perf/util/symbol.c                      |  207 ++-
>  tools/perf/util/symbol.h                      |   12 +-
>  231 files changed, 2241 insertions(+), 671 deletions(-)
>  create mode 100644 scripts/addaddrs.c
>  create mode 100644 scripts/check-tristates.mk
>  create mode 100644 scripts/modules_builtin.c
>  create mode 100644 scripts/modules_builtin.h
> 




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux