diff --git a/MAINTAINERS b/MAINTAINERS index ffcd25bf1f..932443df41 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -380,6 +380,7 @@ M: Peter Maydell L: qemu-arm@nongnu.org S: Maintained F: hw/char/pl011.c +F: include/hw/char/pl011.h F: hw/display/pl110* F: hw/dma/pl080.c F: hw/dma/pl330.c @@ -403,13 +404,15 @@ F: hw/intc/gic_internal.h F: hw/misc/a9scu.c F: hw/misc/arm11scu.c F: hw/timer/a9gtimer* -F: hw/timer/arm_* -F: include/hw/arm/arm.h +F: hw/timer/arm* +F: include/hw/arm/arm*.h F: include/hw/intc/arm* F: include/hw/misc/a9scu.h F: include/hw/misc/arm11scu.h F: include/hw/timer/a9gtimer.h F: include/hw/timer/arm_mptimer.h +F: include/hw/timer/armv7m_systick.h +F: tests/test-arm-mptimer.c Exynos M: Igor Mitsyanko @@ -512,6 +515,7 @@ M: Peter Maydell L: qemu-arm@nongnu.org S: Maintained F: hw/*/versatile* +F: hw/misc/arm_sysctl.c Xilinx Zynq M: Edgar E. Iglesias @@ -548,6 +552,7 @@ F: hw/char/stm32f2xx_usart.c F: hw/timer/stm32f2xx_timer.c F: hw/adc/* F: hw/ssi/stm32f2xx_spi.c +F: include/hw/*/stm32*.h Netduino 2 M: Alistair Francis @@ -925,6 +930,8 @@ F: include/hw/pci/* F: hw/misc/pci-testdev.c F: hw/pci/* F: hw/pci-bridge/* +F: docs/pci* +F: docs/specs/*pci* ACPI/SMBIOS M: Michael S. Tsirkin @@ -983,10 +990,13 @@ F: hw/scsi/lsi53c895a.c SSI M: Peter Crosthwaite +M: Alistair Francis S: Maintained F: hw/ssi/* F: hw/block/m25p80.c +F: include/hw/ssi/ssi.h X: hw/ssi/xilinx_* +F: tests/m25p80-test.c Xilinx SPI M: Alistair Francis @@ -1029,6 +1039,7 @@ vhost M: Michael S. Tsirkin S: Supported F: hw/*/*vhost* +F: docs/interop/vhost-user.txt virtio M: Michael S. Tsirkin @@ -1126,6 +1137,7 @@ M: Dmitry Fleytman S: Maintained F: hw/net/vmxnet* F: hw/scsi/vmw_pvscsi* +F: tests/vmxnet3-test.c Rocker M: Jiri Pirko @@ -1156,6 +1168,7 @@ M: Alistair Francis S: Maintained F: hw/core/generic-loader.c F: include/hw/core/generic-loader.h +F: docs/generic-loader.txt CHRP NVRAM M: Thomas Huth @@ -1217,6 +1230,7 @@ F: util/aio-*.c F: block/io.c F: migration/block* F: include/block/aio.h +F: scripts/qemugdb/aio.py T: git git://github.com/stefanha/qemu.git block Block SCSI subsystem @@ -1257,7 +1271,7 @@ F: block/dirty-bitmap.c F: include/qemu/hbitmap.h F: include/block/dirty-bitmap.h F: tests/test-hbitmap.c -F: docs/bitmaps.md +F: docs/interop/bitmaps.rst T: git git://github.com/famz/qemu.git bitmaps T: git git://github.com/jnsnow/qemu.git bitmaps @@ -1426,7 +1440,7 @@ F: tests/test-qapi-*.c F: tests/test-qmp-*.c F: tests/test-visitor-serialization.c F: scripts/qapi* -F: docs/qapi* +F: docs/devel/qapi* T: git git://repo.or.cz/qemu/armbru.git qapi-next QAPI Schema @@ -1455,6 +1469,10 @@ QEMU Guest Agent M: Michael Roth S: Maintained F: qga/ +F: qemu-ga.texi +F: scripts/qemu-guest-agent/ +F: tests/test-qga.c +F: docs/interop/qemu-ga-ref.texi T: git git://github.com/mdroth/qemu.git qga QOM @@ -1474,7 +1492,7 @@ M: Markus Armbruster S: Supported F: qmp.c F: monitor.c -F: docs/*qmp-* +F: docs/devel/*qmp-* F: scripts/qmp/ F: tests/qmp-test.c T: git git://repo.or.cz/qemu/armbru.git qapi-next @@ -1505,7 +1523,7 @@ S: Maintained F: trace/ F: scripts/tracetool.py F: scripts/tracetool/ -F: docs/tracing.txt +F: docs/devel/tracing.txt T: git git://github.com/stefanha/qemu.git tracing TPM @@ -1528,7 +1546,7 @@ F: include/migration/ F: migration/ F: scripts/vmstate-static-checker.py F: tests/vmstate-static-checker-data/ -F: docs/migration.txt +F: docs/devel/migration.txt F: qapi/migration.json Seccomp @@ -1543,6 +1561,7 @@ S: Maintained F: crypto/ F: include/crypto/ F: tests/test-crypto-* +F: tests/benchmark-crypto-* F: qemu.sasl Coroutines @@ -1579,8 +1598,10 @@ M: Alberto Garcia S: Supported F: block/throttle-groups.c F: include/block/throttle-groups.h -F: include/qemu/throttle.h +F: include/qemu/throttle*.h F: util/throttle.c +F: docs/throttle.txt +F: tests/test-throttle.c L: qemu-block@nongnu.org UUID @@ -1836,7 +1857,7 @@ M: Denis V. Lunev L: qemu-block@nongnu.org S: Supported F: block/parallels.c -F: docs/specs/parallels.txt +F: docs/interop/parallels.txt qed M: Stefan Hajnoczi @@ -1861,6 +1882,7 @@ M: Max Reitz L: qemu-block@nongnu.org S: Supported F: block/qcow2* +F: docs/interop/qcow2.txt qcow M: Kevin Wolf @@ -1923,5 +1945,5 @@ Documentation Build system architecture M: Daniel P. Berrange S: Odd Fixes -F: docs/build-system.txt +F: docs/devel/build-system.txt diff --git a/chardev/baum.c b/chardev/baum.c index 302dd9666c..67fd783a59 100644 --- a/chardev/baum.c +++ b/chardev/baum.c @@ -643,6 +643,7 @@ static void baum_chr_open(Chardev *chr, error_setg(errp, "brlapi__openConnection: %s", brlapi_strerror(brlapi_error_location())); g_free(handle); + baum->brlapi = NULL; return; } baum->deferred_init = 0; diff --git a/configure b/configure index 133a5757ef..7727f6ba5b 100755 --- a/configure +++ b/configure @@ -746,7 +746,6 @@ SunOS) solaris="yes" make="${MAKE-gmake}" install="${INSTALL-ginstall}" - ld="gld" smbd="${SMBD-/usr/sfw/sbin/smbd}" if test -f /usr/include/sys/soundcard.h ; then audio_drv_list="oss" @@ -4229,7 +4228,6 @@ EOF fi # check for smartcard support -smartcard_cflags="" if test "$smartcard" != "no"; then if $pkg_config libcacard; then libcacard_cflags=$($pkg_config --cflags libcacard) @@ -4425,6 +4423,18 @@ if compile_prog "" "" ; then posix_syslog=yes fi +########################################## +# check if we have sem_timedwait + +sem_timedwait=no +cat > $TMPC << EOF +#include +int main(void) { return sem_timedwait(0, 0); } +EOF +if compile_prog "" "" ; then + sem_timedwait=yes +fi + ########################################## # check if trace backend exists @@ -5679,6 +5689,9 @@ fi if test "$inotify1" = "yes" ; then echo "CONFIG_INOTIFY1=y" >> $config_host_mak fi +if test "$sem_timedwait" = "yes" ; then + echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak +fi if test "$byteswap_h" = "yes" ; then echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak fi diff --git a/docs/memory-hotplug.txt b/docs/memory-hotplug.txt index 56bdd0a47b..d96397c1af 100644 --- a/docs/memory-hotplug.txt +++ b/docs/memory-hotplug.txt @@ -24,7 +24,7 @@ Where, For example, the following command-line: - qemu [...] 1G,slots=3,maxmem=4G + qemu [...] -m 1G,slots=3,maxmem=4G Creates a guest with 1GB of memory and three hotpluggable memory slots. The hotpluggable memory slots are empty when the guest is booted, so all diff --git a/hw/display/trace-events b/hw/display/trace-events index ed8cca0755..da498c1def 100644 --- a/hw/display/trace-events +++ b/hw/display/trace-events @@ -6,6 +6,7 @@ jazz_led_write(uint64_t addr, uint8_t new) "write addr=0x%"PRIx64": 0x%x" # hw/display/xenfb.c xenfb_mouse_event(void *opaque, int dx, int dy, int dz, int button_state, int abs_pointer_wanted) "%p x %d y %d z %d bs 0x%x abs %d" +xenfb_key_event(void *opaque, int scancode, int button_state) "%p scancode %d bs 0x%x" xenfb_input_connected(void *xendev, int abs_pointer_wanted) "%p abs %d" # hw/display/g364fb.c diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c index 3a8f1e1a2d..6b5f119d96 100644 --- a/hw/display/virtio-gpu.c +++ b/hw/display/virtio-gpu.c @@ -1321,6 +1321,7 @@ static void virtio_gpu_class_init(ObjectClass *klass, void *data) vdc->reset = virtio_gpu_reset; + set_bit(DEVICE_CATEGORY_DISPLAY, dc->categories); dc->props = virtio_gpu_properties; dc->vmsd = &vmstate_virtio_gpu; dc->hotpluggable = false; diff --git a/hw/display/xenfb.c b/hw/display/xenfb.c index df8b78f6f4..8e2547ac05 100644 --- a/hw/display/xenfb.c +++ b/hw/display/xenfb.c @@ -290,6 +290,7 @@ static void xenfb_key_event(void *opaque, int scancode) scancode |= 0x80; xenfb->extended = 0; } + trace_xenfb_key_event(opaque, scancode2linux[scancode], down); xenfb_send_key(xenfb, down, scancode2linux[scancode]); } diff --git a/hw/isa/pc87312.c b/hw/isa/pc87312.c index 5ce9f0a062..48b29e3c3c 100644 --- a/hw/isa/pc87312.c +++ b/hw/isa/pc87312.c @@ -386,6 +386,8 @@ static void pc87312_class_init(ObjectClass *klass, void *data) dc->reset = pc87312_reset; dc->vmsd = &vmstate_pc87312; dc->props = pc87312_properties; + /* Reason: Uses parallel_hds[0] in realize(), so it can't be used twice */ + dc->user_creatable = false; } static const TypeInfo pc87312_type_info = { diff --git a/hw/misc/auxbus.c b/hw/misc/auxbus.c index 8a90ddda84..1182745044 100644 --- a/hw/misc/auxbus.c +++ b/hw/misc/auxbus.c @@ -210,6 +210,16 @@ struct AUXTOI2CState { I2CBus *i2c_bus; }; +static void aux_bridge_class_init(ObjectClass *oc, void *data) +{ + DeviceClass *dc = DEVICE_CLASS(oc); + + /* This device is private and is created only once for each + * aux-bus in aux_init_bus(..). So don't allow the user to add one. + */ + dc->user_creatable = false; +} + static void aux_bridge_init(Object *obj) { AUXTOI2CState *s = AUXTOI2C(obj); @@ -225,6 +235,7 @@ static inline I2CBus *aux_bridge_get_i2c_bus(AUXTOI2CState *bridge) static const TypeInfo aux_to_i2c_type_info = { .name = TYPE_AUXTOI2C, .parent = TYPE_DEVICE, + .class_init = aux_bridge_class_init, .instance_size = sizeof(AUXTOI2CState), .instance_init = aux_bridge_init }; diff --git a/hw/ppc/mac_newworld.c b/hw/ppc/mac_newworld.c index 33b46cb50b..d013c412d6 100644 --- a/hw/ppc/mac_newworld.c +++ b/hw/ppc/mac_newworld.c @@ -124,11 +124,6 @@ static uint64_t translate_kernel_address(void *opaque, uint64_t addr) return (addr & 0x0fffffff) + KERNEL_LOAD_ADDR; } -static hwaddr round_page(hwaddr addr) -{ - return (addr + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK; -} - static void ppc_core99_reset(void *opaque) { PowerPCCPU *cpu = opaque; @@ -252,7 +247,7 @@ static void ppc_core99_init(MachineState *machine) } /* load initrd */ if (initrd_filename) { - initrd_base = round_page(kernel_base + kernel_size + KERNEL_GAP); + initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP); initrd_size = load_image_targphys(initrd_filename, initrd_base, ram_size - initrd_base); if (initrd_size < 0) { @@ -260,11 +255,11 @@ static void ppc_core99_init(MachineState *machine) initrd_filename); exit(1); } - cmdline_base = round_page(initrd_base + initrd_size); + cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size); } else { initrd_base = 0; initrd_size = 0; - cmdline_base = round_page(kernel_base + kernel_size + KERNEL_GAP); + cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP); } ppc_boot_device = 'm'; } else { diff --git a/hw/ppc/mac_oldworld.c b/hw/ppc/mac_oldworld.c index 193b9047d9..61838c3e6f 100644 --- a/hw/ppc/mac_oldworld.c +++ b/hw/ppc/mac_oldworld.c @@ -66,11 +66,6 @@ static uint64_t translate_kernel_address(void *opaque, uint64_t addr) return (addr & 0x0fffffff) + KERNEL_LOAD_ADDR; } -static hwaddr round_page(hwaddr addr) -{ - return (addr + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK; -} - static void ppc_heathrow_reset(void *opaque) { PowerPCCPU *cpu = opaque; @@ -187,7 +182,7 @@ static void ppc_heathrow_init(MachineState *machine) } /* load initrd */ if (initrd_filename) { - initrd_base = round_page(kernel_base + kernel_size + KERNEL_GAP); + initrd_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP); initrd_size = load_image_targphys(initrd_filename, initrd_base, ram_size - initrd_base); if (initrd_size < 0) { @@ -195,11 +190,11 @@ static void ppc_heathrow_init(MachineState *machine) initrd_filename); exit(1); } - cmdline_base = round_page(initrd_base + initrd_size); + cmdline_base = TARGET_PAGE_ALIGN(initrd_base + initrd_size); } else { initrd_base = 0; initrd_size = 0; - cmdline_base = round_page(kernel_base + kernel_size + KERNEL_GAP); + cmdline_base = TARGET_PAGE_ALIGN(kernel_base + kernel_size + KERNEL_GAP); } ppc_boot_device = 'm'; } else { diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h index 72b75bf044..9dd318a7dd 100644 --- a/include/qemu/osdep.h +++ b/include/qemu/osdep.h @@ -205,13 +205,13 @@ extern int daemon(int, int); /* Round number up to multiple. Requires that d be a power of 2 (see * QEMU_ALIGN_UP for a safer but slower version on arbitrary - * numbers) */ + * numbers); works even if d is a smaller type than n. */ #ifndef ROUND_UP -#define ROUND_UP(n,d) (((n) + (d) - 1) & -(d)) +#define ROUND_UP(n, d) (((n) + (d) - 1) & -(0 ? (n) : (d))) #endif #ifndef DIV_ROUND_UP -#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) +#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d)) #endif /* diff --git a/include/qemu/thread-posix.h b/include/qemu/thread-posix.h index e5e3a0ff97..f4296d31c4 100644 --- a/include/qemu/thread-posix.h +++ b/include/qemu/thread-posix.h @@ -21,7 +21,7 @@ struct QemuCond { }; struct QemuSemaphore { -#if defined(__APPLE__) || defined(__NetBSD__) +#ifndef CONFIG_SEM_TIMEDWAIT pthread_mutex_t lock; pthread_cond_t cond; unsigned int count; diff --git a/qemu-options.hx b/qemu-options.hx index 77859a248c..39225ae6c3 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -284,8 +284,8 @@ Set default value of @var{driver}'s property @var{prop} to @var{value}, e.g.: qemu-system-i386 -global ide-hd.physical_block_size=4096 disk-image.img @end example -In particular, you can use this to set driver properties for devices which are -created automatically by the machine model. To create a device which is not +In particular, you can use this to set driver properties for devices which are +created automatically by the machine model. To create a device which is not created automatically and set properties on it, use -@option{device}. -global @var{driver}.@var{prop}=@var{value} is shorthand for -global diff --git a/target/xtensa/op_helper.c b/target/xtensa/op_helper.c index 519fbeddd6..3d990c0caa 100644 --- a/target/xtensa/op_helper.c +++ b/target/xtensa/op_helper.c @@ -1025,11 +1025,11 @@ void HELPER(ule_s)(CPUXtensaState *env, uint32_t br, float32 a, float32 b) uint32_t HELPER(rer)(CPUXtensaState *env, uint32_t addr) { return address_space_ldl(env->address_space_er, addr, - (MemTxAttrs){0}, NULL); + MEMTXATTRS_UNSPECIFIED, NULL); } void HELPER(wer)(CPUXtensaState *env, uint32_t data, uint32_t addr) { address_space_stl(env->address_space_er, addr, data, - (MemTxAttrs){0}, NULL); + MEMTXATTRS_UNSPECIFIED, NULL); } diff --git a/tests/boot-sector.c b/tests/boot-sector.c index 9ee85370b0..be29d5bb9b 100644 --- a/tests/boot-sector.c +++ b/tests/boot-sector.c @@ -137,9 +137,9 @@ void boot_sector_test(void) uint16_t signature; int i; - /* Wait at most 90 seconds */ + /* Wait at most 600 seconds (test is slow with TCI and --enable-debug) */ #define TEST_DELAY (1 * G_USEC_PER_SEC / 10) -#define TEST_CYCLES MAX((90 * G_USEC_PER_SEC / TEST_DELAY), 1) +#define TEST_CYCLES MAX((600 * G_USEC_PER_SEC / TEST_DELAY), 1) /* Poll until code has run and modified memory. Once it has we know BIOS * initialization is done. TODO: check that IP reached the halt diff --git a/util/qemu-thread-posix.c b/util/qemu-thread-posix.c index 4e95d272dc..7306475899 100644 --- a/util/qemu-thread-posix.c +++ b/util/qemu-thread-posix.c @@ -168,7 +168,7 @@ void qemu_sem_init(QemuSemaphore *sem, int init) { int rc; -#if defined(__APPLE__) || defined(__NetBSD__) +#ifndef CONFIG_SEM_TIMEDWAIT rc = pthread_mutex_init(&sem->lock, NULL); if (rc != 0) { error_exit(rc, __func__); @@ -196,7 +196,7 @@ void qemu_sem_destroy(QemuSemaphore *sem) assert(sem->initialized); sem->initialized = false; -#if defined(__APPLE__) || defined(__NetBSD__) +#ifndef CONFIG_SEM_TIMEDWAIT rc = pthread_cond_destroy(&sem->cond); if (rc < 0) { error_exit(rc, __func__); @@ -218,7 +218,7 @@ void qemu_sem_post(QemuSemaphore *sem) int rc; assert(sem->initialized); -#if defined(__APPLE__) || defined(__NetBSD__) +#ifndef CONFIG_SEM_TIMEDWAIT pthread_mutex_lock(&sem->lock); if (sem->count == UINT_MAX) { rc = EINVAL; @@ -256,7 +256,7 @@ int qemu_sem_timedwait(QemuSemaphore *sem, int ms) struct timespec ts; assert(sem->initialized); -#if defined(__APPLE__) || defined(__NetBSD__) +#ifndef CONFIG_SEM_TIMEDWAIT rc = 0; compute_abs_deadline(&ts, ms); pthread_mutex_lock(&sem->lock); @@ -304,7 +304,7 @@ void qemu_sem_wait(QemuSemaphore *sem) int rc; assert(sem->initialized); -#if defined(__APPLE__) || defined(__NetBSD__) +#ifndef CONFIG_SEM_TIMEDWAIT pthread_mutex_lock(&sem->lock); while (sem->count == 0) { rc = pthread_cond_wait(&sem->cond, &sem->lock);