}
 EXPORT_SYMBOL_GPL(ddebug_add_module);
 
-/* handle both dyndbg=".." and $module.dyndbg=".." params at boot */
-static int ddebug_dyndbg_boot_param_cb(char *param, char *val,
-                               const char *unused)
+/* helper for ddebug_dyndbg_(boot|module)_param_cb */
+static int ddebug_dyndbg_param_cb(char *param, char *val,
+                               const char *modname, int on_err)
 {
-       const char *modname = NULL;
        char *sep;
 
        sep = strchr(param, '.');
        if (sep) {
+               /* needed only for ddebug_dyndbg_boot_param_cb */
                *sep = '\0';
                modname = param;
                param = sep + 1;
        }
        if (strcmp(param, "dyndbg"))
-               return 0; /* skip all other params w/o error */
-
-       vpr_info("module: %s %s=\"%s\"\n", modname, param, val);
+               return on_err; /* determined by caller */
 
        ddebug_exec_queries(val ? val : "+p");
        return 0; /* query failure shouldnt stop module load */
 }
 
-/* handle dyndbg args to modprobe */
-int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *doing)
+/* handle both dyndbg and $module.dyndbg params at boot */
+static int ddebug_dyndbg_boot_param_cb(char *param, char *val,
+                               const char *unused)
 {
-       if (strcmp(param, "dyndbg"))
-               return -ENOENT;
-
-       vpr_info("module: %s %s=\"%s\"\n", doing, param, val);
-
-       ddebug_exec_queries((val ? val : "+p"));
+       vpr_info("%s=\"%s\"\n", param, val);
+       return ddebug_dyndbg_param_cb(param, val, NULL, 0);
+}
 
-       return 0; /* query failure shouldnt stop module load */
+/*
+ * modprobe foo finds foo.params in boot-args, strips "foo.", and
+ * passes them to load_module().  This callback gets unknown params,
+ * processes dyndbg params, rejects others.
+ */
+int ddebug_dyndbg_module_param_cb(char *param, char *val, const char *module)
+{
+       vpr_info("module: %s %s=\"%s\"\n", module, param, val);
+       return ddebug_dyndbg_param_cb(param, val, module, -ENOENT);
 }
 
 static void ddebug_table_free(struct ddebug_table *dt)