Signed-off-by: Eduardo Habkost <ehabkost(a)redhat.com>
---
arch_init.c | 10 +++++++---
arch_init.h | 2 +-
qemu-options.hx | 16 +++++++++++++---
vl.c | 6 +++++-
4 files changed, 26 insertions(+), 8 deletions(-)
diff --git a/arch_init.c b/arch_init.c
index 62332e9..c5fc00f 100644
--- a/arch_init.c
+++ b/arch_init.c
@@ -114,19 +114,23 @@ const uint32_t arch_type = QEMU_ARCH;
static struct defconfig_file {
const char *filename;
+ /* If non-zero, this is a user config file (disabled by -no-user-config) */
+ int userconfig;
} default_config_files[] = {
- { CONFIG_QEMU_CONFDIR "/qemu.conf" },
- { CONFIG_QEMU_CONFDIR "/target-" TARGET_ARCH ".conf" },
+ { CONFIG_QEMU_CONFDIR "/qemu.conf", 1 },
+ { CONFIG_QEMU_CONFDIR "/target-" TARGET_ARCH ".conf", 1 },
{ NULL }, /* end of list */
};
-int qemu_read_default_config_files(void)
+int qemu_read_default_config_files(int userconfig)
{
int ret;
struct defconfig_file *f;
for (f = default_config_files; f->filename; f++) {
+ if (!userconfig && f->userconfig)
+ continue;
ret = qemu_read_config_file(f->filename);
if (ret < 0 && ret != -ENOENT) {
return ret;
diff --git a/arch_init.h b/arch_init.h
index 495871b..07510cf 100644
--- a/arch_init.h
+++ b/arch_init.h
@@ -32,6 +32,6 @@ int xen_available(void);
/* Read default Qemu config files
*/
-int qemu_read_default_config_files(void);
+int qemu_read_default_config_files(int userconfig);
#endif
diff --git a/qemu-options.hx b/qemu-options.hx
index a169792..7d0b054 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -2685,9 +2685,19 @@ DEF("nodefconfig", 0, QEMU_OPTION_nodefconfig,
STEXI
@item -nodefconfig
@findex -nodefconfig
-Normally QEMU loads a configuration file from @var{sysconfdir}/qemu.conf and
-@var{sysconfdir}/target-(a)var{ARCH}.conf on startup. The @code{-nodefconfig}
-option will prevent QEMU from loading these configuration files at startup.
+Normally QEMU loads configuration files from @var{sysconfdir} and @var{datadir} at
startup.
+The @code{-nodefconfig} option will prevent QEMU from loading any of those config files.
+ETEXI
+DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
+ "-no-user-config\n"
+ " do not load user-provided config files at startup\n",
+ QEMU_ARCH_ALL)
+STEXI
+@item -no-user-config
+@findex -no-user-config
+The @code{-no-user-config} option makes QEMU not load any of the user-provided
+config files on @var{sysconfdir}, but won't make it skip the QEMU-provided config
+files from @var{datadir}.
ETEXI
DEF("trace", HAS_ARG, QEMU_OPTION_trace,
"-trace [events=<file>][,file=<file>]\n"
diff --git a/vl.c b/vl.c
index 1e5e593..347dadd 100644
--- a/vl.c
+++ b/vl.c
@@ -2280,6 +2280,7 @@ int main(int argc, char **argv, char **envp)
int show_vnc_port = 0;
#endif
int defconfig = 1;
+ int userconfig = 1;
const char *log_mask = NULL;
const char *log_file = NULL;
GMemVTable mem_trace = {
@@ -2348,13 +2349,16 @@ int main(int argc, char **argv, char **envp)
case QEMU_OPTION_nodefconfig:
defconfig=0;
break;
+ case QEMU_OPTION_nouserconfig:
+ userconfig=0;
+ break;
}
}
}
if (defconfig) {
int ret;
- ret = qemu_read_default_config_files();
+ ret = qemu_read_default_config_files(userconfig);
if (ret < 0) {
exit(1);
}
--
1.7.3.2