1. 08 5月, 2012 1 次提交
  2. 05 5月, 2012 1 次提交
  3. 01 5月, 2012 8 次提交
    • J
      dynamic_debug: init with early_initcall, not arch_initcall · 3ec5652a
      Jim Cromie 提交于
      1- Call dynamic_debug_init() from early_initcall, not arch_initcall.
      2- Call dynamic_debug_init_debugfs() from fs_initcall, not module_init.
      
      RFC: This works for me on a 64 bit desktop and a i586 SBC, but is
      untested on other arches.  I presume there is or was a reason
      original code used arch_initcall, maybe the constraints have changed.
      
      This makes facility available as soon as possible.
      
      2nd change has a downside when dynamic_debug.verbose=1; all the
      vpr_info()s called in the proc-fs code are activated, causing
      voluminous output from dmesg.  TBD: Im unsure of this explanation, but
      the output is there.  This could be fixed by changing those callsites
      to v2pr_info(if verbose > 1).
      
      1st change is still not early enough to enable pr_debugs in
      kernel/params, so parsing of boot-args isnt logged.  The reparse of
      those args is however visible after params.dyndbg="+p" is processed.
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      3ec5652a
    • J
      dynamic_debug: add modname arg to exec_query callchain · 8e59b5cf
      Jim Cromie 提交于
      Pass module name into ddebug_exec_queries(), ddebug_exec_query(), and
      ddebug_parse_query() as separate parameter.  In ddebug_parse_query(),
      the module name is added into the query struct before the query-string
      is parsed.  This allows the query-string to be shorter:
      
      instead of:
         $modname.dyndbg="module $modname +fp"
      do this:
         $modname.dyndbg="+fp"
      
      Omitting "module $modname" from the query string is actually required
      for $modname.dyndbg rules; the set-only-once check added in a previous
      patch will throw an error if its added again.  ddebug_query="..." has
      no $modname associated with it, so the query string may include it.
      
      This also fixes redundant "module $modname" otherwise needed to handle
      multiple queries per string:
      
         $modname.dyndbg="func foo +fp; func bar +fp"
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      8e59b5cf
    • J
      dynamic_debug: print ram usage by ddebug tables if verbose · 41076927
      Jim Cromie 提交于
      Print ram usage of dynamic-debug tables and verbose section so user
      knows cost of enabling CONFIG_DYNAMIC_DEBUG.  This only counts the
      size of the _ddebug tables for builtins and the __verbose section that
      they refer to, not those used in loadable modules.
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      41076927
    • J
      dynamic_debug: simplify dynamic_debug_init error exit · af442399
      Jim Cromie 提交于
      We dont want errors while parsing ddebug_query to unload ddebug
      tables, so set success after tables are loaded, and return 0 after
      query parsing is done.
      
      Simplify error handling code since its no longer used for success,
      and change goto label to out_err to clarify this.
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      af442399
    • J
      dynamic_debug: combine parse_args callbacks together · 6ab676e9
      Jim Cromie 提交于
      Refactor ddebug_dyndbg_boot_param_cb and ddebug_dyndbg_module_param_cb
      into a common helper function, and call it from both.  The handling of
      foo.dyndbg is unneeded by the latter, but harmless.
      
      The 2 callers differ only by pr_info and the return code they pass to
      the helper for when an unknown param is handled.  I could slightly
      reduce dmesg clutter by putting the vpr_info in the common helper,
      after the return on_err, but that loses __func__ context, is overly
      silent on module_cb unknown param errors, and the clutter is only when
      dynamic_debug.verbose=1 anyway.
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      6ab676e9
    • J
      dynamic_debug: deprecate ddebug_query, suggest dyndbg instead · f0b919d9
      Jim Cromie 提交于
      With ddebug_dyndbg_boot_params_cb() handling bare dyndbg params, we
      dont need ddebug_query param anymore.  Add a warning when processing
      ddebug_query= param that it is deprecated, and to change it to dyndbg=
      
      Add a deprecation notice for v3.8 to feature-removal-schedule.txt, and
      add a suggested deprecation period of 3 releases to the header.
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      f0b919d9
    • J
      dynamic_debug: make dynamic-debug work for module initialization · b48420c1
      Jim Cromie 提交于
      This introduces a fake module param $module.dyndbg.  Its based upon
      Thomas Renninger's $module.ddebug boot-time debugging patch from
      https://lkml.org/lkml/2010/9/15/397
      
      The 'fake' module parameter is provided for all modules, whether or
      not they need it.  It is not explicitly added to each module, but is
      implemented in callbacks invoked from parse_args.
      
      For builtin modules, dynamic_debug_init() now directly calls
      parse_args(..., &ddebug_dyndbg_boot_params_cb), to process the params
      undeclared in the modules, just after the ddebug tables are processed.
      
      While its slightly weird to reprocess the boot params, parse_args() is
      already called repeatedly by do_initcall_levels().  More importantly,
      the dyndbg queries (given in ddebug_query or dyndbg params) cannot be
      activated until after the ddebug tables are ready, and reusing
      parse_args is cleaner than doing an ad-hoc parse.  This reparse would
      break options like inc_verbosity, but they probably should be params,
      like verbosity=3.
      
      ddebug_dyndbg_boot_params_cb() handles both bare dyndbg (aka:
      ddebug_query) and module-prefixed dyndbg params, and ignores all other
      parameters.  For example, the following will enable pr_debug()s in 4
      builtin modules, in the order given:
      
        dyndbg="module params +p; module aio +p" module.dyndbg=+p pci.dyndbg
      
      For loadable modules, parse_args() in load_module() calls
      ddebug_dyndbg_module_params_cb().  This handles bare dyndbg params as
      passed from modprobe, and errors on other unknown params.
      
      Note that modprobe reads /proc/cmdline, so "modprobe foo" grabs all
      foo.params, strips the "foo.", and passes these to the kernel.
      ddebug_dyndbg_module_params_cb() is again called for the unknown
      params; it handles dyndbg, and errors on others.  The "doing" arg
      added previously contains the module name.
      
      For non CONFIG_DYNAMIC_DEBUG builds, the stub function accepts
      and ignores $module.dyndbg params, other unknowns get -ENOENT.
      
      If no param value is given (as in pci.dyndbg example above), "+p" is
      assumed, which enables all pr_debug callsites in the module.
      
      The dyndbg fake parameter is not shown in /sys/module/*/parameters,
      thus it does not use any resources.  Changes to it are made via the
      control file.
      
      Also change pr_info in ddebug_exec_queries to vpr_info,
      no need to see it all the time.
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      CC: Thomas Renninger <trenn@suse.de>
      CC: Rusty Russell <rusty@rustcorp.com.au>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b48420c1
    • J
      dynamic_debug: replace if (verbose) pr_info with macro vpr_info · b8ccd5de
      Jim Cromie 提交于
      Use vpr_info to declutter code, reduce indenting, and change one
      additional pr_info call in ddebug_exec_queries.
      Signed-off-by: NJim Cromie <jim.cromie@gmail.com>
      Acked-by: NJason Baron <jbaron@redhat.com>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
      b8ccd5de
  4. 25 1月, 2012 14 次提交
  5. 19 10月, 2011 3 次提交
  6. 15 9月, 2011 1 次提交
  7. 23 8月, 2011 5 次提交
  8. 04 2月, 2011 2 次提交
  9. 08 1月, 2011 1 次提交
  10. 23 10月, 2010 3 次提交
    • T
      Dynamic Debug: Initialize dynamic debug earlier via arch_initcall · 6a5c083d
      Thomas Renninger 提交于
      Having the ddebug_query= boot parameter it makes sense to set up
      dynamic debug as soon as possible.
      
      I expect sysfs files cannot be set up via an arch_initcall, because
      this one is even before fs_initcall. Therefore I splitted the
      dynamic_debug_init function into an early one and a later one providing
      /sys/../dynamic_debug/control file.
      
      Possibly dynamic_debug can be initialized even earlier, not sure whether
      this still makes sense then. I picked up arch_initcall as it covers
      quite a lot already.
      
      Dynamic debug needs to allocate memory, therefore it's not easily possible to
      set it up even before the command line gets parsed.
      Therefore the boot param query string is stored in a temp string which is
      applied when dynamic debug gets set up.
      
      This has been tested with ddebug_query="file ec.c +p"
      and I could retrieve pr_debug() messages early at boot during ACPI setup:
      ACPI: EC: Look up EC in DSDT
      ACPI: EC: ---> status = 0x08
      ACPI: EC: transaction start
      ACPI: EC: <--- command = 0x80
      ACPI: EC: ~~~> interrupt
      ACPI: EC: ---> status = 0x08
      ACPI: EC: <--- data = 0xa4
      ...
      ACPI: Interpreter enabled
      ACPI: (supports S0 S3 S4 S5)
      ACPI: Using IOAPIC for interrupt routing
      ACPI: EC: ---> status = 0x00
      ACPI: EC: transaction start
      ACPI: EC: <--- command = 0x80
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      Acked-by: jbaron@redhat.com
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      CC: linux-acpi@vger.kernel.org
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      6a5c083d
    • T
      Dynamic Debug: Introduce ddebug_query= boot parameter · a648ec05
      Thomas Renninger 提交于
      Dynamic debug lacks the ability to enable debug messages at boot time.
      One could patch initramfs or service startup scripts to write to
      /sys/../dynamic_debug/control, but this sucks.
      
      This patch makes it possible to pass a query in the same format one can
      write to /sys/../dynamic_debug/control via boot param.
      When dynamic debug gets initialized, this query will automatically be
      applied.
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      Acked-by: jbaron@redhat.com
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      a648ec05
    • T
      Dynamic Debug: Split out query string parsing/setup from proc_write · fd89cfb8
      Thomas Renninger 提交于
      The parsing and applying of dynamic debug strings is not only useful for
      /sys/../dynamic_debug/control write access, but can also be used for
      boot parameter parsing.
      The boot parameter is introduced in a follow up patch.
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      Acked-by: jbaron@redhat.com
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Signed-off-by: NGreg Kroah-Hartman <gregkh@suse.de>
      fd89cfb8
  11. 19 10月, 2010 1 次提交