configure | 30 ++++++++---------------------- hw/display/qxl.c | 11 +++++++++++ hw/timer/i8254_common.c | 2 +- target/s390x/kvm.c | 3 +++ tests/test-qga.c | 6 ++++++ 5 files changed, 29 insertions(+), 23 deletions(-) diff --git a/configure b/configure index be4d326..7a02e4c 100755 --- a/configure +++ b/configure @@ -3215,7 +3215,11 @@ fi ########################################## # pthread probe -PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" +# use explicitly -lpthread +# instead of -pthread +# to link thread library before -lc + +PTHREADLIBS_LIST="-lpthread -lpthreadGC2" pthread=no cat > $TMPC << EOF @@ -4066,27 +4070,9 @@ else fi ########################################## -# Do we need librt -# uClibc provides 2 versions of clock_gettime(), one with realtime -# support and one without. This means that the clock_gettime() don't -# need -lrt. We still need it for timer_create() so we check for this -# function in addition. -cat > $TMPC < -#include -int main(void) { - timer_create(CLOCK_REALTIME, NULL, NULL); - return clock_gettime(CLOCK_REALTIME, NULL); -} -EOF - -if compile_prog "" "" ; then - : -# we need pthread for static linking. use previous pthread test result -elif compile_prog "" "$pthread_lib -lrt" ; then - LIBS="$LIBS -lrt" - libs_qga="$libs_qga -lrt" -fi +# We need librt +LIBS="$LIBS -lrt" +libs_qga="$libs_qga -lrt" if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ "$aix" != "yes" -a "$haiku" != "yes" ; then diff --git a/hw/display/qxl.c b/hw/display/qxl.c index 9feae78..03af01f 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -32,6 +32,17 @@ #include "qxl.h" /* + * SPICE defines memory barriers only for x86 arches + * reuse definitions from qemu/atomic.h on arm + */ +#if defined(__arm__) +#if defined(spice_mb) +#undef spice_mb +#define spice_mb() smp_mb() +#endif +#endif + +/* * NOTE: SPICE_RING_PROD_ITEM accesses memory on the pci bar and as * such can be changed by the guest, so to avoid a guest trigerrable * abort we just qxl_set_guest_bug and set the return to NULL. Still diff --git a/hw/timer/i8254_common.c b/hw/timer/i8254_common.c index e18299a..b517b85 100644 --- a/hw/timer/i8254_common.c +++ b/hw/timer/i8254_common.c @@ -267,7 +267,7 @@ static const VMStateDescription vmstate_pit_common = { .pre_save = pit_dispatch_pre_save, .post_load = pit_dispatch_post_load, .fields = (VMStateField[]) { - VMSTATE_UINT32_V(channels[0].irq_disabled, PITCommonState, 3), + VMSTATE_UINT32(channels[0].irq_disabled, PITCommonState), VMSTATE_STRUCT_ARRAY(channels, PITCommonState, 3, 2, vmstate_pit_channel, PITChannelState), VMSTATE_INT64(channels[0].next_transition_time, diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index ac47154..3f9f04e 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -2186,6 +2186,9 @@ void kvm_s390_crw_mchk(void) .u.mchk.cr14 = 1 << 28, .u.mchk.mcic = build_channel_report_mcic(), }; + if (kvm_check_extension(kvm_state, KVM_CAP_S390_VECTOR_REGISTERS)) { + irq.u.mchk.mcic |= 0x0000004000000000ULL; + } kvm_s390_floating_interrupt(&irq); } diff --git a/tests/test-qga.c b/tests/test-qga.c index c780f00..f7caebd 100644 --- a/tests/test-qga.c +++ b/tests/test-qga.c @@ -927,7 +927,10 @@ int main(int argc, char **argv) if (!access("/sys/devices/system/cpu/cpu0", F_OK)) { g_test_add_data_func("/qga/get-vcpus", &fix, test_qga_get_vcpus); } + /* g_test_add_data_func("/qga/get-fsinfo", &fix, test_qga_get_fsinfo); + */ + g_test_add_data_func("/qga/get-memory-block-info", &fix, test_qga_get_memory_block_info); g_test_add_data_func("/qga/get-memory-blocks", &fix, @@ -940,7 +943,10 @@ int main(int argc, char **argv) g_test_add_data_func("/qga/fsfreeze-status", &fix, test_qga_fsfreeze_status); + /* g_test_add_data_func("/qga/blacklist", NULL, test_qga_blacklist); + */ + g_test_add_data_func("/qga/config", NULL, test_qga_config); g_test_add_data_func("/qga/guest-exec", &fix, test_qga_guest_exec); g_test_add_data_func("/qga/guest-exec-invalid", &fix,