diff --git a/block/blkdebug.c b/block/blkdebug.c index eecbf3e5c4..54da719dd1 100644 --- a/block/blkdebug.c +++ b/block/blkdebug.c @@ -215,6 +215,7 @@ static int add_rule(void *opaque, QemuOpts *opts, Error **errp) BLKDEBUG_IO_TYPE__MAX, &local_error); if (local_error) { error_propagate(errp, local_error); + g_free(rule); return -1; } if (iotype != BLKDEBUG_IO_TYPE__MAX) { diff --git a/block/vmdk.c b/block/vmdk.c index 8ec62c7ab7..a00dc00eb4 100644 --- a/block/vmdk.c +++ b/block/vmdk.c @@ -595,7 +595,7 @@ static int vmdk_open_vmfs_sparse(BlockDriverState *bs, int ret; uint32_t magic; VMDK3Header header; - VmdkExtent *extent; + VmdkExtent *extent = NULL; ret = bdrv_pread(file, sizeof(magic), &header, sizeof(header)); if (ret < 0) { @@ -751,7 +751,7 @@ static int vmdk_open_se_sparse(BlockDriverState *bs, int ret; VMDKSESparseConstHeader const_header; VMDKSESparseVolatileHeader volatile_header; - VmdkExtent *extent; + VmdkExtent *extent = NULL; ret = bdrv_apply_auto_read_only(bs, "No write support for seSparse images available", errp); @@ -869,7 +869,7 @@ static int vmdk_open_vmdk4(BlockDriverState *bs, uint32_t magic; uint32_t l1_size, l1_entry_sectors; VMDK4Header header; - VmdkExtent *extent; + VmdkExtent *extent = NULL; BDRVVmdkState *s = bs->opaque; int64_t l1_backup_offset = 0; bool compressed; @@ -1088,7 +1088,7 @@ static int vmdk_parse_extents(const char *desc, BlockDriverState *bs, BdrvChild *extent_file; BdrvChildRole extent_role; BDRVVmdkState *s = bs->opaque; - VmdkExtent *extent; + VmdkExtent *extent = NULL; char extent_opt_prefix[32]; Error *local_err = NULL; diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 894d357f8c..67a1ea4191 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -437,7 +437,7 @@ static void piix4_pm_machine_ready(Notifier *n, void *opaque) (memory_region_present(io_as, 0x2f8) ? 0x90 : 0); } -static void piix4_pm_add_propeties(PIIX4PMState *s) +static void piix4_pm_add_properties(PIIX4PMState *s) { static const uint8_t acpi_enable_cmd = ACPI_ENABLE; static const uint8_t acpi_disable_cmd = ACPI_DISABLE; @@ -509,7 +509,7 @@ static void piix4_pm_realize(PCIDevice *dev, Error **errp) pci_get_bus(dev), s); qbus_set_hotplug_handler(BUS(pci_get_bus(dev)), OBJECT(s)); - piix4_pm_add_propeties(s); + piix4_pm_add_properties(s); } I2CBus *piix4_pm_init(PCIBus *bus, int devfn, uint32_t smb_io_base, diff --git a/hw/block/nvme.c b/hw/block/nvme.c index 63078f6009..44fa5b9076 100644 --- a/hw/block/nvme.c +++ b/hw/block/nvme.c @@ -1280,12 +1280,7 @@ static inline uint64_t nvme_get_timestamp(const NvmeCtrl *n) union nvme_timestamp ts; ts.all = 0; - - /* - * If the sum of the Timestamp value set by the host and the elapsed - * time exceeds 2^48, the value returned should be reduced modulo 2^48. - */ - ts.timestamp = (n->host_timestamp + elapsed_time) & 0xffffffffffff; + ts.timestamp = n->host_timestamp + elapsed_time; /* If the host timestamp is non-zero, set the timestamp origin */ ts.origin = n->host_timestamp ? 0x01 : 0x00; diff --git a/hw/char/serial.c b/hw/char/serial.c index 4386adabd4..97f71879ff 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -1120,7 +1120,6 @@ static const TypeInfo serial_mm_info = { .class_init = serial_mm_class_init, .instance_init = serial_mm_instance_init, .instance_size = sizeof(SerialMM), - .class_init = serial_mm_class_init, }; static void serial_register_types(void) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 3c8f10b461..100c9381c2 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -1036,7 +1036,7 @@ static PCIDevice *do_pci_register_device(PCIDevice *pci_dev, return NULL; } else if (dev->hotplugged && pci_get_function_0(pci_dev)) { - error_setg(errp, "PCI: slot %d function 0 already ocuppied by %s," + error_setg(errp, "PCI: slot %d function 0 already occupied by %s," " new func %s cannot be exposed to guest.", PCI_SLOT(pci_get_function_0(pci_dev)->devfn), pci_get_function_0(pci_dev)->name, diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 3999392b32..88ce87f130 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1571,7 +1571,7 @@ static void spapr_pci_plug(HotplugHandler *plug_handler, */ if (plugged_dev->hotplugged && bus->devices[PCI_DEVFN(slotnr, 0)] && PCI_FUNC(pdev->devfn) != 0) { - error_setg(errp, "PCI: slot %d function 0 already ocuppied by %s," + error_setg(errp, "PCI: slot %d function 0 already occupied by %s," " additional functions can no longer be exposed to guest.", slotnr, bus->devices[PCI_DEVFN(slotnr, 0)]->name); return; diff --git a/hw/rtc/goldfish_rtc.c b/hw/rtc/goldfish_rtc.c index 6ddd45cce0..0f4e8185a7 100644 --- a/hw/rtc/goldfish_rtc.c +++ b/hw/rtc/goldfish_rtc.c @@ -217,7 +217,7 @@ static int goldfish_rtc_post_load(void *opaque, int version_id) static const MemoryRegionOps goldfish_rtc_ops = { .read = goldfish_rtc_read, .write = goldfish_rtc_write, - .endianness = DEVICE_LITTLE_ENDIAN, + .endianness = DEVICE_NATIVE_ENDIAN, .valid = { .min_access_size = 4, .max_access_size = 4 diff --git a/meson.build b/meson.build index 652c37cceb..ad6c7c90c7 100644 --- a/meson.build +++ b/meson.build @@ -41,7 +41,7 @@ have_block = have_system or have_tools python = import('python').find_installation() supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux'] -supported_cpus = ['ppc', 'ppc64', 's390x', 'sparc64', 'riscv32', 'riscv64', 'x86', 'x86_64', +supported_cpus = ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', 'x86_64', 'arm', 'aarch64', 'mips', 'mips64', 'sparc', 'sparc64'] cpu = host_machine.cpu_family() diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c index ab9e1301f6..8f728d2600 100644 --- a/migration/dirtyrate.c +++ b/migration/dirtyrate.c @@ -10,8 +10,9 @@ * See the COPYING file in the top-level directory. */ -#include #include "qemu/osdep.h" + +#include #include "qapi/error.h" #include "cpu.h" #include "qemu/config-file.h" diff --git a/qemu-img-cmds.hx b/qemu-img-cmds.hx index b89c019b76..cab8234235 100644 --- a/qemu-img-cmds.hx +++ b/qemu-img-cmds.hx @@ -1,5 +1,5 @@ HXCOMM Keep the list of subcommands sorted by name. -HXCOMM Use DEFHEADING() to define headings in both help text and texi +HXCOMM Use DEFHEADING() to define headings in both help text and rST HXCOMM Text between SRST and ERST are copied to rST version and HXCOMM discarded from C version HXCOMM DEF(command, callback, arg_string) is used to construct diff --git a/softmmu/memory.c b/softmmu/memory.c index fa280a19f7..403ff3abc9 100644 --- a/softmmu/memory.c +++ b/softmmu/memory.c @@ -14,6 +14,7 @@ */ #include "qemu/osdep.h" +#include "qemu/log.h" #include "qapi/error.h" #include "cpu.h" #include "exec/memory.h" @@ -1353,10 +1354,18 @@ bool memory_region_access_valid(MemoryRegion *mr, { if (mr->ops->valid.accepts && !mr->ops->valid.accepts(mr->opaque, addr, size, is_write, attrs)) { + qemu_log_mask(LOG_GUEST_ERROR, "Invalid access at addr " + "0x%" HWADDR_PRIX ", size %u, " + "region '%s', reason: rejected\n", + addr, size, memory_region_name(mr)); return false; } if (!mr->ops->valid.unaligned && (addr & (size - 1))) { + qemu_log_mask(LOG_GUEST_ERROR, "Invalid access at addr " + "0x%" HWADDR_PRIX ", size %u, " + "region '%s', reason: unaligned\n", + addr, size, memory_region_name(mr)); return false; } @@ -1367,6 +1376,13 @@ bool memory_region_access_valid(MemoryRegion *mr, if (size > mr->ops->valid.max_access_size || size < mr->ops->valid.min_access_size) { + qemu_log_mask(LOG_GUEST_ERROR, "Invalid access at addr " + "0x%" HWADDR_PRIX ", size %u, " + "region '%s', reason: invalid size " + "(min:%u max:%u)\n", + addr, size, memory_region_name(mr), + mr->ops->valid.min_access_size, + mr->ops->valid.max_access_size); return false; } return true; diff --git a/target/i386/cpu.c b/target/i386/cpu.c index f37eb7b675..9eafbe3690 100644 --- a/target/i386/cpu.c +++ b/target/i386/cpu.c @@ -4127,7 +4127,8 @@ static PropValue tcg_default_props[] = { * We resolve CPU model aliases using -v1 when using "-machine * none", but this is just for compatibility while libvirt isn't * adapted to resolve CPU model versions before creating VMs. - * See "Runnability guarantee of CPU models" at * qemu-deprecated.texi. + * See "Runnability guarantee of CPU models" at + * docs/system/deprecated.rst. */ X86CPUVersion default_cpu_version = 1; diff --git a/target/sparc/int32_helper.c b/target/sparc/int32_helper.c index 9a71e1abd8..ba63c739c1 100644 --- a/target/sparc/int32_helper.c +++ b/target/sparc/int32_helper.c @@ -50,7 +50,6 @@ static const char * const excp_names[0x80] = { [TT_EXTINT | 0xd] = "External Interrupt 13", [TT_EXTINT | 0xe] = "External Interrupt 14", [TT_EXTINT | 0xf] = "External Interrupt 15", - [TT_TOVF] = "Tag Overflow", [TT_CODE_ACCESS] = "Instruction Access Error", [TT_DATA_ACCESS] = "Data Access Error", [TT_DIV_ZERO] = "Division By Zero", diff --git a/tests/test-bitmap.c b/tests/test-bitmap.c index 2f5b71458a..8db4f67883 100644 --- a/tests/test-bitmap.c +++ b/tests/test-bitmap.c @@ -8,7 +8,6 @@ * Author: Peter Xu */ -#include #include "qemu/osdep.h" #include "qemu/bitmap.h" diff --git a/tests/test-char.c b/tests/test-char.c index d35cc839bc..9196e566e9 100644 --- a/tests/test-char.c +++ b/tests/test-char.c @@ -70,7 +70,7 @@ static void fe_event(void *opaque, QEMUChrEvent event) h->openclose_mismatch = true; } h->is_open = new_open_state; - /* no break */ + /* fallthrough */ default: quit = true; break;