diff options
43 files changed, 88 insertions, 104 deletions
@@ -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 @@ -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 " 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 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. 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 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: @@ -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 @@ -637,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; } @@ -890,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 */ @@ -1358,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 { @@ -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) { 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) { 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/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) { 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); 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/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; } 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/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; 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"; } 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/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. */ 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/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: diff --git a/hw/usb/dev-mtp.c b/hw/usb/dev-mtp.c index 9cb0f50750..94c2e94f10 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); @@ -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; 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/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. 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; } 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/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. */ diff --git a/include/qom/object.h b/include/qom/object.h index 5ecc2d166d..cd0f412ce9 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 @@ -587,18 +587,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. * @parent: the parent object @@ -727,18 +715,6 @@ int object_set_propv(Object *obj, 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. * @size: The maximum size available at @obj for the object. 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-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() */ diff --git a/qemu-options.hx b/qemu-options.hx index 48c7f22819..588e5beab3 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" @@ -250,7 +249,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" @@ -927,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=<display>[,<optargs>]\n" "-display curses\n" @@ -2589,7 +2588,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/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); } 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; diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c index 5a85aa3c89..2f55f5e94f 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) | @@ -83,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) 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) { 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 != '@')) |