From 89f3ea2b62dbb5ad30e2f57a215bbacc95d75604 Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Thu, 10 Nov 2016 17:51:32 +0300 Subject: [PATCH 01/31] doc: don't mention -memory, it is -m Signed-off-by: Michael Tokarev Reviewed-by: Markus Armbruster --- qemu-options.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu-options.hx b/qemu-options.hx index 780528d6ad..dba09d9b82 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -250,7 +250,7 @@ use is discouraged as it may be removed from future versions. ETEXI DEF("m", HAS_ARG, QEMU_OPTION_m, - "-m[emory] [size=]megs[,slots=n,maxmem=size]\n" + "-m [size=]megs[,slots=n,maxmem=size]\n" " configure guest RAM\n" " size: initial amount of guest memory\n" " slots: number of hotplug slots (default: none)\n" From 5c765e7af6c830fe8ccfc1b58a908e410f6d400c Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Tue, 1 Nov 2016 18:03:02 +0100 Subject: [PATCH 02/31] hw/block/m25p80: Fix typo in local macro name Signed-off-by: Stefan Weil Signed-off-by: Michael Tokarev --- hw/block/m25p80.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/block/m25p80.c b/hw/block/m25p80.c index e90451496e..2d6eb46a04 100644 --- a/hw/block/m25p80.c +++ b/hw/block/m25p80.c @@ -147,7 +147,7 @@ typedef struct FlashPartInfo { #define CFG_DUMMY_CLK_LEN 4 #define NVCFG_DUMMY_CLK_POS 12 #define VCFG_DUMMY_CLK_POS 4 -#define EVCFG_OUT_DRIVER_STRENGHT_DEF 7 +#define EVCFG_OUT_DRIVER_STRENGTH_DEF 7 #define EVCFG_VPP_ACCELERATOR (1 << 3) #define EVCFG_RESET_HOLD_ENABLED (1 << 4) #define NVCFG_DUAL_IO_MASK (1 << 2) @@ -747,7 +747,7 @@ static void reset_memory(Flash *s) ); s->enh_volatile_cfg = 0; - s->enh_volatile_cfg |= EVCFG_OUT_DRIVER_STRENGHT_DEF; + s->enh_volatile_cfg |= EVCFG_OUT_DRIVER_STRENGTH_DEF; s->enh_volatile_cfg |= EVCFG_VPP_ACCELERATOR; s->enh_volatile_cfg |= EVCFG_RESET_HOLD_ENABLED; if (s->nonvolatile_cfg & NVCFG_DUAL_IO_MASK) { From ebee9dfd2b7c0ba343294abeb4a7d5e68c6cd5f0 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 31 Oct 2016 17:01:30 +0000 Subject: [PATCH 03/31] README: Add linux to macOS build info The README lists the URLs for the wiki pages describing how to build on Linux and Windows; add the equivalent link for building on macOS. Signed-off-by: Peter Maydell Signed-off-by: Michael Tokarev --- README | 1 + 1 file changed, 1 insertion(+) diff --git a/README b/README index bd8060a3ee..cb60d05bee 100644 --- a/README +++ b/README @@ -45,6 +45,7 @@ of other UNIX targets. The simple steps to build QEMU are: Additional information can also be found online via the QEMU website: http://qemu-project.org/Hosts/Linux + http://qemu-project.org/Hosts/Mac http://qemu-project.org/Hosts/W32 From 736a83fae4e00215537e91bffdde994ad08ec049 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sat, 19 Nov 2016 20:22:07 +0100 Subject: [PATCH 04/31] Fix documentation and some comments (article, grammar) Signed-off-by: Stefan Weil Signed-off-by: Michael Tokarev --- qemu-doc.texi | 2 +- qemu-options.hx | 2 +- util/uri.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/qemu-doc.texi b/qemu-doc.texi index 0b2746f0b1..3840585e63 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -1037,7 +1037,7 @@ qemu-system-i386 -iscsi initiator-name=iqn.qemu.test:my-initiator \ @node disk_images_gluster @subsection GlusterFS disk images -GlusterFS is an user space distributed file system. +GlusterFS is a user space distributed file system. You can boot from the GlusterFS disk image with the command: @example diff --git a/qemu-options.hx b/qemu-options.hx index dba09d9b82..8c60bfe2bd 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -2589,7 +2589,7 @@ qemu-system-i386 --drive file=sheepdog://192.0.2.1:30000/MyVirtualMachine See also @url{http://http://www.osrg.net/sheepdog/}. @item GlusterFS -GlusterFS is an user space distributed file system. +GlusterFS is a user space distributed file system. QEMU supports the use of GlusterFS volumes for hosting VM disk images using TCP, Unix Domain Sockets and RDMA transport protocols. diff --git a/util/uri.c b/util/uri.c index 70a9cbcbd2..21b1828170 100644 --- a/util/uri.c +++ b/util/uri.c @@ -342,7 +342,7 @@ rfc3986_parse_port(URI *uri, const char **str) * @uri: pointer to an URI structure * @str: the string to analyze * - * Parse an user informations part and fills in the appropriate fields + * Parse a user information part and fill in the appropriate fields * of the @uri structure * * userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) @@ -508,7 +508,7 @@ rfc3986_parse_authority(URI *uri, const char **str) cur = *str; /* - * try to parse an userinfo and check for the trailing @ + * try to parse a userinfo and check for the trailing @ */ ret = rfc3986_parse_user_info(uri, &cur); if ((ret != 0) || (*cur != '@')) From 5bb8590d376094ea7d28fc54d7ab0c1f22906f03 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sat, 19 Nov 2016 20:47:15 +0100 Subject: [PATCH 05/31] include: Fix typos found by codespell Add also a missing parenthesis in a comment. Signed-off-by: Stefan Weil Acked-by: Alistair Francis Signed-off-by: Michael Tokarev --- include/hw/dma/xlnx_dpdma.h | 3 ++- include/hw/pci-host/q35.h | 2 +- include/hw/register.h | 2 +- include/qapi/dealloc-visitor.h | 2 +- include/qemu/qht.h | 2 +- include/qemu/xattr.h | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/include/hw/dma/xlnx_dpdma.h b/include/hw/dma/xlnx_dpdma.h index 664df28ae6..7a304a5bb4 100644 --- a/include/hw/dma/xlnx_dpdma.h +++ b/include/hw/dma/xlnx_dpdma.h @@ -53,7 +53,8 @@ typedef struct XlnxDPDMAState XlnxDPDMAState; * data to the buffer specified by * dpdma_set_host_data_location(). * - * Returns The number of bytes transfered by the DPDMA or 0 if an error occured. + * Returns The number of bytes transferred by the DPDMA + * or 0 if an error occurred. * * @s The DPDMA state. * @channel The channel to start. diff --git a/include/hw/pci-host/q35.h b/include/hw/pci-host/q35.h index 94486fdd37..53b6760c16 100644 --- a/include/hw/pci-host/q35.h +++ b/include/hw/pci-host/q35.h @@ -180,7 +180,7 @@ typedef struct Q35PCIHost { uint64_t mch_mcfg_base(void); /* - * Arbitary but unique BNF number for IOAPIC device. + * Arbitrary but unique BNF number for IOAPIC device. * * TODO: make sure there would have no conflict with real PCI bus */ diff --git a/include/hw/register.h b/include/hw/register.h index 8c12233b75..5b6dc32091 100644 --- a/include/hw/register.h +++ b/include/hw/register.h @@ -92,7 +92,7 @@ struct RegisterInfo { * This structure is used to group all of the individual registers which are * modeled using the RegisterInfo structure. * - * @r is an aray containing of all the relevent RegisterInfo structures. + * @r is an array containing of all the relevant RegisterInfo structures. * * @num_elements is the number of elements in the array r * diff --git a/include/qapi/dealloc-visitor.h b/include/qapi/dealloc-visitor.h index b3e5c85fd8..c36715fdf3 100644 --- a/include/qapi/dealloc-visitor.h +++ b/include/qapi/dealloc-visitor.h @@ -19,7 +19,7 @@ typedef struct QapiDeallocVisitor QapiDeallocVisitor; /* - * The dealloc visitor is primarly used only by generated + * The dealloc visitor is primarily used only by generated * qapi_free_FOO() functions, and is the only visitor designed to work * correctly in the face of a partially-constructed QAPI tree. */ diff --git a/include/qemu/qht.h b/include/qemu/qht.h index 311139b85a..56c2c7784c 100644 --- a/include/qemu/qht.h +++ b/include/qemu/qht.h @@ -72,7 +72,7 @@ void qht_destroy(struct qht *ht); * In case of successful operation, smp_wmb() is implied before the pointer is * inserted into the hash table. * - * Returns true on sucess. + * Returns true on success. * Returns false if the @p-@hash pair already exists in the hash table. */ bool qht_insert(struct qht *ht, void *p, uint32_t hash); diff --git a/include/qemu/xattr.h b/include/qemu/xattr.h index 83cf98cbd8..a83fe8e749 100644 --- a/include/qemu/xattr.h +++ b/include/qemu/xattr.h @@ -14,7 +14,7 @@ #define QEMU_XATTR_H /* - * Modern distributions (e.g. Fedora 15, have no libattr.so, place attr.h + * Modern distributions (e.g. Fedora 15), have no libattr.so, place attr.h * in /usr/include/sys, and don't have ENOATTR. */ From b12227afb1c6533ee4950ffb067ecf638ec7bcce Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sat, 19 Nov 2016 20:29:26 +0100 Subject: [PATCH 06/31] hw: Fix typos found by codespell Signed-off-by: Stefan Weil Acked-by: Alistair Francis Signed-off-by: Michael Tokarev --- hw/core/generic-loader.c | 4 ++-- hw/core/qdev-properties.c | 2 +- hw/display/xlnx_dp.c | 4 ++-- hw/i386/pc.c | 2 +- hw/net/cadence_gem.c | 2 +- hw/net/spapr_llan.c | 4 ++-- hw/ppc/spapr_drc.c | 2 +- hw/s390x/s390-pci-bus.h | 4 ++-- hw/usb/dev-mtp.c | 2 +- hw/vfio/pci-quirks.c | 2 +- hw/virtio/virtio-crypto.c | 2 +- 11 files changed, 15 insertions(+), 15 deletions(-) diff --git a/hw/core/generic-loader.c b/hw/core/generic-loader.c index 208f549dff..58f1f02902 100644 --- a/hw/core/generic-loader.c +++ b/hw/core/generic-loader.c @@ -27,7 +27,7 @@ * this it needs a backend to manage the datas, the same as other * memory-related devices. In this case as the backend is so trivial we * have merged it with the frontend instead of creating and maintaining a - * seperate backend. + * separate backend. */ #include "qemu/osdep.h" @@ -79,7 +79,7 @@ static void generic_loader_realize(DeviceState *dev, Error **errp) "loading memory values"); return; } else if (!s->data_len) { - /* We cant' check for !data here as a value of 0 is still valid. */ + /* We can't check for !data here as a value of 0 is still valid. */ error_setg(errp, "Both data and data-len must be specified"); return; } else if (s->data_len > 8) { diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 2a82768067..6ab4265eb4 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -711,7 +711,7 @@ static void get_pci_host_devaddr(Object *obj, Visitor *v, const char *name, /* * Catch "invalid" device reference from vfio-pci and allow the - * default buffer representing the non-existant device to be used. + * default buffer representing the non-existent device to be used. */ if (~addr->domain || ~addr->bus || ~addr->slot || ~addr->function) { rc = snprintf(buffer, sizeof(buffer), "%04x:%02x:%02x.%0d", diff --git a/hw/display/xlnx_dp.c b/hw/display/xlnx_dp.c index f43eb09304..f7b7b80c68 100644 --- a/hw/display/xlnx_dp.c +++ b/hw/display/xlnx_dp.c @@ -555,7 +555,7 @@ static void xlnx_dp_recreate_surface(XlnxDPState *s) if ((width != 0) && (height != 0)) { /* * As dpy_gfx_replace_surface calls qemu_free_displaysurface on the - * surface we need to be carefull and don't free the surface associated + * surface we need to be careful and don't free the surface associated * to the console or double free will happen. */ if (s->bout_plane.surface != current_console_surface) { @@ -1160,7 +1160,7 @@ static void xlnx_dp_update_display(void *opaque) */ if (!xlnx_dpdma_start_operation(s->dpdma, 3, false)) { /* - * An error occured don't do anything with the data.. + * An error occurred don't do anything with the data.. * Trigger an underflow interrupt. */ s->core_registers[DP_INT_STATUS] |= (1 << 21); diff --git a/hw/i386/pc.c b/hw/i386/pc.c index c949cf0ecc..706e2330ac 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1777,7 +1777,7 @@ static int pc_apic_cmp(const void *a, const void *b) /* returns pointer to CPUArchId descriptor that matches CPU's apic_id * in pcms->possible_cpus->cpus, if pcms->possible_cpus->cpus has no - * entry correponding to CPU's apic_id returns NULL. + * entry corresponding to CPU's apic_id returns NULL. */ static CPUArchId *pc_find_cpu_slot(PCMachineState *pcms, CPUState *cpu, int *idx) diff --git a/hw/net/cadence_gem.c b/hw/net/cadence_gem.c index 7915732f74..e99d4544a2 100644 --- a/hw/net/cadence_gem.c +++ b/hw/net/cadence_gem.c @@ -896,7 +896,7 @@ static ssize_t gem_receive(NetClientState *nc, const uint8_t *buf, size_t size) DB_PRINT("config bufsize: %d packet size: %ld\n", rxbufsize, size); - /* Find which queue we are targetting */ + /* Find which queue we are targeting */ q = get_queue_from_screen(s, rxbuf_ptr, rxbufsize); while (bytes_to_copy) { diff --git a/hw/net/spapr_llan.c b/hw/net/spapr_llan.c index 01ecb02773..058908d8d7 100644 --- a/hw/net/spapr_llan.c +++ b/hw/net/spapr_llan.c @@ -105,7 +105,7 @@ typedef struct VIOsPAPRVLANDevice { uint32_t add_buf_ptr, use_buf_ptr, rx_bufs; hwaddr rxq_ptr; QEMUTimer *rxp_timer; - uint32_t compat_flags; /* Compatability flags for migration */ + uint32_t compat_flags; /* Compatibility flags for migration */ RxBufPool *rx_pool[RX_MAX_POOLS]; /* Receive buffer descriptor pools */ } VIOsPAPRVLANDevice; @@ -559,7 +559,7 @@ static target_long spapr_vlan_add_rxbuf_to_pool(VIOsPAPRVLANDevice *dev, if (pool < 0) { /* * No matching pool found? Try to use a new one. If the guest used all - * pools before, but changed the size of one pool inbetween, we might + * pools before, but changed the size of one pool in the meantime, we might * need to recycle that pool here (if it's empty already). Thus scan * all buffer pools now, starting with the last (likely empty) one. */ diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index a0c44ee593..2de6377cca 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -59,7 +59,7 @@ static uint32_t set_isolation_state(sPAPRDRConnector *drc, trace_spapr_drc_set_isolation_state(get_index(drc), state); if (state == SPAPR_DR_ISOLATION_STATE_UNISOLATED) { - /* cannot unisolate a non-existant resource, and, or resources + /* cannot unisolate a non-existent resource, and, or resources * which are in an 'UNUSABLE' allocation state. (PAPR 2.7, 13.5.3.5) */ if (!drc->dev || diff --git a/hw/s390x/s390-pci-bus.h b/hw/s390x/s390-pci-bus.h index b0adefa788..0aad9cc272 100644 --- a/hw/s390x/s390-pci-bus.h +++ b/hw/s390x/s390-pci-bus.h @@ -183,8 +183,8 @@ enum ZpciIoatDtype { * may enter an error state * blocked: ignore all DMA and interrupts; transition back to enabled or from * error state via mpcifc - * error: an error occured; transition back to enabled via mpcifc - * permanent error: an unrecoverable error occured; transition to standby via + * error: an error occurred; transition back to enabled via mpcifc + * permanent error: an unrecoverable error occurred; transition to standby via * sclp deconfigure */ typedef enum { diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index 9cb0f50750..809dcf5cd6 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -1093,7 +1093,7 @@ static MTPData *usb_mtp_get_object_prop_value(MTPState *s, MTPControl *c, } break; case PROP_PERSISTENT_UNIQUE_OBJECT_IDENTIFIER: - /* Should be persistant between sessions, + /* Should be persistent between sessions, * but using our objedt ID is "good enough" * for now */ usb_mtp_add_u64(d, 0x0000000000000000); diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index 811eecd1b4..6c771f778b 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -1171,7 +1171,7 @@ static int vfio_pci_igd_host_init(VFIOPCIDevice *vdev, * IGD LPC/ISA bridge support code. The vBIOS needs this, but we can't write * arbitrary values into just any bridge, so we must create our own. We try * to handle if the user has created it for us, which they might want to do - * to enable multifuction so we don't occupy the whole PCI slot. + * to enable multifunction so we don't occupy the whole PCI slot. */ static void vfio_pci_igd_lpc_bridge_realize(PCIDevice *pdev, Error **errp) { diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index 296472fc6e..0353eb6d5d 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -786,7 +786,7 @@ static void virtio_crypto_device_realize(DeviceState *dev, Error **errp) vcrypto->max_queues = MAX(vcrypto->cryptodev->conf.peers.queues, 1); if (vcrypto->max_queues + 1 > VIRTIO_QUEUE_MAX) { error_setg(errp, "Invalid number of queues (= %" PRIu32 "), " - "must be a postive integer less than %d.", + "must be a positive integer less than %d.", vcrypto->max_queues, VIRTIO_QUEUE_MAX); return; } From cdc358a24f5dd6728a46272919210ddf8555dbd9 Mon Sep 17 00:00:00 2001 From: Po-Hsu Lin Date: Tue, 29 Nov 2016 11:34:22 +0800 Subject: [PATCH 07/31] qemu-options: cleanup duplicated help message for kernel_irqchip Remove the duplicated help message for 'kernel_irqchip'. Signed-off-by: Po-Hsu Lin Signed-off-by: Michael Tokarev --- qemu-options.hx | 1 - 1 file changed, 1 deletion(-) diff --git a/qemu-options.hx b/qemu-options.hx index 8c60bfe2bd..a847de7713 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -32,7 +32,6 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \ " selects emulated machine ('-machine help' for list)\n" " property accel=accel1[:accel2[:...]] selects accelerator\n" " supported accelerators are kvm, xen, tcg (default: tcg)\n" - " kernel_irqchip=on|off controls accelerated irqchip support\n" " kernel_irqchip=on|off|split controls accelerated irqchip support (default=off)\n" " vmport=on|off|auto controls emulation of vmport (default: auto)\n" " kvm_shadow_mem=size of KVM shadow MMU in bytes\n" From dfaba10b151d4370c82d76565531dfc45c815552 Mon Sep 17 00:00:00 2001 From: Frediano Ziglio Date: Wed, 7 Dec 2016 16:00:37 +0000 Subject: [PATCH 08/31] usb: Fix typo in documentation simliar -> similar Signed-off-by: Frediano Ziglio Reviewed-by: Eric Blake Signed-off-by: Michael Tokarev --- docs/usb-storage.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usb-storage.txt b/docs/usb-storage.txt index fbc1f2edd8..551af6f88b 100644 --- a/docs/usb-storage.txt +++ b/docs/usb-storage.txt @@ -34,7 +34,7 @@ with tree logical units: Number three emulates the classic bulk-only transport protocol too. It's called "usb-bot". It shares most code with "usb-storage", and the guest will not be able to see the difference. The qemu command -line interface is simliar to usb-uas though, i.e. no automatic scsi +line interface is similar to usb-uas though, i.e. no automatic scsi disk creation. It also features support for up to 16 LUNs. The LUN numbers must be continuous, i.e. for three devices you must use 0+1+2. The 0+1+5 numbering from the "usb-uas" example isn't going to work From 39a1075a8b54aeb48a2d400f3d6ba5674e194fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 12 Dec 2016 20:31:49 +0300 Subject: [PATCH 09/31] object.h: spelling fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Marc-André Lureau Signed-off-by: Michael Tokarev --- include/qom/object.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/qom/object.h b/include/qom/object.h index 5ecc2d166d..c5e6fc1f5d 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -432,7 +432,7 @@ struct Object * @class_base_init: This function is called for all base classes after all * parent class initialization has occurred, but before the class itself * is initialized. This is the function to use to undo the effects of - * memcpy from the parent class to the descendents. + * memcpy from the parent class to the descendants. * @class_finalize: This function is called during class destruction and is * meant to release and dynamic parameters allocated by @class_init. * @class_data: Data to pass to the @class_init, @class_base_init and From 63f7b10bc552be8a2cd1da87e8b27f9a5a217b91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 12 Dec 2016 20:31:51 +0300 Subject: [PATCH 10/31] object: make some funcs static MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is no need to have those functions as public API. Signed-off-by: Marc-André Lureau Signed-off-by: Michael Tokarev --- include/qom/object.h | 24 ------------------------ qom/object.c | 4 ++-- 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/include/qom/object.h b/include/qom/object.h index c5e6fc1f5d..cd0f412ce9 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -586,18 +586,6 @@ struct InterfaceClass */ Object *object_new(const char *typename); -/** - * object_new_with_type: - * @type: The type of the object to instantiate. - * - * This function will initialize a new object using heap allocated memory. - * The returned object has a reference count of 1, and will be freed when - * the last reference is dropped. - * - * Returns: The newly allocated and instantiated object. - */ -Object *object_new_with_type(Type type); - /** * object_new_with_props: * @typename: The name of the type of the object to instantiate. @@ -726,18 +714,6 @@ int object_set_propv(Object *obj, Error **errp, va_list vargs); -/** - * object_initialize_with_type: - * @data: A pointer to the memory to be used for the object. - * @size: The maximum size available at @data for the object. - * @type: The type of the object to instantiate. - * - * This function will initialize an object. The memory for the object should - * have already been allocated. The returned object has a reference count of 1, - * and will be finalized when the last reference is dropped. - */ -void object_initialize_with_type(void *data, size_t size, Type type); - /** * object_initialize: * @obj: A pointer to the memory to be used for the object. diff --git a/qom/object.c b/qom/object.c index 760fafb0dc..eb4bc924ff 100644 --- a/qom/object.c +++ b/qom/object.c @@ -357,7 +357,7 @@ static void object_post_init_with_type(Object *obj, TypeImpl *ti) } } -void object_initialize_with_type(void *data, size_t size, TypeImpl *type) +static void object_initialize_with_type(void *data, size_t size, TypeImpl *type) { Object *obj = data; @@ -473,7 +473,7 @@ static void object_finalize(void *data) } } -Object *object_new_with_type(Type type) +static Object *object_new_with_type(Type type) { Object *obj; From d62d1eb627bc9b10b26fabda5d643e3b77cb54dd Mon Sep 17 00:00:00 2001 From: Cao jin Date: Fri, 11 Nov 2016 11:02:48 +0800 Subject: [PATCH 11/31] pcie: fix typo in comments Signed-off-by: Cao jin Signed-off-by: Michael Tokarev --- hw/pci/pcie.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index adeda04036..cbd4bb4f8c 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -656,7 +656,7 @@ static void pcie_ext_cap_set_next(PCIDevice *dev, uint16_t pos, uint16_t next) } /* - * caller must supply valid (offset, size) * such that the range shouldn't + * Caller must supply valid (offset, size) such that the range wouldn't * overlap with other capability or other registers. * This function doesn't check it. */ From ece9086eb5e3f05e6a3ebb2ec3242932c3b37963 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 4 Jan 2017 15:56:24 +0100 Subject: [PATCH 12/31] qemu-img: remove dead check options must be non-NULL here, because it has been checked before. Reported by Coverity. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake Signed-off-by: Michael Tokarev --- qemu-img.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/qemu-img.c b/qemu-img.c index 5df66fe661..74e3362653 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -3455,13 +3455,11 @@ static int img_amend(int argc, char **argv) create_opts = qemu_opts_append(create_opts, bs->drv->create_opts); opts = qemu_opts_create(create_opts, NULL, 0, &error_abort); - if (options) { - qemu_opts_do_parse(opts, options, NULL, &err); - if (err) { - error_report_err(err); - ret = -1; - goto out; - } + qemu_opts_do_parse(opts, options, NULL, &err); + if (err) { + error_report_err(err); + ret = -1; + goto out; } /* In case the driver does not call amend_status_cb() */ From 9ed2690354e65a87b830f197cac0138e842f989e Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 4 Jan 2017 16:05:25 +0100 Subject: [PATCH 13/31] pci-assign: avoid pointless stat Just check the errno value after fopen and follow it with fstat. This shuts up Coverity's complaint about TOC/TOU violation. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake Signed-off-by: Michael Tokarev --- hw/i386/pci-assign-load-rom.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/hw/i386/pci-assign-load-rom.c b/hw/i386/pci-assign-load-rom.c index 0d8e4b2826..fd59076e7a 100644 --- a/hw/i386/pci-assign-load-rom.c +++ b/hw/i386/pci-assign-load-rom.c @@ -39,19 +39,19 @@ void *pci_assign_dev_load_option_rom(PCIDevice *dev, struct Object *owner, "/sys/bus/pci/devices/%04x:%02x:%02x.%01x/rom", domain, bus, slot, function); - if (stat(rom_file, &st)) { - if (errno != ENOENT) { - error_report("pci-assign: Invalid ROM."); - } - return NULL; - } - /* Write "1" to the ROM file to enable it */ fp = fopen(rom_file, "r+"); if (fp == NULL) { - error_report("pci-assign: Cannot open %s: %s", rom_file, strerror(errno)); + if (errno != ENOENT) { + error_report("pci-assign: Cannot open %s: %s", rom_file, strerror(errno)); + } return NULL; } + if (fstat(fileno(fp), &st) == -1) { + error_report("pci-assign: Cannot stat %s: %s", rom_file, strerror(errno)); + goto close_rom; + } + val = 1; if (fwrite(&val, 1, 1, fp) != 1) { goto close_rom; From 7ad2757feffd13b8000826ae3df2a3bc929d688d Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 4 Jan 2017 15:59:14 +0100 Subject: [PATCH 14/31] block: remove dead check options must be non-NULL here, because a NULL value is replaced with qdict_new earlier in the function. Reported by Coverity. Signed-off-by: Paolo Bonzini Reviewed-by: Eric Blake Signed-off-by: Michael Tokarev --- block.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/block.c b/block.c index 39ddea3411..a0346c80c6 100644 --- a/block.c +++ b/block.c @@ -1851,7 +1851,7 @@ static BlockDriverState *bdrv_open_inherit(const char *filename, bdrv_refresh_filename(bs); /* Check if any unknown options were used */ - if (options && (qdict_size(options) != 0)) { + if (qdict_size(options) != 0) { const QDictEntry *entry = qdict_first(options); if (flags & BDRV_O_PROTOCOL) { error_setg(errp, "Block protocol '%s' doesn't support the option " From 47b0c3f2f5dd7dea486aa023a007cb2442da0676 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Wed, 4 Jan 2017 15:52:10 +0100 Subject: [PATCH 15/31] qga: fix erroneous argument to strerror MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit process_command returns a negative value in case of error. Make this clear in the "if" statement and fix the strerror argument to flip it to positive. Signed-off-by: Paolo Bonzini Reviewed-by: Marc-André Lureau Signed-off-by: Michael Tokarev --- qga/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qga/main.c b/qga/main.c index 6caf215575..538e4ee299 100644 --- a/qga/main.c +++ b/qga/main.c @@ -558,8 +558,8 @@ static void process_command(GAState *s, QDict *req) rsp = qmp_dispatch(QOBJECT(req)); if (rsp) { ret = send_response(s, rsp); - if (ret) { - g_warning("error sending response: %s", strerror(ret)); + if (ret < 0) { + g_warning("error sending response: %s", strerror(-ret)); } qobject_decref(rsp); } From 9d7b2670a334f9256f926da133e36a8a2f2299bd Mon Sep 17 00:00:00 2001 From: Cao jin Date: Thu, 12 Jan 2017 15:44:55 +0800 Subject: [PATCH 16/31] doc/usb2: fix typo Signed-off-by: Cao jin Signed-off-by: Michael Tokarev --- docs/usb2.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usb2.txt b/docs/usb2.txt index c7a445afcd..b9e7548073 100644 --- a/docs/usb2.txt +++ b/docs/usb2.txt @@ -19,7 +19,7 @@ the controller so the USB 2.0 bus gets a individual name, for example '-device usb-ehci,id=ehci". This will give you a USB 2.0 bus named "ehci.0". -I strongly recomment to also use -device to attach usb devices because +I strongly recommend to also use -device to attach usb devices because you can specify the bus they should be attached to this way. Here is a complete example: From a1f910875668d87e139e79fce38e9c2e1c3747dd Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 9 Jan 2017 17:05:21 +0000 Subject: [PATCH 17/31] hw/i386/kvmvapic: Remove dead code in patch_hypercalls() The patch_hypercalls() function sets up a 'patches' variable and checks it at the end of the function, but never modifies it in the middle. Remove this dead code, which seems to have been present since the function was added in commit e5ad936b0fd7 in 2012. (Spotted by Coverity: CID 1005581.) Signed-off-by: Peter Maydell Acked-by: Jan Kiszka Signed-off-by: Michael Tokarev --- hw/i386/kvmvapic.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/hw/i386/kvmvapic.c b/hw/i386/kvmvapic.c index 2f767b620e..702e281dc8 100644 --- a/hw/i386/kvmvapic.c +++ b/hw/i386/kvmvapic.c @@ -535,7 +535,6 @@ static int patch_hypercalls(VAPICROMState *s) uint8_t alternates[2]; const uint8_t *pattern; const uint8_t *patch; - int patches = 0; off_t pos; uint8_t *rom; @@ -566,11 +565,6 @@ static int patch_hypercalls(VAPICROMState *s) } g_free(rom); - - if (patches != 0 && patches != 2) { - return -1; - } - return 0; } From 4382fa6554987d8c10cdd0fafb04191a40c9743e Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Fri, 6 Jan 2017 17:45:14 +0000 Subject: [PATCH 18/31] lm32: milkymist-tmu2: fix another integer overflow Don't truncate the multiplication and do a 64 bit one instead because the result is stored in a 64 bit variable. This fixes a similar coverity warning to commit 237a8650d640, in a similar way, and is the other half of the fix for coverity CID 1167561. Signed-off-by: Peter Maydell Acked-by: Michael Walle Signed-off-by: Michael Tokarev --- hw/display/milkymist-tmu2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/display/milkymist-tmu2.c b/hw/display/milkymist-tmu2.c index 5c666f9b24..920374b985 100644 --- a/hw/display/milkymist-tmu2.c +++ b/hw/display/milkymist-tmu2.c @@ -257,7 +257,7 @@ static void tmu2_start(MilkymistTMU2State *s) glColor4f(m, m, m, (float)(s->regs[R_ALPHA] + 1) / 64.0f); /* Read the QEMU dest. framebuffer into the OpenGL framebuffer */ - fb_len = 2 * s->regs[R_DSTHRES] * s->regs[R_DSTVRES]; + fb_len = 2ULL * s->regs[R_DSTHRES] * s->regs[R_DSTVRES]; fb = cpu_physical_memory_map(s->regs[R_DSTFBUF], &fb_len, 0); if (fb == NULL) { glDeleteTextures(1, &texture); From e11078846996ded6f824868ae63a0c77031ad64c Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 9 Jan 2017 19:05:59 +0000 Subject: [PATCH 19/31] disas/cris.c: Fix Coverity warning about unchecked NULL Coverity (CID 1005689) warns that we don't check that spec_reg_info() returned non-NULL before dereferencing. Add the check, though as the comment notes this is a can't-really-happen case because the earlier constraint matching should have ruled out the "unknown reg" case. Signed-off-by: Peter Maydell Reviewed-by: Edgar E. Iglesias Signed-off-by: Michael Tokarev --- disas/cris.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/disas/cris.c b/disas/cris.c index 08161d1f21..8a1daf936c 100644 --- a/disas/cris.c +++ b/disas/cris.c @@ -2490,7 +2490,7 @@ print_with_operands (const struct cris_opcode *opcodep, const struct cris_spec_reg *sregp = spec_reg_info ((insn >> 12) & 15, disdata->distype); - if (sregp->name == NULL) + if (sregp == NULL || sregp->name == NULL) /* Should have been caught as a non-match earlier. */ *tp++ = '?'; else From a4d79c3d104a1c1e7a7e8ca0d29770d149c50a3e Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 11 Jan 2017 12:02:22 +0100 Subject: [PATCH 20/31] docs: sync pci-ids.txt Three commits allocated pci ids in include/hw/pci/pci.h without also updating docs/specs/pci-ids.txt: bf439db pci: Allocate PCIe host bridge PCI ID 40d14be hw/pci: introduce PCI Expander Bridge (PXB) 02b0743 hw/pxb: introduce pxb-pcie expander for PCIe machines This patch updates pci-ids.txt accordingly. Cc: qemu-trivial@nongnu.org Signed-off-by: Gerd Hoffmann Signed-off-by: Michael Tokarev --- docs/specs/pci-ids.txt | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/specs/pci-ids.txt b/docs/specs/pci-ids.txt index fd27c677d4..16fdb0c93f 100644 --- a/docs/specs/pci-ids.txt +++ b/docs/specs/pci-ids.txt @@ -57,7 +57,10 @@ PCI devices (other than virtio): 1b36:0005 PCI test device (docs/specs/pci-testdev.txt) 1b36:0006 PCI Rocker Ethernet switch device 1b36:0007 PCI SD Card Host Controller Interface (SDHCI) +1b36:0008 PCIe host bridge +1b36:0009 PCI Expander Bridge (-device pxb) 1b36:000a PCI-PCI bridge (multiseat) +1b36:000b PCIe Expander Bridge (-device pxb-pcie) All these devices are documented in docs/specs. From 8907379204807b8047e710ae76c4d6849c3f6ce1 Mon Sep 17 00:00:00 2001 From: Cao jin Date: Fri, 11 Nov 2016 11:01:36 +0800 Subject: [PATCH 21/31] vfio: remove a duplicated word in comments Signed-off-by: Cao jin Signed-off-by: Michael Tokarev --- hw/vfio/pci.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index d7dbe0e3e0..882d3a91b6 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -1881,8 +1881,8 @@ static void vfio_add_ext_cap(VFIOPCIDevice *vdev) * 0 is reserved for this since absence of capabilities is indicated by * 0 for the ID, version, AND next pointer. However, pcie_add_capability() * uses ID 0 as reserved for list management and will incorrectly match and - * assert if we attempt to pre-load the head of the chain with with this - * ID. Use ID 0xFFFF temporarily since it is also seems to be reserved in + * assert if we attempt to pre-load the head of the chain with this ID. + * Use ID 0xFFFF temporarily since it is also seems to be reserved in * part for identifying absence of capabilities in a root complex register * block. If the ID still exists after adding capabilities, switch back to * zero. We'll mark this entire first dword as emulated for this purpose. From 4a3ecf201a1a49a804e8506df5906e446707c3b1 Mon Sep 17 00:00:00 2001 From: Cao jin Date: Wed, 2 Nov 2016 21:44:46 +0800 Subject: [PATCH 22/31] util/mmap-alloc: check parameter before using Signed-off-by: Cao jin Reviewed-by: Thomas Huth Signed-off-by: Michael Tokarev --- util/mmap-alloc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c index 5a85aa3c89..d713a72ddc 100644 --- a/util/mmap-alloc.c +++ b/util/mmap-alloc.c @@ -12,6 +12,7 @@ #include "qemu/osdep.h" #include "qemu/mmap-alloc.h" +#include "qemu/host-utils.h" #define HUGETLBFS_MAGIC 0x958458f6 @@ -61,18 +62,18 @@ void *qemu_ram_mmap(int fd, size_t size, size_t align, bool shared) #else void *ptr = mmap(0, total, PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); #endif - size_t offset = QEMU_ALIGN_UP((uintptr_t)ptr, align) - (uintptr_t)ptr; + size_t offset; void *ptr1; if (ptr == MAP_FAILED) { return MAP_FAILED; } - /* Make sure align is a power of 2 */ - assert(!(align & (align - 1))); + assert(is_power_of_2(align)); /* Always align to host page size */ assert(align >= getpagesize()); + offset = QEMU_ALIGN_UP((uintptr_t)ptr, align) - (uintptr_t)ptr; ptr1 = mmap(ptr + offset, size, PROT_READ | PROT_WRITE, MAP_FIXED | (fd == -1 ? MAP_ANONYMOUS : 0) | From 6e4c890e15b23f078650499fbde11760b8eccf10 Mon Sep 17 00:00:00 2001 From: Cao jin Date: Wed, 2 Nov 2016 21:44:47 +0800 Subject: [PATCH 23/31] util/mmap-alloc: refactor a little bit for readability 1st mmap returns *ptr* which aligns to host page size, | size + align | ------------------------------------------ ptr input param *align* could be 1M, or 2M, or host page size. After QEMU_ALIGN_UP, offset will >= 0 2nd mmap use flag MAP_FIXED, then it return ptr+offset, or else fail. If it success, then we will have something like: | offset | size | -------------------------------------- ptr ptr1 *ptr1* is what we really want to return, it equals ptr+offset. Signed-off-by: Cao jin Signed-off-by: Michael Tokarev --- util/mmap-alloc.c | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c index d713a72ddc..2f55f5e94f 100644 --- a/util/mmap-alloc.c +++ b/util/mmap-alloc.c @@ -84,22 +84,20 @@ void *qemu_ram_mmap(int fd, size_t size, size_t align, bool shared) return MAP_FAILED; } - ptr += offset; - total -= offset; - if (offset > 0) { - munmap(ptr - offset, offset); + munmap(ptr, offset); } /* * Leave a single PROT_NONE page allocated after the RAM block, to serve as * a guard page guarding against potential buffer overflows. */ + total -= offset; if (total > size + getpagesize()) { - munmap(ptr + size + getpagesize(), total - size - getpagesize()); + munmap(ptr1 + size + getpagesize(), total - size - getpagesize()); } - return ptr; + return ptr1; } void qemu_ram_munmap(void *ptr, size_t size) From 1706e9d819ff610154fe47ef3a195c2fd6604efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= Date: Tue, 3 Jan 2017 20:19:33 +0100 Subject: [PATCH 24/31] win32: use glib gpoll if glib >= 2.50 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A fix has been committed in upstream glib commit 210a9796f78eb90f76f1bd6a304e9fea05e97617. (See also related bug https://bugzilla.gnome.org/show_bug.cgi?id=764415) It is desirable to use the glib version instead of qemu copy, since it provides more debugging facilities (G_MAIN_POLL_DEBUG etc), and hopefully has a better maintainance. Hopefully, we can drop the qemu copy in a few years. Signed-off-by: Marc-André Lureau Reviewed-by: Daniel P. Berrange Reviewed-by: Stefan Weil Signed-off-by: Michael Tokarev --- include/glib-compat.h | 2 +- util/oslib-win32.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/include/glib-compat.h b/include/glib-compat.h index acf254d2a0..0cd24ffbe9 100644 --- a/include/glib-compat.h +++ b/include/glib-compat.h @@ -39,7 +39,7 @@ static inline gint64 qemu_g_get_monotonic_time(void) #define g_get_monotonic_time() qemu_g_get_monotonic_time() #endif -#ifdef _WIN32 +#if defined(_WIN32) && !GLIB_CHECK_VERSION(2, 50, 0) /* * g_poll has a problem on Windows when using * timeouts < 10ms, so use wrapper. diff --git a/util/oslib-win32.c b/util/oslib-win32.c index d09863cc9d..0b1890fd33 100644 --- a/util/oslib-win32.c +++ b/util/oslib-win32.c @@ -327,6 +327,7 @@ char *qemu_get_exec_dir(void) return g_strdup(exec_dir); } +#if !GLIB_CHECK_VERSION(2, 50, 0) /* * The original implementation of g_poll from glib has a problem on Windows * when using timeouts < 10 ms. @@ -530,6 +531,7 @@ gint g_poll(GPollFD *fds, guint nfds, gint timeout) return retval; } +#endif int getpagesize(void) { From ba56e4cad41ea2b2fb68d18a632ebc7d4e4b1051 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 9 Jan 2017 16:45:09 +0000 Subject: [PATCH 25/31] hw/display/framebuffer.c: Avoid overflow for framebuffers > 4GB Coverity points out that calculating src_len by multiplying src_width by rows could overflow. This can only happen in the implausible case of a framebuffer larger than 4GB, but we may as well fix it, placating Coverity. (CID1005515) Signed-off-by: Peter Maydell Signed-off-by: Michael Tokarev --- hw/display/framebuffer.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/display/framebuffer.c b/hw/display/framebuffer.c index df51358e72..25aa46c8c7 100644 --- a/hw/display/framebuffer.c +++ b/hw/display/framebuffer.c @@ -78,7 +78,7 @@ void framebuffer_update_display( i = *first_row; *first_row = -1; - src_len = src_width * rows; + src_len = (hwaddr)src_width * rows; mem = mem_section->mr; if (!mem) { From 87eb2bac6a54c74e9e0bfcb69cf8e93727af04f9 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 15 Jan 2017 21:30:14 +0100 Subject: [PATCH 26/31] Drop duplicate display option documentation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The curses and none possibilities are already documented on a separate line, so documenting it on the sdl line was both unneeded and confusing. Introduced in commit f04ec5afbb7d60a56863add800fd90ceee66f362 Signed-off-by: Samuel Thibault Reviewed-by: Marc-André Lureau Signed-off-by: Michael Tokarev --- qemu-options.hx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu-options.hx b/qemu-options.hx index a847de7713..be1b9d4938 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -926,7 +926,7 @@ ETEXI DEF("display", HAS_ARG, QEMU_OPTION_display, "-display sdl[,frame=on|off][,alt_grab=on|off][,ctrl_grab=on|off]\n" - " [,window_close=on|off][,gl=on|off]|curses|none|\n" + " [,window_close=on|off][,gl=on|off]\n" "-display gtk[,grab_on_hover=on|off][,gl=on|off]|\n" "-display vnc=[,]\n" "-display curses\n" From 4f04560ba93f179151d90b0e6c6c53235fe1a279 Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Mon, 16 Jan 2017 18:46:00 +0000 Subject: [PATCH 27/31] scsi-disk: add 'fall through' comment to switch VERIFY cases Commit 166dbda7e131 added some extra cases to a switch() such that the existing code is intended to fall through the new case statements. It's clear from the commit that this is intentional, but less clear to subsequent readers of the code, and not clear at all to static analysis tools like Coverity. Add a /* fall through */ comment to indicate the intent. (Fixes CID 1368287.) Signed-off-by: Peter Maydell Signed-off-by: Michael Tokarev --- hw/scsi/scsi-disk.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/scsi/scsi-disk.c b/hw/scsi/scsi-disk.c index c080888413..cc06fe5f6c 100644 --- a/hw/scsi/scsi-disk.c +++ b/hw/scsi/scsi-disk.c @@ -2157,6 +2157,7 @@ static int32_t scsi_disk_dma_command(SCSIRequest *req, uint8_t *buf) DPRINTF("Write %s(sector %" PRId64 ", count %u)\n", (command & 0xe) == 0xe ? "And Verify " : "", r->req.cmd.lba, len); + /* fall through */ case VERIFY_10: case VERIFY_12: case VERIFY_16: From 508b4ecc3935f0cffb6f8e302fb84941dae940c9 Mon Sep 17 00:00:00 2001 From: Ziyue Yang Date: Wed, 18 Jan 2017 16:02:41 +0800 Subject: [PATCH 28/31] gdbstub.c: fix GDB connection segfault caused by empty machines This patch is to fix the segmentation fault caused by attaching GDB to a QEMU instance initialized with "-M none" option. The bug can be reproduced by > ./qemu-system-x86_64 -M none -nographic -S -s and attach a GDB to it by > gdb -ex 'target remote :1234 The segmentation fault was originally caused by trying to read the information about CPU when communicating with GDB. However, it's impossible for any control flow to exist on an empty machine, nor can CPU's be hot plugged to an empty machine later by QOM commands. So I think simply disabling GDB connections on empty machines makes sense. Signed-off-by: Ziyue Yang Reviewed-by: Thomas Huth Signed-off-by: Michael Tokarev --- gdbstub.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gdbstub.c b/gdbstub.c index de9b62b8f8..27e0923781 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -18,6 +18,7 @@ */ #include "qemu/osdep.h" #include "qapi/error.h" +#include "qemu/error-report.h" #include "qemu/cutils.h" #include "cpu.h" #ifdef CONFIG_USER_ONLY @@ -1732,6 +1733,12 @@ int gdbserver_start(const char *device) CharDriverState *mon_chr; ChardevCommon common = { 0 }; + if (!first_cpu) { + error_report("gdbstub: meaningless to attach gdb to a " + "machine without any CPU."); + return -1; + } + if (!device) return -1; if (strcmp(device, "none") != 0) { From 7ae6c571151cff785a225d6916269bbe199f0ab1 Mon Sep 17 00:00:00 2001 From: Ziyue Yang Date: Wed, 18 Jan 2017 16:03:29 +0800 Subject: [PATCH 29/31] gdbstub.c: update old error report statements Some updates from fprintf(stderr, ...) to error_report. Signed-off-by: Ziyue Yang Reviewed-by: Thomas Huth Signed-off-by: Michael Tokarev --- gdbstub.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/gdbstub.c b/gdbstub.c index 27e0923781..2d18ed73be 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -638,8 +638,8 @@ void gdb_register_coprocessor(CPUState *cpu, *p = s; if (g_pos) { if (g_pos != s->base_reg) { - fprintf(stderr, "Error: Bad gdb register numbering for '%s'\n" - "Expected %d got %d\n", xml, g_pos, s->base_reg); + error_report("Error: Bad gdb register numbering for '%s', " + "expected %d got %d", xml, g_pos, s->base_reg); } else { cpu->gdb_num_g_regs = cpu->gdb_num_regs; } @@ -891,7 +891,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) } case 'k': /* Kill the target */ - fprintf(stderr, "\nQEMU: Terminated via GDBstub\n"); + error_report("QEMU: Terminated via GDBstub"); exit(0); case 'D': /* Detach packet */ @@ -1359,8 +1359,8 @@ void gdb_do_syscallv(gdb_syscall_complete_cb cb, const char *fmt, va_list va) break; default: bad_format: - fprintf(stderr, "gdbstub: Bad syscall format string '%s'\n", - fmt - 1); + error_report("gdbstub: Bad syscall format string '%s'", + fmt - 1); break; } } else { From cdab4dc01a38146543d5c0d0d09433cd4b776936 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 20 Jan 2017 14:11:04 +0100 Subject: [PATCH 30/31] usb: Set category and description of the MTP device It's a storage device, so let's classify it accordingly. And while we're at it, also add a short description for people who do not know what MTP means. Signed-off-by: Thomas Huth Reviewed-by: Laurent Vivier Signed-off-by: Michael Tokarev --- hw/usb/dev-mtp.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index 809dcf5cd6..94c2e94f10 100644 --- a/hw/usb/dev-mtp.c +++ b/hw/usb/dev-mtp.c @@ -1580,6 +1580,8 @@ static void usb_mtp_class_initfn(ObjectClass *klass, void *data) uc->handle_reset = usb_mtp_handle_reset; uc->handle_control = usb_mtp_handle_control; uc->handle_data = usb_mtp_handle_data; + set_bit(DEVICE_CATEGORY_STORAGE, dc->categories); + dc->desc = "USB Media Transfer Protocol device"; dc->fw_name = "mtp"; dc->vmsd = &vmstate_usb_mtp; dc->props = mtp_properties; From 5658ffa39aae034458231bc4abfee57637b88c6e Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 20 Jan 2017 16:53:59 +0100 Subject: [PATCH 31/31] hw/isa/isa-bus: Set category of the "isabus-bridge" device It has "bridge" in its name, so it should be in the category DEVICE_CATEGORY_BRIDGE. Signed-off-by: Thomas Huth Reviewed-by: Markus Armbruster Signed-off-by: Michael Tokarev --- hw/isa/isa-bus.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/isa/isa-bus.c b/hw/isa/isa-bus.c index 9d07b118c0..0ffbc8dd28 100644 --- a/hw/isa/isa-bus.c +++ b/hw/isa/isa-bus.c @@ -219,6 +219,7 @@ static void isabus_bridge_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); + set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories); dc->fw_name = "isa"; }