diff --git a/qemu-config.c b/qemu-config.c
index 52f18be..1b871d6 100644
--- a/qemu-config.c
+++ b/qemu-config.c
@@ -630,21 +630,31 @@ out:
     return res;
 }
 
-int qemu_read_config_file(const char *filename)
+/* attempt to open and parse config file, report problems if vflag
+ */
+int qemu_read_config_file(const char *filename, int vflag)
 {
     FILE *f = fopen(filename, "r");
-    int ret;
+    int rv = 0;
+    const char *err;
 
     if (f == NULL) {
-        return -errno;
+        rv = -errno;
+        err = "open";
     }
-
-    ret = qemu_config_parse(f, vm_config_groups, filename);
-    fclose(f);
-
-    if (ret == 0) {
-        return 0;
-    } else {
-        return -EINVAL;
+    else if (qemu_config_parse(f, vm_config_groups, filename) != 0) {
+        rv = -EINVAL;
+        err = "parse";
+    }
+    else if (vflag) {
+        fprintf(stderr, "parsed config file %s\n", filename);
+    }
+    if (f) {
+        fclose(f);
+    }
+    if (rv && vflag) {
+        fprintf(stderr, "can't %s config file %s: %s\n",
+                err, filename, strerror(-rv));
     }
+    return rv;
 }
diff --git a/qemu-config.h b/qemu-config.h
index 20d707f..b90a7cc 100644
--- a/qemu-config.h
+++ b/qemu-config.h
@@ -14,6 +14,6 @@ void qemu_add_globals(void);
 void qemu_config_write(FILE *fp);
 int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname);
 
-int qemu_read_config_file(const char *filename);
+int qemu_read_config_file(const char *filename, int vflag);
 
 #endif /* QEMU_CONFIG_H */
diff --git a/qemu-options.hx b/qemu-options.hx
index 4d99a58..00c0845 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2290,16 +2290,19 @@ STEXI
 @findex -writeconfig
 Write device configuration to @var{file}.
 ETEXI
-DEF("nodefconfig", 0, QEMU_OPTION_nodefconfig,
-    "-nodefconfig\n"
-    "                do not load default config files at startup\n",
+DEF("config", HAS_ARG, QEMU_OPTION_config,
+    "-config [nodefault][,verbose]\n"
+    "                set global config file options.\n",
     QEMU_ARCH_ALL)
 STEXI
-@item -nodefconfig
-@findex -nodefconfig
-Normally QEMU loads a configuration file from @var{sysconfdir}/qemu.conf and
-@var{sysconfdir}/target-@var{ARCH}.conf on startup.  The @code{-nodefconfig}
-option will prevent QEMU from loading these configuration files at startup.
+@item -config
+@findex -config
+By default QEMU loads a configuration file from @var{sysconfdir}/qemu.conf and
+@var{sysconfdir}/target-@var{ARCH}.conf on startup.
+The @code{-config nodefault} option will prevent QEMU from loading these
+configuration files at startup.
+Additionally @code{-config verbose} will provide detail to the user of
+all config file handling.
 ETEXI
 #ifdef CONFIG_SIMPLE_TRACE
 DEF("trace", HAS_ARG, QEMU_OPTION_trace,
diff --git a/vl.c b/vl.c
index 805e11f..160f14b 100644
--- a/vl.c
+++ b/vl.c
@@ -1806,6 +1806,7 @@ int main(int argc, char **argv, char **envp)
     const char *incoming = NULL;
     int show_vnc_port = 0;
     int defconfig = 1;
+    int defconfig_verbose = 0;
 
 #ifdef CONFIG_SIMPLE_TRACE
     const char *trace_file = NULL;
@@ -1854,8 +1855,25 @@ int main(int argc, char **argv, char **envp)
 
             popt = lookup_opt(argc, argv, &optarg, &optind);
             switch (popt->index) {
-            case QEMU_OPTION_nodefconfig:
-                defconfig=0;
+            case QEMU_OPTION_config:
+                {
+                char *p, *q, *r;
+
+                for (r = p = strdup(optarg); (q = strtok(r, ",")); r = NULL)
+                    if (!strcmp(q, "nodefault")) {
+                        defconfig = 0;
+                    } else if (!strcmp(q, "verbose")) {
+                        defconfig_verbose = 1;
+                    } else {
+                        fprintf(stderr, "unknown option \"%s\"\n", q);
+                        exit(1);
+                    }
+                free(p);
+                break;
+                }
+            case QEMU_OPTION_readconfig:
+                if (qemu_read_config_file(optarg, defconfig_verbose) < 0)
+                    exit(1);
                 break;
             }
         }
@@ -1864,12 +1882,13 @@ int main(int argc, char **argv, char **envp)
     if (defconfig) {
         int ret;
 
-        ret = qemu_read_config_file(CONFIG_QEMU_CONFDIR "/qemu.conf");
+        ret = qemu_read_config_file(CONFIG_QEMU_CONFDIR "/qemu.conf",
+                                    defconfig_verbose);
         if (ret < 0 && ret != -ENOENT) {
             exit(1);
         }
 
-        ret = qemu_read_config_file(arch_config_name);
+        ret = qemu_read_config_file(arch_config_name, defconfig_verbose);
         if (ret < 0 && ret != -ENOENT) {
             exit(1);
         }
@@ -2577,16 +2596,6 @@ int main(int argc, char **argv, char **envp)
                 }
                 break;
 #endif
-            case QEMU_OPTION_readconfig:
-                {
-                    int ret = qemu_read_config_file(optarg);
-                    if (ret < 0) {
-                        fprintf(stderr, "read config %s: %s\n", optarg,
-                            strerror(-ret));
-                        exit(1);
-                    }
-                    break;
-                }
             case QEMU_OPTION_spice:
                 olist = qemu_find_opts("spice");
                 if (!olist) {
