Compare commits
109 Commits
v9.1.2
...
factory-tm
| Author | SHA1 | Date | |
|---|---|---|---|
| 7ad0d77979 | |||
| e8e25372e6 | |||
|
|
ac7c1fdf34 | ||
|
|
1a628f8432 | ||
|
|
13967c6f55 | ||
|
|
aca3bd489a | ||
|
|
85080b2e16 | ||
|
|
0217be221c | ||
| b0b6a79d59 | |||
|
|
c7d5ffda99 | ||
|
|
ce16801b98 | ||
| 7144e917d1 | |||
| 443e6b83fa | |||
| c8b89351de | |||
| 421ac7010a | |||
| 1f17ae756c | |||
|
|
fc39803e2e | ||
| 350a2257cf | |||
|
|
705797b274 | ||
|
|
03f0034809 | ||
|
|
4f8790600f | ||
|
|
1e2df3292c | ||
|
|
09fdc8d134 | ||
|
|
371d8a34ae | ||
|
|
91a5f8f76a | ||
|
|
fdbc2893bb | ||
|
|
b40443987c | ||
|
|
32f99eb3e9 | ||
|
|
9d1f67bbdb | ||
|
|
8f54a3aa8c | ||
|
|
63d05c5a42 | ||
|
|
23908f14c1 | ||
| 8bd1d20c9b | |||
|
|
e8bb983199 | ||
| 8f967fe55e | |||
| a01ddbc9e0 | |||
| 1481f28d89 | |||
| 480693258f | |||
| 834d2d4c05 | |||
| a64556e38c | |||
| 92cf0ae853 | |||
| 3731806241 | |||
| c9792dcd74 | |||
| 1d22b6bc08 | |||
| f380930e9e | |||
| d15ef6f72c | |||
| 0160de78fb | |||
| 5b6925ac05 | |||
| e4efa4ddf7 | |||
| f36095dfa6 | |||
| f9fdfcda3b | |||
| 9622249e5b | |||
| 5e3acdbfa4 | |||
|
|
3754a7fae9 | ||
| 1c6fb71448 | |||
| c34695e9fb | |||
| b42de2c98f | |||
| 7fe1b9a5ad | |||
|
|
9cc8211888 | ||
| 7648b7f665 | |||
| 9ea703addb | |||
| 9ec0676a96 | |||
| 825592ee80 | |||
| 2b7d0f07dc | |||
| 5fcdd58fe5 | |||
| 4753112f89 | |||
| 90ec2d8b05 | |||
| 915f48622e | |||
| c517c048a4 | |||
| e3440e36d7 | |||
| 105d383cbd | |||
| 7041d5a121 | |||
| 1091bcea05 | |||
| 0f684400ef | |||
| c47785f6bc | |||
| 3e65ad9c74 | |||
| 8720f92bab | |||
| e24ff3c060 | |||
| 3d21afd70f | |||
|
|
db189a9d6e | ||
| c7ec9cd53c | |||
| 32fb7be05e | |||
| b108923004 | |||
|
|
0cc0e05df5 | ||
|
|
4fc85385be | ||
| f1033a3e85 | |||
|
|
4f99b75e44 | ||
|
|
4d369602c4 | ||
| c1ed1ba2b7 | |||
|
|
a78310b9c0 | ||
|
|
4ced9070d0 | ||
| f0f33df812 | |||
|
|
823e2ad1f5 | ||
|
|
09e310e275 | ||
|
|
2588a9e594 | ||
|
|
57ed110b45 | ||
|
|
70fab7666b | ||
|
|
3905fdd0ba | ||
|
|
bd5cf804db | ||
|
|
208278c6d0 | ||
|
|
3abc9aea1b | ||
|
|
51852f6f7f | ||
|
|
92d6df091f | ||
|
|
60b4d7832a | ||
| 82d41ac427 | |||
| 886c28843c | |||
| 42252234aa | |||
| 933b8f614e | |||
| 332d530522 |
27
.gitmodules
vendored
27
.gitmodules
vendored
@@ -1,12 +1,12 @@
|
||||
[submodule "roms/seabios"]
|
||||
path = roms/seabios
|
||||
url = https://gitlab.com/qemu-project/seabios.git/
|
||||
url = https://github.com/openSUSE/qemu-seabios.git
|
||||
[submodule "roms/SLOF"]
|
||||
path = roms/SLOF
|
||||
url = https://gitlab.com/qemu-project/SLOF.git
|
||||
url = https://github.com/openSUSE/qemu-SLOF.git
|
||||
[submodule "roms/ipxe"]
|
||||
path = roms/ipxe
|
||||
url = https://gitlab.com/qemu-project/ipxe.git
|
||||
url = https://github.com/openSUSE/qemu-ipxe.git
|
||||
[submodule "roms/openbios"]
|
||||
path = roms/openbios
|
||||
url = https://gitlab.com/qemu-project/openbios.git
|
||||
@@ -18,7 +18,7 @@
|
||||
url = https://gitlab.com/qemu-project/u-boot.git
|
||||
[submodule "roms/skiboot"]
|
||||
path = roms/skiboot
|
||||
url = https://gitlab.com/qemu-project/skiboot.git
|
||||
url = https://github.com/openSUSE/qemu-skiboot.git
|
||||
[submodule "roms/QemuMacDrivers"]
|
||||
path = roms/QemuMacDrivers
|
||||
url = https://gitlab.com/qemu-project/QemuMacDrivers.git
|
||||
@@ -30,16 +30,31 @@
|
||||
url = https://gitlab.com/qemu-project/u-boot-sam460ex.git
|
||||
[submodule "roms/edk2"]
|
||||
path = roms/edk2
|
||||
url = https://gitlab.com/qemu-project/edk2.git
|
||||
url = https://github.com/openSUSE/qemu-edk2.git
|
||||
[submodule "roms/opensbi"]
|
||||
path = roms/opensbi
|
||||
url = https://gitlab.com/qemu-project/opensbi.git
|
||||
[submodule "roms/qboot"]
|
||||
path = roms/qboot
|
||||
url = https://gitlab.com/qemu-project/qboot.git
|
||||
url = https://github.com/openSUSE/qemu-qboot.git
|
||||
[submodule "roms/vbootrom"]
|
||||
path = roms/vbootrom
|
||||
url = https://gitlab.com/qemu-project/vbootrom.git
|
||||
[submodule "tests/lcitool/libvirt-ci"]
|
||||
path = tests/lcitool/libvirt-ci
|
||||
url = https://gitlab.com/libvirt/libvirt-ci.git
|
||||
[submodule "subprojects/berkeley-softfloat-3"]
|
||||
path = subprojects/berkeley-softfloat-3
|
||||
url = https://gitlab.com/qemu-project/berkeley-softfloat-3
|
||||
[submodule "subprojects/berkeley-testfloat-3"]
|
||||
path = subprojects/berkeley-testfloat-3
|
||||
url = https://gitlab.com/qemu-project/berkeley-testfloat-3
|
||||
[submodule "subprojects/dtc"]
|
||||
path = subprojects/dtc
|
||||
url = https://gitlab.com/qemu-project/dtc.git
|
||||
[submodule "subprojects/libvfio-user"]
|
||||
path = subprojects/libvfio-user
|
||||
url = https://gitlab.com/qemu-project/libvfio-user.git
|
||||
[submodule "subprojects/keycodemapdb"]
|
||||
path = subprojects/keycodemapdb
|
||||
url = https://gitlab.com/qemu-project/keycodemapdb.git
|
||||
|
||||
47
.obs/workflows.yml
Normal file
47
.obs/workflows.yml
Normal file
@@ -0,0 +1,47 @@
|
||||
pr_factory:
|
||||
steps:
|
||||
- branch_package:
|
||||
source_project: Virtualization:Staging
|
||||
source_package: qemu
|
||||
target_project: Virtualization:Staging:PRs
|
||||
filters:
|
||||
event: pull_request
|
||||
branches:
|
||||
only:
|
||||
- factory
|
||||
|
||||
rebuild_factory:
|
||||
steps:
|
||||
# Will automatically rebuild the package
|
||||
- trigger_services:
|
||||
project: Virtualization:Staging
|
||||
package: qemu
|
||||
filters:
|
||||
event: push
|
||||
branches:
|
||||
only:
|
||||
- factory
|
||||
|
||||
pr_staging_tdx:
|
||||
steps:
|
||||
- branch_package:
|
||||
source_project: Virtualization:Staging:TDX
|
||||
source_package: qemu
|
||||
target_project: Virtualization:Staging:TDX:PRs
|
||||
filters:
|
||||
event: pull_request
|
||||
branches:
|
||||
only:
|
||||
- v8.2.6-tdx
|
||||
|
||||
rebuild_staging_tdx:
|
||||
steps:
|
||||
# Will automatically rebuild the package
|
||||
- trigger_services:
|
||||
project: Virtualization:Staging:TDX
|
||||
package: qemu
|
||||
filters:
|
||||
event: push
|
||||
branches:
|
||||
only:
|
||||
- v8.2.6-tdx
|
||||
@@ -2603,7 +2603,7 @@ static int kvm_init(MachineState *ms)
|
||||
}
|
||||
|
||||
kvm_readonly_mem_allowed =
|
||||
(kvm_check_extension(s, KVM_CAP_READONLY_MEM) > 0);
|
||||
(kvm_vm_check_extension(s, KVM_CAP_READONLY_MEM) > 0);
|
||||
|
||||
kvm_resamplefds_allowed =
|
||||
(kvm_check_extension(s, KVM_CAP_IRQFD_RESAMPLE) > 0);
|
||||
|
||||
9
block.c
9
block.c
@@ -1296,6 +1296,7 @@ static void GRAPH_WRLOCK bdrv_backing_attach(BdrvChild *c)
|
||||
parent->backing_blocker);
|
||||
bdrv_op_unblock(backing_hd, BLOCK_OP_TYPE_BACKUP_TARGET,
|
||||
parent->backing_blocker);
|
||||
bdrv_op_unblock(backing_hd, BLOCK_OP_TYPE_INFO, parent->backing_blocker);
|
||||
}
|
||||
|
||||
static void bdrv_backing_detach(BdrvChild *c)
|
||||
@@ -6227,18 +6228,18 @@ BlockDriverState *bdrv_find_node(const char *node_name)
|
||||
}
|
||||
|
||||
/* Put this QMP function here so it can access the static graph_bdrv_states. */
|
||||
BlockDeviceInfoList *bdrv_named_nodes_list(bool flat,
|
||||
Error **errp)
|
||||
BlockDeviceInfoList *coroutine_fn bdrv_co_named_nodes_list(bool flat,
|
||||
Error **errp)
|
||||
{
|
||||
BlockDeviceInfoList *list;
|
||||
BlockDriverState *bs;
|
||||
|
||||
GLOBAL_STATE_CODE();
|
||||
GRAPH_RDLOCK_GUARD_MAINLOOP();
|
||||
GRAPH_RDLOCK_GUARD();
|
||||
|
||||
list = NULL;
|
||||
QTAILQ_FOREACH(bs, &graph_bdrv_states, node_list) {
|
||||
BlockDeviceInfo *info = bdrv_block_device_info(NULL, bs, flat, errp);
|
||||
BlockDeviceInfo *info = bdrv_co_block_device_info(NULL, bs, flat, errp);
|
||||
if (!info) {
|
||||
qapi_free_BlockDeviceInfoList(list);
|
||||
return NULL;
|
||||
|
||||
@@ -227,6 +227,9 @@ typedef struct RawPosixAIOData {
|
||||
struct {
|
||||
unsigned long op;
|
||||
} zone_mgmt;
|
||||
struct {
|
||||
struct stat *st;
|
||||
} fstat;
|
||||
};
|
||||
} RawPosixAIOData;
|
||||
|
||||
@@ -2624,6 +2627,34 @@ static void raw_close(BlockDriverState *bs)
|
||||
}
|
||||
}
|
||||
|
||||
static int handle_aiocb_fstat(void *opaque)
|
||||
{
|
||||
RawPosixAIOData *aiocb = opaque;
|
||||
|
||||
if (fstat(aiocb->aio_fildes, aiocb->fstat.st) < 0) {
|
||||
return -errno;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int coroutine_fn raw_co_fstat(BlockDriverState *bs, struct stat *st)
|
||||
{
|
||||
BDRVRawState *s = bs->opaque;
|
||||
RawPosixAIOData acb;
|
||||
|
||||
acb = (RawPosixAIOData) {
|
||||
.bs = bs,
|
||||
.aio_fildes = s->fd,
|
||||
.aio_type = QEMU_AIO_FSTAT,
|
||||
.fstat = {
|
||||
.st = st,
|
||||
},
|
||||
};
|
||||
|
||||
return raw_thread_pool_submit(handle_aiocb_fstat, &acb);
|
||||
}
|
||||
|
||||
/**
|
||||
* Truncates the given regular file @fd to @offset and, when growing, fills the
|
||||
* new space according to @prealloc.
|
||||
@@ -2868,11 +2899,14 @@ static int64_t coroutine_fn raw_co_getlength(BlockDriverState *bs)
|
||||
static int64_t coroutine_fn raw_co_get_allocated_file_size(BlockDriverState *bs)
|
||||
{
|
||||
struct stat st;
|
||||
BDRVRawState *s = bs->opaque;
|
||||
int ret;
|
||||
|
||||
if (fstat(s->fd, &st) < 0) {
|
||||
return -errno;
|
||||
ret = raw_co_fstat(bs, &st);
|
||||
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
return (int64_t)st.st_blocks * 512;
|
||||
}
|
||||
|
||||
|
||||
@@ -154,6 +154,7 @@ block_gen_c = custom_target('block-gen.c',
|
||||
'../include/block/dirty-bitmap.h',
|
||||
'../include/block/block_int-io.h',
|
||||
'../include/block/block-global-state.h',
|
||||
'../include/block/qapi.h',
|
||||
'../include/sysemu/block-backend-global-state.h',
|
||||
'../include/sysemu/block-backend-io.h',
|
||||
'coroutines.h'
|
||||
|
||||
@@ -1196,6 +1196,7 @@ static void mirror_complete(Job *job, Error **errp)
|
||||
error_setg(&s->replace_blocker,
|
||||
"block device is in use by block-job-complete");
|
||||
bdrv_op_block_all(s->to_replace, s->replace_blocker);
|
||||
bdrv_op_unblock(s->to_replace, BLOCK_OP_TYPE_INFO, s->replace_blocker);
|
||||
bdrv_ref(s->to_replace);
|
||||
}
|
||||
|
||||
|
||||
@@ -387,10 +387,12 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *qdict)
|
||||
bool writable = qdict_get_try_bool(qdict, "writable", false);
|
||||
bool all = qdict_get_try_bool(qdict, "all", false);
|
||||
Error *local_err = NULL;
|
||||
BlockInfoList *block_list, *info;
|
||||
BlockBackend *blk;
|
||||
SocketAddress *addr;
|
||||
NbdServerAddOptions export;
|
||||
|
||||
GRAPH_RDLOCK_GUARD_MAINLOOP();
|
||||
|
||||
if (writable && !all) {
|
||||
error_setg(&local_err, "-w only valid together with -a");
|
||||
goto exit;
|
||||
@@ -416,29 +418,43 @@ void hmp_nbd_server_start(Monitor *mon, const QDict *qdict)
|
||||
/* Then try adding all block devices. If one fails, close all and
|
||||
* exit.
|
||||
*/
|
||||
block_list = qmp_query_block(NULL);
|
||||
for (blk = blk_all_next(NULL); blk; blk = blk_all_next(blk)) {
|
||||
BlockDriverState *bs = blk_bs(blk);
|
||||
|
||||
for (info = block_list; info; info = info->next) {
|
||||
if (!info->value->inserted) {
|
||||
if (!*blk_name(blk)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
/*
|
||||
* Note: historically we used to call qmp_query_block() to get
|
||||
* the list of block devices. The two 'continue' cases below
|
||||
* are the same as used by that function and are here to
|
||||
* preserve behavior.
|
||||
*/
|
||||
|
||||
if (!blk_get_attached_dev(blk)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
bs = bdrv_skip_implicit_filters(bs);
|
||||
if (!bs || !bs->drv) {
|
||||
continue;
|
||||
}
|
||||
|
||||
export = (NbdServerAddOptions) {
|
||||
.device = info->value->device,
|
||||
.device = g_strdup(blk_name(blk)),
|
||||
.has_writable = true,
|
||||
.writable = writable,
|
||||
};
|
||||
|
||||
qmp_nbd_server_add(&export, &local_err);
|
||||
|
||||
g_free(export.device);
|
||||
if (local_err != NULL) {
|
||||
qmp_nbd_server_stop(NULL);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
qapi_free_BlockInfoList(block_list);
|
||||
|
||||
exit:
|
||||
hmp_handle_error(mon, local_err);
|
||||
}
|
||||
@@ -723,7 +739,7 @@ static void print_block_info(Monitor *mon, BlockInfo *info,
|
||||
}
|
||||
}
|
||||
|
||||
void hmp_info_block(Monitor *mon, const QDict *qdict)
|
||||
void coroutine_fn hmp_info_block(Monitor *mon, const QDict *qdict)
|
||||
{
|
||||
BlockInfoList *block_list, *info;
|
||||
BlockDeviceInfoList *blockdev_list, *blockdev;
|
||||
|
||||
63
block/qapi.c
63
block/qapi.c
@@ -41,10 +41,10 @@
|
||||
#include "qemu/qemu-print.h"
|
||||
#include "sysemu/block-backend.h"
|
||||
|
||||
BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
|
||||
BlockDriverState *bs,
|
||||
bool flat,
|
||||
Error **errp)
|
||||
BlockDeviceInfo *coroutine_fn bdrv_co_block_device_info(BlockBackend *blk,
|
||||
BlockDriverState *bs,
|
||||
bool flat,
|
||||
Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
ImageInfo **p_image_info;
|
||||
@@ -152,7 +152,7 @@ BlockDeviceInfo *bdrv_block_device_info(BlockBackend *blk,
|
||||
* Skip automatically inserted nodes that the user isn't aware of for
|
||||
* query-block (blk != NULL), but not for query-named-block-nodes
|
||||
*/
|
||||
bdrv_query_image_info(bs, p_image_info, flat, blk != NULL, errp);
|
||||
bdrv_co_query_image_info(bs, p_image_info, flat, blk != NULL, errp);
|
||||
if (*errp) {
|
||||
qapi_free_BlockDeviceInfo(info);
|
||||
return NULL;
|
||||
@@ -225,8 +225,9 @@ int bdrv_query_snapshot_info_list(BlockDriverState *bs,
|
||||
* Helper function for other query info functions. Store information about @bs
|
||||
* in @info, setting @errp on error.
|
||||
*/
|
||||
static void GRAPH_RDLOCK
|
||||
bdrv_do_query_node_info(BlockDriverState *bs, BlockNodeInfo *info, Error **errp)
|
||||
void coroutine_fn
|
||||
bdrv_co_do_query_node_info(BlockDriverState *bs, BlockNodeInfo *info,
|
||||
Error **errp)
|
||||
{
|
||||
int64_t size;
|
||||
const char *backing_filename;
|
||||
@@ -234,7 +235,7 @@ bdrv_do_query_node_info(BlockDriverState *bs, BlockNodeInfo *info, Error **errp)
|
||||
int ret;
|
||||
Error *err = NULL;
|
||||
|
||||
size = bdrv_getlength(bs);
|
||||
size = bdrv_co_getlength(bs);
|
||||
if (size < 0) {
|
||||
error_setg_errno(errp, -size, "Can't get image size '%s'",
|
||||
bs->exact_filename);
|
||||
@@ -246,13 +247,13 @@ bdrv_do_query_node_info(BlockDriverState *bs, BlockNodeInfo *info, Error **errp)
|
||||
info->filename = g_strdup(bs->filename);
|
||||
info->format = g_strdup(bdrv_get_format_name(bs));
|
||||
info->virtual_size = size;
|
||||
info->actual_size = bdrv_get_allocated_file_size(bs);
|
||||
info->actual_size = bdrv_co_get_allocated_file_size(bs);
|
||||
info->has_actual_size = info->actual_size >= 0;
|
||||
if (bs->encrypted) {
|
||||
info->encrypted = true;
|
||||
info->has_encrypted = true;
|
||||
}
|
||||
if (bdrv_get_info(bs, &bdi) >= 0) {
|
||||
if (bdrv_co_get_info(bs, &bdi) >= 0) {
|
||||
if (bdi.cluster_size != 0) {
|
||||
info->cluster_size = bdi.cluster_size;
|
||||
info->has_cluster_size = true;
|
||||
@@ -303,7 +304,7 @@ bdrv_do_query_node_info(BlockDriverState *bs, BlockNodeInfo *info, Error **errp)
|
||||
}
|
||||
|
||||
/**
|
||||
* bdrv_query_image_info:
|
||||
* bdrv_co_query_image_info:
|
||||
* @bs: block node to examine
|
||||
* @p_info: location to store image information
|
||||
* @flat: skip backing node information
|
||||
@@ -324,17 +325,15 @@ bdrv_do_query_node_info(BlockDriverState *bs, BlockNodeInfo *info, Error **errp)
|
||||
*
|
||||
* @p_info will be set only on success. On error, store error in @errp.
|
||||
*/
|
||||
void bdrv_query_image_info(BlockDriverState *bs,
|
||||
ImageInfo **p_info,
|
||||
bool flat,
|
||||
bool skip_implicit_filters,
|
||||
Error **errp)
|
||||
void coroutine_fn
|
||||
bdrv_co_query_image_info(BlockDriverState *bs, ImageInfo **p_info, bool flat,
|
||||
bool skip_implicit_filters, Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
ImageInfo *info;
|
||||
|
||||
info = g_new0(ImageInfo, 1);
|
||||
bdrv_do_query_node_info(bs, qapi_ImageInfo_base(info), errp);
|
||||
bdrv_co_do_query_node_info(bs, qapi_ImageInfo_base(info), errp);
|
||||
if (*errp) {
|
||||
goto fail;
|
||||
}
|
||||
@@ -352,8 +351,8 @@ void bdrv_query_image_info(BlockDriverState *bs,
|
||||
}
|
||||
|
||||
if (backing) {
|
||||
bdrv_query_image_info(backing, &info->backing_image, false,
|
||||
skip_implicit_filters, errp);
|
||||
bdrv_co_query_image_info(backing, &info->backing_image, false,
|
||||
skip_implicit_filters, errp);
|
||||
if (*errp) {
|
||||
goto fail;
|
||||
}
|
||||
@@ -369,7 +368,7 @@ fail:
|
||||
}
|
||||
|
||||
/**
|
||||
* bdrv_query_block_graph_info:
|
||||
* bdrv_co_query_block_graph_info:
|
||||
* @bs: root node to start from
|
||||
* @p_info: location to store image information
|
||||
* @errp: location to store error information
|
||||
@@ -378,17 +377,19 @@ fail:
|
||||
*
|
||||
* @p_info will be set only on success. On error, store error in @errp.
|
||||
*/
|
||||
void bdrv_query_block_graph_info(BlockDriverState *bs,
|
||||
BlockGraphInfo **p_info,
|
||||
Error **errp)
|
||||
void coroutine_fn
|
||||
bdrv_co_query_block_graph_info(BlockDriverState *bs, BlockGraphInfo **p_info,
|
||||
Error **errp)
|
||||
{
|
||||
ERRP_GUARD();
|
||||
BlockGraphInfo *info;
|
||||
BlockChildInfoList **children_list_tail;
|
||||
BdrvChild *c;
|
||||
|
||||
assert_bdrv_graph_readable();
|
||||
|
||||
info = g_new0(BlockGraphInfo, 1);
|
||||
bdrv_do_query_node_info(bs, qapi_BlockGraphInfo_base(info), errp);
|
||||
bdrv_co_do_query_node_info(bs, qapi_BlockGraphInfo_base(info), errp);
|
||||
if (*errp) {
|
||||
goto fail;
|
||||
}
|
||||
@@ -402,7 +403,7 @@ void bdrv_query_block_graph_info(BlockDriverState *bs,
|
||||
QAPI_LIST_APPEND(children_list_tail, c_info);
|
||||
|
||||
c_info->name = g_strdup(c->name);
|
||||
bdrv_query_block_graph_info(c->bs, &c_info->info, errp);
|
||||
bdrv_co_query_block_graph_info(c->bs, &c_info->info, errp);
|
||||
if (*errp) {
|
||||
goto fail;
|
||||
}
|
||||
@@ -417,8 +418,8 @@ fail:
|
||||
}
|
||||
|
||||
/* @p_info will be set only on success. */
|
||||
static void GRAPH_RDLOCK
|
||||
bdrv_query_info(BlockBackend *blk, BlockInfo **p_info, Error **errp)
|
||||
static void GRAPH_RDLOCK coroutine_fn
|
||||
bdrv_co_query_info(BlockBackend *blk, BlockInfo **p_info, Error **errp)
|
||||
{
|
||||
BlockInfo *info = g_malloc0(sizeof(*info));
|
||||
BlockDriverState *bs = blk_bs(blk);
|
||||
@@ -450,7 +451,7 @@ bdrv_query_info(BlockBackend *blk, BlockInfo **p_info, Error **errp)
|
||||
}
|
||||
|
||||
if (bs && bs->drv) {
|
||||
info->inserted = bdrv_block_device_info(blk, bs, false, errp);
|
||||
info->inserted = bdrv_co_block_device_info(blk, bs, false, errp);
|
||||
if (info->inserted == NULL) {
|
||||
goto err;
|
||||
}
|
||||
@@ -660,13 +661,13 @@ bdrv_query_bds_stats(BlockDriverState *bs, bool blk_level)
|
||||
return s;
|
||||
}
|
||||
|
||||
BlockInfoList *qmp_query_block(Error **errp)
|
||||
BlockInfoList *coroutine_fn qmp_query_block(Error **errp)
|
||||
{
|
||||
BlockInfoList *head = NULL, **p_next = &head;
|
||||
BlockBackend *blk;
|
||||
Error *local_err = NULL;
|
||||
|
||||
GRAPH_RDLOCK_GUARD_MAINLOOP();
|
||||
GRAPH_RDLOCK_GUARD();
|
||||
|
||||
for (blk = blk_all_next(NULL); blk; blk = blk_all_next(blk)) {
|
||||
BlockInfoList *info;
|
||||
@@ -676,7 +677,7 @@ BlockInfoList *qmp_query_block(Error **errp)
|
||||
}
|
||||
|
||||
info = g_malloc0(sizeof(*info));
|
||||
bdrv_query_info(blk, &info->value, &local_err);
|
||||
bdrv_co_query_info(blk, &info->value, &local_err);
|
||||
if (local_err) {
|
||||
error_propagate(errp, local_err);
|
||||
g_free(info);
|
||||
|
||||
@@ -2848,6 +2848,7 @@ qcow2_co_invalidate_cache(BlockDriverState *bs, Error **errp)
|
||||
BdrvChild *data_file;
|
||||
int flags = s->flags;
|
||||
QCryptoBlock *crypto = NULL;
|
||||
Error *blocker = NULL;
|
||||
QDict *options;
|
||||
int ret;
|
||||
|
||||
@@ -2859,6 +2860,17 @@ qcow2_co_invalidate_cache(BlockDriverState *bs, Error **errp)
|
||||
crypto = s->crypto;
|
||||
s->crypto = NULL;
|
||||
|
||||
/*
|
||||
* When qcow2_do_open() below reads the qcow header, it yields to
|
||||
* wait for the I/O which allows a concurrent QMP query-block
|
||||
* command to be dispatched on the same context before
|
||||
* BDRVQcow2State has been completely repopulated. Block the
|
||||
* query-info operation during this window to avoid having
|
||||
* qcow2_get_specific_info() access bogus values.
|
||||
*/
|
||||
error_setg(&blocker, "invalidating cached metadata");
|
||||
bdrv_op_block(bs, BLOCK_OP_TYPE_INFO, blocker);
|
||||
|
||||
/*
|
||||
* Do not reopen s->data_file (i.e., have qcow2_do_close() not close it,
|
||||
* and then prevent qcow2_do_open() from opening it), because this function
|
||||
@@ -2878,6 +2890,8 @@ qcow2_co_invalidate_cache(BlockDriverState *bs, Error **errp)
|
||||
qemu_co_mutex_lock(&s->lock);
|
||||
ret = qcow2_do_open(bs, options, flags, false, errp);
|
||||
qemu_co_mutex_unlock(&s->lock);
|
||||
bdrv_op_unblock(bs, BLOCK_OP_TYPE_INFO, blocker);
|
||||
g_free(blocker);
|
||||
qobject_unref(options);
|
||||
if (ret < 0) {
|
||||
error_prepend(errp, "Could not reopen qcow2 layer: ");
|
||||
@@ -5254,6 +5268,12 @@ qcow2_get_specific_info(BlockDriverState *bs, Error **errp)
|
||||
ImageInfoSpecific *spec_info;
|
||||
QCryptoBlockInfo *encrypt_info = NULL;
|
||||
|
||||
if (qemu_in_coroutine() &&
|
||||
bdrv_op_is_blocked(bs, BLOCK_OP_TYPE_INFO, errp)) {
|
||||
*errp = NULL;
|
||||
aio_co_reschedule_self(iohandler_get_aio_context());
|
||||
}
|
||||
|
||||
if (s->crypto != NULL) {
|
||||
encrypt_info = qcrypto_block_get_info(s->crypto, errp);
|
||||
if (!encrypt_info) {
|
||||
|
||||
@@ -577,6 +577,7 @@ static void replication_start(ReplicationState *rs, ReplicationMode mode,
|
||||
}
|
||||
bdrv_op_block_all(top_bs, s->blocker);
|
||||
bdrv_op_unblock(top_bs, BLOCK_OP_TYPE_DATAPLANE, s->blocker);
|
||||
bdrv_op_unblock(top_bs, BLOCK_OP_TYPE_INFO, s->blocker);
|
||||
|
||||
bdrv_graph_wrunlock();
|
||||
|
||||
|
||||
@@ -389,7 +389,7 @@ int bdrv_snapshot_list(BlockDriverState *bs,
|
||||
QEMUSnapshotInfo **psn_info)
|
||||
{
|
||||
GLOBAL_STATE_CODE();
|
||||
GRAPH_RDLOCK_GUARD_MAINLOOP();
|
||||
GRAPH_RDLOCK_GUARD();
|
||||
|
||||
BlockDriver *drv = bs->drv;
|
||||
BlockDriverState *fallback_bs = bdrv_snapshot_fallback(bs);
|
||||
|
||||
@@ -2746,13 +2746,13 @@ void qmp_drive_backup(DriveBackup *backup, Error **errp)
|
||||
blockdev_do_action(&action, errp);
|
||||
}
|
||||
|
||||
BlockDeviceInfoList *qmp_query_named_block_nodes(bool has_flat,
|
||||
bool flat,
|
||||
Error **errp)
|
||||
BlockDeviceInfoList *coroutine_fn qmp_query_named_block_nodes(bool has_flat,
|
||||
bool flat,
|
||||
Error **errp)
|
||||
{
|
||||
bool return_flat = has_flat && flat;
|
||||
|
||||
return bdrv_named_nodes_list(return_flat, errp);
|
||||
return bdrv_co_named_nodes_list(return_flat, errp);
|
||||
}
|
||||
|
||||
XDbgBlockGraph *qmp_x_debug_query_block_graph(Error **errp)
|
||||
|
||||
@@ -244,6 +244,7 @@ int block_job_add_bdrv(BlockJob *job, const char *name, BlockDriverState *bs,
|
||||
|
||||
job->nodes = g_slist_prepend(job->nodes, c);
|
||||
bdrv_op_block_all(bs, job->blocker);
|
||||
bdrv_op_unblock(bs, BLOCK_OP_TYPE_INFO, job->blocker);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qapi/error.h"
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/module.h"
|
||||
@@ -198,6 +199,17 @@ static void mux_chr_accept_input(Chardev *chr)
|
||||
be->chr_read(be->opaque,
|
||||
&d->buffer[m][d->cons[m]++ & MUX_BUFFER_MASK], 1);
|
||||
}
|
||||
|
||||
#if defined(TARGET_S390X)
|
||||
/*
|
||||
* We're still not able to sync producer and consumer, so let's wait a bit
|
||||
* and try again by then.
|
||||
*/
|
||||
if (d->prod[m] != d->cons[m]) {
|
||||
qemu_mod_timer(d->accept_timer, qemu_get_clock_ns(vm_clock)
|
||||
+ (int64_t)100000);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static int mux_chr_can_read(void *opaque)
|
||||
@@ -332,6 +344,10 @@ static void qemu_chr_open_mux(Chardev *chr,
|
||||
}
|
||||
|
||||
d->focus = -1;
|
||||
#if defined(TARGET_S390X)
|
||||
d->accept_timer = qemu_new_timer_ns(vm_clock,
|
||||
(QEMUTimerCB *)mux_chr_accept_input, chr);
|
||||
#endif
|
||||
/* only default to opened state if we've realized the initial
|
||||
* set of muxes
|
||||
*/
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/cutils.h"
|
||||
#include "monitor/monitor.h"
|
||||
|
||||
@@ -37,6 +37,9 @@ struct MuxChardev {
|
||||
Chardev parent;
|
||||
CharBackend *backends[MAX_MUX];
|
||||
CharBackend chr;
|
||||
#if defined(TARGET_S390X)
|
||||
QEMUTimer *accept_timer;
|
||||
#endif
|
||||
int focus;
|
||||
int mux_cnt;
|
||||
int term_got_escape;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
executable('ivshmem-client', files('ivshmem-client.c', 'main.c'), genh,
|
||||
dependencies: glib,
|
||||
build_by_default: host_os == 'linux',
|
||||
install: false)
|
||||
install: true)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
executable('ivshmem-server', files('ivshmem-server.c', 'main.c'), genh,
|
||||
dependencies: [qemuutil, rt],
|
||||
build_by_default: host_os == 'linux',
|
||||
install: false)
|
||||
install: true)
|
||||
|
||||
@@ -13,12 +13,12 @@ if sphinx_build.found()
|
||||
sphinx_version = run_command(SPHINX_ARGS + ['--version'],
|
||||
check: true).stdout().split()[1]
|
||||
if sphinx_version.version_compare('>=1.7.0')
|
||||
SPHINX_ARGS += ['-j', 'auto']
|
||||
SPHINX_ARGS += ['-j', '1']
|
||||
else
|
||||
nproc = find_program('nproc')
|
||||
if nproc.found()
|
||||
jobs = run_command(nproc, check: true).stdout()
|
||||
SPHINX_ARGS += ['-j', jobs]
|
||||
SPHINX_ARGS += ['-j', '1']
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ ERST
|
||||
.help = "show info of one block device or all block devices "
|
||||
"(-n: show named nodes; -v: show details)",
|
||||
.cmd = hmp_info_block,
|
||||
.coroutine = true,
|
||||
},
|
||||
|
||||
SRST
|
||||
|
||||
@@ -418,6 +418,9 @@ static void xen_block_realize(XenDevice *xendev, Error **errp)
|
||||
|
||||
xen_block_set_size(blockdev);
|
||||
|
||||
if (!monitor_add_blk(conf->blk, blockdev->drive->id, errp)) {
|
||||
return;
|
||||
}
|
||||
blockdev->dataplane =
|
||||
xen_block_dataplane_create(xendev, blk, conf->logical_block_size,
|
||||
blockdev->props.iothread);
|
||||
@@ -874,6 +877,8 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
|
||||
const char *mode = qdict_get_try_str(opts, "mode");
|
||||
const char *direct_io_safe = qdict_get_try_str(opts, "direct-io-safe");
|
||||
const char *discard_enable = qdict_get_try_str(opts, "discard-enable");
|
||||
const char *suse_diskcache_disable_flush = qdict_get_try_str(opts,
|
||||
"suse-diskcache-disable-flush");
|
||||
char *driver = NULL;
|
||||
char *filename = NULL;
|
||||
XenBlockDrive *drive = NULL;
|
||||
@@ -954,6 +959,16 @@ static XenBlockDrive *xen_block_drive_create(const char *id,
|
||||
}
|
||||
}
|
||||
|
||||
if (suse_diskcache_disable_flush) {
|
||||
unsigned long value;
|
||||
if (!qemu_strtoul(suse_diskcache_disable_flush, NULL, 2, &value) && !!value) {
|
||||
QDict *cache_qdict = qdict_new();
|
||||
|
||||
qdict_put_bool(cache_qdict, "no-flush", true);
|
||||
qdict_put_obj(file_layer, "cache", QOBJECT(cache_qdict));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* It is necessary to turn file locking off as an emulated device
|
||||
* may have already opened the same image file.
|
||||
|
||||
@@ -403,15 +403,9 @@ DEFINE_Q35_MACHINE(8, 1);
|
||||
|
||||
static void pc_q35_machine_8_0_options(MachineClass *m)
|
||||
{
|
||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||
|
||||
pc_q35_machine_8_1_options(m);
|
||||
compat_props_add(m->compat_props, hw_compat_8_0, hw_compat_8_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_8_0, pc_compat_8_0_len);
|
||||
|
||||
/* For pc-q35-8.0 and older, use SMBIOS 2.8 by default */
|
||||
pcmc->default_smbios_ep_type = SMBIOS_ENTRY_POINT_TYPE_32;
|
||||
m->max_cpus = 288;
|
||||
}
|
||||
|
||||
DEFINE_Q35_MACHINE(8, 0);
|
||||
@@ -441,6 +435,10 @@ static void pc_q35_machine_7_0_options(MachineClass *m)
|
||||
pcmc->enforce_amd_1tb_hole = false;
|
||||
compat_props_add(m->compat_props, hw_compat_7_0, hw_compat_7_0_len);
|
||||
compat_props_add(m->compat_props, pc_compat_7_0, pc_compat_7_0_len);
|
||||
|
||||
/* For pc-q35-7.0 and older, use SMBIOS 2.8 by default */
|
||||
pcmc->default_smbios_ep_type = SMBIOS_ENTRY_POINT_TYPE_32;
|
||||
m->max_cpus = 288;
|
||||
}
|
||||
|
||||
DEFINE_Q35_MACHINE(7, 0);
|
||||
|
||||
@@ -1928,7 +1928,7 @@ static void megasas_command_cancelled(SCSIRequest *req)
|
||||
{
|
||||
MegasasCmd *cmd = req->hba_private;
|
||||
|
||||
if (!cmd) {
|
||||
if (!cmd || !cmd->frame) {
|
||||
return;
|
||||
}
|
||||
cmd->frame->header.cmd_status = MFI_STAT_SCSI_IO_FAILED;
|
||||
|
||||
@@ -321,11 +321,17 @@ static void scsi_read_complete(void * opaque, int ret)
|
||||
if (r->req.cmd.buf[0] == READ_CAPACITY_10 &&
|
||||
(ldl_be_p(&r->buf[0]) != 0xffffffffU || s->max_lba == 0)) {
|
||||
s->blocksize = ldl_be_p(&r->buf[4]);
|
||||
s->max_lba = ldl_be_p(&r->buf[0]) & 0xffffffffULL;
|
||||
BlockBackend *blk = s->conf.blk;
|
||||
BlockDriverState *bs = blk_bs(blk);
|
||||
s->max_lba = bs->total_sectors - 1;
|
||||
stl_be_p(&r->buf[0], s->max_lba);
|
||||
} else if (r->req.cmd.buf[0] == SERVICE_ACTION_IN_16 &&
|
||||
(r->req.cmd.buf[1] & 31) == SAI_READ_CAPACITY_16) {
|
||||
s->blocksize = ldl_be_p(&r->buf[8]);
|
||||
s->max_lba = ldq_be_p(&r->buf[0]);
|
||||
BlockBackend *blk = s->conf.blk;
|
||||
BlockDriverState *bs = blk_bs(blk);
|
||||
s->max_lba = bs->total_sectors - 1;
|
||||
stq_be_p(&r->buf[0], s->max_lba);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -385,7 +391,10 @@ static void scsi_write_complete(void * opaque, int ret)
|
||||
assert(r->req.aiocb != NULL);
|
||||
r->req.aiocb = NULL;
|
||||
|
||||
if (ret || r->req.io_canceled) {
|
||||
if (ret || r->req.io_canceled ||
|
||||
r->io_header.status != SCSI_HOST_OK ||
|
||||
(r->io_header.driver_status & SG_ERR_DRIVER_TIMEOUT) ||
|
||||
r->io_header.status != GOOD) {
|
||||
scsi_command_complete_noio(r, ret);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -366,6 +366,7 @@ typedef enum BlockOpType {
|
||||
BLOCK_OP_TYPE_RESIZE,
|
||||
BLOCK_OP_TYPE_STREAM,
|
||||
BLOCK_OP_TYPE_REPLACE,
|
||||
BLOCK_OP_TYPE_INFO,
|
||||
BLOCK_OP_TYPE_MAX,
|
||||
} BlockOpType;
|
||||
|
||||
|
||||
@@ -196,7 +196,8 @@ void bdrv_aio_cancel(BlockAIOCB *acb);
|
||||
int bdrv_has_zero_init_1(BlockDriverState *bs);
|
||||
int coroutine_mixed_fn GRAPH_RDLOCK bdrv_has_zero_init(BlockDriverState *bs);
|
||||
BlockDriverState *bdrv_find_node(const char *node_name);
|
||||
BlockDeviceInfoList *bdrv_named_nodes_list(bool flat, Error **errp);
|
||||
BlockDeviceInfoList *coroutine_fn bdrv_co_named_nodes_list(bool flat,
|
||||
Error **errp);
|
||||
XDbgBlockGraph * GRAPH_RDLOCK bdrv_get_xdbg_block_graph(Error **errp);
|
||||
BlockDriverState *bdrv_lookup_bs(const char *device,
|
||||
const char *node_name,
|
||||
|
||||
@@ -48,7 +48,7 @@ void hmp_eject(Monitor *mon, const QDict *qdict);
|
||||
|
||||
void hmp_qemu_io(Monitor *mon, const QDict *qdict);
|
||||
|
||||
void hmp_info_block(Monitor *mon, const QDict *qdict);
|
||||
void coroutine_fn hmp_info_block(Monitor *mon, const QDict *qdict);
|
||||
void hmp_info_blockstats(Monitor *mon, const QDict *qdict);
|
||||
void hmp_info_block_jobs(Monitor *mon, const QDict *qdict);
|
||||
void hmp_info_snapshots(Monitor *mon, const QDict *qdict);
|
||||
|
||||
@@ -25,22 +25,26 @@
|
||||
#ifndef BLOCK_QAPI_H
|
||||
#define BLOCK_QAPI_H
|
||||
|
||||
#include "block/block-common.h"
|
||||
#include "block/graph-lock.h"
|
||||
#include "block/snapshot.h"
|
||||
#include "qapi/qapi-types-block-core.h"
|
||||
|
||||
BlockDeviceInfo * GRAPH_RDLOCK
|
||||
bdrv_block_device_info(BlockBackend *blk, BlockDriverState *bs,
|
||||
bool flat, Error **errp);
|
||||
|
||||
BlockDeviceInfo *coroutine_fn GRAPH_RDLOCK
|
||||
bdrv_co_block_device_info(BlockBackend *blk, BlockDriverState *bs, bool flat,
|
||||
Error **errp);
|
||||
int GRAPH_RDLOCK
|
||||
bdrv_query_snapshot_info_list(BlockDriverState *bs,
|
||||
SnapshotInfoList **p_list,
|
||||
Error **errp);
|
||||
void GRAPH_RDLOCK
|
||||
bdrv_query_image_info(BlockDriverState *bs, ImageInfo **p_info, bool flat,
|
||||
bool skip_implicit_filters, Error **errp);
|
||||
void GRAPH_RDLOCK
|
||||
void coroutine_fn GRAPH_RDLOCK
|
||||
bdrv_co_query_image_info(BlockDriverState *bs, ImageInfo **p_info, bool flat,
|
||||
bool skip_implicit_filters, Error **errp);
|
||||
|
||||
void coroutine_fn GRAPH_RDLOCK
|
||||
bdrv_co_query_block_graph_info(BlockDriverState *bs, BlockGraphInfo **p_info,
|
||||
Error **errp);
|
||||
void co_wrapper_bdrv_rdlock
|
||||
bdrv_query_block_graph_info(BlockDriverState *bs, BlockGraphInfo **p_info,
|
||||
Error **errp);
|
||||
|
||||
@@ -49,4 +53,8 @@ void bdrv_image_info_specific_dump(ImageInfoSpecific *info_spec,
|
||||
const char *prefix,
|
||||
int indentation);
|
||||
void bdrv_node_info_dump(BlockNodeInfo *info, int indentation, bool protocol);
|
||||
|
||||
void coroutine_fn GRAPH_RDLOCK
|
||||
bdrv_co_do_query_node_info(BlockDriverState *bs, BlockNodeInfo *info,
|
||||
Error **errp);
|
||||
#endif
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
#define QEMU_AIO_ZONE_REPORT 0x0100
|
||||
#define QEMU_AIO_ZONE_MGMT 0x0200
|
||||
#define QEMU_AIO_ZONE_APPEND 0x0400
|
||||
#define QEMU_AIO_FSTAT 0x0800
|
||||
#define QEMU_AIO_TYPE_MASK \
|
||||
(QEMU_AIO_READ | \
|
||||
QEMU_AIO_WRITE | \
|
||||
@@ -42,7 +43,8 @@
|
||||
QEMU_AIO_TRUNCATE | \
|
||||
QEMU_AIO_ZONE_REPORT | \
|
||||
QEMU_AIO_ZONE_MGMT | \
|
||||
QEMU_AIO_ZONE_APPEND)
|
||||
QEMU_AIO_ZONE_APPEND | \
|
||||
QEMU_AIO_FSTAT)
|
||||
|
||||
/* AIO flags */
|
||||
#define QEMU_AIO_MISALIGNED 0x1000
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
|
||||
#include "qemu/coroutine.h"
|
||||
#include "qemu/throttle.h"
|
||||
#include "block/block_int.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
/* The ThrottleGroupMember structure indicates membership in a ThrottleGroup
|
||||
|
||||
@@ -6341,8 +6341,8 @@ static abi_long do_prctl_inval1(CPUArchState *env, abi_long arg2)
|
||||
#define do_prctl_sme_set_vl do_prctl_inval1
|
||||
#endif
|
||||
|
||||
static abi_long do_prctl(CPUArchState *env, abi_long option, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5)
|
||||
static abi_long do_prctl(CPUArchState *env, abi_ulong option, abi_ulong arg2,
|
||||
abi_ulong arg3, abi_ulong arg4, abi_ulong arg5)
|
||||
{
|
||||
abi_long ret;
|
||||
|
||||
@@ -9082,10 +9082,10 @@ _syscall5(int, sys_move_mount, int, __from_dfd, const char *, __from_pathname,
|
||||
* of syscall results, can be performed.
|
||||
* All errnos that do_syscall() returns must be -TARGET_<errcode>.
|
||||
*/
|
||||
static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
|
||||
abi_long arg2, abi_long arg3, abi_long arg4,
|
||||
abi_long arg5, abi_long arg6, abi_long arg7,
|
||||
abi_long arg8)
|
||||
static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_ulong arg1,
|
||||
abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
|
||||
abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
|
||||
abi_ulong arg8)
|
||||
{
|
||||
CPUState *cpu = env_cpu(cpu_env);
|
||||
abi_long ret;
|
||||
@@ -9399,8 +9399,13 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
|
||||
return ret;
|
||||
#endif
|
||||
#ifdef TARGET_NR_lseek
|
||||
case TARGET_NR_lseek:
|
||||
return get_errno(lseek(arg1, arg2, arg3));
|
||||
case TARGET_NR_lseek: {
|
||||
off_t off = arg2;
|
||||
if (arg3 != SEEK_SET) {
|
||||
off = (abi_long)arg2;
|
||||
}
|
||||
return get_errno(lseek(arg1, off, arg3));
|
||||
}
|
||||
#endif
|
||||
#if defined(TARGET_NR_getxpid) && defined(TARGET_ALPHA)
|
||||
/* Alpha specific */
|
||||
@@ -13755,10 +13760,10 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1,
|
||||
return ret;
|
||||
}
|
||||
|
||||
abi_long do_syscall(CPUArchState *cpu_env, int num, abi_long arg1,
|
||||
abi_long arg2, abi_long arg3, abi_long arg4,
|
||||
abi_long arg5, abi_long arg6, abi_long arg7,
|
||||
abi_long arg8)
|
||||
abi_long do_syscall(CPUArchState *cpu_env, int num, abi_ulong arg1,
|
||||
abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
|
||||
abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
|
||||
abi_ulong arg8)
|
||||
{
|
||||
CPUState *cpu = env_cpu(cpu_env);
|
||||
abi_long ret;
|
||||
|
||||
@@ -60,10 +60,10 @@ int info_is_fdpic(struct image_info *info);
|
||||
|
||||
void target_set_brk(abi_ulong new_brk);
|
||||
void syscall_init(void);
|
||||
abi_long do_syscall(CPUArchState *cpu_env, int num, abi_long arg1,
|
||||
abi_long arg2, abi_long arg3, abi_long arg4,
|
||||
abi_long arg5, abi_long arg6, abi_long arg7,
|
||||
abi_long arg8);
|
||||
abi_long do_syscall(CPUArchState *cpu_env, int num, abi_ulong arg1,
|
||||
abi_ulong arg2, abi_ulong arg3, abi_ulong arg4,
|
||||
abi_ulong arg5, abi_ulong arg6, abi_ulong arg7,
|
||||
abi_ulong arg8);
|
||||
extern __thread CPUState *thread_cpu;
|
||||
G_NORETURN void cpu_loop(CPUArchState *env);
|
||||
abi_long get_errno(abi_long ret);
|
||||
|
||||
@@ -2266,7 +2266,7 @@ config_host_data.set_quoted('CONFIG_SYSCONFDIR', get_option('prefix') / get_opti
|
||||
if enable_modules
|
||||
config_host_data.set('CONFIG_STAMP', run_command(
|
||||
meson.current_source_dir() / 'scripts/qemu-stamp.py',
|
||||
meson.project_version(), get_option('pkgversion'), '--',
|
||||
meson.project_version(), '--',
|
||||
meson.current_source_dir() / 'configure',
|
||||
capture: true, check: true).stdout().strip())
|
||||
endif
|
||||
|
||||
@@ -3214,7 +3214,7 @@ void qmp_xen_save_devices_state(const char *filename, bool has_live, bool live,
|
||||
* So call bdrv_inactivate_all (release locks) here to let the other
|
||||
* side of the migration take control of the images.
|
||||
*/
|
||||
if (live && !saved_vm_running) {
|
||||
if (!saved_vm_running) {
|
||||
ret = bdrv_inactivate_all();
|
||||
if (ret) {
|
||||
error_setg(errp, "%s: bdrv_inactivate_all() failed (%d)",
|
||||
|
||||
@@ -849,7 +849,7 @@
|
||||
# }
|
||||
##
|
||||
{ 'command': 'query-block', 'returns': ['BlockInfo'],
|
||||
'allow-preconfig': true }
|
||||
'allow-preconfig': true, 'coroutine': true }
|
||||
|
||||
##
|
||||
# @BlockDeviceTimedStats:
|
||||
@@ -1997,7 +1997,8 @@
|
||||
{ 'command': 'query-named-block-nodes',
|
||||
'returns': [ 'BlockDeviceInfo' ],
|
||||
'data': { '*flat': 'bool' },
|
||||
'allow-preconfig': true }
|
||||
'allow-preconfig': true,
|
||||
'coroutine': true}
|
||||
|
||||
##
|
||||
# @XDbgBlockGraphNodeType:
|
||||
|
||||
@@ -124,7 +124,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
|
||||
}
|
||||
|
||||
if (strcmp(cmd, "deny") == 0) {
|
||||
acl_rule = g_malloc(sizeof(*acl_rule));
|
||||
acl_rule = calloc(1, sizeof(*acl_rule));
|
||||
if (!acl_rule) {
|
||||
fclose(f);
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
if (strcmp(arg, "all") == 0) {
|
||||
acl_rule->type = ACL_DENY_ALL;
|
||||
} else {
|
||||
@@ -133,7 +138,12 @@ static int parse_acl_file(const char *filename, ACLList *acl_list)
|
||||
}
|
||||
QSIMPLEQ_INSERT_TAIL(acl_list, acl_rule, entry);
|
||||
} else if (strcmp(cmd, "allow") == 0) {
|
||||
acl_rule = g_malloc(sizeof(*acl_rule));
|
||||
acl_rule = calloc(1, sizeof(*acl_rule));
|
||||
if (!acl_rule) {
|
||||
fclose(f);
|
||||
errno = ENOMEM;
|
||||
return -1;
|
||||
}
|
||||
if (strcmp(arg, "all") == 0) {
|
||||
acl_rule->type = ACL_ALLOW_ALL;
|
||||
} else {
|
||||
@@ -438,6 +448,18 @@ int main(int argc, char **argv)
|
||||
goto cleanup;
|
||||
}
|
||||
|
||||
#ifndef CONFIG_LIBCAP
|
||||
/*
|
||||
* avoid sending the fd as root user if running suid to not fool
|
||||
* peer credentials to daemons that dont expect that
|
||||
*/
|
||||
if (setuid(getuid()) < 0) {
|
||||
fprintf(stderr, "Failed to drop privileges.\n");
|
||||
ret = EXIT_FAILURE;
|
||||
goto cleanup;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* write fd to the domain socket */
|
||||
if (send_fd(unixfd, fd) == -1) {
|
||||
fprintf(stderr, "failed to write fd to unix socket: %s\n",
|
||||
@@ -459,7 +481,7 @@ cleanup:
|
||||
}
|
||||
while ((acl_rule = QSIMPLEQ_FIRST(&acl_list)) != NULL) {
|
||||
QSIMPLEQ_REMOVE_HEAD(&acl_list, entry);
|
||||
g_free(acl_rule);
|
||||
free(acl_rule);
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
||||
@@ -2958,10 +2958,7 @@ static BlockGraphInfoList *collect_image_info_list(bool image_opts,
|
||||
* duplicate the backing chain information that we obtain by walking
|
||||
* the chain manually here.
|
||||
*/
|
||||
bdrv_graph_rdlock_main_loop();
|
||||
bdrv_query_block_graph_info(bs, &info, &err);
|
||||
bdrv_graph_rdunlock_main_loop();
|
||||
|
||||
if (err) {
|
||||
error_report_err(err);
|
||||
blk_unref(blk);
|
||||
|
||||
@@ -85,7 +85,7 @@ static ssize_t ga_pipe_read_str(int fd[2], char **str)
|
||||
*str = g_realloc(*str, len + n + 1);
|
||||
memcpy(*str + len, buf, n);
|
||||
len += n;
|
||||
*str[len] = '\0';
|
||||
(*str)[len] = '\0';
|
||||
}
|
||||
close(fd[0]);
|
||||
fd[0] = -1;
|
||||
|
||||
@@ -54,6 +54,12 @@ EDK2_EFIROM = edk2/BaseTools/Source/C/bin/EfiRom
|
||||
|
||||
-include edk2-version
|
||||
|
||||
# NB: Certain SUSE qemu subpackages use date information, but we want
|
||||
# reproducible builds, so we use a pre-determined timestamp, rather
|
||||
# than the current timestamp to acheive consistent results build to
|
||||
# build.
|
||||
PACKAGING_TIMESTAMP = $(shell date -r ../VERSION +%s)
|
||||
|
||||
default help:
|
||||
@echo "nothing is build by default"
|
||||
@echo "available build targets:"
|
||||
@@ -121,16 +127,20 @@ efi-rom-%: build-pxe-roms build-efi-roms edk2-basetools
|
||||
|
||||
build-pxe-roms:
|
||||
$(MAKE) -C ipxe/src CONFIG=qemu \
|
||||
PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP) \
|
||||
CROSS_COMPILE=$(x86_64_cross_prefix) \
|
||||
$(patsubst %,bin/%.rom,$(pxerom_targets))
|
||||
|
||||
build-efi-roms: build-pxe-roms
|
||||
$(MAKE) -C ipxe/src CONFIG=qemu \
|
||||
PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP) \
|
||||
CROSS_COMPILE=$(x86_64_cross_prefix) \
|
||||
$(patsubst %,bin-x86_64-efi/%.efidrv,$(pxerom_targets))
|
||||
|
||||
slof:
|
||||
$(MAKE) -C SLOF CROSS=$(powerpc64_cross_prefix) qemu
|
||||
$(MAKE) -C SLOF CROSS=$(powerpc64_cross_prefix) \
|
||||
PACKAGING_TIMESTAMP=$(PACKAGING_TIMESTAMP) \
|
||||
qemu
|
||||
cp SLOF/boot_rom.bin ../pc-bios/slof.bin
|
||||
|
||||
u-boot.e500:
|
||||
@@ -165,6 +175,9 @@ efi: edk2-version
|
||||
rm -f ../pc-bios/edk2-*.fd.bz2
|
||||
bzip2 --verbose ../pc-bios/edk2-*.fd
|
||||
|
||||
edk2-basetools:
|
||||
python3 edk2-build.py --config edk2-build.config -m none
|
||||
|
||||
opensbi32-generic:
|
||||
$(MAKE) -C opensbi \
|
||||
CROSS_COMPILE=$(riscv32_cross_prefix) \
|
||||
@@ -181,7 +194,7 @@ MESON = meson
|
||||
NINJA = ninja
|
||||
qboot:
|
||||
mkdir -p qboot/build
|
||||
$(MESON) setup $(if $(wildcard qboot/build/meson-private),--wipe,) qboot qboot/build
|
||||
$(MESON) setup $(if $(x86_64_cross_prefix),--cross-file qboot/cross.ini,) $(if $(wildcard qboot/build/meson-private),--wipe,) qboot qboot/build
|
||||
$(NINJA) -C qboot/build
|
||||
cp qboot/build/bios.bin ../pc-bios/qboot.rom
|
||||
|
||||
|
||||
Submodule roms/SLOF updated: 3a259df244...f818481284
Submodule roms/edk2 updated: edc6681206...645f9eec34
Submodule roms/ipxe updated: 4bd064de23...f07b8debea
Submodule roms/qboot updated: 8ca302e86d...a923c8e623
Submodule roms/seabios updated: a6ed6b701f...c13ff2cd58
Submodule roms/skiboot updated: 24a7eb3596...cfe312b915
35
rpm/50-seabios-256k.json
Normal file
35
rpm/50-seabios-256k.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"description": "SeaBIOS",
|
||||
"interface-types": [
|
||||
"bios"
|
||||
],
|
||||
"mapping": {
|
||||
"device": "memory",
|
||||
"filename": "/usr/share/qemu/bios-256k.bin"
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"architecture": "i386",
|
||||
"machines": [
|
||||
"pc-i440fx-*",
|
||||
"pc-q35-*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "x86_64",
|
||||
"machines": [
|
||||
"pc-i440fx-*",
|
||||
"pc-q35-*"
|
||||
]
|
||||
}
|
||||
],
|
||||
"features": [
|
||||
"acpi-s3",
|
||||
"acpi-s4"
|
||||
],
|
||||
"tags": [
|
||||
"CONFIG_QEMU=y",
|
||||
"CONFIG_ROM_SIZE=256",
|
||||
"CONFIG_ATA_DMA=n"
|
||||
]
|
||||
}
|
||||
47
rpm/60-seabios-128k.json
Normal file
47
rpm/60-seabios-128k.json
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"description": "SeaBIOS",
|
||||
"interface-types": [
|
||||
"bios"
|
||||
],
|
||||
"mapping": {
|
||||
"device": "memory",
|
||||
"filename": "/usr/share/qemu/bios.bin"
|
||||
},
|
||||
"targets": [
|
||||
{
|
||||
"architecture": "i386",
|
||||
"machines": [
|
||||
"pc-i440fx-*",
|
||||
"pc-q35-*"
|
||||
]
|
||||
},
|
||||
{
|
||||
"architecture": "x86_64",
|
||||
"machines": [
|
||||
"pc-i440fx-*",
|
||||
"pc-q35-*"
|
||||
]
|
||||
}
|
||||
],
|
||||
"features": [
|
||||
"acpi-s3",
|
||||
"acpi-s4"
|
||||
],
|
||||
"tags": [
|
||||
"CONFIG_QEMU=y",
|
||||
"CONFIG_ROM_SIZE=128",
|
||||
"CONFIG_ATA_DMA=n",
|
||||
"CONFIG_BOOTSPLASH=n",
|
||||
"CONFIG_XEN=n",
|
||||
"CONFIG_USB_OHCI=n",
|
||||
"CONFIG_USB_XHCI=n",
|
||||
"CONFIG_USB_UAS=n",
|
||||
"CONFIG_SDCARD=n",
|
||||
"CONFIG_TCGBIOS=n",
|
||||
"CONFIG_MPT_SCSI=n",
|
||||
"CONFIG_PVSCSI=n",
|
||||
"CONFIG_NVME=n",
|
||||
"CONFIG_USE_SMM=n",
|
||||
"CONFIG_VGAHOOKS=n"
|
||||
]
|
||||
}
|
||||
1
rpm/80-kvm.rules
Normal file
1
rpm/80-kvm.rules
Normal file
@@ -0,0 +1 @@
|
||||
KERNEL=="kvm", MODE="0666", GROUP="kvm"
|
||||
1
rpm/80-qemu-ga.rules
Normal file
1
rpm/80-qemu-ga.rules
Normal file
@@ -0,0 +1 @@
|
||||
SUBSYSTEM=="virtio-ports", ATTR{name}=="org.qemu.guest_agent.0", TAG+="systemd", ENV{SYSTEMD_WANTS}+="qemu-guest-agent.service"
|
||||
BIN
rpm/APIC.core-count2
Normal file
BIN
rpm/APIC.core-count2
Normal file
Binary file not shown.
BIN
rpm/DSDT.core-count2
Normal file
BIN
rpm/DSDT.core-count2
Normal file
Binary file not shown.
BIN
rpm/DSDT.pcie
Normal file
BIN
rpm/DSDT.pcie
Normal file
Binary file not shown.
BIN
rpm/FACP.core-count2
Normal file
BIN
rpm/FACP.core-count2
Normal file
Binary file not shown.
202
rpm/README.PACKAGING
Normal file
202
rpm/README.PACKAGING
Normal file
@@ -0,0 +1,202 @@
|
||||
# PACKAGING WORKFLOW(S)
|
||||
|
||||
The qemu package follows a special maintenance workflow in order to support
|
||||
git based patching, including of submodules. Please use it in order to have
|
||||
changes you make be acceptable to the package maintainers.
|
||||
|
||||
All the development happens at https://github.com/openSUSE/qemu. The relevant
|
||||
branch is `factory`.
|
||||
|
||||
Any change to the package should be submitted in the form of a Pull Request
|
||||
against such repository and branch.
|
||||
|
||||
The reminder of this document provides more details, explanations and examples
|
||||
for both contributors and maintainers.
|
||||
|
||||
|
||||
# FOR CONTRIBUTORS
|
||||
|
||||
## BACKPORTING AN UPSTREAM PATCH
|
||||
|
||||
For submitting a backport of an upstream patch, proceed as follows (a local
|
||||
copy of the repository is of course necessary).
|
||||
|
||||
Identify the hash of the commit that needs backporting and do:
|
||||
|
||||
git cherry-pick -esx <commit_hash>
|
||||
|
||||
This way, the changelog will already contain the reference to the upstream
|
||||
commit itself, and the appropriate "Signed-off-by:" tag.
|
||||
|
||||
If the backport is related to Bugzilla (or Jira, and/or CVEs, etc) entry, add a
|
||||
reference to that, such as:
|
||||
|
||||
Resolves: bsc#123456
|
||||
|
||||
Or:
|
||||
|
||||
References: jsc#PED-1234
|
||||
|
||||
Or:
|
||||
|
||||
Resolves: bsc#7891011 (CVE-1234-5678)
|
||||
|
||||
Add it between the "(cherry picked from commit ...)" line and the "Signed-off-by:"
|
||||
line that follows it.
|
||||
|
||||
An example of the end result, where Dario Faggioli (<dfaggioli@suse.com>) is
|
||||
backporting upstream commit abe2c4bdb65e8dd in order to fix bug 1209546 from
|
||||
bugzilla.opensuse.org is:
|
||||
|
||||
test-vmstate: fix bad GTree usage, use-after-free
|
||||
|
||||
According to g_tree_foreach() documentation:
|
||||
"The tree may not be modified while iterating over it (you can't
|
||||
add/remove items)."
|
||||
|
||||
[...]
|
||||
|
||||
Get rid of the node removal within the tree traversal. Also
|
||||
check the trees have the same number of nodes before the actual
|
||||
diff.
|
||||
|
||||
Fixes: 9a85e4b8f6 ("migration: Support gtree migration")
|
||||
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1518
|
||||
Signed-off-by: Marc-Andr303251 Lureau <marcandre.lureau@redhat.com>
|
||||
Signed-off-by: Eric Auger <eric.auger@redhat.com>
|
||||
Reported-by: Richard W.M. Jones <rjones@redhat.com>
|
||||
Tested-by: Richard W.M. Jones <rjones@redhat.com>
|
||||
Reviewed-by: Richard W.M. Jones <rjones@redhat.com>
|
||||
Reviewed-by: Daniel P. Berrang303251 <berrange@redhat.com>
|
||||
Reviewed-by: Juan Quintela <quintela@redhat.com>
|
||||
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
||||
(cherry picked from commit abe2c4bdb65e8dd9cb2f01c355baa394bf49a8af)
|
||||
Resolves: bsc#1209546
|
||||
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
||||
|
||||
Of course, all conflicts and issues should be resolved, before committing the
|
||||
result/completing the cherry-picking.
|
||||
|
||||
At this point, the PR should be opened. As soon as that happens, some checks
|
||||
will be run automatically and the maintainers of the QEMU package will review
|
||||
and, eventually, merge or reject it.
|
||||
|
||||
PRs containing multiple commits are allowed. They are actually encouraged, if
|
||||
the patches being backported are related and/or dependant among each others. It
|
||||
must, however, always be the case that each upstream commit is cherry-picked
|
||||
individually.
|
||||
|
||||
Note that there is no need to change any 'qemu.changes' file. That will, in
|
||||
fact be handled by the package maintainers (and such RPM changelog entries will
|
||||
be automatically generated out of the git commit messages).
|
||||
|
||||
## ADDING A PATCH NOT COMING FROM UPSTREAM
|
||||
|
||||
Downstream patches, i.e., patches that are not backports of upstream commits,
|
||||
should be avoided as much as possible. The (largely!) recommended approach is
|
||||
to submit the patch upstream and then, once it is accepted and committed,
|
||||
backport it.
|
||||
|
||||
If that is not possible (for whatever reason), a pull request with a downstream
|
||||
only patch can be opened. The procedure is almost identical to the one described
|
||||
above for upstream backports. The main differences are:
|
||||
|
||||
1) Downstream only patch cannot be cherry-picked from upstream commits, of
|
||||
course. Therefore, the PR will consist of the commit(s) that introduces the
|
||||
patch.
|
||||
|
||||
2) There will be no "(cherry picked from commit ...") line in the changelog
|
||||
of a downstream only patch. On the other hand, the "Resolves:" or
|
||||
"Reference:" tag, that link the patch to the issue it's trying to solve,
|
||||
must be there, and the same is true for the "Signed-off-by:" tag
|
||||
indicating who is proposing adding it.
|
||||
|
||||
3) It is required that the subject of the commit starts with the [openSUSE] tag.
|
||||
|
||||
An example of a downstream only commit is:
|
||||
|
||||
[openSUSE] pc: q35: Bump max_cpus to 1024
|
||||
|
||||
And use the new limit for machine version 7.1 too.
|
||||
Keep the old limit of 288 for machine versions 7.0 and earlier.
|
||||
|
||||
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
||||
References: bsc#1202282, jsc#PED-2592
|
||||
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
||||
|
||||
## CHANGING THE PACKAGING FILES
|
||||
|
||||
Files that are necessary for building the RPM (like the spec file) or that
|
||||
are part of the RPM and will be copied in the appropriate places in the
|
||||
filesystem when it is installed are also part of the git repository. In fact,
|
||||
they can be found in the `rpm/` directory.
|
||||
|
||||
Any addition, removal or change of and on any of those file should just be done
|
||||
as a regular commit, and a pull request including such commit(s) should be
|
||||
opened.
|
||||
|
||||
Commits to packaging files should be prefixed with both the [openSUSE] tag and
|
||||
an [RPM] tag. An example can be this one:
|
||||
|
||||
[openSUSE][RPM] Add downstream packaging files
|
||||
|
||||
Stash the "packaging files" in the QEMU repository, in the rpm/
|
||||
directory. During package build, they will be pulled out from there
|
||||
and used as appropriate.
|
||||
|
||||
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
||||
|
||||
## ADDING A PATCH IN A SUBMODULE
|
||||
|
||||
For including a backport, or in general adding a patch, to a submodule, the
|
||||
downstream git repository for the submodule must be checkedout at the location
|
||||
where the submodule resides, in the main QEMU git repository.
|
||||
|
||||
For example, for including a downstream patch in the ipxe submodule, a local
|
||||
copy of the repository https://github.com/openSUSE/qemu-ipxe.git is necessary.
|
||||
After checking out the `factory` branch, add the patch there (cherry-picking
|
||||
it from upstream, if it is a backport, and respecting all the tagging rules
|
||||
explained in the previous sections).
|
||||
|
||||
At this point:
|
||||
- the branch must be pushed;
|
||||
- in the main (qemu) repository, a commit must be added and pushed, for making
|
||||
sure that the new patch is picked up.
|
||||
|
||||
Basically, the commit in the main repository is how the information that a
|
||||
submodule as a new head is recorded.
|
||||
|
||||
The changelog of such commit shall include a reference to the subjects of all
|
||||
the new commits in the various submodules. Unfortinately, there is not yet a
|
||||
good way of achieving this automatically.
|
||||
|
||||
As last step, a pull request should be opened, as usual.
|
||||
|
||||
## REMOVING PATCHES
|
||||
|
||||
If a patch, or, in general, a commit, that is already part of the repository
|
||||
must be removed, this must be done without rewriting the git history, i.e., with
|
||||
a revert (and then a pull request with the revert should be opened).
|
||||
|
||||
|
||||
# FOR MAINTAINERS
|
||||
|
||||
## REVIEWING AND ACCEPTING PRs
|
||||
|
||||
TODO
|
||||
|
||||
## COMMITTING CHANGES INTO FACTORY
|
||||
|
||||
TODO
|
||||
|
||||
## UPDATING THE BASE QEMU VERSION
|
||||
|
||||
TODO
|
||||
|
||||
|
||||
# MANUAL AND AUTOMATED CHECKS
|
||||
|
||||
TODO
|
||||
|
||||
|
||||
|
||||
11
rpm/bridge.conf
Normal file
11
rpm/bridge.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
# Access control file for qemu bridge helper
|
||||
# Syntax consists of:
|
||||
# # comment (ignored)
|
||||
# allow all
|
||||
# allow <bridge_name>
|
||||
# deny all
|
||||
# deny <bridge_name>
|
||||
# include /path/to/additional/ACL/file
|
||||
# Users are blacklisted by default and 'deny' takes precedence over 'allow'.
|
||||
# Including additional ACL files allows file access permissions to be used as
|
||||
# a component of the policy to allow access or deny access to specific bridges.
|
||||
257
rpm/common.inc
Normal file
257
rpm/common.inc
Normal file
@@ -0,0 +1,257 @@
|
||||
%define _buildshell /bin/bash
|
||||
|
||||
%define sbver 1.16.3_3_gc13ff2cd
|
||||
|
||||
%define srcdir %{_builddir}/%buildsubdir
|
||||
%define blddir %srcdir/build
|
||||
|
||||
%define build_x86_firmware 0
|
||||
%define build_ppc_firmware 0
|
||||
%define build_opensbi_firmware 0
|
||||
%define kvm_available 0
|
||||
%define legacy_qemu_kvm 0
|
||||
%define force_fit_virtio_pxe_rom 1
|
||||
|
||||
%define with_xen 0%{!?_without_xen:1}
|
||||
|
||||
%if "%{?distribution}" == ""
|
||||
%define distro private-build
|
||||
%else
|
||||
%define distro %{distribution}
|
||||
%endif
|
||||
|
||||
# Items to exclude in ALP-based products
|
||||
%if 0%{?suse_version} == 1600
|
||||
%define with_xen 0
|
||||
%endif
|
||||
|
||||
%bcond_with system_membarrier
|
||||
%bcond_with malloc_trim
|
||||
|
||||
%bcond_with chkqtests
|
||||
|
||||
%if 0%{?suse_version} > 1600
|
||||
# canokey is an openSUSE thing, not a SLE one
|
||||
%ifarch x86_64
|
||||
%bcond_without canokey
|
||||
%else
|
||||
%bcond_with canokey
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if 0%{?suse_version} > 1600
|
||||
# XDP seems not to be there in SLE...
|
||||
%bcond_without xdp
|
||||
%else
|
||||
%bcond_with xdp
|
||||
%endif
|
||||
|
||||
%ifarch %ix86 x86_64
|
||||
%bcond_without vmsr_helper
|
||||
%else
|
||||
%define vmsr_helper 0
|
||||
%endif
|
||||
|
||||
# Make it possible to build without spice (for SLE/Leap Micro)
|
||||
%bcond_without spice
|
||||
|
||||
# We do not have the stuff needed to compile rutabaga support.
|
||||
# If/when we want to do it, we can check how it's done here:
|
||||
# https://src.fedoraproject.org/rpms/qemu/c/deeb9357cb751df21c566fd8408936cfb034d43b?branch=rawhide
|
||||
%define has_rutabaga_gfx 0
|
||||
|
||||
%define has_virtiofsd 1
|
||||
# Upstream virtiofsd does not even build on 32 bit systems
|
||||
%ifarch %ix86 %arm
|
||||
%define has_virtiofsd 0
|
||||
%endif
|
||||
|
||||
# non-x86 archs still seem to have some issues with Link Time Optimization
|
||||
%ifnarch %ix86 x86_64
|
||||
%define _lto_cflags %{nil}
|
||||
%endif
|
||||
|
||||
%ifarch aarch64
|
||||
%define qemu_arch aarch64
|
||||
%endif
|
||||
%ifarch %arm
|
||||
%define qemu_arch arm
|
||||
%endif
|
||||
%ifarch %ix86
|
||||
%define qemu_arch i386
|
||||
%endif
|
||||
%ifarch ppc64
|
||||
%define qemu_arch ppc64
|
||||
%endif
|
||||
%ifarch ppc
|
||||
%define qemu_arch ppc
|
||||
%endif
|
||||
%ifarch ppc64le
|
||||
%define qemu_arch ppc64le
|
||||
%endif
|
||||
%ifarch riscv64
|
||||
%define qemu_arch riscv64
|
||||
%endif
|
||||
%ifarch s390x
|
||||
%define qemu_arch s390x
|
||||
%endif
|
||||
%ifarch x86_64
|
||||
%define qemu_arch x86_64
|
||||
%endif
|
||||
|
||||
%define generic_qemu_description \
|
||||
QEMU provides full machine emulation and cross architecture usage. It closely\
|
||||
integrates with KVM and Xen virtualization, allowing for excellent performance.\
|
||||
Many options are available for defining the emulated environment, including\
|
||||
traditional devices, direct host device access, and interfaces specific to\
|
||||
virtualization.
|
||||
|
||||
%define disable_everything \\\
|
||||
--audio-drv-list= \\\
|
||||
--disable-af-xdp \\\
|
||||
--disable-alsa \\\
|
||||
--disable-attr \\\
|
||||
--disable-auth-pam \\\
|
||||
--disable-avx2 \\\
|
||||
--disable-avx512bw \\\
|
||||
--disable-blkio \\\
|
||||
--disable-block-drv-whitelist-in-tools \\\
|
||||
--disable-bochs \\\
|
||||
--disable-bpf \\\
|
||||
--disable-brlapi \\\
|
||||
--disable-bsd-user \\\
|
||||
--disable-bzip2 \\\
|
||||
--disable-cap-ng \\\
|
||||
--disable-capstone \\\
|
||||
--disable-cfi \\\
|
||||
--disable-cfi-debug \\\
|
||||
--disable-cloop \\\
|
||||
--disable-cocoa \\\
|
||||
--disable-colo-proxy \\\
|
||||
--disable-coreaudio \\\
|
||||
--disable-coroutine-pool \\\
|
||||
--disable-crypto-afalg \\\
|
||||
--disable-curl \\\
|
||||
--disable-curses \\\
|
||||
--disable-dbus-display \\\
|
||||
--disable-debug-graph-lock \\\
|
||||
--disable-debug-info \\\
|
||||
--disable-debug-mutex \\\
|
||||
--disable-debug-remap \\\
|
||||
--disable-debug-tcg \\\
|
||||
--disable-dmg \\\
|
||||
--disable-docs \\\
|
||||
--disable-download \\\
|
||||
--disable-dsound \\\
|
||||
--disable-fdt \\\
|
||||
--disable-fuse \\\
|
||||
--disable-fuse-lseek \\\
|
||||
--disable-gcrypt \\\
|
||||
--disable-gettext \\\
|
||||
--disable-gio \\\
|
||||
--disable-glusterfs \\\
|
||||
--disable-gnutls \\\
|
||||
--disable-gtk \\\
|
||||
--disable-gtk-clipboard \\\
|
||||
--disable-guest-agent \\\
|
||||
--disable-guest-agent-msi \\\
|
||||
--disable-hv-balloon \\\
|
||||
--disable-hvf \\\
|
||||
--disable-iconv \\\
|
||||
--disable-jack \\\
|
||||
--disable-kvm \\\
|
||||
--disable-l2tpv3 \\\
|
||||
--disable-libdaxctl \\\
|
||||
--disable-libdw \\\
|
||||
--disable-libiscsi \\\
|
||||
--disable-libkeyutils \\\
|
||||
--disable-libkeyutils \\\
|
||||
--disable-libnfs \\\
|
||||
--disable-libpmem \\\
|
||||
--disable-libssh \\\
|
||||
--disable-libudev \\\
|
||||
--disable-libusb \\\
|
||||
--disable-linux-aio \\\
|
||||
--disable-linux-io-uring \\\
|
||||
--disable-linux-user \\\
|
||||
--disable-lto \\\
|
||||
--disable-lzfse \\\
|
||||
--disable-lzo \\\
|
||||
--disable-malloc-trim \\\
|
||||
--disable-membarrier \\\
|
||||
--disable-module-upgrades \\\
|
||||
--disable-modules \\\
|
||||
--disable-mpath \\\
|
||||
--disable-multiprocess \\\
|
||||
--disable-netmap \\\
|
||||
--disable-nettle \\\
|
||||
--disable-numa \\\
|
||||
--disable-nvmm \\\
|
||||
--disable-opengl \\\
|
||||
--disable-oss \\\
|
||||
--disable-pa \\\
|
||||
--disable-parallels \\\
|
||||
--disable-pie \\\
|
||||
--disable-pipewire \\\
|
||||
--disable-pixman \\\
|
||||
--disable-plugins \\\
|
||||
--disable-png \\\
|
||||
--disable-qcow1 \\\
|
||||
--disable-qed \\\
|
||||
--disable-qom-cast-debug \\\
|
||||
--disable-qpl \\\
|
||||
--disable-rbd \\\
|
||||
--disable-rdma \\\
|
||||
--disable-relocatable \\\
|
||||
--disable-replication \\\
|
||||
--disable-rng-none \\\
|
||||
--disable-rutabaga-gfx \\\
|
||||
--disable-safe-stack \\\
|
||||
--disable-sanitizers \\\
|
||||
--disable-sdl \\\
|
||||
--disable-sdl-image \\\
|
||||
--disable-seccomp \\\
|
||||
--disable-selinux \\\
|
||||
--disable-slirp \\\
|
||||
--disable-slirp-smbd \\\
|
||||
--disable-smartcard \\\
|
||||
--disable-snappy \\\
|
||||
--disable-sndio \\\
|
||||
--disable-sparse \\\
|
||||
--disable-spice \\\
|
||||
--disable-spice-protocol \\\
|
||||
--disable-strip \\\
|
||||
--disable-system \\\
|
||||
--disable-tcg \\\
|
||||
--disable-tcg-interpreter \\\
|
||||
--disable-tools \\\
|
||||
--disable-tpm \\\
|
||||
--disable-tsan \\\
|
||||
--disable-u2f \\\
|
||||
--disable-uadk \\\
|
||||
--disable-usb-redir \\\
|
||||
--disable-user \\\
|
||||
--disable-vde \\\
|
||||
--disable-vdi \\\
|
||||
--disable-vhdx \\\
|
||||
--disable-vhost-crypto \\\
|
||||
--disable-vhost-kernel \\\
|
||||
--disable-vhost-net \\\
|
||||
--disable-vhost-user \\\
|
||||
--disable-vhost-user-blk-server \\\
|
||||
--disable-vhost-vdpa \\\
|
||||
--disable-virglrenderer \\\
|
||||
--disable-virtfs \\\
|
||||
--disable-vnc \\\
|
||||
--disable-vnc-jpeg \\\
|
||||
--disable-vnc-sasl \\\
|
||||
--disable-vpc \\\
|
||||
--disable-vte \\\
|
||||
--disable-vvfat \\\
|
||||
--disable-werror \\\
|
||||
--disable-whpx \\\
|
||||
--disable-xen \\\
|
||||
--disable-xen-pci-passthrough \\\
|
||||
--disable-xkbcommon \\\
|
||||
--disable-zstd \\\
|
||||
--without-default-devices
|
||||
122
rpm/config.sh
Normal file
122
rpm/config.sh
Normal file
@@ -0,0 +1,122 @@
|
||||
#!/bin/bash
|
||||
|
||||
# config.sh:
|
||||
|
||||
# The next few VARIABLES are to be edited as required:
|
||||
|
||||
# Package name. (In multibuild, it's the base package). Used to ref spec file.
|
||||
PKG=qemu
|
||||
|
||||
# Here is the git repo which tracks a separate upstream git based project
|
||||
# We take this approach so we can have our own tags and branches, and store
|
||||
# the patches in git for others to access outside of the bundle.
|
||||
PACKAGE_MAIN_GIT_REPO=https://github.com/openSUSE/qemu.git
|
||||
|
||||
# This is the upstream for the PACKAGE_MAIN_GIT_REPO
|
||||
UPSTREAM_GIT_REPO=https://gitlab.com/qemu-project/qemu.git
|
||||
|
||||
# The following specifies the upstream tag or commit upon which our patchqueue
|
||||
# gets rebased. The special value LATEST may be used to "automatically" track
|
||||
# the upstream development tree in the master branch
|
||||
#GIT_UPSTREAM_COMMIT_ISH=v7.0.0
|
||||
GIT_UPSTREAM_COMMIT_ISH=v7.1.0
|
||||
# WARNING: If transitioning from using LATEST to not, MANUALLY re-set the
|
||||
# tarball present. If transitioning TO LATEST, make sure that
|
||||
# NEXT_RELEASE_IS_MAJOR is set correctly
|
||||
# This is used to choose the version number when LATEST processing is active
|
||||
NEXT_RELEASE_IS_MAJOR=1
|
||||
|
||||
# Unfortunately, SeaBIOS doesn't always follow an "always increasing" version
|
||||
# model, so there may be times we should overide the automated version setting.
|
||||
# We can do so by specifing the value here:
|
||||
#SEABIOS_VERSION=1.13.0
|
||||
|
||||
# In following, use 1 or 0 as needed (representing true or false respectively)
|
||||
NUMBERED_PATCHES=0
|
||||
|
||||
PATCH_RANGE=1000
|
||||
|
||||
# For compatibility with old packages, we include this option
|
||||
OVERRIDE_FIVE_DIGIT_NUMBERING=0
|
||||
|
||||
# Path to be used for temporary files, directories, repositories, etc.
|
||||
# Default is /dev/shm. An alternative could be /tmp (e.g., when building
|
||||
# in containers, or whatever).
|
||||
#TMPDIR=/dev/shm
|
||||
TMPDIR=/tmp
|
||||
|
||||
# This array tracks all git submodule paths within the superproject (1st entry)
|
||||
PATCH_PATH_MAP=(
|
||||
""
|
||||
"roms/seabios/"
|
||||
"roms/ipxe/"
|
||||
"roms/sgabios/"
|
||||
"roms/edk2/"
|
||||
"roms/skiboot/"
|
||||
"roms/SLOF/"
|
||||
"roms/openbios/"
|
||||
"ui/keycodemapdb/"
|
||||
"slirp/"
|
||||
"roms/u-boot/"
|
||||
"roms/qboot/"
|
||||
"dtc/"
|
||||
"roms/opensbi/"
|
||||
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/"
|
||||
"capstone/"
|
||||
"roms/qemu-palcode/"
|
||||
"roms/seabios-hppa/"
|
||||
"roms/u-boot-sam460ex/"
|
||||
"roms/QemuMacDrivers/"
|
||||
"meson/"
|
||||
"tests/fp/berkeley-softfloat-3/"
|
||||
"tests/fp/berkeley-testfloat-3/"
|
||||
"tests/lcitool/libvirt-ci"
|
||||
"roms/edk2/ArmPkg/Library/ArmSoftFloatLib/berkeley-softfloat-3/"
|
||||
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/boringssl/"
|
||||
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/krb5/"
|
||||
"roms/edk2/CryptoPkg/Library/OpensslLib/openssl/pyca-cryptography/"
|
||||
"roms/edk2/BaseTools/Source/C/BrotliCompress/brotli/"
|
||||
"roms/edk2/MdeModulePkg/Library/BrotliCustomDecompressLib/brotli/"
|
||||
"roms/edk2/MdeModulePkg/Universal/RegularExpressionDxe/oniguruma/"
|
||||
"roms/edk2/UnitTestFrameworkPkg/Library/CmockaLib/cmocka/"
|
||||
"roms/vbootrom/"
|
||||
"roms/edk2/RedfishPkg/Library/JsonLib/jansson"
|
||||
)
|
||||
|
||||
# (order and count must correspond to PATCH_PATH_MAP)
|
||||
LOCAL_REPO_MAP=(
|
||||
~/git/qemu-opensuse
|
||||
~/git/qemu-seabios
|
||||
~/git/qemu-ipxe
|
||||
~/git/qemu-sgabios
|
||||
~/git/qemu-edk2
|
||||
~/git/qemu-skiboot
|
||||
~/git/qemu-SLOF
|
||||
~/git/qemu-openbios
|
||||
~/git/qemu-keycodemapdb
|
||||
~/git/qemu-slirp
|
||||
~/git/qemu-u-boot
|
||||
~/git/qemu-qboot
|
||||
~/git/qemu-dtc
|
||||
~/git/qemu-opensbi
|
||||
~/git/qemu-edk2-openssl
|
||||
~/git/qemu-capstone
|
||||
~/git/qemu-qemu-palcode
|
||||
~/git/qemu-seabios-hppa
|
||||
~/git/qemu-u-boot-sam460ex
|
||||
~/git/qemu-QemuMacDrivers
|
||||
~/git/qemu-meson
|
||||
~/git/qemu-tests-berkeley-softfloat-3
|
||||
~/git/qemu-tests-berkeley-testfloat-3
|
||||
~/git/qemu-tests-lcitool-libvirt-ci
|
||||
~/git/qemu-edk2-berkeley-softfloat-3
|
||||
~/git/qemu-edk2-openssl-boringssl
|
||||
~/git/qemu-edk2-openssl-krb5
|
||||
~/git/qemu-edk2-openssl-pyca-cryptography
|
||||
~/git/qemu-edk2-BrotliCompress-brotli
|
||||
~/git/qemu-edk2-BrotliCustomDecompressLib-brotli
|
||||
~/git/qemu-edk2-oniguruma
|
||||
~/git/qemu-edk2-cmocka
|
||||
~/git/qemu-vbootrom
|
||||
~/git/qemu-edk2-jansson
|
||||
)
|
||||
13
rpm/ksm.service
Normal file
13
rpm/ksm.service
Normal file
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Kernel Samepage Merging
|
||||
ConditionPathExists=/sys/kernel/mm/ksm
|
||||
ConditionVirtualization=no
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=/bin/bash -c "/bin/echo 1 > /sys/kernel/mm/ksm/run"
|
||||
ExecStop=/bin/bash -c "/bin/echo 0 > /sys/kernel/mm/ksm/run"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
3
rpm/kvm.conf
Normal file
3
rpm/kvm.conf
Normal file
@@ -0,0 +1,3 @@
|
||||
# load kvm module at boot time
|
||||
kvm
|
||||
|
||||
106
rpm/openSUSE-pcbios-stub-out-the-SAN-req-s-i.patch
Normal file
106
rpm/openSUSE-pcbios-stub-out-the-SAN-req-s-i.patch
Normal file
@@ -0,0 +1,106 @@
|
||||
From: Bruce Rogers <brogers@suse.com>
|
||||
Date: Mon, 24 Jul 2017 10:44:24 -0600
|
||||
Subject: [openSUSE] [pcbios] stub out the SAN req's in int13
|
||||
|
||||
Include-If: %if 0%{?patch-possibly-applied-elsewhere}
|
||||
|
||||
We need to find some code or data to change so we can make the rom fit
|
||||
into the legacy size requirements. Comment out SAN support, and
|
||||
hopefully nobody will be impacted.
|
||||
|
||||
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
||||
---
|
||||
src/arch/x86/interface/pcbios/int13.c | 21 +++++++++++++++++++++
|
||||
1 file changed, 21 insertions(+)
|
||||
|
||||
diff --git a/roms/ipxe/src/arch/x86/interface/pcbios/int13.c b/roms/ipxe/src/arch/x86/interface/pcbios/int13.c
|
||||
index ca789a0d154e1fe3c2508a3aefea..40c61419c0c134120d1ce7c81a1e 100644
|
||||
--- a/roms/ipxe/src/arch/x86/interface/pcbios/int13.c
|
||||
+++ b/roms/ipxe/src/arch/x86/interface/pcbios/int13.c
|
||||
@@ -23,6 +23,12 @@
|
||||
|
||||
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
|
||||
|
||||
+#define INCLUDE_SAN_HOOKS 0
|
||||
+#pragma GCC diagnostic push
|
||||
+#pragma GCC diagnostic ignored "-Wunused-parameter"
|
||||
+#pragma GCC diagnostic ignored "-Wunused-function"
|
||||
+#pragma GCC diagnostic ignored "-Wunused-variable"
|
||||
+
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
#include <limits.h>
|
||||
@@ -1243,6 +1249,7 @@ static void int13_unhook_vector ( void ) {
|
||||
*/
|
||||
static int int13_hook ( unsigned int drive, struct uri **uris,
|
||||
unsigned int count, unsigned int flags ) {
|
||||
+#if INCLUDE_SAN_HOOKS
|
||||
struct san_device *sandev;
|
||||
struct int13_data *int13;
|
||||
unsigned int natural_drive;
|
||||
@@ -1315,6 +1322,9 @@ static int int13_hook ( unsigned int drive, struct uri **uris,
|
||||
sandev_put ( sandev );
|
||||
err_alloc:
|
||||
return rc;
|
||||
+#else
|
||||
+ return -1;
|
||||
+#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1328,6 +1338,7 @@ static int int13_hook ( unsigned int drive, struct uri **uris,
|
||||
*/
|
||||
static void int13_unhook ( unsigned int drive ) {
|
||||
struct san_device *sandev;
|
||||
+#if INCLUDE_SAN_HOOKS
|
||||
|
||||
/* Find drive */
|
||||
sandev = sandev_find ( drive );
|
||||
@@ -1353,6 +1364,7 @@ static void int13_unhook ( unsigned int drive ) {
|
||||
|
||||
/* Drop reference to drive */
|
||||
sandev_put ( sandev );
|
||||
+#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1514,6 +1526,7 @@ static int int13_load_eltorito ( unsigned int drive, struct segoff *address ) {
|
||||
* Note that this function can never return success, by definition.
|
||||
*/
|
||||
static int int13_boot ( unsigned int drive, const char *filename __unused ) {
|
||||
+#if INCLUDE_SAN_HOOKS
|
||||
struct memory_map memmap;
|
||||
struct segoff address;
|
||||
int rc;
|
||||
@@ -1539,6 +1552,9 @@ static int int13_boot ( unsigned int drive, const char *filename __unused ) {
|
||||
}
|
||||
|
||||
return -ECANCELED; /* -EIMPOSSIBLE */
|
||||
+#else
|
||||
+ return -1;
|
||||
+#endif
|
||||
}
|
||||
|
||||
/** Maximum size of boot firmware table(s) */
|
||||
@@ -1605,6 +1621,7 @@ static int int13_install ( struct acpi_header *acpi ) {
|
||||
* @ret rc Return status code
|
||||
*/
|
||||
static int int13_describe ( void ) {
|
||||
+#if INCLUDE_SAN_HOOKS
|
||||
int rc;
|
||||
|
||||
/* Clear tables */
|
||||
@@ -1619,9 +1636,13 @@ static int int13_describe ( void ) {
|
||||
}
|
||||
|
||||
return 0;
|
||||
+#else
|
||||
+ return -1;
|
||||
+#endif
|
||||
}
|
||||
|
||||
PROVIDE_SANBOOT ( pcbios, san_hook, int13_hook );
|
||||
PROVIDE_SANBOOT ( pcbios, san_unhook, int13_unhook );
|
||||
PROVIDE_SANBOOT ( pcbios, san_boot, int13_boot );
|
||||
PROVIDE_SANBOOT ( pcbios, san_describe, int13_describe );
|
||||
+#pragma GCC diagnostic pop
|
||||
14
rpm/qemu-guest-agent.service
Normal file
14
rpm/qemu-guest-agent.service
Normal file
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=QEMU Guest Agent
|
||||
Documentation=http://wiki.qemu.org/Features/GuestAgent
|
||||
BindsTo=dev-virtio\x2dports-org.qemu.guest_agent.0.device
|
||||
After=dev-virtio\x2dports-org.qemu.guest_agent.0.device
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=-/usr/bin/qemu-ga -p /dev/virtio-ports/org.qemu.guest_agent.0
|
||||
Restart=always
|
||||
RestartSec=0
|
||||
|
||||
[Install]
|
||||
WantedBy=dev-virtio\x2dports-org.qemu.guest_agent.0.device
|
||||
23
rpm/qemu-ifup
Normal file
23
rpm/qemu-ifup
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
# sample bridge qemu-ifup script
|
||||
|
||||
echo 'configuring qemu network with bridge for' $*
|
||||
|
||||
# If bridge is not specified, try device with default route.
|
||||
bridge=$2
|
||||
if [ -z "$bridge" ]; then
|
||||
bridge=$(/usr/sbin/ip route list | /usr/bin/awk '/^default / { print $5 }')
|
||||
fi
|
||||
|
||||
# Exit if $bridge is not a bridge. Exit with 0 status
|
||||
# so qemu process is not terminated and provide message
|
||||
# about failure to setup network.
|
||||
if [ ! -e "/sys/class/net/${bridge}/bridge" ]
|
||||
then
|
||||
echo "WARNING! ${bridge} is not a bridge. qemu-ifup exiting. VM may not have a functioning networking stack."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
/usr/sbin/ip link set $1 up
|
||||
/usr/sbin/ip link set $1 master $bridge || true
|
||||
BIN
rpm/qemu-kvm.1.gz
Normal file
BIN
rpm/qemu-kvm.1.gz
Normal file
Binary file not shown.
215
rpm/qemu-linux-user.spec
Normal file
215
rpm/qemu-linux-user.spec
Normal file
@@ -0,0 +1,215 @@
|
||||
#
|
||||
# spec file for package qemu-linux-user
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
# upon. The license for this file, and modifications and additions to the
|
||||
# file, is the same license as for the pristine package itself (unless the
|
||||
# license for the pristine package is not an Open Source License, in which
|
||||
# case the license is the MIT License). An "Open Source License" is a
|
||||
# license that conforms to the Open Source Definition (Version 1.9)
|
||||
# published by the Open Source Initiative.
|
||||
|
||||
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||
#
|
||||
|
||||
|
||||
%include %{_sourcedir}/common.inc
|
||||
|
||||
%ifarch %ix86 x86_64 s390x
|
||||
%define legacy_qemu_kvm 1
|
||||
%endif
|
||||
|
||||
Name: qemu-linux-user
|
||||
URL: https://www.qemu.org/
|
||||
Summary: CPU emulator for user space
|
||||
License: BSD-2-Clause AND BSD-3-Clause AND GPL-2.0-only AND GPL-2.0-or-later AND LGPL-2.1-or-later AND MIT
|
||||
Group: System/Emulators/PC
|
||||
Version: 9.1.1
|
||||
Release: 0
|
||||
Source0: qemu-%{version}.tar.xz
|
||||
Source1: common.inc
|
||||
Source200: qemu-rpmlintrc
|
||||
Source303: README.PACKAGING
|
||||
Source1000: qemu-rpmlintrc
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
BuildRequires: bison
|
||||
BuildRequires: glib2-devel-static >= 2.56
|
||||
BuildRequires: glibc-devel-static
|
||||
BuildRequires: (pcre-devel-static if glib2-devel-static < 2.73 else pcre2-devel-static)
|
||||
# passing filelist check for /usr/lib/binfmt.d
|
||||
BuildRequires: systemd
|
||||
BuildRequires: zlib-devel-static
|
||||
# we must not install the qemu-linux-user package when under QEMU build
|
||||
%if 0%{?qemu_user_space_build:1}
|
||||
#!BuildIgnore: post-build-checks
|
||||
%endif
|
||||
BuildRequires: discount
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: flex
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: meson
|
||||
BuildRequires: ninja >= 1.7
|
||||
%if 0%{?suse_version} >= 1600
|
||||
BuildRequires: python3-Sphinx
|
||||
BuildRequires: python3-base >= 3.8
|
||||
%else
|
||||
BuildRequires: python311-Sphinx
|
||||
BuildRequires: python311-base
|
||||
%endif
|
||||
|
||||
%description
|
||||
QEMU provides CPU emulation along with other related capabilities. This package
|
||||
provides programs to run user space binaries and libraries meant for another
|
||||
architecture. The syscall interface is intercepted and execution below the
|
||||
syscall layer occurs on the native hardware and operating system.
|
||||
|
||||
%files
|
||||
%doc README.rst VERSION
|
||||
%license COPYING COPYING.LIB LICENSE
|
||||
%_bindir/qemu-aarch64
|
||||
%_bindir/qemu-aarch64_be
|
||||
%_bindir/qemu-alpha
|
||||
%_bindir/qemu-arm
|
||||
%_bindir/qemu-armeb
|
||||
%_bindir/qemu-cris
|
||||
%_bindir/qemu-hexagon
|
||||
%_bindir/qemu-hppa
|
||||
%_bindir/qemu-i386
|
||||
%_bindir/qemu-loongarch64
|
||||
%_bindir/qemu-m68k
|
||||
%_bindir/qemu-microblaze
|
||||
%_bindir/qemu-microblazeel
|
||||
%_bindir/qemu-mips
|
||||
%_bindir/qemu-mips64
|
||||
%_bindir/qemu-mips64el
|
||||
%_bindir/qemu-mipsel
|
||||
%_bindir/qemu-mipsn32
|
||||
%_bindir/qemu-mipsn32el
|
||||
%_bindir/qemu-or1k
|
||||
%_bindir/qemu-ppc
|
||||
%_bindir/qemu-ppc64
|
||||
%_bindir/qemu-ppc64le
|
||||
%_bindir/qemu-riscv32
|
||||
%_bindir/qemu-riscv64
|
||||
%_bindir/qemu-s390x
|
||||
%_bindir/qemu-sh4
|
||||
%_bindir/qemu-sh4eb
|
||||
%_bindir/qemu-sparc
|
||||
%_bindir/qemu-sparc32plus
|
||||
%_bindir/qemu-sparc64
|
||||
%_bindir/qemu-x86_64
|
||||
%_bindir/qemu-xtensa
|
||||
%_bindir/qemu-xtensaeb
|
||||
%_sbindir/qemu-binfmt-conf.sh
|
||||
%_prefix/lib/binfmt.d/qemu-*.conf
|
||||
|
||||
%prep
|
||||
%autosetup -n qemu-%{version} -p1
|
||||
|
||||
# We have the meson subprojects there, but as submodules (because OBS
|
||||
# SCM bridge can handle the latter, but not the former) so we need to
|
||||
# apply the layering of the packagefiles manually
|
||||
meson subprojects packagefiles --apply berkeley-testfloat-3
|
||||
meson subprojects packagefiles --apply berkeley-softfloat-3
|
||||
|
||||
%build
|
||||
|
||||
%define rpmfilesdir %{_builddir}/qemu-%{version}/rpm
|
||||
|
||||
%if %{legacy_qemu_kvm}
|
||||
# FIXME: Why are we copying the s390 specific one?
|
||||
cp %{rpmfilesdir}/supported.s390.txt docs/supported.rst
|
||||
sed -i '/^\ \ \ about\/index.*/i \ \ \ supported.rst' docs/index.rst
|
||||
%endif
|
||||
|
||||
find . -iname ".git" -exec rm -rf {} +
|
||||
|
||||
mkdir -p %blddir
|
||||
cd %blddir
|
||||
|
||||
# We define a few general and common options and then we disable
|
||||
# pretty much everything. Afterwards, there is a section for each
|
||||
# of the flavors where we explicitly enable all the feature we want
|
||||
# for them.
|
||||
|
||||
# TODO: Check whether we want to enable the followings:
|
||||
# * debug-info
|
||||
# * fuse
|
||||
# * malloc-trim
|
||||
# * multiprocess
|
||||
# * qom-cast-debug
|
||||
# * trace-backends=dtrace
|
||||
#
|
||||
# Fedora has avx2 enabled for ix86, while we can't (I tried). Guess it's
|
||||
# because, for them, ix86 == i686 (while for us it's i586).
|
||||
|
||||
# Let's try to stick to _FORTIFY_SOURCE=2 for now
|
||||
EXTRA_CFLAGS="$(echo %{optflags} | sed -E 's/-[A-Z]?_FORTIFY_SOURCE[=]?[0-9]*//g') -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-error"
|
||||
|
||||
%srcdir/configure \
|
||||
%if 0%{?suse_version} >= 1600
|
||||
--python=%_bindir/python3 \
|
||||
%else
|
||||
--python=%_bindir/python3.11 \
|
||||
%endif
|
||||
--docdir=%_docdir \
|
||||
--datadir=%_datadir \
|
||||
--extra-cflags="${EXTRA_CFLAGS}" \
|
||||
--firmwarepath=%_datadir/%name \
|
||||
--libdir=%_libdir \
|
||||
--libexecdir=%_libexecdir \
|
||||
--localstatedir=%_localstatedir \
|
||||
--prefix=%_prefix \
|
||||
--sysconfdir=%_sysconfdir \
|
||||
--with-pkgversion="%(echo '%{distro}' | sed 's/ (.*)//')" \
|
||||
%{disable_everything} \
|
||||
%if %{with system_membarrier}
|
||||
--enable-membarrier \
|
||||
%endif
|
||||
%if %{with malloc_trim}
|
||||
--enable-malloc-trim \
|
||||
%endif
|
||||
%if "%{_lto_cflags}" != "%{nil}"
|
||||
--enable-lto \
|
||||
%endif
|
||||
--disable-install-blobs \
|
||||
--enable-attr \
|
||||
--enable-coroutine-pool \
|
||||
--enable-linux-user \
|
||||
--enable-selinux \
|
||||
--enable-tcg \
|
||||
--static
|
||||
|
||||
echo "=== Content of config-host.mak: ==="
|
||||
cat config-host.mak
|
||||
echo "=== ==="
|
||||
|
||||
%make_build
|
||||
|
||||
%install
|
||||
cd %blddir
|
||||
|
||||
%make_build install DESTDIR=%{buildroot}
|
||||
|
||||
rm -rf %{buildroot}%_datadir/qemu/keymaps
|
||||
unlink %{buildroot}%_datadir/qemu/trace-events-all
|
||||
install -d -m 755 %{buildroot}%_sbindir
|
||||
install -m 755 scripts/qemu-binfmt-conf.sh %{buildroot}%_sbindir
|
||||
install -d -m 755 %{buildroot}%{_prefix}/lib/binfmt.d/
|
||||
scripts/qemu-binfmt-conf.sh --systemd ALL --persistent yes --preserve-argv0 yes --exportdir %{buildroot}%{_prefix}/lib/binfmt.d/
|
||||
|
||||
%fdupes -s %{buildroot}
|
||||
|
||||
%check
|
||||
cd %blddir
|
||||
|
||||
%ifarch aarch64 %ix86 ppc ppc64 ppc64le riscv64 s390x x86_64
|
||||
./qemu-%{qemu_arch} %_bindir/ls > /dev/null
|
||||
%endif
|
||||
|
||||
%make_build check-softfloat
|
||||
|
||||
%changelog
|
||||
7
rpm/qemu-rpmlintrc
Normal file
7
rpm/qemu-rpmlintrc
Normal file
@@ -0,0 +1,7 @@
|
||||
# This line is mandatory to access the configuration functions
|
||||
from Config import *
|
||||
|
||||
addFilter("arch-dependent-file-in-usr-share")
|
||||
addFilter("obsolete-not-provided")
|
||||
addFilter("summary-not-capitalized")
|
||||
addFilter("executable-stack")
|
||||
53
rpm/qemu-supportconfig
Normal file
53
rpm/qemu-supportconfig
Normal file
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
#############################################################
|
||||
# Name: Supportconfig Plugin for QEMU/KVM
|
||||
# Description: Gathers important troubleshooting information
|
||||
# about QEMU
|
||||
#############################################################
|
||||
|
||||
RCFILE="/usr/lib/supportconfig/resources/supportconfig.rc"
|
||||
OF="output-qemu.txt"
|
||||
|
||||
if [ -s $RCFILE ]; then
|
||||
if ! source $RCFILE; then
|
||||
log_write $OF "ERROR: Initializing resource file: $RCFILE"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
rpm_verify $OF qemu || exit 111
|
||||
|
||||
# skip if the host is xen
|
||||
log_write $OF "#==[ Checking if booted Xen ]=================================#"
|
||||
if [ -d /proc/xen ] && [ -e /proc/xen/capabilities ] && [ `cat /proc/xen/capabilities` = "control_d" ]; then
|
||||
log_write $OF "Yes"
|
||||
log_write $OF "Skipped"
|
||||
exit 0
|
||||
else
|
||||
log_write $OF "No"
|
||||
fi
|
||||
|
||||
# basic system information
|
||||
log_cmd $OF "uname -r"
|
||||
log_cmd $OF "lscpu"
|
||||
log_cmd $OF "lspci -v"
|
||||
log_cmd $OF "lsscsi"
|
||||
log_cmd $OF "kvm_stat -1"
|
||||
log_cmd $OF "lsmod | grep ^kvm"
|
||||
for MODULE in `lsmod | grep ^kvm | cut -d ' ' -f 1`; do
|
||||
log_cmd $OF "modinfo $MODULE"
|
||||
done
|
||||
log_cmd $OF "ps -ef | grep qemu"
|
||||
|
||||
# list contents of common config and image directories
|
||||
log_cmd $OF "ls -alR /var/lib/libvirt/images/"
|
||||
|
||||
# network-related info often useful for debugging
|
||||
nm_enabled=$(systemctl is-enabled NetworkManager.service > /dev/null 2>&1; echo $?)
|
||||
if [ $nm_enabled -eq 0 ]; then
|
||||
log_write $OF "NOTE: NetworkManager should not be enabled on a KVM host"
|
||||
fi
|
||||
log_cmd $OF "ip route list"
|
||||
log_cmd $OF "ip neigh list"
|
||||
log_cmd $OF "ip link show type bridge"
|
||||
log_cmd $OF "bridge link show"
|
||||
493
rpm/qemu.keyring
Normal file
493
rpm/qemu.keyring
Normal file
@@ -0,0 +1,493 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
=YraJ
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
1946
rpm/qemu.spec
Normal file
1946
rpm/qemu.spec
Normal file
File diff suppressed because it is too large
Load Diff
1
rpm/seabios_version
Normal file
1
rpm/seabios_version
Normal file
@@ -0,0 +1 @@
|
||||
rel-1.16.3-2-gc13ff2cd
|
||||
1
rpm/skiboot_version
Normal file
1
rpm/skiboot_version
Normal file
@@ -0,0 +1 @@
|
||||
v7.0
|
||||
926
rpm/supported.arm.txt
Normal file
926
rpm/supported.arm.txt
Normal file
@@ -0,0 +1,926 @@
|
||||
[qemu-arm package document]
|
||||
|
||||
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
===============================================
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The QEMU based packages included with SLES 15 SP4 provide a large variety of
|
||||
features, from the very latest customer requests to features of questionable
|
||||
quality or value. The linux kernel includes components which contribute KVM
|
||||
virtualization features as well. This document was created to assist the user
|
||||
in deciding which features can be relied upon to build enterprise class
|
||||
virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64),
|
||||
for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered
|
||||
at the L3 (full support) level. The bulk of this document deals with L3
|
||||
supported features and is primarily ARM64 centric. This document should be
|
||||
considered a companion to the standard virtualization documentation delivered
|
||||
with the product.
|
||||
|
||||
KVM is implemented in linux kernel modules which enable the linux kernel to
|
||||
function as an integral part of the KVM hypervisor. The hypervisor-guest
|
||||
interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux
|
||||
host assists in the virtualization of storage, networking and display
|
||||
resources as well as allowing direct hardware passthrough of PCI and USB
|
||||
devices. Linux memory and cpu management features are used by QEMU/KVM to
|
||||
enable guests to share those host resources as efficiently as possible.
|
||||
|
||||
QEMU is a primary component of KVM based virtualization. The QEMU emulator
|
||||
binary qemu-system-aarch64 is the program to use to access KVM virtualization.
|
||||
When using this program, the -machine option accel=kvm (or its alias
|
||||
-enable-kvm) or --accel kvm option must be specified for KVM acceleration to
|
||||
be used by the guest.
|
||||
|
||||
Libvirt is the preferred means of accessing QEMU/KVM functionality and is
|
||||
documented elsewhere. This document focuses on the features and direct usage
|
||||
of QEMU/KVM as provided by the QEMU based packages.
|
||||
|
||||
Major QEMU/KVM Supported Features
|
||||
---------------------------------
|
||||
|
||||
- KVM virtualization is accomplished by using the QEMU program in KVM
|
||||
acceleration mode. KVM acceleration requires that both guest and host have
|
||||
the same fundamental architecture.
|
||||
|
||||
- Guest images created under previous QEMU versions are supported by machine
|
||||
version compatibilities built into more recent QEMU versions.
|
||||
|
||||
- For ease of use, the QEMU program has defaults which represent traditional
|
||||
usage patterns.
|
||||
|
||||
- Guest virtual machine characteristics are specified by a combination of
|
||||
internal defaults, options provided on the QEMU program command-line, runtime
|
||||
configurations set via the monitor interfaces and optional config files. The
|
||||
runtime control of a VM is effected either through the Human Monitor
|
||||
"Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP)
|
||||
interface. For QMP details, see qemu-qmp-ref man page.
|
||||
Since a KVM guest runs in the context of a normal linux process, some types
|
||||
of execution controls are managed with linux tools.
|
||||
|
||||
- QEMU is compatible with EDK II based UEFI firmware available with SLES 15 SP4,
|
||||
which allow boot options common to physical systems, along with other features
|
||||
tailored to virtualization. Various VGABIOS ROMs, from the SEABIOS project,
|
||||
are also available.
|
||||
|
||||
- Some QEMU messages have been localized to various languages. This is provided
|
||||
by the optional qemu-lang package. Keyboard mappings for various nationalities
|
||||
is also provided.
|
||||
|
||||
- Virtual machine lifecycle controls include startup through the UEFI BIOS or
|
||||
kernel boot, ACPI based shutdown, execution pausing, the saving and restoring
|
||||
of machine state or disk state, VM migration to another host, and
|
||||
miscellaneous controls available through the "monitors" mentioned above.
|
||||
|
||||
- Guest execution state may be "moved" in both time (save/restore) and space
|
||||
(static and live migration). These migrations or save/restore operations can
|
||||
take place either from certain prior SLES versioned hosts to a SLES 15 SP4
|
||||
host or between hosts of the same version. Certain other restrictions also
|
||||
apply.
|
||||
|
||||
- Security considerations include privileged helpers and a security model which
|
||||
allows running guests as a non-root user.
|
||||
|
||||
- QEMU provides best effort reuse of existing disk images, including those with
|
||||
systems installed, through geometry probing. Also disk images produced by
|
||||
other popular virtualization technologies may be imported into QEMU supported
|
||||
storage formats. These QEMU formats include features which exploit the
|
||||
benefits of virtualization.
|
||||
|
||||
- Memory, cpu and disk space overcommit are possible and can be beneficial when
|
||||
done responsibly. Additional management of these resources comes in the form
|
||||
of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing,
|
||||
trim, discard and hole punching.
|
||||
|
||||
- Guest performance is enhanced through the use of virtio devices, various disk
|
||||
caching modes, network acceleration via the vhost-net kernel module, multi-
|
||||
queue network transmit capabilities, host transparent huge pages (THP) and
|
||||
direct hugetlb usage. Physical PCI and USB devices may also be passed through
|
||||
to the guest, including SR-IOV VF's.
|
||||
|
||||
- The guest UI is accessable via GTK, VNC, Spice, and serial (including curses
|
||||
TUI) interfaces.
|
||||
|
||||
- Guest timekeeping is supported in a variety of ways, including a paravirtual
|
||||
clocksource, and options for the various guest clocks for how to handle the
|
||||
timeslicing of the guest's execution on the host.
|
||||
|
||||
- In addition to the para-virtualized devices already mentioned, other devices
|
||||
and infrastructure designed to avoid virtualization "problem areas" are
|
||||
available such as SPICE graphics, vmmouse emulation, tablet style pointer
|
||||
interfaces and virtio based UI interfaces.
|
||||
|
||||
- A built-in user-mode network (SLIRP) stack is available.
|
||||
|
||||
- Portions of the host file system may be shared with a guest by using virtFS.
|
||||
|
||||
- A guest "agent" is available for SLES 15 SP4 KVM guests via the
|
||||
qemu-guest-agent package. This allows some introspection and control of the
|
||||
guest OS environment from the host.
|
||||
|
||||
QEMU/KVM Technology Previews
|
||||
----------------------------
|
||||
|
||||
- All features indicated as not being supported in this document fall under the
|
||||
Technology Preview definition contained in the main product's release notes.
|
||||
|
||||
Noteworthy QEMU/KVM Unsupported Features
|
||||
----------------------------------------
|
||||
|
||||
- Note that some features are unsupported simply due to lack of validation. If
|
||||
an existing feature is desired, but not marked supported, let SUSE know about
|
||||
your requirements.
|
||||
|
||||
- The TCG "acceleration" mode may be helpful for problem isolation, but
|
||||
otherwise presents insufficient benefit and stability.
|
||||
|
||||
- GlusterFS integration is not enabled.
|
||||
|
||||
- 32 bit ARM KVM has never been supported by SUSE, but it's worth noting that
|
||||
this capability will cease to even be possible in a near-future QEMU/KVM
|
||||
(kernel) combination.
|
||||
|
||||
Deprecated, Superseded, Modified and Dropped Features
|
||||
-----------------------------------------------------
|
||||
|
||||
- https://qemu-project.gitlab.io/qemu/about/deprecated.html and
|
||||
https://qemu-project.gitlab.io/qemu/about/removed-features.html
|
||||
These websites track features deprecation and removal at the upstream
|
||||
development level. Our qemu package inherits this community direction, but be
|
||||
aware that we can and will deviate as needed. Those deviations and additional
|
||||
information can be found in this section. Feature deprecation as well as
|
||||
removed features are also tracked in the "System Emulation" section of the
|
||||
documentation installed with the qemu package.
|
||||
|
||||
- qemu-img: Deprecate use of -b without -F. Creating an image that requires
|
||||
format probing of the backing image is potentially unsafe and is now
|
||||
deprecated.
|
||||
|
||||
- Aspeed swift-bmc machine is deprecated. It can be easily replaced by the
|
||||
witherspoon-bmc or the romulus-bmc machines.
|
||||
|
||||
- The previously non-persistent backing file with pmem=on is deprecated. Modify
|
||||
VM configuration to set pmem=off to continue using fake NVDIMM with backing
|
||||
file or move backing file to NVDIMM storage and keep pmem=on.
|
||||
|
||||
- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M",
|
||||
"-machine" and "-d" is now considered deprecated. Use "help"
|
||||
instead.
|
||||
|
||||
- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC
|
||||
machine types, as it created an obsolete SCSI controller model.
|
||||
|
||||
- Use of aio=native without direct cache mode also being specified (cache=none,
|
||||
cache=directsync, or cache.direct=on) is no longer allowed.
|
||||
|
||||
- The use of image encryption in qcow and qcow2 formats is now considered
|
||||
deprecated.
|
||||
Analysis has shown it to be weak encryption, in addition to suffering from
|
||||
poor design. Images can easily be converted to a non-encrypted format.
|
||||
|
||||
- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now
|
||||
considered deprecated. In the future those names will be standardized to
|
||||
acpitable, boot, and smp respectively.
|
||||
|
||||
- These previously supported command line options are now considered deprecated:
|
||||
-display sdl,window_close= (use -display sdl,window-close)
|
||||
-no-quit (use -display ...,window-close=off)
|
||||
-chardev tty (use serial name instead)
|
||||
-chardev paraport (use parallel name instead)
|
||||
-device virtio-blk,scsi= (use virtio-scsi instead)
|
||||
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
|
||||
-enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details)
|
||||
-realtime mlock= (use -overcommit mem-lock= instead)
|
||||
-spice password=string (use password-string option instead)
|
||||
-writeconfig (no replacement - never really worked right)
|
||||
-share and noshare must be replaced by share=on/share=off
|
||||
-nodelay must be replaced by nodelay=on rather than delay=off
|
||||
-object-add options opened=on and loaded=on (both had no effect)
|
||||
|
||||
- These previously supported command line options are no longer supported:
|
||||
-device ide-drive (use ide-hd or ide-cd instead)
|
||||
-device scsi-disk (use scsi-hd or scsi-cd instead)
|
||||
|
||||
- These previously supported command line options are no longer recognized:
|
||||
-balloon (use -device virtio-balloon instead)
|
||||
-clock
|
||||
-device ivshmem (use ivshmem-doorbell or ivshmem-plain instead)
|
||||
-device pc-sysfw (no longer needed)
|
||||
-device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead)
|
||||
-display sdl
|
||||
-no-frame
|
||||
-nodefconfig (use -no-user-config instead)
|
||||
-realtime ...
|
||||
-sdl
|
||||
-show-cursor
|
||||
-virtioconsole (use -device virtconsole instead)
|
||||
|
||||
- The previously unsupported machine type xlnx-ep108 is no longer recognized
|
||||
(used xlnx-zcu102 unstead)
|
||||
|
||||
- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off"
|
||||
will now cause a warning. The current behavior for this combination where
|
||||
"+feature/-feature" wins over "feature=on/off", will be changed going forward
|
||||
so that "+feature" and "-feature" will be synonyms for "feature=on" and
|
||||
"feature=off" respectively.
|
||||
|
||||
- The previously supported blkdev-add QMP command has been flagged as lacking
|
||||
and could possibly change syntax in the future.
|
||||
|
||||
- This previously unsupported command line option is now deprecated:
|
||||
-soundhw (use -device ... instead)
|
||||
|
||||
- These previously unsupported command line options are no longer recognized:
|
||||
-bt
|
||||
-device at24c-eeprom
|
||||
-device mmio_interface
|
||||
-device ssi-sd
|
||||
-device tpm-tis-device
|
||||
-device u2f-passthru
|
||||
-device vhost-user-vsock-pci-transitional
|
||||
-device vhost-vsock-pci-transitional
|
||||
-device virtio-iommu-pci-transitional
|
||||
-enable-hax
|
||||
-tb-size
|
||||
-tdf
|
||||
-xen-create
|
||||
|
||||
- These previously supported QMP commands are now deprecated:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- These previously supported QMP commands are no longer recognized:
|
||||
info cpustats
|
||||
block_passwd
|
||||
change (use blockdev-change-medium or change-vnc-password instead)
|
||||
cpu-add (use device_add instead)
|
||||
migrate-set-cache-size (use migrate-set-parameters instead)
|
||||
migrate_set_downtime (use migrate-set-parameters instead)
|
||||
migrate_set_speed (use migrate-set-parameters instead)
|
||||
query-cpus (use query-cpus-fast instead)
|
||||
query-events
|
||||
query-migrate-cache-size (use query-migrate-parameters instead)
|
||||
|
||||
- These previously supported monitor commands are now deprecated:
|
||||
change
|
||||
|
||||
- These previously supported monitor commands are no longer recognized:
|
||||
info cpustats
|
||||
block_passwd ...
|
||||
cpu-add (use device_add instead)
|
||||
migrate_set_cache_size
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
pci_add (use device_add instead)
|
||||
pci_del (use device_del instead)
|
||||
usb_add (use device_add instead)
|
||||
usb_del (use device_del instead)
|
||||
|
||||
- These previously unsupported monitor command are now deprecated:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- These previously unsupported monitor commands are no longer recognized:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
host_net_add
|
||||
host_net_remove
|
||||
|
||||
- These previously unsupported QMP commands are now supported under a new name:
|
||||
x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead)
|
||||
x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead)
|
||||
x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead)
|
||||
x-block-latency-histogram-set (use block-latency-histogram-set instead)
|
||||
x-blockdev-create (use blockdev-create instead)
|
||||
|
||||
- This previously unsupported QMP commands is no longer recognized:
|
||||
x-nbd-server-add-bitmap
|
||||
|
||||
- Due to upstream's decision to no longer fully support the qed storage format
|
||||
going forward (since it really provides no benefit over qcow2 and is now no
|
||||
longer actively maintained upstream), creating qed storage images is no longer
|
||||
supported and it is highly discouraged to continue using existing qed images.
|
||||
They should instead be converted to another supported format.
|
||||
|
||||
QEMU Command-Line and Monitor Syntax and Support
|
||||
------------------------------------------------
|
||||
|
||||
- The QEMU program command-line syntax is as follows:
|
||||
qemu-system-aarch64 [options]
|
||||
|
||||
Where 'options' are taken from the options listed below.
|
||||
The images used with -drive or -cdrom, may be in the raw (no format) or qcow2
|
||||
storage formats, and may be located in files within the host filesystem,
|
||||
logical volumes, host physical disks, or network based storage. Read only
|
||||
media may also be accessed via URL style protocol specifiers.
|
||||
|
||||
Note that as a general rule, as new command line options are added which serve
|
||||
to replace an older option or interface, you are strongly encouraged to adapt
|
||||
your usage to the new option. The new option is being introduced to provide
|
||||
better functionality and usability going forward. In some cases existing
|
||||
problems or even bugs in older interfaces cannot be fixed due to functional
|
||||
expectations, but are resolved in the newer interface or option.
|
||||
This advice includes moving to the most recent machine type (eg virt-6.1
|
||||
instead of virt-6.0) if possible.
|
||||
|
||||
- The following command line options are supported:
|
||||
-accel ...
|
||||
-action ...
|
||||
-add-fd ...
|
||||
-alt-grab
|
||||
-append ...
|
||||
-audio-help
|
||||
-audiodev
|
||||
-bios ...
|
||||
-blockdev ...
|
||||
-boot ...
|
||||
-cdrom ...
|
||||
-chardev ...
|
||||
-compat ...
|
||||
-cpu host
|
||||
-ctrl-grab
|
||||
-d ...
|
||||
-daemonize
|
||||
-debugcon ...
|
||||
-device
|
||||
|
||||
[VGA|rtl8139|virtio-net-pci|virtio-blk-pci|virtio-balloon-pci|
|
||||
virtio-9p-pci|usb-hub|usb-ehci|usb-tablet|usb-storage|usb-mouse|
|
||||
usb-kbd|virtserialport|virtconsole|virtio-serial-pci|i82559er|
|
||||
virtio-scsi-pci|scsi-cd|scsi-hd|scsi-generic|scsi-disk|scsi-block|
|
||||
pci-serial|pci-serial-2x|pci-serial-4x|ich9-ahci|usb-host|usb-serial|
|
||||
usb-wacom-tablet|usb-braille|usb-net|pci-ohci|virtio-rng-pci|i6300esb|
|
||||
qxl|qxl-vga|pvpanic|vfio-pci|ivshmem-doorbell|ivshmem-plain|
|
||||
pci-bridge|megasas-gen2|e1000e|e1000|vmcoreinfo|pcie-pci-bridge|
|
||||
vhost-user-blk|vhost-user-blk-pci|vhost-user-scsi|vhost-user-scsi-pci|
|
||||
vhost-vsock-pci|virtio-crypto-pci|virtio-vga|
|
||||
vhost-scsi-pci-non-transitional|vhost-scsi-pci-transitional|
|
||||
vhost-user-blk-pci-non-transitional|vhost-user-blk-pci-transitional|
|
||||
vhost-user-scsi-pci-non-transitional|vhost-user-scsi-pci-transitional|
|
||||
vhost-vsock-pci-non-transitional|virtio-9p-pci-non-transitional|
|
||||
virtio-9p-pci-transitional|virtio-balloon-pci-non-transitional|
|
||||
virtio-balloon-pci-transitional|virtio-blk-pci-non-transitional|
|
||||
virtio-blk-pci-transitional|virtio-input-host-pci-non-transitional|
|
||||
virtio-input-host-pci-transitional|virtio-net-pci-non-transitional|
|
||||
virtio-net-pci-transitional|virtio-rng-pci-non-transitional|
|
||||
virtio-rng-pci-transitional|virtio-scsi-pci-non-transitional|
|
||||
virtio-scsi-pci-transitional|virtio-serial-pci-non-transitional|
|
||||
virtio-serial-pci-transitional|vhost-user-fs-pci|vhost-user-gpu|
|
||||
vhost-user-pci-pci|vhost-user-input|vhost-user-input-pci|
|
||||
vhost-user-vga|virtio-mmio|guest-loader|nvme-subsys|pvpanic-pci]
|
||||
(the following are aliases of these supported devices: ahci|
|
||||
virtio-blk|virtio-net|virtio-serial|virtio-balloon| virtio-9p|
|
||||
virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet|
|
||||
virtio-gpu|virtio-scsi|virtio-rng|e1000-82540em)
|
||||
|
||||
-dfilter range, ...
|
||||
-display ...
|
||||
-drive
|
||||
|
||||
... (if specified if=[virtio] and format=[qcow2|raw] and
|
||||
snapshot=off only)
|
||||
|
||||
-echr ...
|
||||
-enable-fips
|
||||
-enable-kvm
|
||||
-fsdev ...
|
||||
-full-screen
|
||||
-fw_cfg ...
|
||||
-gdb ...
|
||||
-global ...
|
||||
-h
|
||||
-help
|
||||
-incoming ...
|
||||
-initrd ...
|
||||
-iscsi ...
|
||||
-k ...
|
||||
-kernel ...
|
||||
-loadvm ...
|
||||
-m ...
|
||||
-M [help|none|virt-2.6|virt-2.11|virtio-3.1|virt-4.2|virt-5.2|virt-6.0|virt-6.1]
|
||||
-machine [help|none|virt-2.6|virt-2.11|virt-3.1|virt-4.2|virt-5.2|virt-6.0|virt-6.1]
|
||||
-mem-path ...
|
||||
-mem-prealloc
|
||||
-mon ...
|
||||
-monitor ...
|
||||
-msg ...
|
||||
-name ...
|
||||
-net
|
||||
|
||||
[bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139,
|
||||
and virtio are supported)
|
||||
|
||||
-netdev [bridge|tap|user] ...
|
||||
-nic ...
|
||||
-no-acpi
|
||||
-nodefaults
|
||||
-nographic
|
||||
-no-quit
|
||||
-no-reboot
|
||||
-no-shutdown
|
||||
-no-user-config
|
||||
-object ...
|
||||
-only-migratable
|
||||
-parallel ...
|
||||
-pidfile ...
|
||||
-plugin ...
|
||||
-qmp ...
|
||||
-qmp-pretty ...
|
||||
-readconfig ...
|
||||
-rtc ...
|
||||
-runas ...
|
||||
-s
|
||||
-S
|
||||
-sandbox ...
|
||||
-seed ...
|
||||
-serial ...
|
||||
-smbios ...
|
||||
-smp ...
|
||||
-spice
|
||||
-tpmdev passthrough ...
|
||||
-trace ...
|
||||
-usb
|
||||
-usbdevice [braile|disk|host|mouse|net|serial|tablet]
|
||||
-uuid ...
|
||||
-version
|
||||
-vga [none|qxl|std|virtio]
|
||||
-virtfs ...
|
||||
-vnc ...
|
||||
-watchdog ...
|
||||
-watchdog-action ...
|
||||
-writeconfig ...
|
||||
|
||||
- The following monitor commands are supported:
|
||||
?
|
||||
announce_self ...
|
||||
balloon ...
|
||||
block_resize ...
|
||||
boot_set ...
|
||||
c
|
||||
change ...
|
||||
chardev-add ...
|
||||
chardev-change ...
|
||||
chardev-remove ...
|
||||
chardev-send-break ...
|
||||
client_migrate_info ...
|
||||
closefd ...
|
||||
cont
|
||||
cpu ...
|
||||
delvm ...
|
||||
device_add ...
|
||||
device_del ...
|
||||
drive_add ...
|
||||
drive_backup ...
|
||||
drive_del ...
|
||||
dump_guest_memory ...
|
||||
eject ...
|
||||
gdbserver ...
|
||||
gpa2hpa ...
|
||||
gpa2hva ...
|
||||
gva2gpa ...
|
||||
help
|
||||
i ...
|
||||
info ...
|
||||
loadvm ...
|
||||
logfile ...
|
||||
logitem ...
|
||||
mce ...
|
||||
memsave ...
|
||||
migrate ...
|
||||
migrate_cancel
|
||||
migrate_continue ...
|
||||
migrate_incoming
|
||||
migrate_pause
|
||||
migrate_recover ...
|
||||
migrate_set_capability ...
|
||||
migrate_set_parameter ...
|
||||
migrate_start_post_copy
|
||||
mouse_button ...
|
||||
mouse_move ...
|
||||
mouse_set ...
|
||||
nmi ...
|
||||
o ...
|
||||
object_add ...
|
||||
object_del ...
|
||||
p ...
|
||||
pmemsave ...
|
||||
print ...
|
||||
q
|
||||
qemu-io ...
|
||||
qom-list
|
||||
qom-set
|
||||
ringbuf_read ...
|
||||
ringbuf_write ...
|
||||
savevm ...
|
||||
screendump ...
|
||||
sendkey ...
|
||||
snapshot_blkdev_internal ...
|
||||
snapshot_delete_blkdev_internal ...
|
||||
stop
|
||||
sum ...
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event ...
|
||||
watchdog_action ...
|
||||
x ...
|
||||
xp ...
|
||||
|
||||
- The following QMP commands are supported:
|
||||
add_client
|
||||
add-fd
|
||||
announce-self
|
||||
balloon
|
||||
blockdev-add
|
||||
blockdev-backup
|
||||
blockdev-change-medium
|
||||
blockdev-close-tray
|
||||
blockdev-create
|
||||
blockdev-del
|
||||
blockdev-mirror
|
||||
blockdev-open-tray
|
||||
blockdev-snapshot
|
||||
blockdev-snapshot-delete-internal-sync
|
||||
blockdev-snapshot-internal-sync
|
||||
blockdev-snapshot-sync
|
||||
block-commit
|
||||
block-dirty-bitmap-add
|
||||
block-dirty-bitmap-clear
|
||||
block-dirty-bitmap-disable
|
||||
block-dirty-bitmap-enable
|
||||
block-dirty-bitmap-merge
|
||||
block-dirty-bitmap-remove
|
||||
block-export-add
|
||||
block-export-del
|
||||
block-latency-histogram-set
|
||||
block_resize
|
||||
block_set_io_throttle
|
||||
block-set-write-threshold
|
||||
block_stream
|
||||
calc-dirty-rate
|
||||
change-vnc-password
|
||||
chardev-add
|
||||
chardev-change
|
||||
chardev-remove
|
||||
chardev-send-break
|
||||
client_migrate_info
|
||||
closefd
|
||||
cont
|
||||
cpu
|
||||
device_add
|
||||
device_del
|
||||
device-list-properties
|
||||
display-reload
|
||||
dump-guest-memory
|
||||
eject
|
||||
expire_password
|
||||
getfd
|
||||
human-monitor-command
|
||||
inject-nmi
|
||||
input-send-event
|
||||
job-cancel
|
||||
job-complete
|
||||
job-dismiss
|
||||
job-finalize
|
||||
job-pause
|
||||
job-resume
|
||||
memsave
|
||||
migrate
|
||||
migrate_cancel
|
||||
migrate-continue
|
||||
migrate-incoming
|
||||
migrate-pause
|
||||
migrate-resume
|
||||
migrate-set-capabilities
|
||||
migrate-set-parameters
|
||||
migrate-start-postcopy
|
||||
object-add
|
||||
object-del
|
||||
pmemsave
|
||||
qmp_capabilities
|
||||
qom-get
|
||||
qom-list
|
||||
qom-list-types
|
||||
qom-set
|
||||
query-acpi-ospm-status
|
||||
query-balloon
|
||||
query-block
|
||||
query-block-exports
|
||||
query-block-jobs
|
||||
query-blockstats
|
||||
query-chardev
|
||||
query-chardev-backends
|
||||
query-command-line-options
|
||||
query-commands
|
||||
query-cpu-definitions
|
||||
query-cpu-model-expansion
|
||||
query-cpus-fast
|
||||
query-current-machine
|
||||
query-display-options
|
||||
query-dirty-rate
|
||||
query-dump
|
||||
query-dump-guest-memory-capability
|
||||
query-fdsets
|
||||
query-gic-capabilities
|
||||
query-hotpluggable-cpus
|
||||
query-iothreads
|
||||
query-jobs
|
||||
query-kvm
|
||||
query-machines
|
||||
query-memdev
|
||||
query-memory-devices
|
||||
query-memory-size-summary
|
||||
query-mice
|
||||
query-migrate
|
||||
query-migrate-capabilities
|
||||
query-migrate-parameters
|
||||
query-name
|
||||
query-named-block-nodes
|
||||
query-pci
|
||||
query-pr-managers
|
||||
query-qmp-schema
|
||||
query-rocker
|
||||
query-rocker-of-dpa-flows
|
||||
query-rocker-of-dpa-groups
|
||||
query-rocker-ports
|
||||
query-rx-filter
|
||||
query-spice
|
||||
query-status
|
||||
query-target
|
||||
query-tpm
|
||||
query-tpm-models
|
||||
query-tpm-types
|
||||
query-uuid
|
||||
query-version
|
||||
query-vnc
|
||||
query-vnc-servers
|
||||
query-yank
|
||||
query-xen-replication-status
|
||||
quit
|
||||
remove-fd
|
||||
ringbuf-read
|
||||
ringbuf-write
|
||||
screendump
|
||||
send-key
|
||||
set-action
|
||||
set_link
|
||||
set_password
|
||||
snapshot-delete
|
||||
snapshot-load
|
||||
snapshot-save
|
||||
stop
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event-get-state
|
||||
trace-event-set-state
|
||||
transaction
|
||||
watchdog-set-action
|
||||
yank
|
||||
|
||||
- The following command line options are unsupported:
|
||||
|
||||
-acpitable ...
|
||||
-chroot ...
|
||||
-cpu ... (all except host)
|
||||
-curses
|
||||
-device
|
||||
|
||||
[160s33b|320s33b|640s33b|a15mpcore_priv|a9mpcore_priv|a9-scu|adlib|
|
||||
ads7846|allwinner-a10|allwinner-a10-pic|allwinner-A10-timer|
|
||||
allwinner-emac|amd-iommu|AMDVI-PCI|arm1026-arm-cpu|arm1136-arm-cpu|
|
||||
arm1136-r2-arm-cpu|arm1176-arm-cpu|arm11mpcore-arm-cpu|
|
||||
arm11mpcore_priv|arm11-scu|arm926-arm-cpu|arm946-arm-cpu|
|
||||
arm.cortex-a9-global-timer|arm_gic|arm-gicv2m|
|
||||
arm_mptimer|armv7m_nvic|aspeed.timer|aspeed.vic|ast2400|
|
||||
at25128a-nonjedec|at25256a-nonjedec|at25df041a|at25df321a|at25df641|
|
||||
at25fs010|at25fs040|at26df081a|at26df161a|at26df321|at26f004|
|
||||
at45db081d|bcm2835-aux|bcm2835-dma|bcm2835-fb|bcm2835-ic|bcm2835-mbox|
|
||||
bcm2835-peripherals|bcm2835-property|bcm2836|bcm2836-control|
|
||||
bochs-display|cadence_gem|cadence_ttc|cadence_uart|ccid-card-emulated|
|
||||
ccid-card-passthru|cfi.pflash02|cirrus-vga|cmsdk-apb-dualtimer|
|
||||
cmsdk-apb-watchdog|corgi-ssp|cortex-a15-arm-cpu|cortex-a53-arm-cpu|
|
||||
cortex-a57-arm-cpu|cortex-a72-arm-cpu|cortex-a8-arm-cpu|
|
||||
cortex-a9-arm-cpu|cortex-m0-arm-cpu|cortex-m3-arm-cpu|
|
||||
cortex-m4-arm-cpu|cortex-r5-arm-cpu|cs4231a|digic|digic-timer|
|
||||
digic-uart|ds1338|dscm1xxxx|e1000|en25f32|en25p32|en25p64|en25q32b|
|
||||
en25q64|exynos4210.combiner|exynos4210-ehci-usb|exynos4210.fimd|
|
||||
exynos4210.gic|exynos4210.i2c|exynos4210.irq_gate|exynos4210.mct|
|
||||
exynos4210.pmu|exynos4210.pwm|exynos4210.rtc|exynos4210.uart|floppy|
|
||||
fslimx25|fslimx31|fusbh200-ehci-usb|fw_cfg|gd25q32|gd25q64|
|
||||
gpex-pcihost|gpex-root|gpio_i2c|gpio-key|gus|hyperv-testdev|
|
||||
highbank-regs|host-arm-cpu|*-i386-cpu|i8042|ib700|icp-ctrl-regs|
|
||||
igd-passthrough-isa-bridge|imx25.ccm|imx31.ccm|imx6.ccm|imx.avic|
|
||||
imx.epit|imx.fec|imx.gpio|imx.gpt|imx.i2c|imx.serial|imx6ul.ccm|
|
||||
integrator_core|integrator_debug|integrator_pic|integrator_pit|
|
||||
intel_iommu|iotkit-sysctl|iotkit-sysinfo|ipmi-bmc-extern|ipmi-bmc-sim|
|
||||
isa-applesmc|isa-cirrus-vga|isa-debugcon|isa-debug-exit|isa-fdc|
|
||||
isa-ide|isa-ipmi-bt|isa-ipmi-kcs|isa-parallel|isa-vga|kvaser_pci|
|
||||
kvm-arm-gic|kvm-arm-gicv3|l2x0|lan9118|lm8323|loader|lsi53c810a|
|
||||
lsi53c895a|m25p05|m25p10|m25p128|m25p16|m25p20|m25p32|m25p40|m25p64|
|
||||
m25p80|m25pe16|m25pe20|m25pe80|m25px32|m25px32-s0|m25px32-s1|m25px64|
|
||||
m45pe10|m45pe16|m45pe80|mainstone-fpga|max1110|max1111|max7310|
|
||||
mioe3680_pci|msf2-soc|msf2-sysreg|mss-sp1|mss-timer|musicpal_gpio|
|
||||
musicpal_key|musicpal_lcd|musicpal-misc|mv88w8618_audio|mv88w8618_eth|
|
||||
mv88w8618_flashcfg|mv88w8618_pic|mv88w8618_pit|mv88w8618_wlan|
|
||||
mx25l12805d|mx25l12855e|mx25l1606e|mx25l2005a|mx25l25635e|mx25l25655e|
|
||||
mx25l3205d|mx25l4005a|mx25l6405d|mx25l8005|n25q032|n25q032a11|
|
||||
n25q032a13|n25q064|n25q064a11|n25q064a13|n25q128|n25q128a11|
|
||||
n25q128a13|n25q256a|n25q256a11|n25q256a13|n25q512a|n25q512a11|
|
||||
n25q512a13|nand|ne2k_isa|nrf51-soc|nrf51_soc.uart|nvdimm|omap2-gpio|
|
||||
omap2-intc|omap-gpio|omap_i2c|omap-intc|onenand|pc-dimm|pc-testdev|
|
||||
piix3-ide|piix3-ide|piix3-ide-xen|piix3-usb-uhci|pl011|pl011_luminary|
|
||||
pl022|pl031|pl041|pl050_keyboard|pl050_mouse|pl061|pl061_luminary|
|
||||
pl080|pl081|pl110|pl110_versatile|pl111|pl181|pl190|pl330|
|
||||
platform-bus-device|pvrdma|pxa250-arm-cpu|pxa255-arm-cpu|pxa25x-timer|
|
||||
pxa260-arm-cpu|pxa261-arm-cpu|pxa262-arm-cpu|pxa270-a0-arm-cpu|
|
||||
pxa270-a1-arm-cpu|pxa270-arm-cpu|pxa270-b0-arm-cpu|pxa270-b1-arm-cpu|
|
||||
pxa270-c0-arm-cpu|pxa270-c5-arm-cpu|pxa27x-timer|pxa2xx-dma|
|
||||
pxa2xx-fir|pxa2xx-gpio|pxa2xx_i2c|pxa2xx-i2c-slave|pxa2xx-mmci|
|
||||
pxa2xx-pcmcia|pxa2xx_pic|pxa2xx_rtc|pxa2xx-ssp|ramfb|realview_gic|
|
||||
realview_mpcore|realview_pci|realview_sysctl|s25fl016k|s25fl064k|
|
||||
s25fl129p0|s25fl129p1|s25fl256s0|s25fl256s1|s25fl512s|s25sl004a|
|
||||
s25sl008a|s25sl016a|s25sl032a|s25sl032p|s25sl064a|s25sl064p|
|
||||
s25sl12800|s25sl12801|s70fl01gs|sa1100-arm-cpu|sa1110-arm-cpu|sb16|
|
||||
scoop|sdhci-pci|sga|sii9022|sl-nand|smbus-eeprom|smc91c111|sp804|
|
||||
spitz-keyboard|spitz-lcdtg|ssd0303|ssd0323|sst25vf016b|sst25vf032b|
|
||||
sst25vf040b|sst25vf080b|sst25wf010|sst25wf020|sst25wf040| sst25wf080|
|
||||
sst25wf512|stellaris-adc|stellaris_enet|stellaris-gptm|stellaris-i2c|
|
||||
stm32f205-soc|stm32f2xx-syscfg|stm32f2xx-timer|stm32f2xx-usart|
|
||||
strongarm-gpio|strongarm_pic|strongarm-ppc|strongarm-rtc|
|
||||
strongarm-ssp|strongarm-uart|tegra2-ehci-usb|ti925t-arm-cpu|tmp105|
|
||||
tosa_dac|tosa-ssp|tusb6010|twl92230|tz-msc|usb-redir|versatile_i2c|
|
||||
versatilepb_sic|versatile_pci|versatile_pci_host|vfio-pci-nohotplug|
|
||||
vfio-platform|vhost-vsock-device|virtconsole|virtio-crypto-device|
|
||||
vmgenid|vmware-svga|w25q256|w25q32|w25q32dw|w25q64|w25q80|w25q80bl|
|
||||
w25x10|w25x16|w25x20|w25x32|w25x40|w25x64|w25x80|wm8750|*-x86_64-cpu|
|
||||
xen-backend|xen-pci-passthrough|xen-platform|xen-pvdevice|xgmac|
|
||||
xilinxzynq_slcr|xlnx-versal|xlnx.ps7-qspi|xlnx.ps7-spi|xlnxzynqmp|
|
||||
xlnxzynq-xadc|armsse-cpuid|armsse-mhu|cpu-cluster|luminary-watchdog|
|
||||
microbit.i2c|nrf51_soc.gpio|nrf51_soc.nvm|nrf51_soc.rng|
|
||||
nrf51_soc.timer|platform-ehci-usb|sse-200|vmware-svga|vmxnet3|ati-vga|
|
||||
cirrus-vga|vhost-user-fs-device|tulip|ati-vga|aw-hc-ehci-usb|
|
||||
virtio-iommu-device|virtio-iommu-pci|
|
||||
virtio-iommu-pci-non-transitional|cortex-m7-arm-cpu|allwinner-cpucfg|
|
||||
allwinner-h3|allwinner-h3-ccu|allwinner-h3-dramc|allwinner-h3-sysctrl|
|
||||
allwinner-rtc-sun4i|allwinner-rtc-sun6i|allwinner-rtc-sun7i|
|
||||
allwinner-sdhost-sun4i|allwinner-sdhost-sun5i|allwinner-sid|
|
||||
allwinner-sun8i-emac|imx.rngc|imx.usbphy|serial|serial-io|
|
||||
stm32f405-soc|stm32f4xx-exti|stm32f4xx-syscfg|nvdimm|
|
||||
vhost-user-vsock-device|vhost-user-vsock-pci|
|
||||
vhost-user-vsock-pci-non-transitional|nvme-ns|ads7846|led|ssd0323|
|
||||
vhost-user-vga|ctucan_pci|bcm2835-cprman-clock-mux|
|
||||
bcm2835-cprman-cprman-dsi0hsck-mux|bcm2835-cprman-cprman-pll|
|
||||
bcm2835-cprman-cprman-pll-channel|mt25ql512ab|mx66l5123f|n25q512ax3|
|
||||
ssd0323|at24c-eeprom|emc1413|emc1414|is25lp016d|is25lp032|is25lp064|
|
||||
is25lp080d|is25lp128|is25lp256|is25lq040b|is25wp032|is25wp064|
|
||||
is25wp128|is25wp256|npcm7xx-clock-divider|npcm7xx-clock-pll|
|
||||
npcm7xx-clock-sel]
|
||||
(the following are aliases of these unsupported devices: lsi|
|
||||
piix3-usb-uhci)
|
||||
(note that some of these device names represent supported devices and
|
||||
are used internally, but are not specifyable via -device even though
|
||||
they appear in the list of devices)
|
||||
|
||||
-drive
|
||||
|
||||
,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or
|
||||
raw]
|
||||
|
||||
-dtb file
|
||||
-enable-sync-profile
|
||||
-fda/-fdb ...
|
||||
-g ...
|
||||
-hda/-hdb/-hdc/-hdd ...
|
||||
-icount ...
|
||||
-L ...
|
||||
-M
|
||||
|
||||
[akita|ast2500-evb|ast2600-evb|borzoi|canon-a1100|cheetah|collie|connex|
|
||||
cubieboard|emcraft-sf2|g220a-bmc|highbank|imx25-pdk|integratorcp|kzm|
|
||||
lm3s6965evb|lm3s811evb|mainstone|mcimx6ul-evk|mcimx7d-sabre|microbit|
|
||||
midway|mps2-an385|mps2-an386|mps2-an500|mps2-an505|mps2-an511|mps2-an521|
|
||||
mps3-an524|mps3-an547|musca-a|musca-b1|musicpal|n800|n810|netduino2|
|
||||
netduinoplus2|npcm750-evb|nuri|orangepi-pc|palmetto-bmc|quanta-gsj|raspi0|
|
||||
raspi1ap|raspi2|raspi2b|raspi3ap|raspi3|raspi3b|realview-eb|
|
||||
realview-eb-mpcore|realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite|
|
||||
sbsa-ref|smdkc210|sonorapass-bmc|spitz|supermicrox11-bmc|swift-bmc|sx1|
|
||||
sx1-v1|tacoma-bmc|terrier|tosa|verdex|versatileab|versatilepb|
|
||||
vexpress-a15|vexpress-a9|virt-2.12|virt-2.7|virt-2.8|virt-3.0|virt-4.0|
|
||||
virt-4.1|virt-5.0|virt-5.1|virt-6.0|virt|virt-6.1|witherspoon-bmc|
|
||||
xilinx-zynq-a9|xlnx-versal-virt|xlnx-zcu102|z2]
|
||||
|
||||
-machine
|
||||
|
||||
[akita|ast2500-evb|ast2600-evb|borzoi|canon-a1100|cheetah|collie|
|
||||
connex|cubieboard|emcraft-sf2|g220a-bmc|highbank|imx25-pdk|
|
||||
integratorcp|kzm|lm3s6965evb|lm3s811evb|mainstone|mcimx6ul-evk|
|
||||
mcimx7d-sabre|microbit|midway|mps2-an385|mps2-an386|mps2-an500|
|
||||
mps2-an505|mps2-an511|mps2-an521|mps3-an524|mps3-an547|musca-a|
|
||||
musca-b1|musicpal|n800|n810|netduino2|netduinoplus2|npcm750-evb|
|
||||
nuri|orangepi-pc|palmetto-bmc|quanta-gsj|raspi0|raspi1ap|raspi2|
|
||||
raspi2b|raspi3ap|raspi3|raspi3b|realview-eb|realview-eb-mpcore|
|
||||
realview-pb-a8|realview-pbx-a9|romulus-bmc|sabrelite|sbsa-ref|
|
||||
smdkc210|sonorapass-bmc|spitz|supermicrox11-bmc|swift-bmc|sx1|
|
||||
sx1-v1|tacoma-bmc|terrier|tosa|verdex|versatileab|versatilepb|
|
||||
vexpress-a15|vexpress-a9|virt-2.12|virt-2.7|virt-2.8|virt-3.0|
|
||||
virt-4.0|virt-4.1|virt-5.0|virt-5.1|virt-6.0|virt|virt-6.1|
|
||||
witherspoon-bmc|xilinx-zynq-a9|xlnx-versal-virt|xlnx-zcu102|z2]
|
||||
|
||||
-mtdblock file
|
||||
-net [socket|vde] ...
|
||||
-netdev [hubport|l2tpv3|socket|vde] ...
|
||||
-no-fd-bootchk
|
||||
-no-hpet
|
||||
-no-kvm
|
||||
-no-kvm-irqchip
|
||||
-no-kvm-pit
|
||||
-no-kvm-pit-reinjection
|
||||
-numa cpu ...
|
||||
-numa dist ...
|
||||
-numa node ...
|
||||
-option-rom ...
|
||||
-overcommit ...
|
||||
-pflash file
|
||||
-portrait
|
||||
-preconfig
|
||||
-prom-env ...
|
||||
-qtest ...
|
||||
-qtest-log ...
|
||||
-rotate
|
||||
-sd file
|
||||
-sdl
|
||||
-set ...
|
||||
-singlestep
|
||||
-snapshot
|
||||
-soundhw ...
|
||||
-tpmdev emulator ...
|
||||
-vga [cg3|tcx|virtio|cirrus|xenfb]
|
||||
-win2k-hack
|
||||
-xen-attach ...
|
||||
-xen-domid ...
|
||||
-xen-domid-restrict ...
|
||||
|
||||
- The following monitor commands are unsupported:
|
||||
block_job_cancel ...
|
||||
block_job_complete ...
|
||||
block_job_pause ...
|
||||
block_job_resume ...
|
||||
block_job_set_speed ...
|
||||
commit ...
|
||||
drive_mirror ...
|
||||
exit_preconfig
|
||||
expire_password ...
|
||||
hostfwd_add ...
|
||||
hostfwd_remove ...
|
||||
nbd_server_add ...
|
||||
nbd server_start ...
|
||||
nbd_server_stop ...
|
||||
netdev_add
|
||||
netdev_del ...
|
||||
pcie_aer_inject_error ...
|
||||
replay_break ...
|
||||
replay_delete_break
|
||||
replay_seek ...
|
||||
set_link ...
|
||||
set_password ...
|
||||
singlestep ...
|
||||
snapshot_blkdev ...
|
||||
stopcapture ...
|
||||
sync-profile ...
|
||||
wavcapture ...
|
||||
x_colo_lost_heartbeat
|
||||
|
||||
- The following QMP commands are unsupported:
|
||||
block-job-cancel
|
||||
block-job-complete
|
||||
block-job-pause
|
||||
block-job-resume
|
||||
block-job-set-speed
|
||||
change-backing-file
|
||||
drive-backup
|
||||
drive-mirror
|
||||
netdev_add
|
||||
netdev_del
|
||||
nbd-server-add
|
||||
nbd-server-start
|
||||
nbd-server-stop
|
||||
query-colo-status
|
||||
replay_break
|
||||
replay_delete_break
|
||||
replay_seek
|
||||
x-blockdev-amend
|
||||
x-blockdev-change
|
||||
x-blockdev-insert-medium
|
||||
x-blockdev-remove-medium
|
||||
x-blockdev-reopen
|
||||
x-colo-lost-heartbeat
|
||||
x-debug-block-dirty-bitmap-sha256
|
||||
x-debug-query-block-graph
|
||||
x-exit-preconfig
|
||||
xen-colo-do-checkpoint
|
||||
xen-load-devices-state
|
||||
xen-save-devices-state
|
||||
xen-set-global-dirty-log
|
||||
xen-set-replication
|
||||
6
rpm/supported.ppc.txt
Normal file
6
rpm/supported.ppc.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
[qemu-ppc package document]
|
||||
|
||||
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
===============================================
|
||||
|
||||
QEMU/KVM on ppc is not supported.
|
||||
868
rpm/supported.s390.txt
Normal file
868
rpm/supported.s390.txt
Normal file
@@ -0,0 +1,868 @@
|
||||
[qemu-s390 package document]
|
||||
|
||||
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
===============================================
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The QEMU based packages included with SLES 15 SP4 provide a large variety of
|
||||
features, from the very latest customer requests to features of questionable
|
||||
quality or value. The linux kernel includes components which contribute KVM
|
||||
virtualization features as well. This document was created to assist the user
|
||||
in deciding which features can be relied upon to build enterprise class
|
||||
virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64),
|
||||
for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered
|
||||
at the L3 (full support) level. The bulk of this document deals with L3
|
||||
supported features and is primarily s390x centric. This document should be
|
||||
considered a companion to the standard virtualization documentation delivered
|
||||
with the product.
|
||||
|
||||
KVM is implemented in linux kernel modules which enable the linux kernel to
|
||||
function as an integral part of the KVM hypervisor. The hypervisor-guest
|
||||
interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux
|
||||
host assists in the virtualization of storage, networking and display
|
||||
resources as well as allowing direct hardware passthrough of PCI devices.
|
||||
Linux memory and cpu management features are used by QEMU/KVM to enable guests
|
||||
to share those host resources as efficiently as possible.
|
||||
|
||||
QEMU is a primary component of KVM based virtualization. The legacy qemu-kvm
|
||||
program is available for continuity with pre SLES 12 usage, including in
|
||||
libvirt domain xml references. The QEMU emulator binary qemu-system-s390x is
|
||||
now the primary program to use to access KVM virtualization. When using this
|
||||
program, the -machine option accel=kvm (or its alias -enable-kvm) or --accel
|
||||
kvm option must be specified for KVM acceleration to be used by the guest.
|
||||
|
||||
Libvirt is the preferred means of accessing QEMU/KVM functionality and is
|
||||
documented elsewhere. This document focuses on the features and direct usage
|
||||
of QEMU/KVM as provided by the QEMU based packages.
|
||||
|
||||
Major QEMU/KVM Supported Features
|
||||
---------------------------------
|
||||
|
||||
- KVM virtualization is accomplished by using the QEMU program in KVM
|
||||
acceleration mode. KVM acceleration requires that both guest and host have
|
||||
the same fundamental architecture.
|
||||
|
||||
- Guest images created under previous QEMU versions are supported by machine
|
||||
version compatibilities built into more recent QEMU versions.
|
||||
|
||||
- For ease of use, the QEMU program has defaults which represent traditional
|
||||
usage patterns.
|
||||
|
||||
- Guest virtual machine characteristics are specified by a combination of
|
||||
internal defaults, options provided on the QEMU program command-line, runtime
|
||||
configurations set via the monitor interfaces and optional config files. The
|
||||
runtime control of a VM is effected either through the Human Monitor
|
||||
"Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP)
|
||||
interface. For QMP details, see qemu-qmp-ref man page.
|
||||
Since a KVM guest runs in the context of a normal linux process, some types
|
||||
of execution controls are managed with linux tools.
|
||||
|
||||
- QEMU incorporates virtualized, s390 specific, ccw bus based firmware for
|
||||
booting s390 guests. This firmware is automatically incorporated and
|
||||
doesn't need to be explicitly referenced.
|
||||
|
||||
- Some QEMU messages have been localized to various languages. This is provided
|
||||
by the optional qemu-lang package. Keyboard mappings for various nationalities
|
||||
is also provided.
|
||||
|
||||
- Virtual machine lifecycle controls include startup through the ccw firmware or
|
||||
kernel boot, firmware based shutdown, execution pausing, the saving and
|
||||
restoring of machine state or disk state, VM migration to another host, and
|
||||
miscellaneous controls available through the "monitors" mentioned above.
|
||||
|
||||
- Guest execution state may be "moved" in both time (save/restore) and space
|
||||
(static and live migration). These migrations or save/restore operations can
|
||||
take place either from certain prior SLES versioned hosts to a SLES 15 SP4
|
||||
host or between hosts of the same version. Certain other restrictions also
|
||||
apply.
|
||||
|
||||
- Security considerations include privileged helpers and a security model which
|
||||
allows running guests as a non-root user.
|
||||
|
||||
- QEMU provides best effort reuse of existing disk images, including those with
|
||||
systems installed, through geometry probing. Also disk images produced by
|
||||
other popular virtualization technologies may be imported into QEMU supported
|
||||
storage formats. These QEMU formats include features which exploit the
|
||||
benefits of virtualization.
|
||||
|
||||
- Memory, cpu and disk space overcommit are possible and can be beneficial when
|
||||
done responsibly. Additional management of these resources comes in the form
|
||||
of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing,
|
||||
trim, discard and hole punching.
|
||||
|
||||
- Guest performance is enhanced through the use of virtio devices, various disk
|
||||
caching modes, network acceleration via the vhost-net kernel module, multi-
|
||||
queue network transmit capabilities, host transparent huge pages (THP) and
|
||||
direct hugetlb usage. Physical PCI devices may also be passed through to the
|
||||
guest, including SR-IOV VF's.
|
||||
|
||||
- The guest UI is accessable via GTK, VNC, and serial (including curses TUI)
|
||||
interfaces.
|
||||
|
||||
- Guest timekeeping is supported in a variety of ways, including a paravirtual
|
||||
clocksource, and options for the various guest clocks for how to handle the
|
||||
timeslicing of the guest's execution on the host.
|
||||
|
||||
- In addition to the para-virtualized devices already mentioned, other devices
|
||||
and infrastructure designed to avoid virtualization "problem areas" are
|
||||
available such as SPICE graphics, vmmouse emulation, tablet style pointer
|
||||
interfaces and virtio based UI interfaces.
|
||||
|
||||
- A built-in user-mode network (SLIRP) stack is available.
|
||||
|
||||
- Portions of the host file system may be shared with a guest by using virtFS.
|
||||
|
||||
- A guest "agent" is available for SLES 15 SP4 KVM guests via the
|
||||
qemu-guest-agent package. This allows some introspection and control of the
|
||||
guest OS environment from the host.
|
||||
|
||||
QEMU/KVM Technology Previews
|
||||
----------------------------
|
||||
|
||||
- All features indicated as not being supported in this document fall under the
|
||||
Technology Preview definition contained in the main product's release notes.
|
||||
|
||||
Noteworthy QEMU/KVM Unsupported Features
|
||||
----------------------------------------
|
||||
|
||||
- Note that some features are unsupported simply due to lack of validation. If
|
||||
an existing feature is desired, but not marked supported, let SUSE know about
|
||||
your requirements.
|
||||
|
||||
- The TCG "acceleration" mode may be helpful for problem isolation, but
|
||||
otherwise presents insufficient benefit and stability.
|
||||
|
||||
- GlusterFS integration is not enabled.
|
||||
|
||||
Deprecated, Superseded, Modified and Dropped Features
|
||||
-----------------------------------------------------
|
||||
|
||||
- https://qemu-project.gitlab.io/qemu/about/deprecated.html and
|
||||
https://qemu-project.gitlab.io/qemu/about/removed-features.html
|
||||
These websites track features deprecation and removal at the upstream
|
||||
development level. Our qemu package inherits this community direction, but be
|
||||
aware that we can and will deviate as needed. Those deviations and additional
|
||||
information can be found in this section. Feature deprecation as well as
|
||||
removed features are also tracked in the "System Emulation" section of the
|
||||
documentation installed with the qemu package.
|
||||
|
||||
- qemu-img: Deprecate use of -b without -F. Creating an image that requires
|
||||
format probing of the backing image is potentially unsafe and is now
|
||||
deprecated.
|
||||
|
||||
- The previously non-persistent backing file with pmem=on is deprecated. Modify
|
||||
VM configuration to set pmem=off to continue using fake NVDIMM with backing
|
||||
file or move backing file to NVDIMM storage and keep pmem=on.
|
||||
|
||||
- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M",
|
||||
"-machine" and "-d" is now considered deprecated. Use "help"
|
||||
instead.
|
||||
|
||||
- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC
|
||||
machine types, as it created an obsolete SCSI controller model.
|
||||
|
||||
- Use of aio=native without direct cache mode also being specified (cache=none,
|
||||
cache=directsync, or cache.direct=on) is no longer allowed.
|
||||
|
||||
- The use of image encryption in qcow and qcow2 formats is now considered
|
||||
deprecated.
|
||||
Analysis has shown it to be weak encryption, in addition to suffering from
|
||||
poor design. Images can easily be converted to a non-encrypted format.
|
||||
|
||||
- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now
|
||||
considered deprecated. In the future those names will be standardized to
|
||||
acpitable, boot, and smp respectively.
|
||||
|
||||
- These previously supported command line options are now considered deprecated:
|
||||
-display sdl,window_close= (use -display sdl,window-close)
|
||||
-no-quit (use -display ...,window-close=off)
|
||||
-chardev tty (use serial name instead)
|
||||
-chardev paraport (use parallel name instead)
|
||||
-device virtio-blk,scsi= (use virtio-scsi instead)
|
||||
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
|
||||
-enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details)
|
||||
-realtime mlock= (use -overcommit mem-lock= instead)
|
||||
-spice password=string (use password-string option instead)
|
||||
-writeconfig (no replacement - never really worked right)
|
||||
-share and noshare must be replaced by share=on/share=off
|
||||
-nodelay must be replaced by nodelay=on rather than delay=off
|
||||
-object-add options opened=on and loaded=on (both had no effect)
|
||||
|
||||
- These previously supported command line options are no longer supported:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- These previously supported command line options are no longer recognized:
|
||||
-balloon (use -device virtio-balloon instead)
|
||||
-clock
|
||||
-device ivshmem (use ivshmem-doorbell or ivshmem-plain instead)
|
||||
-device pc-sysfw (no longer needed)
|
||||
-device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead)
|
||||
-display sdl
|
||||
-no-frame
|
||||
-nodefconfig (use -no-user-config instead)
|
||||
-realtime ...
|
||||
-sdl
|
||||
-show-cursor
|
||||
-virtioconsole (use -device virtconsole instead)
|
||||
|
||||
- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off"
|
||||
will now cause a warning. The current behavior for this combination where
|
||||
"+feature/-feature" wins over "feature=on/off", will be changed going forward
|
||||
so that "+feature" and "-feature" will be synonyms for "feature=on" and
|
||||
"feature=off" respectively.
|
||||
|
||||
- The previously supported blkdev-add QMP command has been flagged as lacking
|
||||
and could possibly change syntax in the future.
|
||||
|
||||
- These previously unsupported command line options are now deprecated:
|
||||
-bt
|
||||
-soundhw (use -device ... instead)
|
||||
|
||||
- These previously unsupported command line options are no longer recognized:
|
||||
-device ide-drive (use ide-hd or ide-cd)
|
||||
-device mmio_interface
|
||||
-device ramfb
|
||||
-device scsi-disk (use scsi-hd or scsi-cd)
|
||||
-device vhost-user-vsock-pci-transitional
|
||||
-device vhost-vsock-pci-transitional
|
||||
-device virtio-iommu-pci-transitional
|
||||
-enable-hax
|
||||
-tb-size
|
||||
-tdf
|
||||
-xen-create
|
||||
|
||||
- These previously supported QMP commands are now deprecated:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- These previously supported QMP commands are no longer recognized:
|
||||
info cpustats
|
||||
block_passwd
|
||||
change (use blockdev-change-medium or change-vnc-password instead)
|
||||
cpu-add (use device_add instead)
|
||||
migrate-set-cache-size (use migrate-set-parameters instead)
|
||||
migrate_set_downtime (use migrate-set-parameters instead)
|
||||
migrate_set_speed (use migrate-set-parameters instead)
|
||||
query-cpus (use query-cpus-fast instead)
|
||||
query-events
|
||||
query-migrate-cache-size (use query-migrate-parameters instead)
|
||||
|
||||
- These previously supported monitor commands are now deprecated:
|
||||
change
|
||||
|
||||
- These previously supported monitor commands are no longer recognized:
|
||||
info cpustats
|
||||
block_passwd ...
|
||||
cpu-add (use device_add instead)
|
||||
migrate_set_cache_size
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
pci_add (use device_add instead)
|
||||
pci_del (use device_del instead)
|
||||
|
||||
- These previously unsupported monitor command are now deprecated:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- These previously unsupported monitor commands are no longer recognized:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
host_net_add
|
||||
host_net_remove
|
||||
usb_add
|
||||
usb_del
|
||||
|
||||
- These previously unsupported QMP commands are now supported under a new name:
|
||||
x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead)
|
||||
x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead)
|
||||
x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead)
|
||||
x-block-latency-histogram-set (use block-latency-histogram-set instead)
|
||||
x-blockdev-create (use blockdev-create instead)
|
||||
|
||||
- This previously unsupported QMP commands is no longer recognized:
|
||||
x-nbd-server-add-bitmap
|
||||
|
||||
- Due to upstream's decision to no longer fully support the qed storage format
|
||||
going forward (since it really provides no benefit over qcow2 and is now no
|
||||
longer actively maintained upstream), creating qed storage images is no longer
|
||||
supported and it is highly discouraged to continue using existing qed images.
|
||||
They should instead be converted to another supported format.
|
||||
|
||||
QEMU Command-Line and Monitor Syntax and Support
|
||||
------------------------------------------------
|
||||
|
||||
- The QEMU program command-line syntax is as follows:
|
||||
qemu-system-s390x [options]
|
||||
|
||||
Where 'options' are taken from the options listed below.
|
||||
The images used with -drive or -cdrom, may be in the raw (no format) or qcow2
|
||||
storage formats, and may be located in files within the host filesystem,
|
||||
logical volumes, host physical disks, or network based storage. Read only
|
||||
media may also be accessed via URL style protocol specifiers.
|
||||
|
||||
Note that as a general rule, as new command line options are added which serve
|
||||
to replace an older option or interface, you are strongly encouraged to adapt
|
||||
your usage to the new option. The new option is being introduced to provide
|
||||
better functionality and usability going forward. In some cases existing
|
||||
problems or even bugs in older interfaces cannot be fixed due to functional
|
||||
expectations, but are resolved in the newer interface or option.
|
||||
This advice includes moving to the most recent machine type (eg
|
||||
s390-ccw-virtio-6.1 instead of s390-ccw-virtio-6.0) if possible.
|
||||
|
||||
- The following command line options are supported:
|
||||
-accel ...
|
||||
-action ...
|
||||
-add-fd ...
|
||||
-alt-grab
|
||||
-append ...
|
||||
-audio-help
|
||||
-audiodev
|
||||
-bios ...
|
||||
-blockdev ...
|
||||
-boot ...
|
||||
-cdrom ...
|
||||
-chardev ...
|
||||
-compat ...
|
||||
-cpu host
|
||||
-ctrl-grab
|
||||
-d ...
|
||||
-daemonize
|
||||
-debugcon ...
|
||||
-device
|
||||
|
||||
[virtio-net-pci|virtio-blk-pci|virtio-balloon-pci|virtserialport|
|
||||
virtconsole|virtio-serial-pci|virtio-scsi-pci|scsi-cd|scsi-hd|
|
||||
scsi-generic|scsi-block|virtio-rng-pci|pci-bridge|megasas-gen2|e1000e|
|
||||
e1000|zpci|virtio-gpu-ccw|virtio-keyboard-ccw|vhost-user-blk-pci|
|
||||
vhost-user-scsi|vhost-user-scsi-pci|vhost-vsock-ccw|
|
||||
virtio-balloon-ccw|virtio-blk-ccw|vhost-scsi-ccw|vhost-user-blk|
|
||||
virtio-crypto-ccw|virtio-net-ccw|virtio-rng-ccw|virtio-scsi-ccw|
|
||||
virtio-serial-ccw|virtio-mouse-ccw|virtio-tablet-ccw|vfio-pci|
|
||||
virtio-vga|vhost-scsi-pci-non-transitional|
|
||||
vhost-scsi-pci-transitional|vhost-user-blk-pci-non-transitional|
|
||||
vhost-user-blk-pci-transitional|vhost-user-scsi-pci-non-transitional|
|
||||
vhost-user-scsi-pci-transitional|vhost-vsock-pci-non-transitional|
|
||||
virtio-9p-ccw|virtio-9p-pci-non-transitional|
|
||||
virtio-9p-pci-transitional|virtio-balloon-pci-non-transitional|
|
||||
virtio-balloon-pci-transitional|virtio-blk-pci-non-transitional|
|
||||
virtio-blk-pci-transitional|virtio-input-host-pci-non-transitional|
|
||||
virtio-input-host-pci-transitional|virtio-net-pci-non-transitional|
|
||||
virtio-net-pci-transitional|virtio-rng-pci-non-transitional|
|
||||
virtio-rng-pci-transitional|virtio-scsi-pci-non-transitional|
|
||||
virtio-scsi-pci-transitional|virtio-serial-pci-non-transitional|
|
||||
virtio-serial-pci-transitional|vhost-user-fs-pci|vhost-user-gpu|
|
||||
vhost-user-pci-pci|vhost-user-input|vhost-user-input-pci|
|
||||
vhost-user-vga]
|
||||
(the following are aliases of these supported devices: virtio-blk|
|
||||
virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet|
|
||||
virtio-gpu|virtio-9p|virtio-net|virtio-serial|virtio-balloon|
|
||||
virtio-scsi|virtio-rng)
|
||||
|
||||
-dfilter range, ...
|
||||
-display ...
|
||||
-drive
|
||||
|
||||
... (if specified if=[virtio] and format=[qcow2|raw] and
|
||||
snapshot=off only)
|
||||
|
||||
-echr ...
|
||||
-enable-fips
|
||||
-enable-kvm
|
||||
-fsdev ...
|
||||
-full-screen
|
||||
-fw_cfg ...
|
||||
-gdb ...
|
||||
-global ...
|
||||
-h
|
||||
-help
|
||||
-incoming ...
|
||||
-initrd ...
|
||||
-iscsi ...
|
||||
-k ...
|
||||
-kernel ...
|
||||
-loadvm ...
|
||||
-m ...
|
||||
-M
|
||||
|
||||
[help|?|none|s390-ccw-virtio-2.6|s390-ccw-virtio-2.9|s390-ccw-virtio-2.11|
|
||||
s390-ccw-virtio-3.1|s390-ccw-virtio-4.2|s390-ccw-virtio-5.2]
|
||||
|
||||
-machine
|
||||
|
||||
[help|?|none|s390-ccw-virtio-2.6|s390-ccw-virtio-2.9|
|
||||
s390-ccw-virtio-2.11|s390-ccw-virtio-3.1|s390-ccw-virtio-4.2|
|
||||
s390-ccw-virtio-5.2]
|
||||
|
||||
-mem-path ...
|
||||
-mem-prealloc
|
||||
-mon ...
|
||||
-monitor ...
|
||||
-msg ...
|
||||
-name ...
|
||||
-net
|
||||
|
||||
[bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139,
|
||||
and virtio are supported)
|
||||
|
||||
-netdev [bridge|tap|user] ...
|
||||
-nic ...
|
||||
-nodefaults
|
||||
-nographic
|
||||
-no-quit
|
||||
-no-reboot
|
||||
-no-shutdown
|
||||
-no-user-config
|
||||
-object ...
|
||||
-only-migratable
|
||||
-parallel ...
|
||||
-pidfile ...
|
||||
-plugin ...
|
||||
-qmp ...
|
||||
-qmp-pretty ...
|
||||
-readconfig ...
|
||||
-rtc ...
|
||||
-runas ...
|
||||
-s
|
||||
-S
|
||||
-sandbox ...
|
||||
-seed ...
|
||||
-serial ...
|
||||
-smp ...
|
||||
-trace ...
|
||||
-uuid ...
|
||||
-version
|
||||
-vga [none|qxl|std]
|
||||
-virtfs ...
|
||||
-vnc ...
|
||||
-watchdog ...
|
||||
-watchdog-action ...
|
||||
-writeconfig ...
|
||||
|
||||
- The following monitor commands are supported:
|
||||
?
|
||||
announce_self ...
|
||||
balloon ...
|
||||
block_resize ...
|
||||
boot_set ...
|
||||
c
|
||||
change ...
|
||||
chardev-add ...
|
||||
chardev-change ...
|
||||
chardev-remove ...
|
||||
chardev-send-break ...
|
||||
client_migrate_info ...
|
||||
closefd ...
|
||||
cont
|
||||
cpu ...
|
||||
delvm ...
|
||||
device_add ...
|
||||
device_del ...
|
||||
drive_add ...
|
||||
drive_backup ...
|
||||
drive_del ...
|
||||
dump_guest_memory ...
|
||||
eject ...
|
||||
gdbserver ...
|
||||
gpa2hpa ...
|
||||
gpa2hva ...
|
||||
gva2gpa ...
|
||||
help
|
||||
i ...
|
||||
info ...
|
||||
loadvm ...
|
||||
logfile ...
|
||||
logitem ...
|
||||
mce ...
|
||||
memsave ...
|
||||
migrate ...
|
||||
migrate_cancel
|
||||
migrate_continue ...
|
||||
migrate_incoming
|
||||
migrate_pause
|
||||
migrate_recover ...
|
||||
migrate_set_capability ...
|
||||
migrate_set_parameter ...
|
||||
migrate_start_post_copy
|
||||
mouse_button ...
|
||||
mouse_move ...
|
||||
mouse_set ...
|
||||
nmi ...
|
||||
o ...
|
||||
object_add ...
|
||||
object_del ...
|
||||
p ...
|
||||
pmemsave ...
|
||||
print ...
|
||||
q
|
||||
qemu-io ...
|
||||
qom-list
|
||||
qom-set
|
||||
ringbuf_read ...
|
||||
ringbuf_write ...
|
||||
savevm ...
|
||||
screendump ...
|
||||
sendkey ...
|
||||
snapshot_blkdev_internal ...
|
||||
snapshot_delete_blkdev_internal ...
|
||||
stop
|
||||
sum ...
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event ...
|
||||
watchdog_action ...
|
||||
x ...
|
||||
xp ...
|
||||
|
||||
- The following QMP commands are supported:
|
||||
add_client
|
||||
add-fd
|
||||
announce-self
|
||||
balloon
|
||||
blockdev-add
|
||||
blockdev-backup
|
||||
blockdev-change-medium
|
||||
blockdev-close-tray
|
||||
blockdev-create
|
||||
blockdev-del
|
||||
blockdev-mirror
|
||||
blockdev-open-tray
|
||||
blockdev-snapshot
|
||||
blockdev-snapshot-delete-internal-sync
|
||||
blockdev-snapshot-internal-sync
|
||||
blockdev-snapshot-sync
|
||||
block-commit
|
||||
block-dirty-bitmap-add
|
||||
block-dirty-bitmap-clear
|
||||
block-dirty-bitmap-disable
|
||||
block-dirty-bitmap-enable
|
||||
block-dirty-bitmap-merge
|
||||
block-dirty-bitmap-remove
|
||||
block-export-add
|
||||
block-export-del
|
||||
block-latency-histogram-set
|
||||
block_resize
|
||||
block_set_io_throttle
|
||||
block-set-write-threshold
|
||||
block_stream
|
||||
calc-dirty-rate
|
||||
change-vnc-password
|
||||
chardev-add
|
||||
chardev-change
|
||||
chardev-remove
|
||||
chardev-send-break
|
||||
client_migrate_info
|
||||
closefd
|
||||
cont
|
||||
cpu
|
||||
device_add
|
||||
device_del
|
||||
device-list-properties
|
||||
display-reload
|
||||
dump-guest-memory
|
||||
eject
|
||||
expire_password
|
||||
getfd
|
||||
human-monitor-command
|
||||
inject-nmi
|
||||
input-send-event
|
||||
job-cancel
|
||||
job-complete
|
||||
job-dismiss
|
||||
job-finalize
|
||||
job-pause
|
||||
job-resume
|
||||
memsave
|
||||
migrate
|
||||
migrate_cancel
|
||||
migrate-continue
|
||||
migrate-incoming
|
||||
migrate-pause
|
||||
migrate-resume
|
||||
migrate-set-capabilities
|
||||
migrate-set-parameters
|
||||
migrate-start-postcopy
|
||||
object-add
|
||||
object-del
|
||||
pmemsave
|
||||
qmp_capabilities
|
||||
qom-get
|
||||
qom-list
|
||||
qom-list-types
|
||||
qom-set
|
||||
query-acpi-ospm-status
|
||||
query-balloon
|
||||
query-block
|
||||
query-block-exports
|
||||
query-block-jobs
|
||||
query-blockstats
|
||||
query-chardev
|
||||
query-chardev-backends
|
||||
query-command-line-options
|
||||
query-commands
|
||||
query-cpu-definitions
|
||||
query-cpu-model-baseline
|
||||
query-cpu-model-comparison
|
||||
query-cpu-model-expansion
|
||||
query-cpus-fast
|
||||
query-current-machine
|
||||
query-dirty-rate
|
||||
query-display-options
|
||||
query-dump
|
||||
query-dump-guest-memory-capability
|
||||
query-fdsets
|
||||
query-gic-capabilities
|
||||
query-hotpluggable-cpus
|
||||
query-iothreads
|
||||
query-jobs
|
||||
query-kvm
|
||||
query-machines
|
||||
query-memdev
|
||||
query-memory-devices
|
||||
query-memory-size-summary
|
||||
query-mice
|
||||
query-migrate
|
||||
query-migrate-capabilities
|
||||
query-migrate-parameters
|
||||
query-name
|
||||
query-named-block-nodes
|
||||
query-pci
|
||||
query-pr-managers
|
||||
query-qmp-schema
|
||||
query-rocker
|
||||
query-rocker-of-dpa-flows
|
||||
query-rocker-of-dpa-groups
|
||||
query-rocker-ports
|
||||
query-rx-filter
|
||||
query-spice
|
||||
query-status
|
||||
query-target
|
||||
query-uuid
|
||||
query-version
|
||||
query-vnc
|
||||
query-vnc-servers
|
||||
query-yank
|
||||
query-xen-replication-status
|
||||
quit
|
||||
remove-fd
|
||||
ringbuf-read
|
||||
ringbuf-write
|
||||
screendump
|
||||
send-key
|
||||
set-action
|
||||
set_link
|
||||
set_password
|
||||
snapshot-delete
|
||||
snapshot-load
|
||||
snapshot-save
|
||||
stop
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event-get-state
|
||||
trace-event-set-state
|
||||
transaction
|
||||
watchdog-set-action
|
||||
yank
|
||||
|
||||
- The following command line options are unsupported:
|
||||
|
||||
-acpitable ...
|
||||
-chroot ...
|
||||
-cpu ... (all except host)
|
||||
-curses
|
||||
-device
|
||||
|
||||
[AC97|adlib|am53c974|amd-iommu|AMDVI-PCI|ccid-card-emulated|
|
||||
ccid-card-passthrough|cirrus-vga|cs4231a|dc390|diag288|e1000-82544gc|
|
||||
e1000-82545em|edu|ES1370|floppy|generic-sdhci|gus|hda-duplex|
|
||||
hda-micro|hda-output|hyperv-testdev|*-i386-cpu|i8042|i82550|i82551|
|
||||
i82557a|i82557b|i82557c|i82558a|i82558b|i82559a|i82559b|i82559c|
|
||||
i82562|i82801|i82801b11-bridge|ib700|ich9-intel-hda|ich9-usb-ehci1|
|
||||
ich9-usb-ehci2|ich9-usb-uhci1|ich9-usb-uhci2|ich9-usb-uhci3|
|
||||
ich9-usb-uhci4|ich9-usb-uhci5|ich9-usb-uhci6|ide-cd|ide-drive|ide-hd|
|
||||
igd-passthrough-isa-bridge|intel-hda|intel_iommu|ioh3420|
|
||||
ipmi-bmc-extern|ipmi-bmc-sim|ipoctal232|isa-applesmc|isa-cirrus-vga|
|
||||
isa-debugcon|isa-debug-exit|isa-fdc|isa-ide|isa-ipmi-bt|isa-ipmi-kcs|
|
||||
isa-parallel|isa-serial|isa-vga|lsi53c810|lsi53c810a|max-s390x-cpu|
|
||||
megasas|mptsas1068|ne2k_isa|ne2k_pci|nec-usb-xhci|nvdimm|nvme|pc-dimm|
|
||||
pci-testdev|pcnet|pc-testdev|piix3-ide|piix3-ide|piix3-ide-xen|
|
||||
piix4-usb-uhci|pvscsi|pxb|pxb-host|pxb-pcie|qemu-s390-cpu|rocker|
|
||||
s390-flic|s390-flic-qemu|s390-ipl|s390-pcihost|
|
||||
s390-sclp-event-facility|s390-skeys-qemu|sb16|sclp|sclpconsole|
|
||||
sclp-cpu-hotplug|sclplmconsole|sclp-memory-hotplug-dev|sclpquiesce|
|
||||
sd-card|sdhci-pci|secondary-vga|sga|smbus-eeprom|tpci200|usb-audio|
|
||||
usb-bot|usb-ccid|usb-mtp|usb-uas|vfio-ap|vfio-pci-nohotplug|
|
||||
virtio-9p-device|virtual-css-bridge|vmcoreinfo|vmgenid|vmware-svga|
|
||||
vmxnet3|vt82c686b-usb-uhci|x3130-upstream|*-x86_64-cpu|xen-backend|
|
||||
xen-pci-passthrough|xen-platform|xen-pvdevice|xio3130-downstream|
|
||||
z10BC.2-base-s390x-cpu|z10BC.2-s390x-cpu|z10BC-base-s390x-cpu|
|
||||
z10BC-s390x-cpu|z10EC.2-base-s390x-cpu|z10EC.2-s390x-cpu|
|
||||
z10EC.3-base-s390x-cpu|z10EC.3-s390x-cpu|z10EC-base-s390x-cpu|
|
||||
z10EC-s390x-cpu|z114-base-s390x-cpu|z114-s390x-cpu|
|
||||
z13.2-base-s390x-cpu|z13.2-s390x-cpu|z13-base-s390x-cpu|z13-s390x-cpu|
|
||||
z13s-base-s390x-cpu|z13s-s390x-cpu|z196.2-base-s390x-cpu|
|
||||
z196.2-s390x-cpu|z196-base-s390x-cpu|z196-s390x-cpu|
|
||||
z800-base-s390x-cpu|z800-s390x-cpu|z890.2-base-s390x-cpu|
|
||||
z890.2-s390x-cpu|z890.3-base-s390x-cpu|z890.3-s390x-cpu|
|
||||
z890-base-s390x-cpu|z890-s390x-cpu|z900.2-base-s390x-cpu|
|
||||
z900.2-s390x-cpu|z900.3-base-s390x-cpu|z900.3-s390x-cpu|
|
||||
z900-base-s390x-cpu|z900-s390x-cpu|z990.2-base-s390x-cpu|
|
||||
z990.2-s390x-cpu|z990.3-base-s390x-cpu|z990.3-s390x-cpu|
|
||||
z990.4-base-s390x-cpu|z990.4-s390x-cpu|z990.5-base-s390x-cpu|
|
||||
z990.5-s390x-cpu|z990-base-s390x-cpu|z990-s390x-cpu|
|
||||
z9BC.2-base-s390x-cpu|z9BC.2-s390x-cpu|z9BC-base-s390x-cpu|
|
||||
z9BC-s390x-cpu|z9EC.2-base-s390x-cpu|z9EC.2-s390x-cpu|
|
||||
z9EC.3-base-s390x-cpu|z9EC.3-s390x-cpu|z9EC-base-s390x-cpu|
|
||||
z9EC-s390x-cpu|z14ZR1-base-s390x-cpu|z14ZR1-s390x-cpu|
|
||||
zBC12-base-s390x-cpu|zBC12-s390x-cpu|zEC12.2-base-s390x-cpu|
|
||||
zEC12.2-s390x-cpu|zEC12-base-s390x-cpu|zEC12-s390x-cpu|cpu-cluster|
|
||||
z14.2-base-s390x-cpu|z14.2-s390x-cpu|vhost-user-fs-device|
|
||||
virtio-iommu-device|virtio-iommu-pci|
|
||||
virtio-iommu-pci-non-transitional|vhost-user-vsock-device|
|
||||
vhost-user-vsock-pci|vhost-user-vsock-pci-non-transitional|
|
||||
vhost-user-fs-ccw|guest-loader]
|
||||
(the following are aliases of these unsupported devices: lsi|
|
||||
ahci|e1000-82540em|vfio-ccw)
|
||||
(note that some of these device names represent supported devices and
|
||||
are used internally, but are not specifyable via -device even though
|
||||
they appear in the list of devices)
|
||||
|
||||
-drive
|
||||
|
||||
,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or
|
||||
raw]
|
||||
|
||||
-dtb file
|
||||
-enable-sync-profile
|
||||
-fda/-fdb ...
|
||||
-g ...
|
||||
-hda/-hdb/-hdc/-hdd ...
|
||||
-icount ...
|
||||
-L ...
|
||||
-M
|
||||
|
||||
[s390-ccw-virtio|s390-ccw-virtio-2.4|s390-ccw-virtio-2.5|
|
||||
s390-ccw-virtio-2.7|s390-ccw-virtio-2.8|s390-ccw-virtio-2.10|
|
||||
s390-ccw-virtio-2.12|s390-ccw-virtio-3.0|s390-ccw-virtio-4.0|
|
||||
s390-ccw-virtio-4.1|s390-ccw-virtio-5.0|s390-ccw-virtio-5.1|
|
||||
s390-ccw-virtio-6.0|s390-ccw-virtio-6.1]
|
||||
|
||||
-machine
|
||||
|
||||
[s390-ccw-virtio|s390-ccw-virtio-2.4|s390-ccw-virtio-2.5|
|
||||
s390-ccw-virtio-2.7|s390-ccw-virtio-2.8|s390-ccw-virtio-2.10|
|
||||
s390-ccw-virtio-2.12|s390-ccw-virtio-3.0|s390-ccw-virtio-4.0|
|
||||
s390-ccw-virtio-4.1|s390-ccw-virtio-5.0|s390-ccw-virtio-5.1|
|
||||
s390-ccw-virtio-6.0|s390-ccw-virtio-6.1]
|
||||
|
||||
-mtdblock file
|
||||
-net [socket|vde] ...
|
||||
-netdev [hubport|l2tpv3|socket|vde] ...
|
||||
-no-acpi
|
||||
-no-fd-bootchk
|
||||
-no-hpet
|
||||
-no-kvm
|
||||
-no-kvm-irqchip
|
||||
-no-kvm-pit
|
||||
-no-kvm-pit-reinjection
|
||||
-numa cpu ...
|
||||
-numa dist ...
|
||||
-numa node ...
|
||||
-option-rom ...
|
||||
-overcommit ...
|
||||
-pflash file
|
||||
-portrait
|
||||
-preconfig
|
||||
-prom-env ...
|
||||
-qtest ...
|
||||
-qtest-log ...
|
||||
-rotate
|
||||
-sd file
|
||||
-sdl
|
||||
-set ...
|
||||
-singlestep
|
||||
-smbios ...
|
||||
-snapshot
|
||||
-soundhw ...
|
||||
-spice
|
||||
-tdf
|
||||
-tpmdev emulator ...
|
||||
-tpmdev passthrough ...
|
||||
-usb
|
||||
-usbdevice [braile|disk|host|mouse|net|serial|tablet]
|
||||
-vga [cg3|tcx|virtio|cirrus|xenfb|vmware]
|
||||
-win2k-hack
|
||||
-xen-attach ...
|
||||
-xen-domid ...
|
||||
-xen-domid-restrict ...
|
||||
|
||||
- The following monitor commands are unsupported:
|
||||
block_job_cancel ...
|
||||
block_job_complete ...
|
||||
block_job_pause ...
|
||||
block_job_resume ...
|
||||
block_job_set_speed ...
|
||||
commit ...
|
||||
drive_mirror ...
|
||||
exit_preconfig
|
||||
expire_password ...
|
||||
hostfwd_add ...
|
||||
hostfwd_remove ...
|
||||
nbd_server_add ...
|
||||
nbd server_start ...
|
||||
nbd_server_stop ...
|
||||
netdev_add
|
||||
netdev_del ...
|
||||
pcie_aer_inject_error ...
|
||||
replay_break ...
|
||||
replay_delete_break
|
||||
replay_seek ...
|
||||
set_link ...
|
||||
set_password ...
|
||||
singlestep ...
|
||||
snapshot_blkdev ...
|
||||
stopcapture ...
|
||||
sync-profile ...
|
||||
wavcapture ...
|
||||
x_colo_lost_heartbeat
|
||||
|
||||
- The following QMP commands are unsupported:
|
||||
block-job-cancel
|
||||
block-job-complete
|
||||
block-job-pause
|
||||
block-job-resume
|
||||
block-job-set-speed
|
||||
change-backing-file
|
||||
drive-backup
|
||||
drive-mirror
|
||||
dump-skeys
|
||||
netdev_add
|
||||
netdev_del
|
||||
nbd-server-add
|
||||
nbd-server-start
|
||||
nbd-server-stop
|
||||
query-colo-status
|
||||
query-tpm
|
||||
query-tpm-models
|
||||
query-tpm-types
|
||||
replay_break
|
||||
replay_delete_break
|
||||
replay_seek
|
||||
x-blockdev-amend
|
||||
x-blockdev-change
|
||||
x-blockdev-insert-medium
|
||||
x-blockdev-remove-medium
|
||||
x-blockdev-reopen
|
||||
x-colo-lost-heartbeat
|
||||
x-debug-block-dirty-bitmap-sha256
|
||||
x-debug-query-block-graph
|
||||
x-exit-preconfig
|
||||
xen-colo-do-checkpoint
|
||||
xen-load-devices-state
|
||||
xen-save-devices-state
|
||||
xen-set-global-dirty-log
|
||||
xen-set-replication
|
||||
963
rpm/supported.x86.txt
Normal file
963
rpm/supported.x86.txt
Normal file
@@ -0,0 +1,963 @@
|
||||
[qemu-x86 package document]
|
||||
|
||||
SLES 15 SP4 QEMU/KVM RELATED SUPPORT STATEMENTS
|
||||
===============================================
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
The QEMU based packages included with SLES 15 SP4 provide a large variety of
|
||||
features, from the very latest customer requests to features of questionable
|
||||
quality or value. The linux kernel includes components which contribute KVM
|
||||
virtualization features as well. This document was created to assist the user
|
||||
in deciding which features can be relied upon to build enterprise class
|
||||
virtualization solutions. KVM based virtualization for x86 (Intel 64/AMD64),
|
||||
for IBM System z (s390x), and for the ARM64 architecture (AArch64) are offered
|
||||
at the L3 (full support) level. The bulk of this document deals with L3
|
||||
supported features and is primarily x86 centric. This document should be
|
||||
considered a companion to the standard virtualization documentation delivered
|
||||
with the product.
|
||||
|
||||
KVM is implemented in linux kernel modules which enable the linux kernel to
|
||||
function as an integral part of the KVM hypervisor. The hypervisor-guest
|
||||
interaction is managed by QEMU through the /dev/kvm ioctl interface. The linux
|
||||
host assists in the virtualization of storage, networking and display
|
||||
resources as well as allowing direct hardware passthrough of PCI and USB
|
||||
devices. Linux memory and cpu management features are used by QEMU/KVM to
|
||||
enable guests to share those host resources as efficiently as possible.
|
||||
|
||||
QEMU is a primary component of KVM based virtualization. The legacy qemu-kvm
|
||||
program is available for continuity with pre SLES 12 usage, including in
|
||||
libvirt domain xml references. The QEMU emulator binaries qemu-system-x86_64
|
||||
and qemu-system-i386 (x86 host) are now the primary programs to use to access
|
||||
KVM virtualization. When using these programs, the -machine option accel=kvm
|
||||
(or its alias -enable-kvm), or --accel kvm option must be specified for KVM
|
||||
acceleration to be used by the guest. Although Xen uses QEMU for
|
||||
virtualization as well, this document does not identify Xen supported
|
||||
features.
|
||||
|
||||
Libvirt is the preferred means of accessing QEMU/KVM functionality and is
|
||||
documented elsewhere. This document focuses on the features and direct usage
|
||||
of QEMU/KVM as provided by the QEMU based packages.
|
||||
|
||||
Major QEMU/KVM Supported Features
|
||||
---------------------------------
|
||||
|
||||
- KVM virtualization is accomplished by using the QEMU program in KVM
|
||||
acceleration mode. KVM acceleration requires that both guest and host have
|
||||
the same fundamental architecture.
|
||||
|
||||
- Guest images created under previous QEMU versions are supported by machine
|
||||
version compatibilities built into more recent QEMU versions.
|
||||
|
||||
- For ease of use, the QEMU program has defaults which represent traditional
|
||||
usage patterns.
|
||||
|
||||
- Guest virtual machine characteristics are specified by a combination of
|
||||
internal defaults, options provided on the QEMU program command-line, runtime
|
||||
configurations set via the monitor interfaces and optional config files. The
|
||||
runtime control of a VM is effected either through the Human Monitor
|
||||
"Protocol" (HMP), or the JSON based programmatical QEMU Monitor Protocol (QMP)
|
||||
interface. For QMP details, see qemu-qmp-ref man page.
|
||||
Since a KVM guest runs in the context of a normal linux process, some types
|
||||
of execution controls are managed with linux tools.
|
||||
|
||||
- Various standard vCPU types are available, along with the ability to specify
|
||||
individual CPU features visible to the guest.
|
||||
|
||||
- QEMU incorporates a SEABIOS based system BIOS and iPXE based PXE ROMs, which
|
||||
allow boot options common to physical systems, along with other features
|
||||
tailored to virtualization. Various VGABIOS ROMs, also from the SEABIOS
|
||||
project, are also included. A UEFI based guest boot environment is also
|
||||
available by using the firmware provided by the qemu-ovmf-x86_64 package.
|
||||
|
||||
- Some QEMU messages have been localized to various languages. This is provided
|
||||
by the optional qemu-lang package. Keyboard mappings for various nationalities
|
||||
is also provided.
|
||||
|
||||
- Virtual machine lifecycle controls include startup through the system BIOS or
|
||||
kernel boot, ACPI or legacy based shutdown, execution pausing, the saving and
|
||||
restoring of machine state or disk state, VM migration to another host, and
|
||||
miscellaneous controls available through the "monitors" mentioned above.
|
||||
|
||||
- Guest execution state may be "moved" in both time (save/restore) and space
|
||||
(static and live migration). These migrations or save/restore operations can
|
||||
take place either from certain prior SLES versioned hosts to a SLES 15 SP4
|
||||
host or between hosts of the same version. Certain other restrictions also
|
||||
apply.
|
||||
|
||||
- Security considerations include seccomp2 based sandboxing, vTPM, privileged
|
||||
helpers and a security model which allows running guests as a non-root user.
|
||||
|
||||
- QEMU/KVM supports a wide range of operating systems within the VMs. See the
|
||||
online SUSE documentation for supported OS's. Windows guests can optionally be
|
||||
accelerated with QEMU/KVM provided Hyper-V hypercalls, or with paravirtual
|
||||
drivers from the SUSE Virtual Machine Driver Pack. Linux includes a number of
|
||||
paravirtual drivers as well.
|
||||
|
||||
- QEMU provides best effort reuse of existing disk images, including those with
|
||||
systems installed, through geometry probing. Also disk images produced by
|
||||
other popular virtualization technologies may be imported into QEMU supported
|
||||
storage formats. These QEMU formats include features which exploit the
|
||||
benefits of virtualization.
|
||||
|
||||
- Memory, cpu and disk space overcommit are possible and can be beneficial when
|
||||
done responsibly. Additional management of these resources comes in the form
|
||||
of memory ballooning or hotplug, host KSM, vcpu hot-add, online disk resizing,
|
||||
trim, discard and hole punching.
|
||||
|
||||
- Guest performance is enhanced through the use of virtio devices, various disk
|
||||
caching modes, network acceleration via the vhost-net kernel module, multi-
|
||||
queue network transmit capabilities, host transparent huge pages (THP) and
|
||||
direct hugetlb usage. Physical PCI and USB devices may also be passed through
|
||||
to the guest, including SR-IOV VF's.
|
||||
|
||||
- The guest UI is accessable via GTK, VNC, Spice, and serial (including curses
|
||||
TUI) interfaces.
|
||||
|
||||
- Guest timekeeping is supported in a variety of ways, including a paravirtual
|
||||
clocksource, and options for the various guest clocks for how to handle the
|
||||
timeslicing of the guest's execution on the host.
|
||||
|
||||
- Guest OS's interact with virtualized hardware including a choice of either
|
||||
older or more recent x86 system chipsets, system devices and buses, and a
|
||||
variety of common storage and networking emulated devices. SMBIOS and ACPI
|
||||
table details can be customized.
|
||||
|
||||
- In addition to the para-virtualized devices already mentioned, other devices
|
||||
and infrastructure designed to avoid virtualization "problem areas" are
|
||||
available such as SPICE graphics, vmmouse emulation, tablet style pointer
|
||||
interfaces and virtio based UI interfaces.
|
||||
|
||||
- A built-in user-mode network (SLIRP) stack is available.
|
||||
|
||||
- Portions of the host file system may be shared with a guest by using virtFS.
|
||||
|
||||
- A guest "agent" is available for SLES 15 SP4 KVM guests via the
|
||||
qemu-guest-agent package. This allows some introspection and control of the
|
||||
guest OS environment from the host.
|
||||
|
||||
QEMU/KVM Technology Previews
|
||||
----------------------------
|
||||
|
||||
- Nested VMX and SVM virtualization is possible.
|
||||
|
||||
- All features indicated as not being supported in this document fall under the
|
||||
Technology Preview definition contained in the main product's release notes.
|
||||
|
||||
Noteworthy QEMU/KVM Unsupported Features
|
||||
----------------------------------------
|
||||
|
||||
- Note that some features are unsupported simply due to lack of validation. If
|
||||
an existing feature is desired, but not marked supported, let SUSE know about
|
||||
your requirements.
|
||||
|
||||
- The TCG "acceleration" mode may be helpful for problem isolation, but
|
||||
otherwise presents insufficient benefit and stability.
|
||||
|
||||
- Use of -cpu host is not supported in all host/guest configurations.
|
||||
|
||||
- GlusterFS integration is not enabled.
|
||||
|
||||
Deprecated, Superseded, Modified and Dropped Features
|
||||
-----------------------------------------------------
|
||||
|
||||
- https://qemu-project.gitlab.io/qemu/about/deprecated.html and
|
||||
https://qemu-project.gitlab.io/qemu/about/removed-features.html
|
||||
These websites track features deprecation and removal at the upstream
|
||||
development level. Our qemu package inherits this community direction, but be
|
||||
aware that we can and will deviate as needed. Those deviations and additional
|
||||
information can be found in this section. Feature deprecation as well as
|
||||
removed features are also tracked in the "System Emulation" section of the
|
||||
documentation installed with the qemu package.
|
||||
|
||||
- qemu-img: Deprecate use of -b without -F. Creating an image that requires
|
||||
format probing of the backing image is potentially unsafe and is now
|
||||
deprecated.
|
||||
|
||||
- When no video adapter is specified, the default used is stdvga. This differs
|
||||
from the default of prior releases which was cirrus. The cirrus adapter was
|
||||
considered too outdated to continue to use as the default.
|
||||
|
||||
- The deprecated windows drivers (win-virtio-drivers.iso) are no longer provided.
|
||||
The Virtual Machine Driver Pack is the supported way to get virtio drivers for
|
||||
Windows guests.
|
||||
|
||||
- The use of ",boot=on" for virtio disks is no longer needed since the bios used
|
||||
supports the virtio block interface directly. In fact, its usage may cause
|
||||
problems, and is now considered deprecated.
|
||||
|
||||
- The previously non-persistent backing file with pmem=on is deprecated. Modify
|
||||
VM configuration to set pmem=off to continue using fake NVDIMM with backing
|
||||
file or move backing file to NVDIMM storage and keep pmem=on.
|
||||
|
||||
- The use of "?" as a parameter to "-cpu", "-soundhw", "-device", "-M",
|
||||
"-machine" and "-d" is now considered deprecated. Use "help"
|
||||
instead.
|
||||
|
||||
- The use of "if=scsi" as a parameter to "-drive" does not work anymore with PC
|
||||
machine types, as it created an obsolete SCSI controller model.
|
||||
|
||||
- Passthrough of a host floppy device is now considered deprecated.
|
||||
|
||||
- Use of aio=native without direct cache mode also being specified (cache=none,
|
||||
cache=directsync, or cache.direct=on) is no longer allowed.
|
||||
|
||||
- The use of image encryption in qcow and qcow2 formats is now considered
|
||||
deprecated.
|
||||
Analysis has shown it to be weak encryption, in addition to suffering from
|
||||
poor design. Images can easily be converted to a non-encrypted format.
|
||||
|
||||
- Use of acpi, boot-opts, and smp-opts in a -readconfig config file are now
|
||||
considered deprecated. In the future those names will be standardized to
|
||||
acpitable, boot, and smp respectively.
|
||||
|
||||
- When only a partial SMP topology is provided (ie only some of sockets, cores,
|
||||
threads) the derived guest ABI is not guaranteed to be equivalent in future
|
||||
versions.
|
||||
|
||||
- These previously supported command line options are now considered deprecated:
|
||||
-display sdl,window_close= (use -display sdl,window-close)
|
||||
-no-quit (use -display ...,window-close=off)
|
||||
-M option kernel-irqchip=off
|
||||
-chardev tty (use serial name instead)
|
||||
-chardev paraport (use parallel name instead)
|
||||
-device virtio-blk,scsi= (use virtio-scsi instead)
|
||||
-device virtio-blk-pci,scsi= (use virtio-scsi instead)
|
||||
-enable-fips (not really helpful - see https://git.qemu.org/?p=qemu.git;a=commit;h=166310299a1e7824bbff17e1f016659d18b4a559 for details)
|
||||
-realtime mlock= (use -overcommit mem-lock= instead)
|
||||
-spice password=string (use password-string option instead)
|
||||
-writeconfig (no replacement - never really worked right)
|
||||
-share and noshare must be replaced by share=on/share=off
|
||||
-nodelay must be replaced by nodelay=on rather than delay=off
|
||||
-object-add options opened=on and loaded=on (both had no effect)
|
||||
|
||||
- These previously supported command line options are no longer supported:
|
||||
-device ide-drive (use ide-hd or ide-cd instead)
|
||||
-device scsi-disk (use scsi-hd or scsi-cd instead)
|
||||
|
||||
- The previously supported machine types pc-0.12, pc-0.14 and pc-0.15 are no
|
||||
longer recognized. Switch to a newer machine type.
|
||||
|
||||
- These previously supported command line options are no longer recognized:
|
||||
-balloon (use -device virtio-balloon instead)
|
||||
-clock
|
||||
-device ivshmem (use ivshmem-doorbell or ivshmem-plain instead)
|
||||
-device pc-sysfw (no longer needed)
|
||||
-device pci-assign, -device kvm-pci-assign (use -device vfio-pci instead)
|
||||
-display sdl
|
||||
-no-frame
|
||||
-nodefconfig (use -no-user-config instead)
|
||||
-realtime ...
|
||||
-sdl
|
||||
-show-cursor
|
||||
-virtioconsole (use -device virtconsole instead)
|
||||
|
||||
- Specifying a cpu feature with both "+feature/-feature" and "feature=on/off"
|
||||
will now cause a warning. The current behavior for this combination where
|
||||
"+feature/-feature" wins over "feature=on/off", will be changed going forward
|
||||
so that "+feature" and "-feature" will be synonyms for "feature=on" and
|
||||
"feature=off" respectively.
|
||||
|
||||
- The case of specified sockets, cores, and threads not matching the vcpu count
|
||||
is no longer silently ignored. QEMU now requires that the topology match the
|
||||
vcpu count.
|
||||
|
||||
- The previously supported blkdev-add QMP command has been flagged as lacking
|
||||
and could possibly change syntax in the future.
|
||||
|
||||
- These previously unsupported command line options are now deprecated:
|
||||
-no-kvm-pit
|
||||
-soundhw (use -device ... instead)
|
||||
|
||||
- These previously unsupported command line options are no longer recognized:
|
||||
-bt
|
||||
-device at24c-eeprom
|
||||
-device ccid-card-passthru
|
||||
-device cfi.pflash01
|
||||
-device esp
|
||||
-device exynos4210-ehci-usb
|
||||
-device fusbh200-ehci-usb
|
||||
-device icc-bridge
|
||||
-device q35-pcihost
|
||||
-device mch
|
||||
-device mmio_interface
|
||||
-device smbus-eeprom
|
||||
-device SUNW,fdtwo
|
||||
-device sysbus-ahci
|
||||
-device sysbus-fdc
|
||||
-device sysbus-ohci
|
||||
-device tegra2-ehci-usb
|
||||
-device testdev (use -device pc-testdev instead)
|
||||
-device vhost-user-vsock-pci-transitional
|
||||
-device vhost-vsock-pci-transitional
|
||||
-device virtio-iommu-pci-transitional
|
||||
-device virtio-mmio
|
||||
-device xln,ps7-usb
|
||||
-enable-hax (use -accel hax instead)
|
||||
-enable-nesting
|
||||
-kvm-shadow-memory (use -machine kvm_shadow_mem= instead)
|
||||
-M mac
|
||||
-machine mac
|
||||
-no-kvm-irqchip (use -machine kernel_irqchip=off instead)
|
||||
-no-kvm-pit
|
||||
-no-kvm-pit-reinjection (use -global kvm-pit.lost_tick_policy=discard instead)
|
||||
-nvram
|
||||
-old-param
|
||||
-osk
|
||||
-pcidevice (use -device vfio-pci instead)
|
||||
-qtest
|
||||
-semihosting
|
||||
-tb-size
|
||||
-tdf (note: mistakenly listed previously as supported)
|
||||
-xen-create
|
||||
|
||||
- The previously unsupported machine types pc-0.10, pc-0.11, pc-0.13,
|
||||
pc-1.0, pc-1.1, pc-1.2 and pc-1.3 are are no longer recognized.
|
||||
|
||||
- These previously supported QMP commands are now deprecated:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- These previously supported QMP commands are no longer recognized:
|
||||
info cpustats
|
||||
block_passwd
|
||||
change (use blockdev-change-medium or change-vnc-password instead)
|
||||
cpu-add (use device_add instead)
|
||||
migrate-set-cache-size (use migrate-set-parameters instead)
|
||||
migrate_set_downtime (use migrate-set-parameters instead)
|
||||
migrate_set_speed (use migrate-set-parameters instead)
|
||||
query-cpus (use query-cpus-fast instead)
|
||||
query-events
|
||||
query-migrate-cache-size (use query-migrate-parameters instead)
|
||||
|
||||
- These previously supported monitor commands are now deprecated:
|
||||
change
|
||||
|
||||
- These previously supported monitor commands are no longer recognized:
|
||||
info cpustats
|
||||
block_passwd ...
|
||||
block_passwd
|
||||
cpu-add
|
||||
cpu_set
|
||||
migrate_set_cache_size
|
||||
migrate_set_downtime
|
||||
migrate_set_speed
|
||||
pci_add (use device_add instead)
|
||||
pci_del (use device_del instead)
|
||||
usb_add (use device_add instead)
|
||||
usb_del (use device_del instead)
|
||||
|
||||
- These previously unsupported monitor command are now deprecated:
|
||||
<previously mentioned items have been moved to another category>
|
||||
|
||||
- These previously unsupported monitor commands are no longer recognized:
|
||||
acl_add ...
|
||||
acl_policy ...
|
||||
acl_remove ...
|
||||
acl_reset ...
|
||||
acl_show ...
|
||||
host_net_add
|
||||
host_net_remove
|
||||
|
||||
- These previously unsupported QMP commands are now supported under a new name:
|
||||
x-block-dirty-bitmap-disable (use block-dirty-bitmap-disable instead)
|
||||
x-block-dirty-bitmap-enable (use block-dirty-bitmap-enable instead)
|
||||
x-block-dirty-bitmap-merge (use block-dirty-bitmap-merge instead)
|
||||
x-block-latency-histogram-set (use block-latency-histogram-set instead)
|
||||
x-blockdev-create (use blockdev-create instead)
|
||||
x-input-send-event (use input-send-event instead)
|
||||
|
||||
- This previously unsupported QMP commands is no longer recognized:
|
||||
x-nbd-server-add-bitmap
|
||||
|
||||
- Due to the lack of migration support (mainly due to ahci interface issues)
|
||||
and other unstable interface issues, earlier versions of the q35 machine type
|
||||
are not supported in this release. The current q35 machine type is however now
|
||||
fully supported.
|
||||
|
||||
- Due to upstream's decision to no longer fully support the qed storage format
|
||||
going forward (since it really provides no benefit over qcow2 and is now no
|
||||
longer actively maintained upstream), creating qed storage images is no longer
|
||||
supported and it is highly discouraged to continue using existing qed images.
|
||||
They should instead be converted to another supported format.
|
||||
|
||||
- If KVM Intel nested virtualization is enabled, and the guest is passed the vmx
|
||||
feature, then live migration or save/restore is prohibited.
|
||||
|
||||
QEMU Command-Line and Monitor Syntax and Support
|
||||
------------------------------------------------
|
||||
|
||||
- The QEMU program command-line syntax is as follows:
|
||||
qemu-system-i386 [options] [disk_image]
|
||||
qemu-system-x86_64 [options] [disk_image]
|
||||
|
||||
Where 'options' are taken from the options listed below, and 'disk_image' is
|
||||
the file system reference to the x86 guest's primary IDE based hard disk
|
||||
image. This image as well as those used with -drive or -cdrom, may be in the
|
||||
raw (no format) or qcow2 storage formats, and may be located in files within
|
||||
the host filesystem, logical volumes, host physical disks, or network based
|
||||
storage. Read only media may also be accessed via URL style protocol
|
||||
specifiers.
|
||||
|
||||
Note that as a general rule, as new command line options are added which serve
|
||||
to replace an older option or interface, you are strongly encouraged to adapt
|
||||
your usage to the new option. The new option is being introduced to provide
|
||||
better functionality and usability going forward. In some cases existing
|
||||
problems or even bugs in older interfaces cannot be fixed due to functional
|
||||
expectations, but are resolved in the newer interface or option.
|
||||
This advice includes moving to the most recent machine type (eg pc-i440fx-6.1
|
||||
instead of pc-i440fx-6.0) if possible.
|
||||
|
||||
- The following command line options are supported:
|
||||
-accel ...
|
||||
-action ...
|
||||
-add-fd ...
|
||||
-alt-grab
|
||||
-append ...
|
||||
-audio-help
|
||||
-audiodev
|
||||
-bios ...
|
||||
-blockdev ...
|
||||
-boot ...
|
||||
-cdrom ...
|
||||
-chardev ...
|
||||
-compat ...
|
||||
-cpu ... (all except host)
|
||||
-ctrl-grab
|
||||
-d ...
|
||||
-daemonize
|
||||
-debugcon ...
|
||||
-device
|
||||
|
||||
[isa-serial|isa-parallel|isa-fdc|ide-hd|ide-cd|VGA|cirrus-vga|rtl8139|
|
||||
usb-hub|usb-ehci|usb-tablet|usb-storage|usb-mouse|usb-kbd|
|
||||
virtserialport|virtconsole|sga|i82559er|scsi-cd|scsi-hd|scsi-generic|
|
||||
scsi-block|pci-serial|pci-serial-2x|pci-serial-4x|ich9-ahci|
|
||||
piix3-usb-uhci|usb-host|usb-serial|usb-wacom-tablet|usb-braille|
|
||||
usb-net|pci-ohci|piix4-usb-uhci|i6300esb|ib700|qxl|qxl-vga|pvpanic|
|
||||
vfio-pci|ivshmem-doorbell|ivshmem-plain|pci-bridge|megasas-gen2|
|
||||
pc-dimm|floppy|e1000e|ccid-card-emulated|ccid-card-passthrough|
|
||||
xen-backend|loader|e1000-82540em|vmgenid|vmcoreinfo|pcie-pci-bridge|
|
||||
ich9-usb-ehci1|ich9-usb-ehci2|ich9-usb-uhci1|ich9-usb-uhci2|
|
||||
ich9-usb-uhci3|ich9-usb-uhci4|ich9-usb-uhci5|ich9-usb-uhci6|
|
||||
usb-redir|vhost-scsi|vhost-scsi-pci|vhost-user-blk|
|
||||
vhost-user-blk-pci|vhost-user-blk-pci-non-transitional|
|
||||
vhost-user-blk-pci-transitional|vhost-user-scsi|vhost-user-scsi-pci|
|
||||
vhost-user-scsi-pci-non-transitional|vhost-user-pci-transitional|
|
||||
vhost-vsock-pci|vhost-vsock-pci-non-transitional|virtio-balloon-pci|
|
||||
virtio-balloon-pci-non-transitional|virtio-balloon-pci-transitional|
|
||||
virtio-blk-pci|virtio-blk-pci-non-transitional|
|
||||
virtio-blk-pci-transitional|virtio-net-pci|
|
||||
virtio-net-pci-non-transitional|virtio-net-pci-transitional|
|
||||
virtio-9p-pci|virtio-9p-pci-non-transitional|
|
||||
virtio-9p-pci-transitional|virtio-serial-pci|
|
||||
virtio-serial-pci-non-transitional|virtio-serial-pci-transitional|
|
||||
virtio-scsi-pci|virtio-scsi-pci-non-transitional|
|
||||
virtio-scsi-pci-transitional|virtio-rng-pci|
|
||||
virtio-rng-pci-non-transitional|virtio-rng-pci-transitional|
|
||||
virtio-input-host-pci|virtio-input-host-pci-non-transitional|
|
||||
virtio-input-host-pci-transitional|virtio-keyboard-pci|
|
||||
virtio-mouse-pci|virtio-tablet-pci|virtio-gpu-pci|virtio-crypto-pci|
|
||||
virtio-vga|vhost-user-fs-pci|vhost-user-gpu|vhost-user-pci-pci|
|
||||
vhost-user-input|vhost-user-input-pci|vhost-user-vga|virtio-mmio|
|
||||
virtio-pmem|virtio-pmem-pci|mc146818rtci|nvme-subsys|guest-loader|
|
||||
pvpanic-pci]
|
||||
(the following are aliases of these supported devices: ahci|
|
||||
e1000|virtio-blk|virtio-net|virtio-serial|virtio-balloon|virtio-9p|
|
||||
virtio-scsi|virtio-rng|virtio-input-host|virtio-keyboard|virtio-mouse|virtio-tablet|virtio-gpu)
|
||||
|
||||
-dfilter range, ...
|
||||
-display ...
|
||||
-drive
|
||||
|
||||
... (if specified if=[floppy|ide|virtio] and format=[qcow2|raw] and
|
||||
snapshot=off only)
|
||||
|
||||
-echr ...
|
||||
-enable-fips
|
||||
-enable-kvm
|
||||
-fda/-fdb ...
|
||||
-fsdev ...
|
||||
-full-screen
|
||||
-fw_cfg ...
|
||||
-gdb ...
|
||||
-global ...
|
||||
-h
|
||||
-hda/-hdb/-hdc/-hdd ...
|
||||
-help
|
||||
-incoming ...
|
||||
-initrd ...
|
||||
-iscsi ...
|
||||
-k ...
|
||||
-kernel ...
|
||||
-loadvm ...
|
||||
-m ...
|
||||
-M
|
||||
|
||||
[help|none|pc-i440fx-1.4|pc-i440fx-1.7|pc-i440fx-2.0|pc-i440fx-2.3|
|
||||
pc-i440fx-2.6|pc-i440fx-2.9|pc-i440fx-2.11|pc-i440fx-3.1|pc-i440fx-4.2|
|
||||
pc-i440fx-5.2|pc-i440fx-6.0|pc-i440fx-6.1|pc-q35-2.6|pc-q35-2.9|
|
||||
pc-q35-2.11|pc-q35-3.1|pc-q35-4.2|pc-q35-5.2|pc-q35-6.0|pc-q35-6.1|
|
||||
xenfv|xenfv-4.2]
|
||||
|
||||
-machine
|
||||
|
||||
[help|none|pc-i440fx-1.4|pc-i440fx-1.7|pc-i440fx-2.0|
|
||||
pc-i440fx-2.3|pc-440fx-2.6|pc-i440fx-2.9|pc-i440fx-2.11|
|
||||
pc-i440fx-3.1|pc-i440fx-4.2|pc-i440fx-5.2|pc-i440fx-6.0|
|
||||
pc-i440fx-6.1|pc-q35-2.6|pc-q35-2.9|pc-q35-2.11|pc-q35-3.1|
|
||||
pc-q35-4.2|pc-q35-5.2|pc-q35-6.0|pc-q35-6.1|xenfv|xenifv-4.2]
|
||||
|
||||
-mem-path ...
|
||||
-mem-prealloc
|
||||
-mon ...
|
||||
-monitor ...
|
||||
-msg ...
|
||||
-name ...
|
||||
-net
|
||||
|
||||
[bridge|l2tpv3|nic|none|tap|user] ... (for model= only e1000, rtl8139,
|
||||
and virtio are supported)
|
||||
|
||||
-netdev [bridge|tap|user] ...
|
||||
-nic ...
|
||||
-no-acpi
|
||||
-nodefaults
|
||||
-no-fd-bootchk
|
||||
-nographic
|
||||
-no-hpet
|
||||
-no-quit
|
||||
-no-reboot
|
||||
-no-shutdown
|
||||
-no-user-config
|
||||
-numa cpu ...
|
||||
-numa dist ...
|
||||
-object ...
|
||||
-only-migratable
|
||||
-parallel ...
|
||||
-pidfile ...
|
||||
-plugin ...
|
||||
-qmp ...
|
||||
-qmp-pretty ...
|
||||
-readconfig ...
|
||||
-rtc ...
|
||||
-runas ...
|
||||
-s
|
||||
-S
|
||||
-sandbox ...
|
||||
-seed ...
|
||||
-serial ...
|
||||
-smbios ...
|
||||
-smp ...
|
||||
-spice
|
||||
-tpmdev passthrough ...
|
||||
-trace ...
|
||||
-usb
|
||||
-usbdevice [braile|disk|host|mouse|net|serial|tablet]
|
||||
-uuid ...
|
||||
-version
|
||||
-vga [cirrus|none|qxl|std|xenfb]
|
||||
-virtfs ...
|
||||
-vnc ...
|
||||
-watchdog ...
|
||||
-watchdog-action ...
|
||||
-writeconfig ...
|
||||
-xen-attach ...
|
||||
-xen-domid ...
|
||||
-xen-domid-restrict ...
|
||||
|
||||
- The following monitor commands are supported:
|
||||
?
|
||||
announce_self ...
|
||||
balloon ...
|
||||
block_resize ...
|
||||
boot_set ...
|
||||
c
|
||||
change ...
|
||||
chardev-add ...
|
||||
chardev-change ...
|
||||
chardev-remove ...
|
||||
chardev-send-break ...
|
||||
client_migrate_info ...
|
||||
closefd ...
|
||||
cont
|
||||
cpu ...
|
||||
delvm ...
|
||||
device_add ...
|
||||
device_del ...
|
||||
drive_add ...
|
||||
drive_backup ...
|
||||
drive_del ...
|
||||
dump_guest_memory ...
|
||||
eject ...
|
||||
gdbserver ...
|
||||
gpa2hpa ...
|
||||
gpa2hva ...
|
||||
gva2gpa ...
|
||||
help
|
||||
i ...
|
||||
info ...
|
||||
loadvm ...
|
||||
logfile ...
|
||||
logitem ...
|
||||
mce ...
|
||||
memsave ...
|
||||
migrate ...
|
||||
migrate_cancel
|
||||
migrate_continue ...
|
||||
migrate_incoming
|
||||
migrate_pause
|
||||
migrate_recover ...
|
||||
migrate_set_capability ...
|
||||
migrate_set_parameter ...
|
||||
migrate_start_post_copy
|
||||
mouse_button ...
|
||||
mouse_move ...
|
||||
mouse_set ...
|
||||
nmi ...
|
||||
o ...
|
||||
object_add ...
|
||||
object_del ...
|
||||
p ...
|
||||
pci_add ...
|
||||
pci_del...
|
||||
pmemsave ...
|
||||
print ...
|
||||
q
|
||||
qemu-io ...
|
||||
qom-list
|
||||
qom-set
|
||||
ringbuf_read ...
|
||||
ringbuf_write ...
|
||||
savevm ...
|
||||
screendump ...
|
||||
sendkey ...
|
||||
snapshot_blkdev_internal ...
|
||||
snapshot_delete_blkdev_internal ...
|
||||
stop
|
||||
sum ...
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event ...
|
||||
watchdog_action ...
|
||||
x ...
|
||||
xp ...
|
||||
|
||||
- The following QMP commands are supported:
|
||||
add_client
|
||||
add-fd
|
||||
announce-self
|
||||
balloon
|
||||
blockdev-add
|
||||
blockdev-backup
|
||||
blockdev-change-medium
|
||||
blockdev-close-tray
|
||||
blockdev-create
|
||||
blockdev-del
|
||||
blockdev-mirror
|
||||
blockdev-open-tray
|
||||
blockdev-snapshot
|
||||
blockdev-snapshot-delete-internal-sync
|
||||
blockdev-snapshot-internal-sync
|
||||
blockdev-snapshot-sync
|
||||
block-commit
|
||||
block-dirty-bitmap-add
|
||||
block-dirty-bitmap-clear
|
||||
block-dirty-bitmap-disable
|
||||
block-dirty-bitmap-enable
|
||||
block-dirty-bitmap-merge
|
||||
block-dirty-bitmap-remove
|
||||
block-export-add
|
||||
block-export-del
|
||||
block-latency-histogram-set
|
||||
block_resize
|
||||
block_set_io_throttle
|
||||
block-set-write-threshold
|
||||
block_stream
|
||||
calc-dirty-rate
|
||||
change-vnc-password
|
||||
chardev-add
|
||||
chardev-change
|
||||
chardev-remove
|
||||
chardev-send-break
|
||||
client_migrate_info
|
||||
closefd
|
||||
cont
|
||||
cpu
|
||||
device_add
|
||||
device_del
|
||||
device-list-properties
|
||||
display-reload
|
||||
dump-guest-memory
|
||||
eject
|
||||
expire_password
|
||||
getfd
|
||||
human-monitor-command
|
||||
inject-nmi
|
||||
input-send-event
|
||||
job-cancel
|
||||
job-complete
|
||||
job-dismiss
|
||||
job-finalize
|
||||
job-pause
|
||||
job-resume
|
||||
memsave
|
||||
migrate
|
||||
migrate_cancel
|
||||
migrate-continue
|
||||
migrate-incoming
|
||||
migrate-pause
|
||||
migrate-resume
|
||||
migrate-set-capabilities
|
||||
migrate-set-parameters
|
||||
migrate-start-postcopy
|
||||
object-add
|
||||
object-del
|
||||
pmemsave
|
||||
qmp_capabilities
|
||||
qom-get
|
||||
qom-list
|
||||
qom-list-types
|
||||
qom-set
|
||||
query-acpi-ospm-status
|
||||
query-balloon
|
||||
query-block
|
||||
query-block-exports
|
||||
query-block-jobs
|
||||
query-blockstats
|
||||
query-chardev
|
||||
query-chardev-backends
|
||||
query-command-line-options
|
||||
query-commands
|
||||
query-cpu-definitions
|
||||
query-cpu-model-expansion
|
||||
query-cpus-fast
|
||||
query-current-machine
|
||||
query-dirty-rate
|
||||
query-display-options
|
||||
query-dump
|
||||
query-dump-guest-memory-capability
|
||||
query-fdsets
|
||||
query-gic-capabilities
|
||||
query-hotpluggable-cpus
|
||||
query-iothreads
|
||||
query-jobs
|
||||
query-kvm
|
||||
query-machines
|
||||
query-memdev
|
||||
query-memory-devices
|
||||
query-memory-size-summary
|
||||
query-mice
|
||||
query-migrate
|
||||
query-migrate-capabilities
|
||||
query-migrate-parameters
|
||||
query-name
|
||||
query-named-block-nodes
|
||||
query-pci
|
||||
query-pr-managers
|
||||
query-qmp-schema
|
||||
query-rocker
|
||||
query-rocker-of-dpa-flows
|
||||
query-rocker-of-dpa-groups
|
||||
query-rocker-ports
|
||||
query-rx-filter
|
||||
query-sev
|
||||
query-sev-capabilities
|
||||
query-sev-launch-measure
|
||||
query-spice
|
||||
query-status
|
||||
query-target
|
||||
query-tpm
|
||||
query-tpm-models
|
||||
query-tpm-types
|
||||
query-uuid
|
||||
query-version
|
||||
query-vnc
|
||||
query-vnc-servers
|
||||
query-yank
|
||||
query-xen-replication-status
|
||||
quit
|
||||
remove-fd
|
||||
ringbuf-read
|
||||
ringbuf-write
|
||||
screendump
|
||||
send-key
|
||||
set-action
|
||||
set_link
|
||||
set_password
|
||||
set-numa-node
|
||||
sev-inject-launch-secret
|
||||
snapshot-delete
|
||||
snapshot-load
|
||||
snapshot-save
|
||||
stop
|
||||
system_powerdown
|
||||
system_reset
|
||||
system_wakeup
|
||||
trace-event-get-state
|
||||
trace-event-set-state
|
||||
transaction
|
||||
watchdog-set-action
|
||||
xen-load-devices-state
|
||||
xen-save-devices-state
|
||||
xen-set-global-dirty-log
|
||||
yank
|
||||
|
||||
- The following command line options are unsupported:
|
||||
|
||||
-acpitable ...
|
||||
-chroot ...
|
||||
-cpu host
|
||||
-curses
|
||||
-device
|
||||
|
||||
[ipoctal232|i82562|nec-usb-xhci|hda-duplex|hda-output|usb-bot|
|
||||
lsi53c810a|isa-debug-exit|ne2k_pci|usb-uas|ioh3420|isa-ide|usb-ccid|
|
||||
pcnet|ich9-intel-hda|dc390|hda-micro|x3130-upstream|isa-cirrus-vga|
|
||||
pc-testdev|ne2k_isa|isa-vga|cs4231a|gus|vmware-svga|i82801b11-bridge|
|
||||
i82557a|i82557c|i82557b|i82801|AC97|am53c974|intel-hda|i82558a|
|
||||
i82558b|usb-audio|i82550|isa-debugcon|sb16|megasas|i82551|
|
||||
xio3130-downstream|vt82c686b-usb-uhci|tpci200|i82559a|i82559b|i82559c|
|
||||
isa-applesmc|adlib|ES1370|lsi53c810|nvme|pci-testdev|pvscsi|
|
||||
virtio-9p-device|virtio-balloon-device|virtio-blk-device|
|
||||
virtio-net-device|virtio-rng-device|virtio-scsi-device|
|
||||
virtio-serial-device|vmxnet3|xen-pci-passthrough|xen-platform|
|
||||
xen-pvdevice|piix3-ide|piix3-ide-xen|piix3-ide|i8042|sdhci-pci|
|
||||
secondary-vga|edu|intel_iommu|usb-mtp|e1000-82544gc|e1000-82545em|
|
||||
pci-bridge-seat|pxb|pxb-pcie|rocker|virtio-input-host-device|
|
||||
virtio-keyboard-device|virtio-mouse-device|virtio-tablet-device|
|
||||
hyperv-testdev|generic-sdhci|igd-passthrough-isa-bridge|
|
||||
ipmi-bmc-extern|ipmi-bmc-sim|isa-ipmi-bt|isa-ipmi-kcs|mptsas1068|
|
||||
nvdimm|pxb-host|sd-card|virtio-gpu-device|amd-iommu|AMDVI-PCI|
|
||||
vhost-vsock-device|virtio-crypto-device|vfio-pci-igd-lpc-bridge|
|
||||
pcie-root-port|qemu-xhci|*-i386-cpu|*-x86_64-cpu|pvrdma|bochs-display|
|
||||
ramfb|ccid-card-emulated|ccid-card-passthru|kvaser_pci|tpm-crb|
|
||||
mioe3680_pci|pcm3680_pci|hyperv-synic|vfio-pci-nohotplug|
|
||||
vfio-platform|xen-bridge|xen-cdrom|xen-disk|ati-vga|cpu-cluster|
|
||||
intel-iommu|vhost-user-fs-device|tulip|ati-vga|i2c-ddc|pci-ipmi-bt|
|
||||
pci-ipmi-kcs|serial|serial-io|serial-mm|virtio-iommu-device|
|
||||
virtio-iommu-pci|virtio-iommu-pci-nontransitional|xen-sysdev|
|
||||
imx.usbphy|vmbus-bridge|vhost-user-vsock-device|vhost-user-vsock-pci|
|
||||
vhost-user-vsock-pci-non-transitional|virtio-mem|virtio-mem-pci|
|
||||
nvme-ns|ctucan_pci|u2f-passthru]
|
||||
(the following are aliases of these unsupported devices: lsi)
|
||||
(note that some of these device names represent supported devices and
|
||||
are used internally, but are not specifyable via -device even though
|
||||
they appear in the list of devices)
|
||||
|
||||
-drive
|
||||
|
||||
,if=[scsi|mtd|pflash], snapshot=on, format=[anything besides qcow2 or
|
||||
raw]
|
||||
|
||||
-dtb file
|
||||
-enable-sync-profile
|
||||
-g ...
|
||||
-icount ...
|
||||
-L ...
|
||||
-M
|
||||
|
||||
[pc|isapc|microvm|x-remote|pc-i440fx-1.5|pc-i440fx-1.6|pc-i440fx-2.1|
|
||||
pc-i440fx-2.2|pc-i440fx-2.4|pc-i440fx-2.5|pc-i440fx-2.7|pc-i440fx-2.8|
|
||||
pc-i440fx-2.10|pc-i440fx-2.12|pc-i440fx-3.0|pc-i440fx-4.0|pc-i440fx-4.1|
|
||||
pc-i440fx-5.0|pc-i440fx-5.1|pc-i440fx-6.0|q35|pc-q35-1.4|pc-q35-1.5|
|
||||
pc-q35-1.6|pc-q35-1.7|pc-q35-2.0|pc-q35-2.1|pc-q35-2.2|pc-q35-2.3|
|
||||
pc-q35-2.4|pc-q35-2.5|pc-q35-2.7|pc-q35-2.8|pc-q35-2.10|pc-q35-2.12|
|
||||
pc-q35-3.0|pc-q35-4.0|pc-q35-4.1|pc-q35-5.0|pc-q35-5.1|pc-q35-6.0]
|
||||
|
||||
-machine
|
||||
|
||||
[pc|isapc|microvm|x-remote|pc-i440fx-1.5|pc-i440fx-1.6|pc-i440fx-2.1|
|
||||
pc-i440fx-2.2|pc-i440fx-2.4|pc-i440fx-2.5|pc-i440fx-2.7|
|
||||
pc-i440fx-2.8|pc-i440fx-2.10|pc-i440fx-2.12|pc-i440fx-3.0|
|
||||
pc-i440fx-4.0|pc-i440fx-4.1|pc-i440fx-5.0|pc-i440fx-5.1|
|
||||
pc-i440fx-6.0|q35|pc-q35-1.4|pc-q35-1.5|pc-q35-1.6|pc-q35-1.7|
|
||||
pc-q35-2.0|pc-q35-2.1|pc-q35-2.2|pc-q35-2.3|pc-q35-2.4|pc-q35-2.5|
|
||||
pc-q35-2.7|pc-q35-2.8|pc-q35-2.10|pc-q35-2.12|pc-q35-3.0|pc-q35-4.0|
|
||||
pc-q35-4.1|pc-q35-5.0|pc-q35-5.1|pc-q35-6.0]
|
||||
|
||||
-mtdblock file
|
||||
-net [socket|vde] ...
|
||||
-netdev [hubport|l2tpv3|socket|vde] ...
|
||||
-no-kvm
|
||||
-numa node ...
|
||||
-option-rom ...
|
||||
-overcommit ...
|
||||
-pflash file
|
||||
-portrait
|
||||
-preconfig
|
||||
-prom-env ...
|
||||
-qtest ...
|
||||
-qtest-log ...
|
||||
-rotate
|
||||
-sd file
|
||||
-sdl
|
||||
-set ...
|
||||
-singlestep
|
||||
-snapshot
|
||||
-soundhw ...
|
||||
-tpmdev emulator ...
|
||||
-vga [cg3|tcx|virtio|vmware]
|
||||
-win2k-hack
|
||||
|
||||
- The following monitor commands are unsupported:
|
||||
block_job_cancel ...
|
||||
block_job_complete ...
|
||||
block_job_pause ...
|
||||
block_job_resume ...
|
||||
block_job_set_speed ...
|
||||
commit ...
|
||||
drive_mirror ...
|
||||
exit_preconfig
|
||||
expire_password ...
|
||||
hostfwd_add ...
|
||||
hostfwd_remove ...
|
||||
nbd_server_add ...
|
||||
nbd server_start ...
|
||||
nbd_server_stop ...
|
||||
netdev_add
|
||||
netdev_del ...
|
||||
pcie_aer_inject_error ...
|
||||
replay_break ...
|
||||
replay_delete_break
|
||||
replay_seek ...
|
||||
set_link ...
|
||||
set_password ...
|
||||
singlestep ...
|
||||
snapshot_blkdev ...
|
||||
stopcapture ...
|
||||
sync-profile ...
|
||||
wavcapture ...
|
||||
x_colo_lost_heartbeat
|
||||
|
||||
- The following QMP commands are unsupported:
|
||||
block-job-cancel
|
||||
block-job-complete
|
||||
block-job-pause
|
||||
block-job-resume
|
||||
block-job-set-speed
|
||||
change-backing-file
|
||||
drive-backup
|
||||
drive-mirror
|
||||
netdev_add
|
||||
netdev_del
|
||||
nbd-server-add
|
||||
nbd-server-start
|
||||
nbd-server-stop
|
||||
query-colo-status
|
||||
query-replay
|
||||
replay_break
|
||||
replay_delete_break
|
||||
replay_seek
|
||||
x-blockdev-amend
|
||||
x-blockdev-change
|
||||
x-blockdev-insert-medium
|
||||
x-blockdev-remove-medium
|
||||
x-blockdev-reopen
|
||||
x-colo-lost-heartbeat
|
||||
x-debug-block-dirty-bitmap-sha256
|
||||
x-debug-query-block-graph
|
||||
x-exit-preconfig
|
||||
xen-colo-do-checkpoint
|
||||
xen-set-replication
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
#!/usr/bin/python3
|
||||
#
|
||||
# Migration Stream Analyzer
|
||||
#
|
||||
|
||||
@@ -44,6 +44,7 @@ def gen_header():
|
||||
#include "block/block-gen.h"
|
||||
#include "block/block_int.h"
|
||||
#include "block/dirty-bitmap.h"
|
||||
#include "block/qapi.h"
|
||||
"""
|
||||
|
||||
|
||||
|
||||
@@ -341,7 +341,7 @@ BINFMT_SET=qemu_register_interpreter
|
||||
SYSTEMDDIR="/etc/binfmt.d"
|
||||
DEBIANDIR="/usr/share/binfmts"
|
||||
|
||||
QEMU_PATH=/usr/local/bin
|
||||
QEMU_PATH=/usr/bin
|
||||
CREDENTIAL=no
|
||||
PERSISTENT=no
|
||||
PRESERVE_ARG0=no
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/env python3
|
||||
#!/usr/bin/python3
|
||||
#
|
||||
# Compares vmstate information stored in JSON format, obtained from
|
||||
# the -dump-vmstate QEMU command.
|
||||
|
||||
1
subprojects/berkeley-softfloat-3
Submodule
1
subprojects/berkeley-softfloat-3
Submodule
Submodule subprojects/berkeley-softfloat-3 added at b64af41c32
1
subprojects/berkeley-testfloat-3
Submodule
1
subprojects/berkeley-testfloat-3
Submodule
Submodule subprojects/berkeley-testfloat-3 added at e7af9751d9
1
subprojects/dtc
Submodule
1
subprojects/dtc
Submodule
Submodule subprojects/dtc added at b6910bec11
1
subprojects/keycodemapdb
Submodule
1
subprojects/keycodemapdb
Submodule
Submodule subprojects/keycodemapdb added at f5772a62ec
1
subprojects/libvfio-user
Submodule
1
subprojects/libvfio-user
Submodule
Submodule subprojects/libvfio-user added at 0b28d20557
@@ -1960,11 +1960,13 @@ RAMBlock *qemu_ram_alloc_from_fd(ram_addr_t size, MemoryRegion *mr,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifndef TARGET_PPC
|
||||
if (kvm_enabled() && !kvm_has_sync_mmu()) {
|
||||
error_setg(errp,
|
||||
"host lacks kvm mmu notifiers, -mem-path unsupported");
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
size = TARGET_PAGE_ALIGN(size);
|
||||
size = REAL_HOST_PAGE_ALIGN(size);
|
||||
|
||||
12
system/vl.c
12
system/vl.c
@@ -42,6 +42,7 @@
|
||||
#include "sysemu/reset.h"
|
||||
#include "sysemu/runstate.h"
|
||||
#include "sysemu/runstate-action.h"
|
||||
#include <sys/resource.h>
|
||||
#include "sysemu/seccomp.h"
|
||||
#include "sysemu/tcg.h"
|
||||
#include "sysemu/xen.h"
|
||||
@@ -2757,6 +2758,17 @@ void qemu_init(int argc, char **argv)
|
||||
MachineClass *machine_class;
|
||||
bool userconfig = true;
|
||||
FILE *vmstate_dump_file = NULL;
|
||||
struct rlimit rlimit_as;
|
||||
|
||||
/*
|
||||
* Try to raise the soft address space limit.
|
||||
* Default on SLES 11 SP2 is 80% of physical+swap memory.
|
||||
*/
|
||||
getrlimit(RLIMIT_AS, &rlimit_as);
|
||||
if (rlimit_as.rlim_cur < rlimit_as.rlim_max) {
|
||||
rlimit_as.rlim_cur = rlimit_as.rlim_max;
|
||||
setrlimit(RLIMIT_AS, &rlimit_as);
|
||||
}
|
||||
|
||||
qemu_add_opts(&qemu_drive_opts);
|
||||
qemu_add_drive_opts(&qemu_legacy_drive_opts);
|
||||
|
||||
@@ -1221,10 +1221,32 @@ FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
"eraps", NULL, NULL, "sbpb",
|
||||
"ibpb-brtype", "srso-no", "srso-user-kernel-no", NULL,
|
||||
},
|
||||
.cpuid = { .eax = 0x80000021, .reg = R_EAX, },
|
||||
.tcg_features = 0,
|
||||
.unmigratable_flags = 0,
|
||||
},
|
||||
[FEAT_8000_0021_EBX] = {
|
||||
.type = CPUID_FEATURE_WORD,
|
||||
.cpuid = { .eax = 0x80000021, .reg = R_EBX, },
|
||||
.tcg_features = 0,
|
||||
.unmigratable_flags = 0,
|
||||
},
|
||||
[FEAT_8000_0022_EAX] = {
|
||||
.type = CPUID_FEATURE_WORD,
|
||||
.feat_names = {
|
||||
"perfmon-v2", NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
NULL, NULL, NULL, NULL,
|
||||
},
|
||||
.cpuid = { .eax = 0x80000021, .reg = R_EAX, },
|
||||
.cpuid = { .eax = 0x80000022, .reg = R_EAX, },
|
||||
.tcg_features = 0,
|
||||
.unmigratable_flags = 0,
|
||||
},
|
||||
@@ -5220,7 +5242,7 @@ static const X86CPUDefinition builtin_x86_defs[] = {
|
||||
CPUID_8000_0008_EBX_STIBP_ALWAYS_ON |
|
||||
CPUID_8000_0008_EBX_AMD_SSBD | CPUID_8000_0008_EBX_AMD_PSFD,
|
||||
.features[FEAT_8000_0021_EAX] =
|
||||
CPUID_8000_0021_EAX_No_NESTED_DATA_BP |
|
||||
CPUID_8000_0021_EAX_NO_NESTED_DATA_BP |
|
||||
CPUID_8000_0021_EAX_LFENCE_ALWAYS_SERIALIZING |
|
||||
CPUID_8000_0021_EAX_NULL_SEL_CLR_BASE |
|
||||
CPUID_8000_0021_EAX_AUTO_IBRS,
|
||||
@@ -7008,6 +7030,16 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
||||
*edx = 0;
|
||||
}
|
||||
break;
|
||||
case 0x80000022:
|
||||
*eax = *ebx = *ecx = *edx = 0;
|
||||
/* AMD Extended Performance Monitoring and Debug */
|
||||
if (kvm_enabled() && cpu->enable_pmu &&
|
||||
(env->features[FEAT_8000_0022_EAX] & CPUID_8000_0022_EAX_PERFMON_V2)) {
|
||||
*eax |= CPUID_8000_0022_EAX_PERFMON_V2;
|
||||
*ebx |= kvm_arch_get_supported_cpuid(cs->kvm_state, index, count,
|
||||
R_EBX) & 0xf;
|
||||
}
|
||||
break;
|
||||
case 0xC0000000:
|
||||
*eax = env->cpuid_xlevel2;
|
||||
*ebx = 0;
|
||||
@@ -7041,8 +7073,9 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count,
|
||||
}
|
||||
break;
|
||||
case 0x80000021:
|
||||
*eax = *ebx = *ecx = *edx = 0;
|
||||
*eax = env->features[FEAT_8000_0021_EAX];
|
||||
*ebx = *ecx = *edx = 0;
|
||||
*ebx = env->features[FEAT_8000_0021_EBX];
|
||||
break;
|
||||
default:
|
||||
/* reserved values: zero */
|
||||
@@ -7756,7 +7789,15 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
|
||||
* In this case, the default is the value used by TCG (40).
|
||||
*/
|
||||
if (cpu->phys_bits == 0) {
|
||||
cpu->phys_bits = TCG_PHYS_ADDR_BITS;
|
||||
/* SUSE Downstream patch: TCG_PHYS_ADDR_BITS is 40. We, instead
|
||||
* need the phys_bits to be 42 (only if the host supports that, of
|
||||
* course), because we did set it to 42 (unconditionally!) a while
|
||||
* ago, and now we need to stay compatible with that. However,
|
||||
* instead of messing with the macro, just use the value here,
|
||||
* to avoid messing with other places where the macro is used
|
||||
* (namely, for TCG).
|
||||
*/
|
||||
cpu->phys_bits = (MIN(42, host_cpu_phys_bits()));
|
||||
}
|
||||
if (cpu->guest_phys_bits &&
|
||||
(cpu->guest_phys_bits > cpu->phys_bits ||
|
||||
|
||||
@@ -638,6 +638,8 @@ typedef enum FeatureWord {
|
||||
FEAT_8000_0007_EDX, /* CPUID[8000_0007].EDX */
|
||||
FEAT_8000_0008_EBX, /* CPUID[8000_0008].EBX */
|
||||
FEAT_8000_0021_EAX, /* CPUID[8000_0021].EAX */
|
||||
FEAT_8000_0021_EBX, /* CPUID[8000_0021].EBX */
|
||||
FEAT_8000_0022_EAX, /* CPUID[8000_0022].EAX */
|
||||
FEAT_C000_0001_EDX, /* CPUID[C000_0001].EDX */
|
||||
FEAT_KVM, /* CPUID[4000_0001].EAX (KVM_CPUID_FEATURES) */
|
||||
FEAT_KVM_HINTS, /* CPUID[4000_0001].EDX */
|
||||
@@ -1014,13 +1016,32 @@ uint64_t x86_cpu_get_supported_feature_word(X86CPU *cpu, FeatureWord w);
|
||||
#define CPUID_8000_0008_EBX_AMD_PSFD (1U << 28)
|
||||
|
||||
/* Processor ignores nested data breakpoints */
|
||||
#define CPUID_8000_0021_EAX_No_NESTED_DATA_BP (1U << 0)
|
||||
#define CPUID_8000_0021_EAX_NO_NESTED_DATA_BP (1U << 0)
|
||||
/* LFENCE is always serializing */
|
||||
#define CPUID_8000_0021_EAX_LFENCE_ALWAYS_SERIALIZING (1U << 2)
|
||||
/* Null Selector Clears Base */
|
||||
#define CPUID_8000_0021_EAX_NULL_SEL_CLR_BASE (1U << 6)
|
||||
#define CPUID_8000_0021_EAX_NULL_SEL_CLR_BASE (1U << 6)
|
||||
/* Automatic IBRS */
|
||||
#define CPUID_8000_0021_EAX_AUTO_IBRS (1U << 8)
|
||||
#define CPUID_8000_0021_EAX_AUTO_IBRS (1U << 8)
|
||||
/* Enhanced Return Address Predictor Scurity */
|
||||
#define CPUID_8000_0021_EAX_ERAPS (1U << 24)
|
||||
/* Selective Branch Predictor Barrier */
|
||||
#define CPUID_8000_0021_EAX_SBPB (1U << 27)
|
||||
/* IBPB includes branch type prediction flushing */
|
||||
#define CPUID_8000_0021_EAX_IBPB_BRTYPE (1U << 28)
|
||||
/* Not vulnerable to Speculative Return Stack Overflow */
|
||||
#define CPUID_8000_0021_EAX_SRSO_NO (1U << 29)
|
||||
/* Not vulnerable to SRSO at the user-kernel boundary */
|
||||
#define CPUID_8000_0021_EAX_SRSO_USER_KERNEL_NO (1U << 30)
|
||||
|
||||
/*
|
||||
* Return Address Predictor size. RapSize x 8 is the minimum number of
|
||||
* CALL instructions software needs to execute to flush the RAP.
|
||||
*/
|
||||
#define CPUID_8000_0021_EBX_RAPSIZE (8U << 16)
|
||||
|
||||
/* Performance Monitoring Version 2 */
|
||||
#define CPUID_8000_0022_EAX_PERFMON_V2 (1U << 0)
|
||||
|
||||
#define CPUID_XSAVE_XSAVEOPT (1U << 0)
|
||||
#define CPUID_XSAVE_XSAVEC (1U << 1)
|
||||
@@ -2374,6 +2395,41 @@ void host_cpuid(uint32_t function, uint32_t count,
|
||||
uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx);
|
||||
bool cpu_has_x2apic_feature(CPUX86State *env);
|
||||
|
||||
/* Note: Only safe for use on x86(-64) hosts */
|
||||
#ifdef __x86_64__
|
||||
static inline uint32_t host_cpu_phys_bits(void)
|
||||
{
|
||||
uint32_t eax;
|
||||
uint32_t host_phys_bits;
|
||||
|
||||
host_cpuid(0x80000000, 0, &eax, NULL, NULL, NULL);
|
||||
if (eax >= 0x80000008) {
|
||||
host_cpuid(0x80000008, 0, &eax, NULL, NULL, NULL);
|
||||
/*
|
||||
* Note: According to AMD doc 25481 rev 2.34 they have a field
|
||||
* at 23:16 that can specify a maximum physical address bits for
|
||||
* the guest that can override this value; but I've not seen
|
||||
* anything with that set.
|
||||
*/
|
||||
host_phys_bits = eax & 0xff;
|
||||
} else {
|
||||
/*
|
||||
* It's an odd 64 bit machine that doesn't have the leaf for
|
||||
* physical address bits; fall back to 36 that's most older
|
||||
* Intel.
|
||||
*/
|
||||
host_phys_bits = 36;
|
||||
}
|
||||
|
||||
return host_phys_bits;
|
||||
}
|
||||
#else
|
||||
static inline uint32_t host_cpu_phys_bits(void)
|
||||
{
|
||||
return 40; // TCG_PHYS_ADDR_BITS
|
||||
}
|
||||
#endif
|
||||
|
||||
/* helper.c */
|
||||
void x86_cpu_set_a20(X86CPU *cpu, int a20_state);
|
||||
void cpu_sync_avx_hflag(CPUX86State *env);
|
||||
|
||||
@@ -14,34 +14,6 @@
|
||||
#include "qemu/error-report.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
|
||||
/* Note: Only safe for use on x86(-64) hosts */
|
||||
static uint32_t host_cpu_phys_bits(void)
|
||||
{
|
||||
uint32_t eax;
|
||||
uint32_t host_phys_bits;
|
||||
|
||||
host_cpuid(0x80000000, 0, &eax, NULL, NULL, NULL);
|
||||
if (eax >= 0x80000008) {
|
||||
host_cpuid(0x80000008, 0, &eax, NULL, NULL, NULL);
|
||||
/*
|
||||
* Note: According to AMD doc 25481 rev 2.34 they have a field
|
||||
* at 23:16 that can specify a maximum physical address bits for
|
||||
* the guest that can override this value; but I've not seen
|
||||
* anything with that set.
|
||||
*/
|
||||
host_phys_bits = eax & 0xff;
|
||||
} else {
|
||||
/*
|
||||
* It's an odd 64 bit machine that doesn't have the leaf for
|
||||
* physical address bits; fall back to 36 that's most older
|
||||
* Intel.
|
||||
*/
|
||||
host_phys_bits = 36;
|
||||
}
|
||||
|
||||
return host_phys_bits;
|
||||
}
|
||||
|
||||
static uint32_t host_cpu_adjust_phys_bits(X86CPU *cpu)
|
||||
{
|
||||
uint32_t host_phys_bits = host_cpu_phys_bits();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
QA output created by 162
|
||||
|
||||
=== NBD ===
|
||||
qemu-img: Could not open 'json:{"driver": "nbd", "host": -1}': address resolution failed for -1:10809: Name or service not known
|
||||
qemu-img: Could not open 'json:{"driver": "nbd", "host": 42}': Failed to connect socket: Network is unreachable
|
||||
image: nbd://localhost:PORT
|
||||
image: nbd+unix://?socket=42
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ _timed_wait_for()
|
||||
timeout=yes
|
||||
|
||||
QEMU_STATUS[$h]=0
|
||||
read_timeout="-t ${QEMU_COMM_TIMEOUT}"
|
||||
read_timeout="-t $((${QEMU_COMM_TIMEOUT}*3))"
|
||||
if [ -n "${GDB_OPTIONS}" ]; then
|
||||
read_timeout=
|
||||
fi
|
||||
|
||||
@@ -36,6 +36,10 @@ qtests_pci = \
|
||||
(config_all_devices.has_key('CONFIG_VGA') ? ['display-vga-test'] : []) + \
|
||||
(config_all_devices.has_key('CONFIG_IVSHMEM_DEVICE') ? ['ivshmem-test'] : [])
|
||||
|
||||
# FIXME [openSUSE]: display-vga-test currently fails in OBS (and only in OBS!?!), for ppc64
|
||||
qtests_pci_novga = \
|
||||
(config_all_devices.has_key('CONFIG_IVSHMEM_DEVICE') ? ['ivshmem-test'] : [])
|
||||
|
||||
qtests_cxl = \
|
||||
(config_all_devices.has_key('CONFIG_CXL') ? ['cxl-test'] : [])
|
||||
|
||||
@@ -177,7 +181,7 @@ qtests_ppc64 = \
|
||||
(slirp.found() ? ['pxe-test'] : []) + \
|
||||
(config_all_devices.has_key('CONFIG_USB_UHCI') ? ['usb-hcd-uhci-test'] : []) + \
|
||||
(config_all_devices.has_key('CONFIG_USB_XHCI_NEC') ? ['usb-hcd-xhci-test'] : []) + \
|
||||
qtests_pci + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test']
|
||||
qtests_pci_novga + ['migration-test', 'numa-test', 'cpu-plug-test', 'drive_del-test']
|
||||
|
||||
qtests_sh4 = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : [])
|
||||
qtests_sh4eb = (config_all_devices.has_key('CONFIG_ISA_TESTDEV') ? ['endianness-test'] : [])
|
||||
|
||||
@@ -1118,17 +1118,20 @@ static void register_vhost_user_test(void)
|
||||
"virtio-net",
|
||||
test_migrate, &opts);
|
||||
|
||||
opts.before = vhost_user_test_setup_reconnect;
|
||||
qos_add_test("vhost-user/reconnect", "virtio-net",
|
||||
test_reconnect, &opts);
|
||||
/* keeps failing on build-system since Aug 15 2017 */
|
||||
if (getenv("QTEST_VHOST_USER_FIXME")) {
|
||||
opts.before = vhost_user_test_setup_reconnect;
|
||||
qos_add_test("vhost-user/reconnect", "virtio-net",
|
||||
test_reconnect, &opts);
|
||||
|
||||
opts.before = vhost_user_test_setup_connect_fail;
|
||||
qos_add_test("vhost-user/connect-fail", "virtio-net",
|
||||
test_vhost_user_started, &opts);
|
||||
opts.before = vhost_user_test_setup_connect_fail;
|
||||
qos_add_test("vhost-user/connect-fail", "virtio-net",
|
||||
test_vhost_user_started, &opts);
|
||||
|
||||
opts.before = vhost_user_test_setup_flags_mismatch;
|
||||
qos_add_test("vhost-user/flags-mismatch", "virtio-net",
|
||||
test_vhost_user_started, &opts);
|
||||
opts.before = vhost_user_test_setup_flags_mismatch;
|
||||
qos_add_test("vhost-user/flags-mismatch", "virtio-net",
|
||||
test_vhost_user_started, &opts);
|
||||
}
|
||||
|
||||
opts.before = vhost_user_test_setup_multiqueue;
|
||||
opts.edge.extra_device_opts = "mq=on";
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
#define HW_POISON_H /* avoid poison since we patch against rules it "enforces" */
|
||||
#include "qemu/osdep.h"
|
||||
#include <glib/gstdio.h>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user