mirror of https://github.com/xemu-project/xemu.git
Pull request trivial-patches 20201214
-----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAl/XiicSHGxhdXJlbnRA dml2aWVyLmV1AAoJEPMMOL0/L748bygP/2JohvciAFlaIi3WzPdfhk92lqspDmS1 GAuPFtAw0RUVVbbGKo0xjJtWA4i4c/WbSbdSF7ideNJe8Pz18F5yC94HyMpRAAc7 rD5gEk4bNjn4JHlI7vUsGIe5f7fb/KeEs139DKow2HuKY7guIA/FB8VIBks80ru7 jUAffuEV7/Ok+3SySIf6j8HxgwG/EoClxyfG0KQAuQeRq3w4ztibY25g5fE7TJtV np5cHAkw7sjbhfWXWudqq451JiTVY5SNPyK7/4dPknw/HuVJOroyfXVdtKcNkj+7 PhaNjZe/JHWLwjDStVXh69dnJ2KCVtXNt0nTv9/tU3ZtwsLWGDbzlbvHXDtPB7AC 2ede7cu996PJ1zC40x2TMo4Jm1jjTVWpeaNA9RAEE9uEbj4RkYOcnS4iZcCe1a75 9bILtIpiXyFbCQseAQbR+nWE0YPZj4r6O4euifAqExIUnGePMKUDCtziN+asGVxZ 2FticT38Pt92cgPJJnIblO0LYqjjjUDIolhw9O+v1ZHHU2caUJTQA0Xp/SMRWpuo 0WBrXZ32TjaGq8DbSzsIfdtrqEsO6vnsaMtQLyJLiPChWjiU/0MjV515khdOd9yF gCGU5661IoNV/LfdXjMgJrVVzVA2oL9XkZTdjElNbQUDwSwuyFEZcmCJBuAVv3zf ozrnQmzl8m8P =aOV/ -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/vivier2/tags/trivial-branch-for-6.0-pull-request' into staging Pull request trivial-patches 20201214 # gpg: Signature made Mon 14 Dec 2020 15:52:07 GMT # gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C # gpg: issuer "laurent@vivier.eu" # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full] # gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full] # gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full] # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C * remotes/vivier2/tags/trivial-branch-for-6.0-pull-request: configure / meson: Move check for linux/btrfs.h to meson.build configure / meson: Move check for sys/kcov.h to meson.build configure / meson: Move check for sys/signal.h to meson.build configure / meson: Move check for drm.h to meson.build configure / meson: Move check for pty.h to meson.build configure: Remove the obsolete check for ifaddrs.h blockdev: Fix a memleak in drive_backup_prepare() block/file-posix: fix a possible undefined behavior elf2dmp/pdb: Plug memleak in pdb_init_from_file elf2dmp/qemu_elf: Plug memleak in QEMU_Elf_init configure: Test if $make actually exists ads7846: moves from the hw/display folder to the hw/input folder. CODING_STYLE.rst: Be less strict about 80 character limit fsdev: open brace '{' following struct go on the same line hw/pci-host/pam: Replace magic number by PAM_REGIONS_COUNT definition hw/xen: Don't use '#' flag of printf format MAINTAINERS: update my email address qemu-options.hx: Fix minor issues in icount documentation target/i386: tracing: format length values as hex Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
5bfbd8170c
CODING_STYLE.rstMAINTAINERS
block
blockdev.cconfigurecontrib/elf2dmp
fsdev
hw
arm
display
input
pci-host
xen
include/hw/pci-host
linux-user
meson.buildqemu-options.hxtarget/i386
|
@ -85,8 +85,13 @@ Line width
|
||||||
Lines should be 80 characters; try not to make them longer.
|
Lines should be 80 characters; try not to make them longer.
|
||||||
|
|
||||||
Sometimes it is hard to do, especially when dealing with QEMU subsystems
|
Sometimes it is hard to do, especially when dealing with QEMU subsystems
|
||||||
that use long function or symbol names. Even in that case, do not make
|
that use long function or symbol names. If wrapping the line at 80 columns
|
||||||
lines much longer than 80 characters.
|
is obviously less readable and more awkward, prefer not to wrap it; better
|
||||||
|
to have an 85 character line than one which is awkwardly wrapped.
|
||||||
|
|
||||||
|
Even in that case, try not to make lines much longer than 80 characters.
|
||||||
|
(The checkpatch script will warn at 100 characters, but this is intended
|
||||||
|
as a guard against obviously-overlength lines, not a target.)
|
||||||
|
|
||||||
Rationale:
|
Rationale:
|
||||||
|
|
||||||
|
|
|
@ -2442,7 +2442,7 @@ F: scripts/simplebench/
|
||||||
|
|
||||||
QAPI
|
QAPI
|
||||||
M: Markus Armbruster <armbru@redhat.com>
|
M: Markus Armbruster <armbru@redhat.com>
|
||||||
M: Michael Roth <mdroth@linux.vnet.ibm.com>
|
M: Michael Roth <michael.roth@amd.com>
|
||||||
S: Supported
|
S: Supported
|
||||||
F: qapi/
|
F: qapi/
|
||||||
X: qapi/*.json
|
X: qapi/*.json
|
||||||
|
@ -2486,7 +2486,7 @@ F: tests/data/qobject/qdict.txt
|
||||||
T: git https://repo.or.cz/qemu/armbru.git qapi-next
|
T: git https://repo.or.cz/qemu/armbru.git qapi-next
|
||||||
|
|
||||||
QEMU Guest Agent
|
QEMU Guest Agent
|
||||||
M: Michael Roth <mdroth@linux.vnet.ibm.com>
|
M: Michael Roth <michael.roth@amd.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: qga/
|
F: qga/
|
||||||
F: docs/interop/qemu-ga.rst
|
F: docs/interop/qemu-ga.rst
|
||||||
|
|
|
@ -2111,7 +2111,7 @@ static void raw_aio_attach_aio_context(BlockDriverState *bs,
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_LINUX_IO_URING
|
#ifdef CONFIG_LINUX_IO_URING
|
||||||
if (s->use_linux_io_uring) {
|
if (s->use_linux_io_uring) {
|
||||||
Error *local_err;
|
Error *local_err = NULL;
|
||||||
if (!aio_setup_linux_io_uring(new_context, &local_err)) {
|
if (!aio_setup_linux_io_uring(new_context, &local_err)) {
|
||||||
error_reportf_err(local_err, "Unable to use linux io_uring, "
|
error_reportf_err(local_err, "Unable to use linux io_uring, "
|
||||||
"falling back to thread pool: ");
|
"falling back to thread pool: ");
|
||||||
|
|
|
@ -1827,6 +1827,7 @@ static void drive_backup_prepare(BlkActionState *common, Error **errp)
|
||||||
if (set_backing_hd) {
|
if (set_backing_hd) {
|
||||||
bdrv_set_backing_hd(target_bs, source, &local_err);
|
bdrv_set_backing_hd(target_bs, source, &local_err);
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
|
error_propagate(errp, local_err);
|
||||||
goto unref;
|
goto unref;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1875,6 +1875,10 @@ if test -z "$python"
|
||||||
then
|
then
|
||||||
error_exit "Python not found. Use --python=/path/to/python"
|
error_exit "Python not found. Use --python=/path/to/python"
|
||||||
fi
|
fi
|
||||||
|
if ! has "$make"
|
||||||
|
then
|
||||||
|
error_exit "GNU make ($make) not found"
|
||||||
|
fi
|
||||||
|
|
||||||
# Note that if the Python conditional here evaluates True we will exit
|
# Note that if the Python conditional here evaluates True we will exit
|
||||||
# with status 1 which is a shell 'false' value.
|
# with status 1 which is a shell 'false' value.
|
||||||
|
@ -2328,12 +2332,6 @@ else
|
||||||
l2tpv3=no
|
l2tpv3=no
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_include "pty.h" ; then
|
|
||||||
pty_h=yes
|
|
||||||
else
|
|
||||||
pty_h=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat > $TMPC <<EOF
|
cat > $TMPC <<EOF
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
int main(int argc, char *argv[]) {
|
int main(int argc, char *argv[]) {
|
||||||
|
@ -3103,28 +3101,6 @@ EOF
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
##########################################
|
|
||||||
# getifaddrs (for tests/test-io-channel-socket )
|
|
||||||
|
|
||||||
have_ifaddrs_h=yes
|
|
||||||
if ! check_include "ifaddrs.h" ; then
|
|
||||||
have_ifaddrs_h=no
|
|
||||||
fi
|
|
||||||
|
|
||||||
#########################################
|
|
||||||
# libdrm check
|
|
||||||
have_drm_h=no
|
|
||||||
if check_include "libdrm/drm.h" ; then
|
|
||||||
have_drm_h=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
#########################################
|
|
||||||
# sys/signal.h check
|
|
||||||
have_sys_signal_h=no
|
|
||||||
if check_include "sys/signal.h" ; then
|
|
||||||
have_sys_signal_h=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
##########################################
|
##########################################
|
||||||
# VTE probe
|
# VTE probe
|
||||||
|
|
||||||
|
@ -4426,18 +4402,6 @@ if compile_prog "" "" ; then
|
||||||
syncfs=yes
|
syncfs=yes
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check for kcov support (kernel must be 4.4+, compiled with certain options)
|
|
||||||
kcov=no
|
|
||||||
if check_include sys/kcov.h ; then
|
|
||||||
kcov=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check for btrfs filesystem support (kernel must be 3.9+)
|
|
||||||
btrfs=no
|
|
||||||
if check_include linux/btrfs.h ; then
|
|
||||||
btrfs=yes
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Search for bswap_32 function
|
# Search for bswap_32 function
|
||||||
byteswap_h=no
|
byteswap_h=no
|
||||||
cat > $TMPC << EOF
|
cat > $TMPC << EOF
|
||||||
|
@ -6136,12 +6100,6 @@ fi
|
||||||
if test "$syncfs" = "yes" ; then
|
if test "$syncfs" = "yes" ; then
|
||||||
echo "CONFIG_SYNCFS=y" >> $config_host_mak
|
echo "CONFIG_SYNCFS=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$kcov" = "yes" ; then
|
|
||||||
echo "CONFIG_KCOV=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$btrfs" = "yes" ; then
|
|
||||||
echo "CONFIG_BTRFS=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$inotify" = "yes" ; then
|
if test "$inotify" = "yes" ; then
|
||||||
echo "CONFIG_INOTIFY=y" >> $config_host_mak
|
echo "CONFIG_INOTIFY=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
@ -6215,21 +6173,12 @@ fi
|
||||||
if test "$auth_pam" = "yes" ; then
|
if test "$auth_pam" = "yes" ; then
|
||||||
echo "CONFIG_AUTH_PAM=y" >> $config_host_mak
|
echo "CONFIG_AUTH_PAM=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$have_ifaddrs_h" = "yes" ; then
|
|
||||||
echo "HAVE_IFADDRS_H=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$have_drm_h" = "yes" ; then
|
|
||||||
echo "HAVE_DRM_H=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$have_broken_size_max" = "yes" ; then
|
if test "$have_broken_size_max" = "yes" ; then
|
||||||
echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
|
echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$have_openpty" = "yes" ; then
|
if test "$have_openpty" = "yes" ; then
|
||||||
echo "HAVE_OPENPTY=y" >> $config_host_mak
|
echo "HAVE_OPENPTY=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$have_sys_signal_h" = "yes" ; then
|
|
||||||
echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Work around a system header bug with some kernel/XFS header
|
# Work around a system header bug with some kernel/XFS header
|
||||||
# versions where they both try to define 'struct fsxattr':
|
# versions where they both try to define 'struct fsxattr':
|
||||||
|
@ -6694,9 +6643,6 @@ if test "$sheepdog" = "yes" ; then
|
||||||
add_to deprecated_features "sheepdog"
|
add_to deprecated_features "sheepdog"
|
||||||
echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
|
echo "CONFIG_SHEEPDOG=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
if test "$pty_h" = "yes" ; then
|
|
||||||
echo "HAVE_PTY_H=y" >> $config_host_mak
|
|
||||||
fi
|
|
||||||
if test "$have_mlockall" = "yes" ; then
|
if test "$have_mlockall" = "yes" ; then
|
||||||
echo "HAVE_MLOCKALL=y" >> $config_host_mak
|
echo "HAVE_MLOCKALL=y" >> $config_host_mak
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -285,6 +285,7 @@ int pdb_init_from_file(const char *name, struct pdb_reader *reader)
|
||||||
reader->gmf = g_mapped_file_new(name, TRUE, &gerr);
|
reader->gmf = g_mapped_file_new(name, TRUE, &gerr);
|
||||||
if (gerr) {
|
if (gerr) {
|
||||||
eprintf("Failed to map PDB file \'%s\'\n", name);
|
eprintf("Failed to map PDB file \'%s\'\n", name);
|
||||||
|
g_error_free(gerr);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -126,6 +126,7 @@ int QEMU_Elf_init(QEMU_Elf *qe, const char *filename)
|
||||||
qe->gmf = g_mapped_file_new(filename, TRUE, &gerr);
|
qe->gmf = g_mapped_file_new(filename, TRUE, &gerr);
|
||||||
if (gerr) {
|
if (gerr) {
|
||||||
eprintf("Failed to map ELF dump file \'%s\'\n", filename);
|
eprintf("Failed to map ELF dump file \'%s\'\n", filename);
|
||||||
|
g_error_free(gerr);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,21 +1,18 @@
|
||||||
#ifndef QEMU_9P_MARSHAL_H
|
#ifndef QEMU_9P_MARSHAL_H
|
||||||
#define QEMU_9P_MARSHAL_H
|
#define QEMU_9P_MARSHAL_H
|
||||||
|
|
||||||
typedef struct V9fsString
|
typedef struct V9fsString {
|
||||||
{
|
|
||||||
uint16_t size;
|
uint16_t size;
|
||||||
char *data;
|
char *data;
|
||||||
} V9fsString;
|
} V9fsString;
|
||||||
|
|
||||||
typedef struct V9fsQID
|
typedef struct V9fsQID {
|
||||||
{
|
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
uint64_t path;
|
uint64_t path;
|
||||||
} V9fsQID;
|
} V9fsQID;
|
||||||
|
|
||||||
typedef struct V9fsStat
|
typedef struct V9fsStat {
|
||||||
{
|
|
||||||
int16_t size;
|
int16_t size;
|
||||||
int16_t type;
|
int16_t type;
|
||||||
int32_t dev;
|
int32_t dev;
|
||||||
|
@ -35,8 +32,7 @@ typedef struct V9fsStat
|
||||||
int32_t n_muid;
|
int32_t n_muid;
|
||||||
} V9fsStat;
|
} V9fsStat;
|
||||||
|
|
||||||
typedef struct V9fsIattr
|
typedef struct V9fsIattr {
|
||||||
{
|
|
||||||
int32_t valid;
|
int32_t valid;
|
||||||
int32_t mode;
|
int32_t mode;
|
||||||
int32_t uid;
|
int32_t uid;
|
||||||
|
|
|
@ -110,8 +110,7 @@ typedef union V9fsFidOpenState V9fsFidOpenState;
|
||||||
|
|
||||||
void cred_init(FsCred *);
|
void cred_init(FsCred *);
|
||||||
|
|
||||||
struct FileOperations
|
struct FileOperations {
|
||||||
{
|
|
||||||
int (*parse_opts)(QemuOpts *, FsDriverEntry *, Error **errp);
|
int (*parse_opts)(QemuOpts *, FsDriverEntry *, Error **errp);
|
||||||
int (*init)(FsContext *, Error **errp);
|
int (*init)(FsContext *, Error **errp);
|
||||||
void (*cleanup)(FsContext *);
|
void (*cleanup)(FsContext *);
|
||||||
|
|
|
@ -156,7 +156,7 @@ config TOSA
|
||||||
|
|
||||||
config SPITZ
|
config SPITZ
|
||||||
bool
|
bool
|
||||||
select ADS7846 # display
|
select ADS7846 # touch-screen controller
|
||||||
select MAX111X # A/D converter
|
select MAX111X # A/D converter
|
||||||
select WM8750 # audio codec
|
select WM8750 # audio codec
|
||||||
select MAX7310 # GPIO expander
|
select MAX7310 # GPIO expander
|
||||||
|
|
|
@ -9,9 +9,6 @@ config EDID
|
||||||
config FW_CFG_DMA
|
config FW_CFG_DMA
|
||||||
bool
|
bool
|
||||||
|
|
||||||
config ADS7846
|
|
||||||
bool
|
|
||||||
|
|
||||||
config VGA_CIRRUS
|
config VGA_CIRRUS
|
||||||
bool
|
bool
|
||||||
default y if PCI_DEVICES
|
default y if PCI_DEVICES
|
||||||
|
|
|
@ -6,7 +6,6 @@ softmmu_ss.add(when: 'CONFIG_EDID', if_true: files('edid-generate.c', 'edid-regi
|
||||||
softmmu_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('ramfb.c'))
|
softmmu_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('ramfb.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('ramfb-standalone.c'))
|
softmmu_ss.add(when: 'CONFIG_FW_CFG_DMA', if_true: files('ramfb-standalone.c'))
|
||||||
|
|
||||||
softmmu_ss.add(when: 'CONFIG_ADS7846', if_true: files('ads7846.c'))
|
|
||||||
softmmu_ss.add(when: 'CONFIG_VGA_CIRRUS', if_true: files('cirrus_vga.c'))
|
softmmu_ss.add(when: 'CONFIG_VGA_CIRRUS', if_true: files('cirrus_vga.c'))
|
||||||
softmmu_ss.add(when: ['CONFIG_VGA_CIRRUS', 'CONFIG_VGA_ISA'], if_true: files('cirrus_vga_isa.c'))
|
softmmu_ss.add(when: ['CONFIG_VGA_CIRRUS', 'CONFIG_VGA_ISA'], if_true: files('cirrus_vga_isa.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_G364FB', if_true: files('g364fb.c'))
|
softmmu_ss.add(when: 'CONFIG_G364FB', if_true: files('g364fb.c'))
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
config ADB
|
config ADB
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config ADS7846
|
||||||
|
bool
|
||||||
|
|
||||||
config LM832X
|
config LM832X
|
||||||
bool
|
bool
|
||||||
depends on I2C
|
depends on I2C
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
softmmu_ss.add(files('hid.c'))
|
softmmu_ss.add(files('hid.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_ADB', if_true: files('adb.c', 'adb-mouse.c', 'adb-kbd.c'))
|
softmmu_ss.add(when: 'CONFIG_ADB', if_true: files('adb.c', 'adb-mouse.c', 'adb-kbd.c'))
|
||||||
|
softmmu_ss.add(when: 'CONFIG_ADS7846', if_true: files('ads7846.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_LM832X', if_true: files('lm832x.c'))
|
softmmu_ss.add(when: 'CONFIG_LM832X', if_true: files('lm832x.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_PCKBD', if_true: files('pckbd.c'))
|
softmmu_ss.add(when: 'CONFIG_PCKBD', if_true: files('pckbd.c'))
|
||||||
softmmu_ss.add(when: 'CONFIG_PL050', if_true: files('pl050.c'))
|
softmmu_ss.add(when: 'CONFIG_PL050', if_true: files('pl050.c'))
|
||||||
|
|
|
@ -62,7 +62,7 @@ void init_pam(DeviceState *dev, MemoryRegion *ram_memory,
|
||||||
|
|
||||||
void pam_update(PAMMemoryRegion *pam, int idx, uint8_t val)
|
void pam_update(PAMMemoryRegion *pam, int idx, uint8_t val)
|
||||||
{
|
{
|
||||||
assert(0 <= idx && idx <= 12);
|
assert(0 <= idx && idx < PAM_REGIONS_COUNT);
|
||||||
|
|
||||||
memory_region_set_enabled(&pam->alias[pam->current], false);
|
memory_region_set_enabled(&pam->alias[pam->current], false);
|
||||||
pam->current = (val >> ((!(idx & 1)) * 4)) & PAM_ATTR_MASK;
|
pam->current = (val >> ((!(idx & 1)) * 4)) & PAM_ATTR_MASK;
|
||||||
|
|
|
@ -641,7 +641,7 @@ static void mch_realize(PCIDevice *d, Error **errp)
|
||||||
init_pam(DEVICE(mch), mch->ram_memory, mch->system_memory,
|
init_pam(DEVICE(mch), mch->ram_memory, mch->system_memory,
|
||||||
mch->pci_address_space, &mch->pam_regions[0],
|
mch->pci_address_space, &mch->pam_regions[0],
|
||||||
PAM_BIOS_BASE, PAM_BIOS_SIZE);
|
PAM_BIOS_BASE, PAM_BIOS_SIZE);
|
||||||
for (i = 0; i < 12; ++i) {
|
for (i = 0; i < ARRAY_SIZE(mch->pam_regions) - 1; ++i) {
|
||||||
init_pam(DEVICE(mch), mch->ram_memory, mch->system_memory,
|
init_pam(DEVICE(mch), mch->ram_memory, mch->system_memory,
|
||||||
mch->pci_address_space, &mch->pam_regions[i+1],
|
mch->pci_address_space, &mch->pam_regions[i+1],
|
||||||
PAM_EXPAN_BASE + i * PAM_EXPAN_SIZE, PAM_EXPAN_SIZE);
|
PAM_EXPAN_BASE + i * PAM_EXPAN_SIZE, PAM_EXPAN_SIZE);
|
||||||
|
|
|
@ -489,7 +489,7 @@ static int xen_pt_register_regions(XenPCIPassthroughState *s, uint16_t *cmd)
|
||||||
pci_register_bar(&s->dev, i, type, &s->bar[i]);
|
pci_register_bar(&s->dev, i, type, &s->bar[i]);
|
||||||
|
|
||||||
XEN_PT_LOG(&s->dev, "IO region %i registered (size=0x%08"PRIx64
|
XEN_PT_LOG(&s->dev, "IO region %i registered (size=0x%08"PRIx64
|
||||||
" base_addr=0x%08"PRIx64" type: %#x)\n",
|
" base_addr=0x%08"PRIx64" type: 0x%x)\n",
|
||||||
i, r->size, r->base_addr, type);
|
i, r->size, r->base_addr, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -578,7 +578,7 @@ static void xen_pt_check_bar_overlap(PCIBus *bus, PCIDevice *d, void *opaque)
|
||||||
if (ranges_overlap(arg->addr, arg->size, r->addr, r->size)) {
|
if (ranges_overlap(arg->addr, arg->size, r->addr, r->size)) {
|
||||||
XEN_PT_WARN(&s->dev,
|
XEN_PT_WARN(&s->dev,
|
||||||
"Overlapped to device [%02x:%02x.%d] Region: %i"
|
"Overlapped to device [%02x:%02x.%d] Region: %i"
|
||||||
" (addr: %#"FMT_PCIBUS", len: %#"FMT_PCIBUS")\n",
|
" (addr: 0x%"FMT_PCIBUS", len: 0x%"FMT_PCIBUS")\n",
|
||||||
pci_bus_num(bus), PCI_SLOT(d->devfn),
|
pci_bus_num(bus), PCI_SLOT(d->devfn),
|
||||||
PCI_FUNC(d->devfn), i, r->addr, r->size);
|
PCI_FUNC(d->devfn), i, r->addr, r->size);
|
||||||
arg->rc = true;
|
arg->rc = true;
|
||||||
|
@ -618,8 +618,8 @@ static void xen_pt_region_update(XenPCIPassthroughState *s,
|
||||||
pci_for_each_device(pci_get_bus(d), pci_dev_bus_num(d),
|
pci_for_each_device(pci_get_bus(d), pci_dev_bus_num(d),
|
||||||
xen_pt_check_bar_overlap, &args);
|
xen_pt_check_bar_overlap, &args);
|
||||||
if (args.rc) {
|
if (args.rc) {
|
||||||
XEN_PT_WARN(d, "Region: %d (addr: %#"FMT_PCIBUS
|
XEN_PT_WARN(d, "Region: %d (addr: 0x%"FMT_PCIBUS
|
||||||
", len: %#"FMT_PCIBUS") is overlapped.\n",
|
", len: 0x%"FMT_PCIBUS") is overlapped.\n",
|
||||||
bar, sec->offset_within_address_space,
|
bar, sec->offset_within_address_space,
|
||||||
int128_get64(sec->size));
|
int128_get64(sec->size));
|
||||||
}
|
}
|
||||||
|
@ -786,7 +786,7 @@ static void xen_pt_realize(PCIDevice *d, Error **errp)
|
||||||
|
|
||||||
/* register real device */
|
/* register real device */
|
||||||
XEN_PT_LOG(d, "Assigning real physical device %02x:%02x.%d"
|
XEN_PT_LOG(d, "Assigning real physical device %02x:%02x.%d"
|
||||||
" to devfn %#x\n",
|
" to devfn 0x%x\n",
|
||||||
s->hostaddr.bus, s->hostaddr.slot, s->hostaddr.function,
|
s->hostaddr.bus, s->hostaddr.slot, s->hostaddr.function,
|
||||||
s->dev.devfn);
|
s->dev.devfn);
|
||||||
|
|
||||||
|
|
|
@ -1622,7 +1622,7 @@ static int xen_pt_pcie_size_init(XenPCIPassthroughState *s,
|
||||||
case PCI_EXP_TYPE_PCIE_BRIDGE:
|
case PCI_EXP_TYPE_PCIE_BRIDGE:
|
||||||
case PCI_EXP_TYPE_RC_EC:
|
case PCI_EXP_TYPE_RC_EC:
|
||||||
default:
|
default:
|
||||||
XEN_PT_ERR(d, "Unsupported device/port type %#x.\n", type);
|
XEN_PT_ERR(d, "Unsupported device/port type 0x%x.\n", type);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1645,11 +1645,11 @@ static int xen_pt_pcie_size_init(XenPCIPassthroughState *s,
|
||||||
case PCI_EXP_TYPE_PCIE_BRIDGE:
|
case PCI_EXP_TYPE_PCIE_BRIDGE:
|
||||||
case PCI_EXP_TYPE_RC_EC:
|
case PCI_EXP_TYPE_RC_EC:
|
||||||
default:
|
default:
|
||||||
XEN_PT_ERR(d, "Unsupported device/port type %#x.\n", type);
|
XEN_PT_ERR(d, "Unsupported device/port type 0x%x.\n", type);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
XEN_PT_ERR(d, "Unsupported capability version %#x.\n", version);
|
XEN_PT_ERR(d, "Unsupported capability version 0x%x.\n", version);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,7 +123,7 @@ static int msi_msix_setup(XenPCIPassthroughState *s,
|
||||||
*ppirq = XEN_PT_UNASSIGNED_PIRQ;
|
*ppirq = XEN_PT_UNASSIGNED_PIRQ;
|
||||||
} else {
|
} else {
|
||||||
XEN_PT_LOG(&s->dev, "requested pirq %d for MSI%s"
|
XEN_PT_LOG(&s->dev, "requested pirq %d for MSI%s"
|
||||||
" (vec: %#x, entry: %#x)\n",
|
" (vec: 0x%x, entry: 0x%x)\n",
|
||||||
*ppirq, is_msix ? "-X" : "", gvec, msix_entry);
|
*ppirq, is_msix ? "-X" : "", gvec, msix_entry);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -142,7 +142,7 @@ static int msi_msix_setup(XenPCIPassthroughState *s,
|
||||||
msix_entry, table_base);
|
msix_entry, table_base);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
XEN_PT_ERR(&s->dev,
|
XEN_PT_ERR(&s->dev,
|
||||||
"Mapping of MSI%s (err: %i, vec: %#x, entry %#x)\n",
|
"Mapping of MSI%s (err: %i, vec: 0x%x, entry 0x%x)\n",
|
||||||
is_msix ? "-X" : "", errno, gvec, msix_entry);
|
is_msix ? "-X" : "", errno, gvec, msix_entry);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -165,8 +165,8 @@ static int msi_msix_update(XenPCIPassthroughState *s,
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
uint64_t table_addr = 0;
|
uint64_t table_addr = 0;
|
||||||
|
|
||||||
XEN_PT_LOG(d, "Updating MSI%s with pirq %d gvec %#x gflags %#x"
|
XEN_PT_LOG(d, "Updating MSI%s with pirq %d gvec 0x%x gflags 0x%x"
|
||||||
" (entry: %#x)\n",
|
" (entry: 0x%x)\n",
|
||||||
is_msix ? "-X" : "", pirq, gvec, gflags, msix_entry);
|
is_msix ? "-X" : "", pirq, gvec, gflags, msix_entry);
|
||||||
|
|
||||||
if (is_msix) {
|
if (is_msix) {
|
||||||
|
@ -208,11 +208,11 @@ static int msi_msix_disable(XenPCIPassthroughState *s,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_binded) {
|
if (is_binded) {
|
||||||
XEN_PT_LOG(d, "Unbind MSI%s with pirq %d, gvec %#x\n",
|
XEN_PT_LOG(d, "Unbind MSI%s with pirq %d, gvec 0x%x\n",
|
||||||
is_msix ? "-X" : "", pirq, gvec);
|
is_msix ? "-X" : "", pirq, gvec);
|
||||||
rc = xc_domain_unbind_msi_irq(xen_xc, xen_domid, gvec, pirq, gflags);
|
rc = xc_domain_unbind_msi_irq(xen_xc, xen_domid, gvec, pirq, gflags);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
XEN_PT_ERR(d, "Unbinding of MSI%s failed. (err: %d, pirq: %d, gvec: %#x)\n",
|
XEN_PT_ERR(d, "Unbinding of MSI%s failed. (err: %d, pirq: %d, gvec: 0x%x)\n",
|
||||||
is_msix ? "-X" : "", errno, pirq, gvec);
|
is_msix ? "-X" : "", errno, pirq, gvec);
|
||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
@ -539,7 +539,7 @@ int xen_pt_msix_init(XenPCIPassthroughState *s, uint32_t base)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (id != PCI_CAP_ID_MSIX) {
|
if (id != PCI_CAP_ID_MSIX) {
|
||||||
XEN_PT_ERR(d, "Invalid id %#x base %#x\n", id, base);
|
XEN_PT_ERR(d, "Invalid id 0x%x base 0x%x\n", id, base);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,7 +582,7 @@ int xen_pt_msix_init(XenPCIPassthroughState *s, uint32_t base)
|
||||||
XEN_PT_ERR(d, "Can't open /dev/mem: %s\n", strerror(errno));
|
XEN_PT_ERR(d, "Can't open /dev/mem: %s\n", strerror(errno));
|
||||||
goto error_out;
|
goto error_out;
|
||||||
}
|
}
|
||||||
XEN_PT_LOG(d, "table_off = %#x, total_entries = %d\n",
|
XEN_PT_LOG(d, "table_off = 0x%x, total_entries = %d\n",
|
||||||
table_off, total_entries);
|
table_off, total_entries);
|
||||||
msix->table_offset_adjust = table_off & 0x0fff;
|
msix->table_offset_adjust = table_off & 0x0fff;
|
||||||
msix->phys_iomem_base =
|
msix->phys_iomem_base =
|
||||||
|
|
|
@ -29,7 +29,7 @@ struct PCII440FXState {
|
||||||
MemoryRegion *system_memory;
|
MemoryRegion *system_memory;
|
||||||
MemoryRegion *pci_address_space;
|
MemoryRegion *pci_address_space;
|
||||||
MemoryRegion *ram_memory;
|
MemoryRegion *ram_memory;
|
||||||
PAMMemoryRegion pam_regions[13];
|
PAMMemoryRegion pam_regions[PAM_REGIONS_COUNT];
|
||||||
MemoryRegion smram_region;
|
MemoryRegion smram_region;
|
||||||
MemoryRegion smram, low_smram;
|
MemoryRegion smram, low_smram;
|
||||||
};
|
};
|
||||||
|
|
|
@ -80,6 +80,8 @@
|
||||||
#define SMRAM_C_BASE_SEG_MASK ((uint8_t)0x7)
|
#define SMRAM_C_BASE_SEG_MASK ((uint8_t)0x7)
|
||||||
#define SMRAM_C_BASE_SEG ((uint8_t)0x2) /* hardwired to b010 */
|
#define SMRAM_C_BASE_SEG ((uint8_t)0x2) /* hardwired to b010 */
|
||||||
|
|
||||||
|
#define PAM_REGIONS_COUNT 13
|
||||||
|
|
||||||
typedef struct PAMMemoryRegion {
|
typedef struct PAMMemoryRegion {
|
||||||
MemoryRegion alias[4]; /* index = PAM value */
|
MemoryRegion alias[4]; /* index = PAM value */
|
||||||
unsigned current;
|
unsigned current;
|
||||||
|
|
|
@ -44,7 +44,7 @@ struct MCHPCIState {
|
||||||
MemoryRegion *pci_address_space;
|
MemoryRegion *pci_address_space;
|
||||||
MemoryRegion *system_memory;
|
MemoryRegion *system_memory;
|
||||||
MemoryRegion *address_space_io;
|
MemoryRegion *address_space_io;
|
||||||
PAMMemoryRegion pam_regions[13];
|
PAMMemoryRegion pam_regions[PAM_REGIONS_COUNT];
|
||||||
MemoryRegion smram_region, open_high_smram;
|
MemoryRegion smram_region, open_high_smram;
|
||||||
MemoryRegion smram, low_smram, high_smram;
|
MemoryRegion smram, low_smram, high_smram;
|
||||||
MemoryRegion tseg_blackhole, tseg_window;
|
MemoryRegion tseg_blackhole, tseg_window;
|
||||||
|
|
|
@ -715,7 +715,7 @@
|
||||||
IOCTL_IGNORE(TIOCSTOP)
|
IOCTL_IGNORE(TIOCSTOP)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_KCOV
|
#ifdef HAVE_SYS_KCOV_H
|
||||||
IOCTL(KCOV_ENABLE, 0, TYPE_NULL)
|
IOCTL(KCOV_ENABLE, 0, TYPE_NULL)
|
||||||
IOCTL(KCOV_DISABLE, 0, TYPE_NULL)
|
IOCTL(KCOV_DISABLE, 0, TYPE_NULL)
|
||||||
IOCTL(KCOV_INIT_TRACE, IOC_R, TYPE_ULONG)
|
IOCTL(KCOV_INIT_TRACE, IOC_R, TYPE_ULONG)
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
#ifdef CONFIG_SENDFILE
|
#ifdef CONFIG_SENDFILE
|
||||||
#include <sys/sendfile.h>
|
#include <sys/sendfile.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_KCOV
|
#ifdef HAVE_SYS_KCOV_H
|
||||||
#include <sys/kcov.h>
|
#include <sys/kcov.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
#include <linux/if_alg.h>
|
#include <linux/if_alg.h>
|
||||||
#include <linux/rtc.h>
|
#include <linux/rtc.h>
|
||||||
#include <sound/asound.h>
|
#include <sound/asound.h>
|
||||||
#ifdef CONFIG_BTRFS
|
#ifdef HAVE_BTRFS_H
|
||||||
#include <linux/btrfs.h>
|
#include <linux/btrfs.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef HAVE_DRM_H
|
#ifdef HAVE_DRM_H
|
||||||
|
|
|
@ -1006,7 +1006,7 @@ struct target_rtc_pll_info {
|
||||||
#define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, int)
|
#define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, int)
|
||||||
|
|
||||||
/* btrfs ioctls */
|
/* btrfs ioctls */
|
||||||
#ifdef CONFIG_BTRFS
|
#ifdef HAVE_BTRFS_H
|
||||||
#define TARGET_BTRFS_IOC_SNAP_CREATE TARGET_IOWU(BTRFS_IOCTL_MAGIC, 1)
|
#define TARGET_BTRFS_IOC_SNAP_CREATE TARGET_IOWU(BTRFS_IOCTL_MAGIC, 1)
|
||||||
#define TARGET_BTRFS_IOC_SCAN_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 4)
|
#define TARGET_BTRFS_IOC_SCAN_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 4)
|
||||||
#define TARGET_BTRFS_IOC_FORGET_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 5)
|
#define TARGET_BTRFS_IOC_FORGET_DEV TARGET_IOWU(BTRFS_IOCTL_MAGIC, 5)
|
||||||
|
|
|
@ -836,7 +836,12 @@ config_host_data.set('QEMU_VERSION_MAJOR', meson.project_version().split('.')[0]
|
||||||
config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1])
|
config_host_data.set('QEMU_VERSION_MINOR', meson.project_version().split('.')[1])
|
||||||
config_host_data.set('QEMU_VERSION_MICRO', meson.project_version().split('.')[2])
|
config_host_data.set('QEMU_VERSION_MICRO', meson.project_version().split('.')[2])
|
||||||
|
|
||||||
|
config_host_data.set('HAVE_BTRFS_H', cc.has_header('linux/btrfs.h'))
|
||||||
|
config_host_data.set('HAVE_DRM_H', cc.has_header('libdrm/drm.h'))
|
||||||
|
config_host_data.set('HAVE_PTY_H', cc.has_header('pty.h'))
|
||||||
config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_header('sys/ioccom.h'))
|
config_host_data.set('HAVE_SYS_IOCCOM_H', cc.has_header('sys/ioccom.h'))
|
||||||
|
config_host_data.set('HAVE_SYS_KCOV_H', cc.has_header('sys/kcov.h'))
|
||||||
|
config_host_data.set('HAVE_SYS_SIGNAL_H', cc.has_header('sys/signal.h'))
|
||||||
|
|
||||||
ignored = ['CONFIG_QEMU_INTERP_PREFIX'] # actually per-target
|
ignored = ['CONFIG_QEMU_INTERP_PREFIX'] # actually per-target
|
||||||
arrays = ['CONFIG_AUDIO_DRIVERS', 'CONFIG_BDRV_RW_WHITELIST', 'CONFIG_BDRV_RO_WHITELIST']
|
arrays = ['CONFIG_AUDIO_DRIVERS', 'CONFIG_BDRV_RW_WHITELIST', 'CONFIG_BDRV_RO_WHITELIST']
|
||||||
|
|
|
@ -3958,30 +3958,34 @@ SRST
|
||||||
ERST
|
ERST
|
||||||
|
|
||||||
DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
|
DEF("icount", HAS_ARG, QEMU_OPTION_icount, \
|
||||||
"-icount [shift=N|auto][,align=on|off][,sleep=on|off,rr=record|replay,rrfile=<filename>,rrsnapshot=<snapshot>]\n" \
|
"-icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=<filename>[,rrsnapshot=<snapshot>]]\n" \
|
||||||
" enable virtual instruction counter with 2^N clock ticks per\n" \
|
" enable virtual instruction counter with 2^N clock ticks per\n" \
|
||||||
" instruction, enable aligning the host and virtual clocks\n" \
|
" instruction, enable aligning the host and virtual clocks\n" \
|
||||||
" or disable real time cpu sleeping\n", QEMU_ARCH_ALL)
|
" or disable real time cpu sleeping, and optionally enable\n" \
|
||||||
|
" record-and-replay mode\n", QEMU_ARCH_ALL)
|
||||||
SRST
|
SRST
|
||||||
``-icount [shift=N|auto][,rr=record|replay,rrfile=filename,rrsnapshot=snapshot]``
|
``-icount [shift=N|auto][,align=on|off][,sleep=on|off][,rr=record|replay,rrfile=filename[,rrsnapshot=snapshot]]``
|
||||||
Enable virtual instruction counter. The virtual cpu will execute one
|
Enable virtual instruction counter. The virtual cpu will execute one
|
||||||
instruction every 2^N ns of virtual time. If ``auto`` is specified
|
instruction every 2^N ns of virtual time. If ``auto`` is specified
|
||||||
then the virtual cpu speed will be automatically adjusted to keep
|
then the virtual cpu speed will be automatically adjusted to keep
|
||||||
virtual time within a few seconds of real time.
|
virtual time within a few seconds of real time.
|
||||||
|
|
||||||
When the virtual cpu is sleeping, the virtual time will advance at
|
|
||||||
default speed unless ``sleep=on|off`` is specified. With
|
|
||||||
``sleep=on|off``, the virtual time will jump to the next timer
|
|
||||||
deadline instantly whenever the virtual cpu goes to sleep mode and
|
|
||||||
will not advance if no timer is enabled. This behavior give
|
|
||||||
deterministic execution times from the guest point of view.
|
|
||||||
|
|
||||||
Note that while this option can give deterministic behavior, it does
|
Note that while this option can give deterministic behavior, it does
|
||||||
not provide cycle accurate emulation. Modern CPUs contain
|
not provide cycle accurate emulation. Modern CPUs contain
|
||||||
superscalar out of order cores with complex cache hierarchies. The
|
superscalar out of order cores with complex cache hierarchies. The
|
||||||
number of instructions executed often has little or no correlation
|
number of instructions executed often has little or no correlation
|
||||||
with actual performance.
|
with actual performance.
|
||||||
|
|
||||||
|
When the virtual cpu is sleeping, the virtual time will advance at
|
||||||
|
default speed unless ``sleep=on`` is specified. With
|
||||||
|
``sleep=on``, the virtual time will jump to the next timer
|
||||||
|
deadline instantly whenever the virtual cpu goes to sleep mode and
|
||||||
|
will not advance if no timer is enabled. This behavior gives
|
||||||
|
deterministic execution times from the guest point of view.
|
||||||
|
The default if icount is enabled is ``sleep=off``.
|
||||||
|
``sleep=on`` cannot be used together with either ``shift=auto``
|
||||||
|
or ``align=on``.
|
||||||
|
|
||||||
``align=on`` will activate the delay algorithm which will try to
|
``align=on`` will activate the delay algorithm which will try to
|
||||||
synchronise the host clock and the virtual clock. The goal is to
|
synchronise the host clock and the virtual clock. The goal is to
|
||||||
have a guest running at the real frequency imposed by the shift
|
have a guest running at the real frequency imposed by the shift
|
||||||
|
@ -3991,15 +3995,17 @@ SRST
|
||||||
``shift`` is ``auto``. Note: The sync algorithm will work for those
|
``shift`` is ``auto``. Note: The sync algorithm will work for those
|
||||||
shift values for which the guest clock runs ahead of the host clock.
|
shift values for which the guest clock runs ahead of the host clock.
|
||||||
Typically this happens when the shift value is high (how high
|
Typically this happens when the shift value is high (how high
|
||||||
depends on the host machine).
|
depends on the host machine). The default if icount is enabled
|
||||||
|
is ``align=off``.
|
||||||
|
|
||||||
When ``rr`` option is specified deterministic record/replay is
|
When the ``rr`` option is specified deterministic record/replay is
|
||||||
enabled. Replay log is written into filename file in record mode and
|
enabled. The ``rrfile=`` option must also be provided to
|
||||||
read from this file in replay mode.
|
specify the path to the replay log. In record mode data is written
|
||||||
|
to this file, and in replay mode it is read back.
|
||||||
Option rrsnapshot is used to create new vm snapshot named snapshot
|
If the ``rrsnapshot`` option is given then it specifies a VM snapshot
|
||||||
at the start of execution recording. In replay mode this option is
|
name. In record mode, a new VM snapshot with the given name is created
|
||||||
used to load the initial VM state.
|
at the start of execution recording. In replay mode this option
|
||||||
|
specifies the snapshot name used to load the initial VM state.
|
||||||
ERST
|
ERST
|
||||||
|
|
||||||
DEF("watchdog", HAS_ARG, QEMU_OPTION_watchdog, \
|
DEF("watchdog", HAS_ARG, QEMU_OPTION_watchdog, \
|
||||||
|
|
|
@ -8,11 +8,11 @@ kvm_x86_update_msi_routes(int num) "Updated %d MSI routes"
|
||||||
|
|
||||||
# sev.c
|
# sev.c
|
||||||
kvm_sev_init(void) ""
|
kvm_sev_init(void) ""
|
||||||
kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%zu"
|
kvm_memcrypt_register_region(void *addr, size_t len) "addr %p len 0x%zx"
|
||||||
kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%zu"
|
kvm_memcrypt_unregister_region(void *addr, size_t len) "addr %p len 0x%zx"
|
||||||
kvm_sev_change_state(const char *old, const char *new) "%s -> %s"
|
kvm_sev_change_state(const char *old, const char *new) "%s -> %s"
|
||||||
kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
|
kvm_sev_launch_start(int policy, void *session, void *pdh) "policy 0x%x session %p pdh %p"
|
||||||
kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIu64
|
kvm_sev_launch_update_data(void *addr, uint64_t len) "addr %p len 0x%" PRIx64
|
||||||
kvm_sev_launch_measurement(const char *value) "data %s"
|
kvm_sev_launch_measurement(const char *value) "data %s"
|
||||||
kvm_sev_launch_finish(void) ""
|
kvm_sev_launch_finish(void) ""
|
||||||
kvm_sev_launch_secret(uint64_t hpa, uint64_t hva, uint64_t secret, int len) "hpa 0x%" PRIx64 " hva 0x%" PRIx64 " data 0x%" PRIx64 " len %d"
|
kvm_sev_launch_secret(uint64_t hpa, uint64_t hva, uint64_t secret, int len) "hpa 0x%" PRIx64 " hva 0x%" PRIx64 " data 0x%" PRIx64 " len %d"
|
||||||
|
|
Loading…
Reference in New Issue