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:
Peter Maydell 2020-12-14 20:32:38 +00:00
commit 5bfbd8170c
29 changed files with 85 additions and 123 deletions

View File

@ -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:

View File

@ -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

View File

@ -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: ");

View File

@ -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;
} }
} }

62
configure vendored
View File

@ -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

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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;

View File

@ -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 *);

View File

@ -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

View File

@ -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

View File

@ -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'))

View File

@ -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

View File

@ -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'))

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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;
} }

View File

@ -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 =

View File

@ -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;
}; };

View File

@ -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;

View File

@ -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;

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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']

View File

@ -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, \

View File

@ -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"