mirror of https://github.com/xemu-project/xemu.git
* Skip tests if the corresponding feature is missing
* Update NetBSD VM test to version 9.3 * Update the FreeBSD CI to version 13.1 * Some small fixes for the qtests * Update wordings in the QEMU guest-agent -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmMpvqURHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbXtaQ//ap4P8Gdg7HyShflpHj3+Z+UC/THtcCAD F5Oj/E89wYJZJvWpjELLUf+218O+zbcKkv6z25AHo37JRSLQMzsD21RpDYcu8qnN Xk77KrOLFaVRRo6e3FAi5I+uWsm1h/9jJfC/sFrzfKGnWcW5pTzXUkbvWT3LZo/q d0wJCMn/+h0j6kqhjm8mhFCsGsSaUKFCMzm/6rsWxVsMsVnlTyYhg/IzhocKrkVD 9ZWz+jAv+h4F0CLl/SeRvZFq4LEGZoP3KHWrDAgEO9i1yC+tNpGDFyV/hJXwapcm jYGaPPgS2dLToMXf5uubfmyptircQKqdpC2Hl8UwgUS6OgwA2YRCxad8rrrdBezq 2Nb8KissVB8ySL1Asf00gxioJNwLKrY+4NIeDVxAQ56f1/9kd0w0ylrweR492V/p z3Yrs3uqqALR1jWfB7/Rh4EN2R0oe6bnlfb8bB6lzPKynXQicZLeoOnNPbkOQMw8 HgjKVFT130ydXJKMJkgEQmi4JUGoaKqSKCmlSaHz9TAobwNiVBXaH0cyuX5QEuoX WgZosiF5nBzdbhkC2IPcQYHzIIkelfx9j9mKE0PNfUSkFgMiywcI5TfqabPWGeaA rxYPU4EZmbgCZPlBVdPFwog/BXap2EIo9+xtINM0COQDoy+Q/l5Z3keHhpjayBBS qWc6CRSmhLs= =sHK+ -----END PGP SIGNATURE----- Merge tag 'pull-request-2022-09-20' of https://gitlab.com/thuth/qemu into staging * Skip tests if the corresponding feature is missing * Update NetBSD VM test to version 9.3 * Update the FreeBSD CI to version 13.1 * Some small fixes for the qtests * Update wordings in the QEMU guest-agent # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmMpvqURHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbXtaQ//ap4P8Gdg7HyShflpHj3+Z+UC/THtcCAD # F5Oj/E89wYJZJvWpjELLUf+218O+zbcKkv6z25AHo37JRSLQMzsD21RpDYcu8qnN # Xk77KrOLFaVRRo6e3FAi5I+uWsm1h/9jJfC/sFrzfKGnWcW5pTzXUkbvWT3LZo/q # d0wJCMn/+h0j6kqhjm8mhFCsGsSaUKFCMzm/6rsWxVsMsVnlTyYhg/IzhocKrkVD # 9ZWz+jAv+h4F0CLl/SeRvZFq4LEGZoP3KHWrDAgEO9i1yC+tNpGDFyV/hJXwapcm # jYGaPPgS2dLToMXf5uubfmyptircQKqdpC2Hl8UwgUS6OgwA2YRCxad8rrrdBezq # 2Nb8KissVB8ySL1Asf00gxioJNwLKrY+4NIeDVxAQ56f1/9kd0w0ylrweR492V/p # z3Yrs3uqqALR1jWfB7/Rh4EN2R0oe6bnlfb8bB6lzPKynXQicZLeoOnNPbkOQMw8 # HgjKVFT130ydXJKMJkgEQmi4JUGoaKqSKCmlSaHz9TAobwNiVBXaH0cyuX5QEuoX # WgZosiF5nBzdbhkC2IPcQYHzIIkelfx9j9mKE0PNfUSkFgMiywcI5TfqabPWGeaA # rxYPU4EZmbgCZPlBVdPFwog/BXap2EIo9+xtINM0COQDoy+Q/l5Z3keHhpjayBBS # qWc6CRSmhLs= # =sHK+ # -----END PGP SIGNATURE----- # gpg: Signature made Tue 20 Sep 2022 09:22:45 EDT # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * tag 'pull-request-2022-09-20' of https://gitlab.com/thuth/qemu: qga: Replace 'blacklist' and 'whitelist' in the guest agent sources qga: Replace 'blacklist' command line and config file options by 'block-rpcs' gitlab-ci: Update the FreeBSD 13 job from 13.0 to 13.1 tests: sb16 has both pc and q35 tests tests: Only run intel-hda-tests if machine type is compiled in bios-tables-test: Only run test for machine types compiled in bios-tables-test: Sort all x86_64 tests by machine type bios-tables-test: Make oem-fields tests be consistent meson-build: Enable CONFIG_REPLICATION only when replication is set tests: Fix error strings qtest/fuzz-lsi53c895a-test: set guest RAM to 2G tests/qtest: npcm7xx-emc-test: Skip checking MAC .gitlab-ci.d/windows.yml: Drop the sed processing in the 64-bit build tests/vm: update NetBSD to 9.3 tests: mark io-command test as skipped if socat is missing Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
2906f933dd
|
@ -63,7 +63,7 @@ x64-freebsd-13-build:
|
||||||
NAME: freebsd-13
|
NAME: freebsd-13
|
||||||
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
CIRRUS_VM_INSTANCE_TYPE: freebsd_instance
|
||||||
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
CIRRUS_VM_IMAGE_SELECTOR: image_family
|
||||||
CIRRUS_VM_IMAGE_NAME: freebsd-13-0
|
CIRRUS_VM_IMAGE_NAME: freebsd-13-1
|
||||||
CIRRUS_VM_CPUS: 8
|
CIRRUS_VM_CPUS: 8
|
||||||
CIRRUS_VM_RAM: 8G
|
CIRRUS_VM_RAM: 8G
|
||||||
UPDATE_COMMAND: pkg update
|
UPDATE_COMMAND: pkg update
|
||||||
|
|
|
@ -60,7 +60,6 @@ msys2-64bit:
|
||||||
- $env:MSYS = 'winsymlinks:native' # Enable native Windows symlink
|
- $env:MSYS = 'winsymlinks:native' # Enable native Windows symlink
|
||||||
- .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
|
- .\msys64\usr\bin\bash -lc './configure --target-list=x86_64-softmmu
|
||||||
--enable-capstone --without-default-devices'
|
--enable-capstone --without-default-devices'
|
||||||
- .\msys64\usr\bin\bash -lc "sed -i '/^ROMS=/d' build/config-host.mak"
|
|
||||||
- .\msys64\usr\bin\bash -lc 'make'
|
- .\msys64\usr\bin\bash -lc 'make'
|
||||||
- .\msys64\usr\bin\bash -lc 'make check'
|
- .\msys64\usr\bin\bash -lc 'make check'
|
||||||
|
|
||||||
|
|
|
@ -370,3 +370,22 @@ be deleted from this tree.
|
||||||
New deployments should use the Rust version, and existing systems
|
New deployments should use the Rust version, and existing systems
|
||||||
should consider moving to it. The command line and feature set
|
should consider moving to it. The command line and feature set
|
||||||
is very close and moving should be simple.
|
is very close and moving should be simple.
|
||||||
|
|
||||||
|
|
||||||
|
QEMU guest agent
|
||||||
|
----------------
|
||||||
|
|
||||||
|
``--blacklist`` command line option (since 7.2)
|
||||||
|
'''''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
``--blacklist`` has been replaced by ``--block-rpcs`` (which is a better
|
||||||
|
wording for what this option does). The short form ``-b`` still stays
|
||||||
|
the same and thus is the preferred way for scripts that should run with
|
||||||
|
both, older and future versions of QEMU.
|
||||||
|
|
||||||
|
``blacklist`` config file option (since 7.2)
|
||||||
|
''''''''''''''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
The ``blacklist`` config file option has been renamed to ``block-rpcs``
|
||||||
|
(to be in sync with the renaming of the corresponding command line
|
||||||
|
option).
|
||||||
|
|
|
@ -79,10 +79,10 @@ Options
|
||||||
|
|
||||||
Daemonize after startup (detach from terminal).
|
Daemonize after startup (detach from terminal).
|
||||||
|
|
||||||
.. option:: -b, --blacklist=LIST
|
.. option:: -b, --block-rpcs=LIST
|
||||||
|
|
||||||
Comma-separated list of RPCs to disable (no spaces, ``?`` to list
|
Comma-separated list of RPCs to disable (no spaces, use ``help`` to
|
||||||
available RPCs).
|
list available RPCs).
|
||||||
|
|
||||||
.. option:: -D, --dump-conf
|
.. option:: -D, --dump-conf
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ pidfile string
|
||||||
fsfreeze-hook string
|
fsfreeze-hook string
|
||||||
statedir string
|
statedir string
|
||||||
verbose boolean
|
verbose boolean
|
||||||
blacklist string list
|
block-rpcs string list
|
||||||
============= ===========
|
============= ===========
|
||||||
|
|
||||||
See also
|
See also
|
||||||
|
|
|
@ -1878,7 +1878,7 @@ config_host_data.set('CONFIG_DEBUG_STACK_USAGE', get_option('debug_stack_usage')
|
||||||
config_host_data.set('CONFIG_GPROF', get_option('gprof'))
|
config_host_data.set('CONFIG_GPROF', get_option('gprof'))
|
||||||
config_host_data.set('CONFIG_LIVE_BLOCK_MIGRATION', get_option('live_block_migration').allowed())
|
config_host_data.set('CONFIG_LIVE_BLOCK_MIGRATION', get_option('live_block_migration').allowed())
|
||||||
config_host_data.set('CONFIG_QOM_CAST_DEBUG', get_option('qom_cast_debug'))
|
config_host_data.set('CONFIG_QOM_CAST_DEBUG', get_option('qom_cast_debug'))
|
||||||
config_host_data.set('CONFIG_REPLICATION', get_option('live_block_migration').allowed())
|
config_host_data.set('CONFIG_REPLICATION', get_option('replication').allowed())
|
||||||
|
|
||||||
# has_header
|
# has_header
|
||||||
config_host_data.set('CONFIG_EPOLL', cc.has_header('sys/epoll.h'))
|
config_host_data.set('CONFIG_EPOLL', cc.has_header('sys/epoll.h'))
|
||||||
|
|
|
@ -3356,8 +3356,8 @@ qmp_guest_fstrim(bool has_minimum, int64_t minimum, Error **errp)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* add unsupported commands to the blacklist */
|
/* add unsupported commands to the list of blocked RPCs */
|
||||||
GList *ga_command_blacklist_init(GList *blacklist)
|
GList *ga_command_init_blockedrpcs(GList *blockedrpcs)
|
||||||
{
|
{
|
||||||
#if !defined(__linux__)
|
#if !defined(__linux__)
|
||||||
{
|
{
|
||||||
|
@ -3370,13 +3370,13 @@ GList *ga_command_blacklist_init(GList *blacklist)
|
||||||
char **p = (char **)list;
|
char **p = (char **)list;
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
blacklist = g_list_append(blacklist, g_strdup(*p++));
|
blockedrpcs = g_list_append(blockedrpcs, g_strdup(*p++));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(HAVE_GETIFADDRS)
|
#if !defined(HAVE_GETIFADDRS)
|
||||||
blacklist = g_list_append(blacklist,
|
blockedrpcs = g_list_append(blockedrpcs,
|
||||||
g_strdup("guest-network-get-interfaces"));
|
g_strdup("guest-network-get-interfaces"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3390,18 +3390,18 @@ GList *ga_command_blacklist_init(GList *blacklist)
|
||||||
char **p = (char **)list;
|
char **p = (char **)list;
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
blacklist = g_list_append(blacklist, g_strdup(*p++));
|
blockedrpcs = g_list_append(blockedrpcs, g_strdup(*p++));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(CONFIG_FSTRIM)
|
#if !defined(CONFIG_FSTRIM)
|
||||||
blacklist = g_list_append(blacklist, g_strdup("guest-fstrim"));
|
blockedrpcs = g_list_append(blockedrpcs, g_strdup("guest-fstrim"));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
blacklist = g_list_append(blacklist, g_strdup("guest-get-devices"));
|
blockedrpcs = g_list_append(blockedrpcs, g_strdup("guest-get-devices"));
|
||||||
|
|
||||||
return blacklist;
|
return blockedrpcs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* register init/cleanup routines for stateful command groups */
|
/* register init/cleanup routines for stateful command groups */
|
||||||
|
|
|
@ -2005,8 +2005,8 @@ GuestMemoryBlockInfo *qmp_guest_get_memory_block_info(Error **errp)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* add unsupported commands to the blacklist */
|
/* add unsupported commands to the list of blocked RPCs */
|
||||||
GList *ga_command_blacklist_init(GList *blacklist)
|
GList *ga_command_init_blockedrpcs(GList *blockedrpcs)
|
||||||
{
|
{
|
||||||
const char *list_unsupported[] = {
|
const char *list_unsupported[] = {
|
||||||
"guest-suspend-hybrid",
|
"guest-suspend-hybrid",
|
||||||
|
@ -2017,7 +2017,7 @@ GList *ga_command_blacklist_init(GList *blacklist)
|
||||||
char **p = (char **)list_unsupported;
|
char **p = (char **)list_unsupported;
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
blacklist = g_list_append(blacklist, g_strdup(*p++));
|
blockedrpcs = g_list_append(blockedrpcs, g_strdup(*p++));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!vss_init(true)) {
|
if (!vss_init(true)) {
|
||||||
|
@ -2028,11 +2028,11 @@ GList *ga_command_blacklist_init(GList *blacklist)
|
||||||
p = (char **)list;
|
p = (char **)list;
|
||||||
|
|
||||||
while (*p) {
|
while (*p) {
|
||||||
blacklist = g_list_append(blacklist, g_strdup(*p++));
|
blockedrpcs = g_list_append(blockedrpcs, g_strdup(*p++));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return blacklist;
|
return blockedrpcs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* register init/cleanup routines for stateful command groups */
|
/* register init/cleanup routines for stateful command groups */
|
||||||
|
|
|
@ -24,7 +24,7 @@ typedef struct GACommandState GACommandState;
|
||||||
extern GAState *ga_state;
|
extern GAState *ga_state;
|
||||||
extern QmpCommandList ga_commands;
|
extern QmpCommandList ga_commands;
|
||||||
|
|
||||||
GList *ga_command_blacklist_init(GList *blacklist);
|
GList *ga_command_init_blockedrpcs(GList *blockedrpcs);
|
||||||
void ga_command_state_init(GAState *s, GACommandState *cs);
|
void ga_command_state_init(GAState *s, GACommandState *cs);
|
||||||
void ga_command_state_add(GACommandState *cs,
|
void ga_command_state_add(GACommandState *cs,
|
||||||
void (*init)(void),
|
void (*init)(void),
|
||||||
|
|
77
qga/main.c
77
qga/main.c
|
@ -87,7 +87,7 @@ struct GAState {
|
||||||
#endif
|
#endif
|
||||||
bool delimit_response;
|
bool delimit_response;
|
||||||
bool frozen;
|
bool frozen;
|
||||||
GList *blacklist;
|
GList *blockedrpcs;
|
||||||
char *state_filepath_isfrozen;
|
char *state_filepath_isfrozen;
|
||||||
struct {
|
struct {
|
||||||
const char *log_filepath;
|
const char *log_filepath;
|
||||||
|
@ -107,7 +107,7 @@ struct GAState *ga_state;
|
||||||
QmpCommandList ga_commands;
|
QmpCommandList ga_commands;
|
||||||
|
|
||||||
/* commands that are safe to issue while filesystems are frozen */
|
/* commands that are safe to issue while filesystems are frozen */
|
||||||
static const char *ga_freeze_whitelist[] = {
|
static const char *ga_freeze_allowlist[] = {
|
||||||
"guest-ping",
|
"guest-ping",
|
||||||
"guest-info",
|
"guest-info",
|
||||||
"guest-sync",
|
"guest-sync",
|
||||||
|
@ -260,8 +260,8 @@ QEMU_COPYRIGHT "\n"
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
" -s, --service service commands: install, uninstall, vss-install, vss-uninstall\n"
|
" -s, --service service commands: install, uninstall, vss-install, vss-uninstall\n"
|
||||||
#endif
|
#endif
|
||||||
" -b, --blacklist comma-separated list of RPCs to disable (no spaces, \"?\"\n"
|
" -b, --block-rpcs comma-separated list of RPCs to disable (no spaces,\n"
|
||||||
" to list available RPCs)\n"
|
" use \"help\" to list available RPCs)\n"
|
||||||
" -D, --dump-conf dump a qemu-ga config file based on current config\n"
|
" -D, --dump-conf dump a qemu-ga config file based on current config\n"
|
||||||
" options / command-line parameters to stdout\n"
|
" options / command-line parameters to stdout\n"
|
||||||
" -r, --retry-path attempt re-opening path if it's unavailable or closed\n"
|
" -r, --retry-path attempt re-opening path if it's unavailable or closed\n"
|
||||||
|
@ -363,31 +363,31 @@ static gint ga_strcmp(gconstpointer str1, gconstpointer str2)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* disable commands that aren't safe for fsfreeze */
|
/* disable commands that aren't safe for fsfreeze */
|
||||||
static void ga_disable_non_whitelisted(const QmpCommand *cmd, void *opaque)
|
static void ga_disable_not_allowed(const QmpCommand *cmd, void *opaque)
|
||||||
{
|
{
|
||||||
bool whitelisted = false;
|
bool allowed = false;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
const char *name = qmp_command_name(cmd);
|
const char *name = qmp_command_name(cmd);
|
||||||
|
|
||||||
while (ga_freeze_whitelist[i] != NULL) {
|
while (ga_freeze_allowlist[i] != NULL) {
|
||||||
if (strcmp(name, ga_freeze_whitelist[i]) == 0) {
|
if (strcmp(name, ga_freeze_allowlist[i]) == 0) {
|
||||||
whitelisted = true;
|
allowed = true;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (!whitelisted) {
|
if (!allowed) {
|
||||||
g_debug("disabling command: %s", name);
|
g_debug("disabling command: %s", name);
|
||||||
qmp_disable_command(&ga_commands, name, "the agent is in frozen state");
|
qmp_disable_command(&ga_commands, name, "the agent is in frozen state");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* [re-]enable all commands, except those explicitly blacklisted by user */
|
/* [re-]enable all commands, except those explicitly blocked by user */
|
||||||
static void ga_enable_non_blacklisted(const QmpCommand *cmd, void *opaque)
|
static void ga_enable_non_blocked(const QmpCommand *cmd, void *opaque)
|
||||||
{
|
{
|
||||||
GList *blacklist = opaque;
|
GList *blockedrpcs = opaque;
|
||||||
const char *name = qmp_command_name(cmd);
|
const char *name = qmp_command_name(cmd);
|
||||||
|
|
||||||
if (g_list_find_custom(blacklist, name, ga_strcmp) == NULL &&
|
if (g_list_find_custom(blockedrpcs, name, ga_strcmp) == NULL &&
|
||||||
!qmp_command_is_enabled(cmd)) {
|
!qmp_command_is_enabled(cmd)) {
|
||||||
g_debug("enabling command: %s", name);
|
g_debug("enabling command: %s", name);
|
||||||
qmp_enable_command(&ga_commands, name);
|
qmp_enable_command(&ga_commands, name);
|
||||||
|
@ -426,8 +426,8 @@ void ga_set_frozen(GAState *s)
|
||||||
if (ga_is_frozen(s)) {
|
if (ga_is_frozen(s)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* disable all non-whitelisted (for frozen state) commands */
|
/* disable all forbidden (for frozen state) commands */
|
||||||
qmp_for_each_command(&ga_commands, ga_disable_non_whitelisted, NULL);
|
qmp_for_each_command(&ga_commands, ga_disable_not_allowed, NULL);
|
||||||
g_warning("disabling logging due to filesystem freeze");
|
g_warning("disabling logging due to filesystem freeze");
|
||||||
ga_disable_logging(s);
|
ga_disable_logging(s);
|
||||||
s->frozen = true;
|
s->frozen = true;
|
||||||
|
@ -465,8 +465,8 @@ void ga_unset_frozen(GAState *s)
|
||||||
s->deferred_options.pid_filepath = NULL;
|
s->deferred_options.pid_filepath = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* enable all disabled, non-blacklisted commands */
|
/* enable all disabled, non-blocked commands */
|
||||||
qmp_for_each_command(&ga_commands, ga_enable_non_blacklisted, s->blacklist);
|
qmp_for_each_command(&ga_commands, ga_enable_non_blocked, s->blockedrpcs);
|
||||||
s->frozen = false;
|
s->frozen = false;
|
||||||
if (!ga_delete_file(s->state_filepath_isfrozen)) {
|
if (!ga_delete_file(s->state_filepath_isfrozen)) {
|
||||||
g_warning("unable to delete %s, fsfreeze may not function properly",
|
g_warning("unable to delete %s, fsfreeze may not function properly",
|
||||||
|
@ -896,7 +896,8 @@ int64_t ga_get_fd_handle(GAState *s, Error **errp)
|
||||||
int64_t handle;
|
int64_t handle;
|
||||||
|
|
||||||
g_assert(s->pstate_filepath);
|
g_assert(s->pstate_filepath);
|
||||||
/* we blacklist commands and avoid operations that potentially require
|
/*
|
||||||
|
* We block commands and avoid operations that potentially require
|
||||||
* writing to disk when we're in a frozen state. this includes opening
|
* writing to disk when we're in a frozen state. this includes opening
|
||||||
* new files, so we should never get here in that situation
|
* new files, so we should never get here in that situation
|
||||||
*/
|
*/
|
||||||
|
@ -950,8 +951,8 @@ struct GAConfig {
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
const char *service;
|
const char *service;
|
||||||
#endif
|
#endif
|
||||||
gchar *bliststr; /* blacklist may point to this string */
|
gchar *bliststr; /* blockedrpcs may point to this string */
|
||||||
GList *blacklist;
|
GList *blockedrpcs;
|
||||||
int daemonize;
|
int daemonize;
|
||||||
GLogLevelFlags log_level;
|
GLogLevelFlags log_level;
|
||||||
int dumpconf;
|
int dumpconf;
|
||||||
|
@ -963,6 +964,7 @@ static void config_load(GAConfig *config)
|
||||||
GError *gerr = NULL;
|
GError *gerr = NULL;
|
||||||
GKeyFile *keyfile;
|
GKeyFile *keyfile;
|
||||||
g_autofree char *conf = g_strdup(g_getenv("QGA_CONF")) ?: get_relocated_path(QGA_CONF_DEFAULT);
|
g_autofree char *conf = g_strdup(g_getenv("QGA_CONF")) ?: get_relocated_path(QGA_CONF_DEFAULT);
|
||||||
|
const gchar *blockrpcs_key = "block-rpcs";
|
||||||
|
|
||||||
/* read system config */
|
/* read system config */
|
||||||
keyfile = g_key_file_new();
|
keyfile = g_key_file_new();
|
||||||
|
@ -1009,10 +1011,16 @@ static void config_load(GAConfig *config)
|
||||||
config->retry_path =
|
config->retry_path =
|
||||||
g_key_file_get_boolean(keyfile, "general", "retry-path", &gerr);
|
g_key_file_get_boolean(keyfile, "general", "retry-path", &gerr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (g_key_file_has_key(keyfile, "general", "blacklist", NULL)) {
|
if (g_key_file_has_key(keyfile, "general", "blacklist", NULL)) {
|
||||||
|
g_warning("config using deprecated 'blacklist' key, should be replaced"
|
||||||
|
" with the 'block-rpcs' key.");
|
||||||
|
blockrpcs_key = "blacklist";
|
||||||
|
}
|
||||||
|
if (g_key_file_has_key(keyfile, "general", blockrpcs_key, NULL)) {
|
||||||
config->bliststr =
|
config->bliststr =
|
||||||
g_key_file_get_string(keyfile, "general", "blacklist", &gerr);
|
g_key_file_get_string(keyfile, "general", blockrpcs_key, &gerr);
|
||||||
config->blacklist = g_list_concat(config->blacklist,
|
config->blockedrpcs = g_list_concat(config->blockedrpcs,
|
||||||
split_list(config->bliststr, ","));
|
split_list(config->bliststr, ","));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1072,8 +1080,8 @@ static void config_dump(GAConfig *config)
|
||||||
config->log_level == G_LOG_LEVEL_MASK);
|
config->log_level == G_LOG_LEVEL_MASK);
|
||||||
g_key_file_set_boolean(keyfile, "general", "retry-path",
|
g_key_file_set_boolean(keyfile, "general", "retry-path",
|
||||||
config->retry_path);
|
config->retry_path);
|
||||||
tmp = list_join(config->blacklist, ',');
|
tmp = list_join(config->blockedrpcs, ',');
|
||||||
g_key_file_set_string(keyfile, "general", "blacklist", tmp);
|
g_key_file_set_string(keyfile, "general", "block-rpcs", tmp);
|
||||||
g_free(tmp);
|
g_free(tmp);
|
||||||
|
|
||||||
tmp = g_key_file_to_data(keyfile, NULL, &error);
|
tmp = g_key_file_to_data(keyfile, NULL, &error);
|
||||||
|
@ -1105,7 +1113,8 @@ static void config_parse(GAConfig *config, int argc, char **argv)
|
||||||
{ "method", 1, NULL, 'm' },
|
{ "method", 1, NULL, 'm' },
|
||||||
{ "path", 1, NULL, 'p' },
|
{ "path", 1, NULL, 'p' },
|
||||||
{ "daemonize", 0, NULL, 'd' },
|
{ "daemonize", 0, NULL, 'd' },
|
||||||
{ "blacklist", 1, NULL, 'b' },
|
{ "block-rpcs", 1, NULL, 'b' },
|
||||||
|
{ "blacklist", 1, NULL, 'b' }, /* deprecated alias for 'block-rpcs' */
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
{ "service", 1, NULL, 's' },
|
{ "service", 1, NULL, 's' },
|
||||||
#endif
|
#endif
|
||||||
|
@ -1163,8 +1172,8 @@ static void config_parse(GAConfig *config, int argc, char **argv)
|
||||||
qmp_for_each_command(&ga_commands, ga_print_cmd, NULL);
|
qmp_for_each_command(&ga_commands, ga_print_cmd, NULL);
|
||||||
exit(EXIT_SUCCESS);
|
exit(EXIT_SUCCESS);
|
||||||
}
|
}
|
||||||
config->blacklist = g_list_concat(config->blacklist,
|
config->blockedrpcs = g_list_concat(config->blockedrpcs,
|
||||||
split_list(optarg, ","));
|
split_list(optarg, ","));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
@ -1218,7 +1227,7 @@ static void config_free(GAConfig *config)
|
||||||
#ifdef CONFIG_FSFREEZE
|
#ifdef CONFIG_FSFREEZE
|
||||||
g_free(config->fsfreeze_hook);
|
g_free(config->fsfreeze_hook);
|
||||||
#endif
|
#endif
|
||||||
g_list_free_full(config->blacklist, g_free);
|
g_list_free_full(config->blockedrpcs, g_free);
|
||||||
g_free(config);
|
g_free(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1302,7 +1311,7 @@ static GAState *initialize_agent(GAConfig *config, int socket_activation)
|
||||||
s->deferred_options.log_filepath = config->log_filepath;
|
s->deferred_options.log_filepath = config->log_filepath;
|
||||||
}
|
}
|
||||||
ga_disable_logging(s);
|
ga_disable_logging(s);
|
||||||
qmp_for_each_command(&ga_commands, ga_disable_non_whitelisted, NULL);
|
qmp_for_each_command(&ga_commands, ga_disable_not_allowed, NULL);
|
||||||
} else {
|
} else {
|
||||||
if (config->daemonize) {
|
if (config->daemonize) {
|
||||||
become_daemon(config->pid_filepath);
|
become_daemon(config->pid_filepath);
|
||||||
|
@ -1326,10 +1335,10 @@ static GAState *initialize_agent(GAConfig *config, int socket_activation)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
config->blacklist = ga_command_blacklist_init(config->blacklist);
|
config->blockedrpcs = ga_command_init_blockedrpcs(config->blockedrpcs);
|
||||||
if (config->blacklist) {
|
if (config->blockedrpcs) {
|
||||||
GList *l = config->blacklist;
|
GList *l = config->blockedrpcs;
|
||||||
s->blacklist = config->blacklist;
|
s->blockedrpcs = config->blockedrpcs;
|
||||||
do {
|
do {
|
||||||
g_debug("disabling command: %s", (char *)l->data);
|
g_debug("disabling command: %s", (char *)l->data);
|
||||||
qmp_disable_command(&ga_commands, l->data, NULL);
|
qmp_disable_command(&ga_commands, l->data, NULL);
|
||||||
|
|
|
@ -16,8 +16,8 @@
|
||||||
|
|
||||||
{ 'pragma': { 'doc-required': true } }
|
{ 'pragma': { 'doc-required': true } }
|
||||||
|
|
||||||
# Whitelists to permit QAPI rule violations; think twice before you
|
# Lists with items allowed to permit QAPI rule violations; think twice
|
||||||
# add to them!
|
# before you add to them!
|
||||||
{ 'pragma': {
|
{ 'pragma': {
|
||||||
# Types whose member names may use '_'
|
# Types whose member names may use '_'
|
||||||
'member-name-exceptions': [
|
'member-name-exceptions': [
|
||||||
|
|
|
@ -5,4 +5,4 @@ path=/path/to/org.qemu.guest_agent.0
|
||||||
pidfile=/var/foo/qemu-ga.pid
|
pidfile=/var/foo/qemu-ga.pid
|
||||||
statedir=/var/state
|
statedir=/var/state
|
||||||
verbose=true
|
verbose=true
|
||||||
blacklist=guest-ping;guest-get-time
|
block-rpcs=guest-ping;guest-get-time
|
||||||
|
|
|
@ -1671,7 +1671,7 @@ static void test_oem_fields(test_data *data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_acpi_oem_fields_pc(void)
|
static void test_acpi_piix4_oem_fields(void)
|
||||||
{
|
{
|
||||||
test_data data;
|
test_data data;
|
||||||
char *args;
|
char *args;
|
||||||
|
@ -1691,7 +1691,7 @@ static void test_acpi_oem_fields_pc(void)
|
||||||
g_free(args);
|
g_free(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_acpi_oem_fields_q35(void)
|
static void test_acpi_q35_oem_fields(void)
|
||||||
{
|
{
|
||||||
test_data data;
|
test_data data;
|
||||||
char *args;
|
char *args;
|
||||||
|
@ -1711,7 +1711,7 @@ static void test_acpi_oem_fields_q35(void)
|
||||||
g_free(args);
|
g_free(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_acpi_oem_fields_microvm(void)
|
static void test_acpi_microvm_oem_fields(void)
|
||||||
{
|
{
|
||||||
test_data data;
|
test_data data;
|
||||||
char *args;
|
char *args;
|
||||||
|
@ -1728,7 +1728,7 @@ static void test_acpi_oem_fields_microvm(void)
|
||||||
g_free(args);
|
g_free(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_acpi_oem_fields_virt(void)
|
static void test_acpi_virt_oem_fields(void)
|
||||||
{
|
{
|
||||||
test_data data = {
|
test_data data = {
|
||||||
.machine = "virt",
|
.machine = "virt",
|
||||||
|
@ -1766,85 +1766,102 @@ int main(int argc, char *argv[])
|
||||||
if (ret) {
|
if (ret) {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
qtest_add_func("acpi/q35/oem-fields", test_acpi_oem_fields_q35);
|
if (qtest_has_machine(MACHINE_PC)) {
|
||||||
if (tpm_model_is_available("-machine q35", "tpm-tis")) {
|
qtest_add_func("acpi/piix4", test_acpi_piix4_tcg);
|
||||||
qtest_add_func("acpi/q35/tpm2-tis", test_acpi_q35_tcg_tpm2_tis);
|
qtest_add_func("acpi/piix4/oem-fields", test_acpi_piix4_oem_fields);
|
||||||
qtest_add_func("acpi/q35/tpm12-tis", test_acpi_q35_tcg_tpm12_tis);
|
qtest_add_func("acpi/piix4/bridge", test_acpi_piix4_tcg_bridge);
|
||||||
|
qtest_add_func("acpi/piix4/pci-hotplug/no_root_hotplug",
|
||||||
|
test_acpi_piix4_no_root_hotplug);
|
||||||
|
qtest_add_func("acpi/piix4/pci-hotplug/no_bridge_hotplug",
|
||||||
|
test_acpi_piix4_no_bridge_hotplug);
|
||||||
|
qtest_add_func("acpi/piix4/pci-hotplug/off",
|
||||||
|
test_acpi_piix4_no_acpi_pci_hotplug);
|
||||||
|
qtest_add_func("acpi/piix4/ipmi", test_acpi_piix4_tcg_ipmi);
|
||||||
|
qtest_add_func("acpi/piix4/cpuhp", test_acpi_piix4_tcg_cphp);
|
||||||
|
qtest_add_func("acpi/piix4/memhp", test_acpi_piix4_tcg_memhp);
|
||||||
|
qtest_add_func("acpi/piix4/numamem", test_acpi_piix4_tcg_numamem);
|
||||||
|
qtest_add_func("acpi/piix4/nosmm", test_acpi_piix4_tcg_nosmm);
|
||||||
|
qtest_add_func("acpi/piix4/smm-compat",
|
||||||
|
test_acpi_piix4_tcg_smm_compat);
|
||||||
|
qtest_add_func("acpi/piix4/smm-compat-nosmm",
|
||||||
|
test_acpi_piix4_tcg_smm_compat_nosmm);
|
||||||
|
qtest_add_func("acpi/piix4/nohpet", test_acpi_piix4_tcg_nohpet);
|
||||||
|
qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
|
||||||
|
qtest_add_func("acpi/piix4/acpihmat",
|
||||||
|
test_acpi_piix4_tcg_acpi_hmat);
|
||||||
|
#ifdef CONFIG_POSIX
|
||||||
|
qtest_add_func("acpi/piix4/acpierst", test_acpi_piix4_acpi_erst);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
qtest_add_func("acpi/piix4", test_acpi_piix4_tcg);
|
if (qtest_has_machine(MACHINE_Q35)) {
|
||||||
qtest_add_func("acpi/oem-fields", test_acpi_oem_fields_pc);
|
qtest_add_func("acpi/q35", test_acpi_q35_tcg);
|
||||||
qtest_add_func("acpi/piix4/bridge", test_acpi_piix4_tcg_bridge);
|
qtest_add_func("acpi/q35/oem-fields", test_acpi_q35_oem_fields);
|
||||||
qtest_add_func("acpi/piix4/pci-hotplug/no_root_hotplug",
|
if (tpm_model_is_available("-machine q35", "tpm-tis")) {
|
||||||
test_acpi_piix4_no_root_hotplug);
|
qtest_add_func("acpi/q35/tpm2-tis", test_acpi_q35_tcg_tpm2_tis);
|
||||||
qtest_add_func("acpi/piix4/pci-hotplug/no_bridge_hotplug",
|
qtest_add_func("acpi/q35/tpm12-tis",
|
||||||
test_acpi_piix4_no_bridge_hotplug);
|
test_acpi_q35_tcg_tpm12_tis);
|
||||||
qtest_add_func("acpi/piix4/pci-hotplug/off",
|
}
|
||||||
test_acpi_piix4_no_acpi_pci_hotplug);
|
qtest_add_func("acpi/q35/bridge", test_acpi_q35_tcg_bridge);
|
||||||
qtest_add_func("acpi/q35", test_acpi_q35_tcg);
|
qtest_add_func("acpi/q35/multif-bridge",
|
||||||
qtest_add_func("acpi/q35/bridge", test_acpi_q35_tcg_bridge);
|
test_acpi_q35_multif_bridge);
|
||||||
qtest_add_func("acpi/q35/multif-bridge", test_acpi_q35_multif_bridge);
|
qtest_add_func("acpi/q35/mmio64", test_acpi_q35_tcg_mmio64);
|
||||||
qtest_add_func("acpi/q35/mmio64", test_acpi_q35_tcg_mmio64);
|
qtest_add_func("acpi/q35/ipmi", test_acpi_q35_tcg_ipmi);
|
||||||
qtest_add_func("acpi/piix4/ipmi", test_acpi_piix4_tcg_ipmi);
|
qtest_add_func("acpi/q35/smbus/ipmi", test_acpi_q35_tcg_smbus_ipmi);
|
||||||
qtest_add_func("acpi/q35/ipmi", test_acpi_q35_tcg_ipmi);
|
qtest_add_func("acpi/q35/cpuhp", test_acpi_q35_tcg_cphp);
|
||||||
qtest_add_func("acpi/q35/smbus/ipmi", test_acpi_q35_tcg_smbus_ipmi);
|
qtest_add_func("acpi/q35/memhp", test_acpi_q35_tcg_memhp);
|
||||||
qtest_add_func("acpi/piix4/cpuhp", test_acpi_piix4_tcg_cphp);
|
qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem);
|
||||||
qtest_add_func("acpi/q35/cpuhp", test_acpi_q35_tcg_cphp);
|
qtest_add_func("acpi/q35/nosmm", test_acpi_q35_tcg_nosmm);
|
||||||
qtest_add_func("acpi/piix4/memhp", test_acpi_piix4_tcg_memhp);
|
qtest_add_func("acpi/q35/smm-compat",
|
||||||
qtest_add_func("acpi/q35/memhp", test_acpi_q35_tcg_memhp);
|
test_acpi_q35_tcg_smm_compat);
|
||||||
qtest_add_func("acpi/piix4/numamem", test_acpi_piix4_tcg_numamem);
|
qtest_add_func("acpi/q35/smm-compat-nosmm",
|
||||||
qtest_add_func("acpi/q35/numamem", test_acpi_q35_tcg_numamem);
|
test_acpi_q35_tcg_smm_compat_nosmm);
|
||||||
qtest_add_func("acpi/piix4/nosmm", test_acpi_piix4_tcg_nosmm);
|
qtest_add_func("acpi/q35/nohpet", test_acpi_q35_tcg_nohpet);
|
||||||
qtest_add_func("acpi/piix4/smm-compat",
|
qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
|
||||||
test_acpi_piix4_tcg_smm_compat);
|
qtest_add_func("acpi/q35/acpihmat", test_acpi_q35_tcg_acpi_hmat);
|
||||||
qtest_add_func("acpi/piix4/smm-compat-nosmm",
|
|
||||||
test_acpi_piix4_tcg_smm_compat_nosmm);
|
|
||||||
qtest_add_func("acpi/piix4/nohpet", test_acpi_piix4_tcg_nohpet);
|
|
||||||
qtest_add_func("acpi/q35/nosmm", test_acpi_q35_tcg_nosmm);
|
|
||||||
qtest_add_func("acpi/q35/smm-compat",
|
|
||||||
test_acpi_q35_tcg_smm_compat);
|
|
||||||
qtest_add_func("acpi/q35/smm-compat-nosmm",
|
|
||||||
test_acpi_q35_tcg_smm_compat_nosmm);
|
|
||||||
qtest_add_func("acpi/q35/nohpet", test_acpi_q35_tcg_nohpet);
|
|
||||||
qtest_add_func("acpi/piix4/dimmpxm", test_acpi_piix4_tcg_dimm_pxm);
|
|
||||||
qtest_add_func("acpi/q35/dimmpxm", test_acpi_q35_tcg_dimm_pxm);
|
|
||||||
qtest_add_func("acpi/piix4/acpihmat", test_acpi_piix4_tcg_acpi_hmat);
|
|
||||||
qtest_add_func("acpi/q35/acpihmat", test_acpi_q35_tcg_acpi_hmat);
|
|
||||||
#ifdef CONFIG_POSIX
|
#ifdef CONFIG_POSIX
|
||||||
qtest_add_func("acpi/piix4/acpierst", test_acpi_piix4_acpi_erst);
|
qtest_add_func("acpi/q35/acpierst", test_acpi_q35_acpi_erst);
|
||||||
qtest_add_func("acpi/q35/acpierst", test_acpi_q35_acpi_erst);
|
|
||||||
#endif
|
#endif
|
||||||
qtest_add_func("acpi/q35/applesmc", test_acpi_q35_applesmc);
|
qtest_add_func("acpi/q35/applesmc", test_acpi_q35_applesmc);
|
||||||
qtest_add_func("acpi/q35/pvpanic-isa", test_acpi_q35_pvpanic_isa);
|
qtest_add_func("acpi/q35/pvpanic-isa", test_acpi_q35_pvpanic_isa);
|
||||||
qtest_add_func("acpi/microvm", test_acpi_microvm_tcg);
|
if (has_tcg) {
|
||||||
qtest_add_func("acpi/microvm/usb", test_acpi_microvm_usb_tcg);
|
qtest_add_func("acpi/q35/ivrs", test_acpi_q35_tcg_ivrs);
|
||||||
qtest_add_func("acpi/microvm/rtc", test_acpi_microvm_rtc_tcg);
|
}
|
||||||
qtest_add_func("acpi/microvm/ioapic2", test_acpi_microvm_ioapic2_tcg);
|
if (has_kvm) {
|
||||||
qtest_add_func("acpi/microvm/oem-fields", test_acpi_oem_fields_microvm);
|
qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
|
||||||
if (has_tcg) {
|
qtest_add_func("acpi/q35/kvm/dmar", test_acpi_q35_kvm_dmar);
|
||||||
qtest_add_func("acpi/q35/ivrs", test_acpi_q35_tcg_ivrs);
|
}
|
||||||
if (strcmp(arch, "x86_64") == 0) {
|
qtest_add_func("acpi/q35/viot", test_acpi_q35_viot);
|
||||||
qtest_add_func("acpi/microvm/pcie", test_acpi_microvm_pcie_tcg);
|
|
||||||
#ifdef CONFIG_POSIX
|
#ifdef CONFIG_POSIX
|
||||||
qtest_add_func("acpi/microvm/acpierst", test_acpi_microvm_acpi_erst);
|
qtest_add_func("acpi/q35/cxl", test_acpi_q35_cxl);
|
||||||
#endif
|
#endif
|
||||||
|
qtest_add_func("acpi/q35/slic", test_acpi_q35_slic);
|
||||||
|
}
|
||||||
|
if (qtest_has_machine("microvm")) {
|
||||||
|
qtest_add_func("acpi/microvm", test_acpi_microvm_tcg);
|
||||||
|
qtest_add_func("acpi/microvm/usb", test_acpi_microvm_usb_tcg);
|
||||||
|
qtest_add_func("acpi/microvm/rtc", test_acpi_microvm_rtc_tcg);
|
||||||
|
qtest_add_func("acpi/microvm/ioapic2",
|
||||||
|
test_acpi_microvm_ioapic2_tcg);
|
||||||
|
qtest_add_func("acpi/microvm/oem-fields",
|
||||||
|
test_acpi_microvm_oem_fields);
|
||||||
|
if (has_tcg) {
|
||||||
|
if (strcmp(arch, "x86_64") == 0) {
|
||||||
|
qtest_add_func("acpi/microvm/pcie",
|
||||||
|
test_acpi_microvm_pcie_tcg);
|
||||||
|
#ifdef CONFIG_POSIX
|
||||||
|
qtest_add_func("acpi/microvm/acpierst",
|
||||||
|
test_acpi_microvm_acpi_erst);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (has_kvm) {
|
|
||||||
qtest_add_func("acpi/q35/kvm/xapic", test_acpi_q35_kvm_xapic);
|
|
||||||
qtest_add_func("acpi/q35/kvm/dmar", test_acpi_q35_kvm_dmar);
|
|
||||||
}
|
|
||||||
qtest_add_func("acpi/q35/viot", test_acpi_q35_viot);
|
|
||||||
#ifdef CONFIG_POSIX
|
|
||||||
qtest_add_func("acpi/q35/cxl", test_acpi_q35_cxl);
|
|
||||||
#endif
|
|
||||||
qtest_add_func("acpi/q35/slic", test_acpi_q35_slic);
|
|
||||||
} else if (strcmp(arch, "aarch64") == 0) {
|
} else if (strcmp(arch, "aarch64") == 0) {
|
||||||
if (has_tcg) {
|
if (has_tcg) {
|
||||||
qtest_add_func("acpi/virt", test_acpi_virt_tcg);
|
qtest_add_func("acpi/virt", test_acpi_virt_tcg);
|
||||||
qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
|
qtest_add_func("acpi/virt/numamem", test_acpi_virt_tcg_numamem);
|
||||||
qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp);
|
qtest_add_func("acpi/virt/memhp", test_acpi_virt_tcg_memhp);
|
||||||
qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb);
|
qtest_add_func("acpi/virt/pxb", test_acpi_virt_tcg_pxb);
|
||||||
qtest_add_func("acpi/virt/oem-fields", test_acpi_oem_fields_virt);
|
qtest_add_func("acpi/virt/oem-fields", test_acpi_virt_oem_fields);
|
||||||
qtest_add_func("acpi/virt/viot", test_acpi_virt_viot);
|
qtest_add_func("acpi/virt/viot", test_acpi_virt_viot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,7 +35,7 @@ static void *e1000_get_driver(void *obj, const char *interface)
|
||||||
return &e1000->dev;
|
return &e1000->dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "%s not present in e1000e\n", interface);
|
fprintf(stderr, "%s not present in e1000\n", interface);
|
||||||
g_assert_not_reached();
|
g_assert_not_reached();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ static void *es1370_get_driver(void *obj, const char *interface)
|
||||||
return &es1370->dev;
|
return &es1370->dev;
|
||||||
}
|
}
|
||||||
|
|
||||||
fprintf(stderr, "%s not present in e1000e\n", interface);
|
fprintf(stderr, "%s not present in es1370\n", interface);
|
||||||
g_assert_not_reached();
|
g_assert_not_reached();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@ static void test_lsi_do_msgout_cancel_req(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
s = qtest_init("-M q35 -m 4G -display none -nodefaults "
|
s = qtest_init("-M q35 -m 2G -display none -nodefaults "
|
||||||
"-device lsi53c895a,id=scsi "
|
"-device lsi53c895a,id=scsi "
|
||||||
"-device scsi-hd,drive=disk0 "
|
"-device scsi-hd,drive=disk0 "
|
||||||
"-drive file=null-co://,id=disk0,if=none,format=raw");
|
"-drive file=null-co://,id=disk0,if=none,format=raw");
|
||||||
|
|
|
@ -57,9 +57,13 @@ int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
g_test_init(&argc, &argv, NULL);
|
g_test_init(&argc, &argv, NULL);
|
||||||
|
|
||||||
qtest_add_func("fuzz/test_fuzz_sb16/1c", test_fuzz_sb16_0x1c);
|
if (qtest_has_machine("q35")) {
|
||||||
qtest_add_func("fuzz/test_fuzz_sb16/91", test_fuzz_sb16_0x91);
|
qtest_add_func("fuzz/test_fuzz_sb16/1c", test_fuzz_sb16_0x1c);
|
||||||
qtest_add_func("fuzz/test_fuzz_sb16/d4", test_fuzz_sb16_0xd4);
|
}
|
||||||
|
if (qtest_has_machine("pc")) {
|
||||||
|
qtest_add_func("fuzz/test_fuzz_sb16/91", test_fuzz_sb16_0x91);
|
||||||
|
qtest_add_func("fuzz/test_fuzz_sb16/d4", test_fuzz_sb16_0xd4);
|
||||||
|
}
|
||||||
|
|
||||||
return g_test_run();
|
return g_test_run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
/* Tests only initialization so far. TODO: Replace with functional tests */
|
/* Tests only initialization so far. TODO: Replace with functional tests */
|
||||||
static void ich6_test(void)
|
static void ich6_test(void)
|
||||||
{
|
{
|
||||||
qtest_start("-device intel-hda,id=" HDA_ID CODEC_DEVICES);
|
qtest_start("-machine pc -device intel-hda,id=" HDA_ID CODEC_DEVICES);
|
||||||
qtest_end();
|
qtest_end();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,9 +65,12 @@ static void test_issue542_ich6(void)
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
g_test_init(&argc, &argv, NULL);
|
g_test_init(&argc, &argv, NULL);
|
||||||
qtest_add_func("/intel-hda/ich6", ich6_test);
|
if (qtest_has_machine("pc")) {
|
||||||
qtest_add_func("/intel-hda/ich9", ich9_test);
|
qtest_add_func("/intel-hda/ich6", ich6_test);
|
||||||
qtest_add_func("/intel-hda/fuzz/issue542", test_issue542_ich6);
|
}
|
||||||
|
if (qtest_has_machine("q35")) {
|
||||||
|
qtest_add_func("/intel-hda/ich9", ich9_test);
|
||||||
|
qtest_add_func("/intel-hda/fuzz/issue542", test_issue542_ich6);
|
||||||
|
}
|
||||||
return g_test_run();
|
return g_test_run();
|
||||||
}
|
}
|
||||||
|
|
|
@ -381,7 +381,8 @@ static void test_init(gconstpointer test_data)
|
||||||
|
|
||||||
#undef CHECK_REG
|
#undef CHECK_REG
|
||||||
|
|
||||||
for (i = 0; i < NUM_CAMML_REGS; ++i) {
|
/* Skip over the MAC address registers, which is BASE+0 */
|
||||||
|
for (i = 1; i < NUM_CAMML_REGS; ++i) {
|
||||||
g_assert_cmpuint(emc_read(qts, mod, REG_CAMM_BASE + i * 2), ==,
|
g_assert_cmpuint(emc_read(qts, mod, REG_CAMM_BASE + i * 2), ==,
|
||||||
0);
|
0);
|
||||||
g_assert_cmpuint(emc_read(qts, mod, REG_CAML_BASE + i * 2), ==,
|
g_assert_cmpuint(emc_read(qts, mod, REG_CAML_BASE + i * 2), ==,
|
||||||
|
|
|
@ -41,7 +41,8 @@ static void test_io_channel_command_fifo(bool async)
|
||||||
|
|
||||||
unlink(TEST_FIFO);
|
unlink(TEST_FIFO);
|
||||||
if (access("/bin/socat", X_OK) < 0) {
|
if (access("/bin/socat", X_OK) < 0) {
|
||||||
return; /* Pretend success if socat is not present */
|
g_test_skip("socat is missing");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
if (mkfifo(TEST_FIFO, 0600) < 0) {
|
if (mkfifo(TEST_FIFO, 0600) < 0) {
|
||||||
abort();
|
abort();
|
||||||
|
|
|
@ -730,7 +730,7 @@ static void test_qga_config(gconstpointer data)
|
||||||
g_assert_true(g_key_file_get_boolean(kf, "general", "verbose", &error));
|
g_assert_true(g_key_file_get_boolean(kf, "general", "verbose", &error));
|
||||||
g_assert_no_error(error);
|
g_assert_no_error(error);
|
||||||
|
|
||||||
strv = g_key_file_get_string_list(kf, "general", "blacklist", &n, &error);
|
strv = g_key_file_get_string_list(kf, "general", "block-rpcs", &n, &error);
|
||||||
g_assert_cmpint(n, ==, 2);
|
g_assert_cmpint(n, ==, 2);
|
||||||
g_assert_true(g_strv_contains((const char * const *)strv,
|
g_assert_true(g_strv_contains((const char * const *)strv,
|
||||||
"guest-ping"));
|
"guest-ping"));
|
||||||
|
|
|
@ -22,8 +22,8 @@ class NetBSDVM(basevm.BaseVM):
|
||||||
name = "netbsd"
|
name = "netbsd"
|
||||||
arch = "x86_64"
|
arch = "x86_64"
|
||||||
|
|
||||||
link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.2/images/NetBSD-9.2-amd64.iso"
|
link = "https://cdn.netbsd.org/pub/NetBSD/NetBSD-9.3/images/NetBSD-9.3-amd64.iso"
|
||||||
csum = "5ee0ea101f73386b9b424f5d1041e371db3c42fdd6f4e4518dc79c4a08f31d43091ebe93425c9f0dcaaed2b51131836fe6774f33f89030b58d64709b35fda72f"
|
csum = "2bfce544f762a579f61478e7106c436fc48731ff25cf6f79b392ba5752e6f5ec130364286f7471716290a5f033637cf56aacee7fedb91095face59adf36300c3"
|
||||||
size = "20G"
|
size = "20G"
|
||||||
pkgs = [
|
pkgs = [
|
||||||
# tools
|
# tools
|
||||||
|
|
Loading…
Reference in New Issue