* [PULL 09/87] target/i386: support KVM_FEATURE_ASYNC_PF_INT
2020-09-25 19:47 [PULL v6 00/87] Misc patches for 2020-09-24 Paolo Bonzini
@ 2020-09-25 19:47 ` Paolo Bonzini
2020-09-25 19:47 ` [PULL 29/87] meson: move libudev test Paolo Bonzini
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Paolo Bonzini @ 2020-09-25 19:47 UTC (permalink / raw)
To: qemu-devel; +Cc: Vitaly Kuznetsov
From: Vitaly Kuznetsov <vkuznets@redhat.com>
Linux-5.8 introduced interrupt based mechanism for 'page ready' events
delivery and disabled the old, #PF based one (see commit 2635b5c4a0e4
"KVM: x86: interrupt based APF 'page ready' event delivery"). Linux
guest switches to using in in 5.9 (see commit b1d405751cd5 "KVM: x86:
Switch KVM guest to using interrupts for page ready APF delivery").
The feature has a new KVM_FEATURE_ASYNC_PF_INT bit assigned and
the interrupt vector is set in MSR_KVM_ASYNC_PF_INT MSR. Support this
in QEMU.
Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Message-Id: <20200908141206.357450-1-vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
target/i386/cpu.c | 3 ++-
target/i386/cpu.h | 1 +
target/i386/kvm.c | 10 ++++++++++
target/i386/machine.c | 19 +++++++++++++++++++
4 files changed, 32 insertions(+), 1 deletion(-)
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index 3ffd877dd5..0ea0630e1f 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -799,7 +799,7 @@ static FeatureWordInfo feature_word_info[FEATURE_WORDS] = {
"kvmclock", "kvm-nopiodelay", "kvm-mmu", "kvmclock",
"kvm-asyncpf", "kvm-steal-time", "kvm-pv-eoi", "kvm-pv-unhalt",
NULL, "kvm-pv-tlb-flush", NULL, "kvm-pv-ipi",
- "kvm-poll-control", "kvm-pv-sched-yield", NULL, NULL,
+ "kvm-poll-control", "kvm-pv-sched-yield", "kvm-asyncpf-int", NULL,
NULL, NULL, NULL, NULL,
NULL, NULL, NULL, NULL,
"kvmclock-stable-bit", NULL, NULL, NULL,
@@ -6988,6 +6988,7 @@ static void x86_cpu_initfn(Object *obj)
object_property_add_alias(obj, "kvm_nopiodelay", obj, "kvm-nopiodelay");
object_property_add_alias(obj, "kvm_mmu", obj, "kvm-mmu");
object_property_add_alias(obj, "kvm_asyncpf", obj, "kvm-asyncpf");
+ object_property_add_alias(obj, "kvm_asyncpf_int", obj, "kvm-asyncpf-int");
object_property_add_alias(obj, "kvm_steal_time", obj, "kvm-steal-time");
object_property_add_alias(obj, "kvm_pv_eoi", obj, "kvm-pv-eoi");
object_property_add_alias(obj, "kvm_pv_unhalt", obj, "kvm-pv-unhalt");
diff --git a/target/i386/cpu.h b/target/i386/cpu.h
index f519d2bfd4..51c1d5f60a 100644
--- a/target/i386/cpu.h
+++ b/target/i386/cpu.h
@@ -1492,6 +1492,7 @@ typedef struct CPUX86State {
uint64_t wall_clock_msr;
uint64_t steal_time_msr;
uint64_t async_pf_en_msr;
+ uint64_t async_pf_int_msr;
uint64_t pv_eoi_en_msr;
uint64_t poll_control_msr;
diff --git a/target/i386/kvm.c b/target/i386/kvm.c
index 9efb07e7c8..06c2025c67 100644
--- a/target/i386/kvm.c
+++ b/target/i386/kvm.c
@@ -287,6 +287,7 @@ static const struct kvm_para_features {
{ KVM_CAP_NOP_IO_DELAY, KVM_FEATURE_NOP_IO_DELAY },
{ KVM_CAP_PV_MMU, KVM_FEATURE_MMU_OP },
{ KVM_CAP_ASYNC_PF, KVM_FEATURE_ASYNC_PF },
+ { KVM_CAP_ASYNC_PF_INT, KVM_FEATURE_ASYNC_PF_INT },
};
static int get_para_features(KVMState *s)
@@ -2821,6 +2822,9 @@ static int kvm_put_msrs(X86CPU *cpu, int level)
if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_ASYNC_PF)) {
kvm_msr_entry_add(cpu, MSR_KVM_ASYNC_PF_EN, env->async_pf_en_msr);
}
+ if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_ASYNC_PF_INT)) {
+ kvm_msr_entry_add(cpu, MSR_KVM_ASYNC_PF_EN, env->async_pf_int_msr);
+ }
if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_PV_EOI)) {
kvm_msr_entry_add(cpu, MSR_KVM_PV_EOI_EN, env->pv_eoi_en_msr);
}
@@ -3206,6 +3210,9 @@ static int kvm_get_msrs(X86CPU *cpu)
if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_ASYNC_PF)) {
kvm_msr_entry_add(cpu, MSR_KVM_ASYNC_PF_EN, 0);
}
+ if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_ASYNC_PF_INT)) {
+ kvm_msr_entry_add(cpu, MSR_KVM_ASYNC_PF_INT, 0);
+ }
if (env->features[FEAT_KVM] & (1 << KVM_FEATURE_PV_EOI)) {
kvm_msr_entry_add(cpu, MSR_KVM_PV_EOI_EN, 0);
}
@@ -3446,6 +3453,9 @@ static int kvm_get_msrs(X86CPU *cpu)
case MSR_KVM_ASYNC_PF_EN:
env->async_pf_en_msr = msrs[i].data;
break;
+ case MSR_KVM_ASYNC_PF_INT:
+ env->async_pf_int_msr = msrs[i].data;
+ break;
case MSR_KVM_PV_EOI_EN:
env->pv_eoi_en_msr = msrs[i].data;
break;
diff --git a/target/i386/machine.c b/target/i386/machine.c
index b1acf7d0ef..233e46bb70 100644
--- a/target/i386/machine.c
+++ b/target/i386/machine.c
@@ -394,6 +394,13 @@ static bool async_pf_msr_needed(void *opaque)
return cpu->env.async_pf_en_msr != 0;
}
+static bool async_pf_int_msr_needed(void *opaque)
+{
+ X86CPU *cpu = opaque;
+
+ return cpu->env.async_pf_int_msr != 0;
+}
+
static bool pv_eoi_msr_needed(void *opaque)
{
X86CPU *cpu = opaque;
@@ -467,6 +474,17 @@ static const VMStateDescription vmstate_async_pf_msr = {
}
};
+static const VMStateDescription vmstate_async_pf_int_msr = {
+ .name = "cpu/async_pf_int_msr",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .needed = async_pf_int_msr_needed,
+ .fields = (VMStateField[]) {
+ VMSTATE_UINT64(env.async_pf_int_msr, X86CPU),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
static const VMStateDescription vmstate_pv_eoi_msr = {
.name = "cpu/async_pv_eoi_msr",
.version_id = 1,
@@ -1438,6 +1456,7 @@ VMStateDescription vmstate_x86_cpu = {
.subsections = (const VMStateDescription*[]) {
&vmstate_exception_info,
&vmstate_async_pf_msr,
+ &vmstate_async_pf_int_msr,
&vmstate_pv_eoi_msr,
&vmstate_steal_time_msr,
&vmstate_poll_control_msr,
--
2.26.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PULL 29/87] meson: move libudev test
2020-09-25 19:47 [PULL v6 00/87] Misc patches for 2020-09-24 Paolo Bonzini
2020-09-25 19:47 ` [PULL 09/87] target/i386: support KVM_FEATURE_ASYNC_PF_INT Paolo Bonzini
@ 2020-09-25 19:47 ` Paolo Bonzini
2020-09-25 19:47 ` [PULL 30/87] meson: move libmpathpersist test Paolo Bonzini
2020-09-25 22:04 ` [PULL v6 00/87] Misc patches for 2020-09-24 Peter Maydell
3 siblings, 0 replies; 5+ messages in thread
From: Paolo Bonzini @ 2020-09-25 19:47 UTC (permalink / raw)
To: qemu-devel
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 14 --------------
meson.build | 7 ++++---
2 files changed, 4 insertions(+), 17 deletions(-)
diff --git a/configure b/configure
index 01fce2e94b..c05d1a04e9 100755
--- a/configure
+++ b/configure
@@ -908,7 +908,6 @@ Linux)
linux_user="yes"
kvm="yes"
QEMU_INCLUDES="-isystem ${source_path}/linux-headers -Ilinux-headers $QEMU_INCLUDES"
- libudev="yes"
;;
esac
@@ -6286,15 +6285,6 @@ if test "$libnfs" != "no" ; then
fi
##########################################
-# Do we have libudev
-if test "$libudev" != "no" ; then
- if $pkg_config libudev && test "$static" != "yes"; then
- libudev="yes"
- libudev_libs=$($pkg_config --libs libudev)
- else
- libudev="no"
- fi
-fi
# Exclude --warn-common with TSan to suppress warnings from the TSan libraries.
if test "$solaris" = "no" && test "$tsan" = "no"; then
@@ -7463,10 +7453,6 @@ if test "$gcov" = "yes" ; then
echo "CONFIG_GCOV=y" >> $config_host_mak
fi
-if test "$libudev" != "no"; then
- echo "CONFIG_LIBUDEV=y" >> $config_host_mak
- echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak
-fi
if test "$fuzzing" != "no"; then
echo "CONFIG_FUZZ=y" >> $config_host_mak
fi
diff --git a/meson.build b/meson.build
index c48ca0d12a..81cd09d224 100644
--- a/meson.build
+++ b/meson.build
@@ -257,8 +257,8 @@ if 'CONFIG_CURL' in config_host
link_args: config_host['CURL_LIBS'].split())
endif
libudev = not_found
-if 'CONFIG_LIBUDEV' in config_host
- libudev = declare_dependency(link_args: config_host['LIBUDEV_LIBS'].split())
+if target_os == 'linux' and (have_softmmu or have_tools)
+ libudev = dependency('libudev', static: enable_static)
endif
brlapi = not_found
if 'CONFIG_BRLAPI' in config_host
@@ -440,6 +440,7 @@ has_gettid = cc.has_function('gettid')
# Create config-host.h
+config_host_data.set('CONFIG_LIBUDEV', libudev.found())
config_host_data.set('CONFIG_SDL', sdl.found())
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
config_host_data.set('CONFIG_VNC', vnc.found())
@@ -1520,7 +1521,7 @@ summary_info += {'sheepdog support': config_host.has_key('CONFIG_SHEEPDOG')}
summary_info += {'capstone': config_host.has_key('CONFIG_CAPSTONE')}
summary_info += {'libpmem support': config_host.has_key('CONFIG_LIBPMEM')}
summary_info += {'libdaxctl support': config_host.has_key('CONFIG_LIBDAXCTL')}
-summary_info += {'libudev': config_host.has_key('CONFIG_LIBUDEV')}
+summary_info += {'libudev': libudev.found()}
summary_info += {'default devices': config_host['CONFIG_MINIKCONF_MODE'] == '--defconfig'}
summary_info += {'plugin support': config_host.has_key('CONFIG_PLUGIN')}
summary_info += {'fuzzing support': config_host.has_key('CONFIG_FUZZ')}
--
2.26.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PULL 30/87] meson: move libmpathpersist test
2020-09-25 19:47 [PULL v6 00/87] Misc patches for 2020-09-24 Paolo Bonzini
2020-09-25 19:47 ` [PULL 09/87] target/i386: support KVM_FEATURE_ASYNC_PF_INT Paolo Bonzini
2020-09-25 19:47 ` [PULL 29/87] meson: move libudev test Paolo Bonzini
@ 2020-09-25 19:47 ` Paolo Bonzini
2020-09-25 22:04 ` [PULL v6 00/87] Misc patches for 2020-09-24 Peter Maydell
3 siblings, 0 replies; 5+ messages in thread
From: Paolo Bonzini @ 2020-09-25 19:47 UTC (permalink / raw)
To: qemu-devel
This is the first compiler/linker test that has been moved to Meson.
Add more section headings to keep things clearer.
This also fixes static linking to libmpathpersist, which has a
dependency on libmultipath but no pkg-config file to describe it.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
configure | 77 +++-----------------------------------------
meson.build | 81 +++++++++++++++++++++++++++++++++++++++++++----
meson_options.txt | 2 ++
3 files changed, 80 insertions(+), 80 deletions(-)
diff --git a/configure b/configure
index c05d1a04e9..6cffe0fde8 100755
--- a/configure
+++ b/configure
@@ -403,7 +403,7 @@ netmap="no"
sdl="auto"
sdl_image="auto"
virtfs=""
-mpath=""
+mpath="auto"
vnc="enabled"
sparse="no"
vde=""
@@ -1116,9 +1116,9 @@ for opt do
;;
--enable-virtfs) virtfs="yes"
;;
- --disable-mpath) mpath="no"
+ --disable-mpath) mpath="disabled"
;;
- --enable-mpath) mpath="yes"
+ --enable-mpath) mpath="enabled"
;;
--disable-vnc) vnc="disabled"
;;
@@ -3851,57 +3851,6 @@ if test "$modules" = yes; then
fi
fi
-##########################################
-# libmpathpersist probe
-
-if test "$mpath" != "no" ; then
- # probe for the new API
- cat > $TMPC <<EOF
-#include <libudev.h>
-#include <mpath_persist.h>
-unsigned mpath_mx_alloc_len = 1024;
-int logsink;
-static struct config *multipath_conf;
-extern struct udev *udev;
-extern struct config *get_multipath_config(void);
-extern void put_multipath_config(struct config *conf);
-struct udev *udev;
-struct config *get_multipath_config(void) { return multipath_conf; }
-void put_multipath_config(struct config *conf) { }
-
-int main(void) {
- udev = udev_new();
- multipath_conf = mpath_lib_init();
- return 0;
-}
-EOF
- if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
- mpathpersist=yes
- mpathpersist_new_api=yes
- else
- # probe for the old API
- cat > $TMPC <<EOF
-#include <libudev.h>
-#include <mpath_persist.h>
-unsigned mpath_mx_alloc_len = 1024;
-int logsink;
-int main(void) {
- struct udev *udev = udev_new();
- mpath_lib_init(udev);
- return 0;
-}
-EOF
- if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then
- mpathpersist=yes
- mpathpersist_new_api=no
- else
- mpathpersist=no
- fi
- fi
-else
- mpathpersist=no
-fi
-
##########################################
# pthread probe
PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
@@ -6343,23 +6292,11 @@ if test "$softmmu" = yes ; then
fi
virtfs=no
fi
- if test "$mpath" != no && test "$mpathpersist" = yes ; then
- mpath=yes
- else
- if test "$mpath" = yes; then
- error_exit "Multipath requires libmpathpersist devel"
- fi
- mpath=no
- fi
else
if test "$virtfs" = yes; then
error_exit "VirtFS is supported only on Linux"
fi
virtfs=no
- if test "$mpath" = yes; then
- error_exit "Multipath is supported only on Linux"
- fi
- mpath=no
fi
fi
@@ -6900,12 +6837,6 @@ fi
if test "$virtfs" = "yes" ; then
echo "CONFIG_VIRTFS=y" >> $config_host_mak
fi
-if test "$mpath" = "yes" ; then
- echo "CONFIG_MPATH=y" >> $config_host_mak
- if test "$mpathpersist_new_api" = "yes"; then
- echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak
- fi
-fi
if test "$vhost_scsi" = "yes" ; then
echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
fi
@@ -7995,7 +7926,7 @@ NINJA=${ninja:-$PWD/ninjatool} $meson setup \
-Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \
-Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \
-Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \
- -Dsdl=$sdl -Dsdl_image=$sdl_image \
+ -Dmpath=$mpath -Dsdl=$sdl -Dsdl_image=$sdl_image \
-Dvnc=$vnc -Dvnc_sasl=$vnc_sasl -Dvnc_jpeg=$vnc_jpeg -Dvnc_png=$vnc_png \
-Dgettext=$gettext -Dxkbcommon=$xkbcommon -Du2f=$u2f\
$cross_arg \
diff --git a/meson.build b/meson.build
index 81cd09d224..2497d37627 100644
--- a/meson.build
+++ b/meson.build
@@ -86,6 +86,14 @@ if 'SPARSE_CFLAGS' in config_host
'compile_commands.json'])
endif
+###########################################
+# Target-specific checks and dependencies #
+###########################################
+
+if targetos != 'linux' and get_option('mpath').enabled()
+ error('Multipath is supported only on Linux')
+endif
+
m = cc.find_library('m', required: false)
util = cc.find_library('util', required: false)
winmm = []
@@ -117,6 +125,11 @@ elif targetos == 'haiku'
cc.find_library('network'),
cc.find_library('bsd')]
endif
+
+################
+# Dependencies #
+################
+
# The path to glib.h is added to all compilation commands. This was
# grandfathered in from the QEMU Makefiles.
add_project_arguments(config_host['GLIB_CFLAGS'].split(),
@@ -223,10 +236,6 @@ if 'CONFIG_SPICE' in config_host
link_args: config_host['SPICE_LIBS'].split())
endif
rt = cc.find_library('rt', required: false)
-libmpathpersist = not_found
-if config_host.has_key('CONFIG_MPATH')
- libmpathpersist = cc.find_library('mpathpersist')
-endif
libdl = not_found
if 'CONFIG_PLUGIN' in config_host
libdl = cc.find_library('dl', required: true)
@@ -258,8 +267,64 @@ if 'CONFIG_CURL' in config_host
endif
libudev = not_found
if target_os == 'linux' and (have_softmmu or have_tools)
- libudev = dependency('libudev', static: enable_static)
+ libudev = dependency('libudev',
+ required: get_option('mpath').enabled(),
+ static: enable_static)
+endif
+
+mpathpersist = not_found
+mpathpersist_new_api = false
+if targetos == 'linux' and have_tools and not get_option('mpath').disabled()
+ mpath_test_source_new = '''
+ #include <libudev.h>
+ #include <mpath_persist.h>
+ unsigned mpath_mx_alloc_len = 1024;
+ int logsink;
+ static struct config *multipath_conf;
+ extern struct udev *udev;
+ extern struct config *get_multipath_config(void);
+ extern void put_multipath_config(struct config *conf);
+ struct udev *udev;
+ struct config *get_multipath_config(void) { return multipath_conf; }
+ void put_multipath_config(struct config *conf) { }
+ int main(void) {
+ udev = udev_new();
+ multipath_conf = mpath_lib_init();
+ return 0;
+ }'''
+ mpath_test_source_old = '''
+ #include <libudev.h>
+ #include <mpath_persist.h>
+ unsigned mpath_mx_alloc_len = 1024;
+ int logsink;
+ int main(void) {
+ struct udev *udev = udev_new();
+ mpath_lib_init(udev);
+ return 0;
+ }'''
+ libmultipath = cc.find_library('multipath',
+ required: get_option('mpath'),
+ static: enable_static)
+ libmpathpersist = cc.find_library('mpathpersist',
+ required: get_option('mpath'),
+ static: enable_static)
+ if libmultipath.found() and libmpathpersist.found() and libudev.found()
+ mpathlibs = [libmultipath, libmpathpersist, libudev]
+ if cc.links(mpath_test_source_new, dependencies: mpathlibs)
+ mpathpersist = declare_dependency(dependencies: mpathlibs)
+ mpathpersist_new_api = true
+ elif cc.links(mpath_test_source_old, dependencies: mpathlibs)
+ mpathpersist = declare_dependency(dependencies: mpathlibs)
+ else
+ if get_option('mpath').enabled()
+ error('Cannot detect libmpathpersist API')
+ else
+ warning('Cannot detect libmpathpersist API, disabling')
+ endif
+ endif
+ endif
endif
+
brlapi = not_found
if 'CONFIG_BRLAPI' in config_host
brlapi = declare_dependency(link_args: config_host['BRLAPI_LIBS'].split())
@@ -441,6 +506,8 @@ has_gettid = cc.has_function('gettid')
# Create config-host.h
config_host_data.set('CONFIG_LIBUDEV', libudev.found())
+config_host_data.set('CONFIG_MPATH', mpathpersist.found())
+config_host_data.set('CONFIG_MPATH_NEW_API', mpathpersist_new_api)
config_host_data.set('CONFIG_SDL', sdl.found())
config_host_data.set('CONFIG_SDL_IMAGE', sdl_image.found())
config_host_data.set('CONFIG_VNC', vnc.found())
@@ -1190,7 +1257,7 @@ if have_tools
executable('qemu-pr-helper', files('scsi/qemu-pr-helper.c', 'scsi/utils.c'),
dependencies: [authz, crypto, io, qom, qemuutil,
- libcap_ng, libudev, libmpathpersist],
+ libcap_ng, mpathpersist],
install: true)
endif
@@ -1412,7 +1479,7 @@ summary_info += {'Audio drivers': config_host['CONFIG_AUDIO_DRIVERS']}
summary_info += {'Block whitelist (rw)': config_host['CONFIG_BDRV_RW_WHITELIST']}
summary_info += {'Block whitelist (ro)': config_host['CONFIG_BDRV_RO_WHITELIST']}
summary_info += {'VirtFS support': config_host.has_key('CONFIG_VIRTFS')}
-summary_info += {'Multipath support': config_host.has_key('CONFIG_MPATH')}
+summary_info += {'Multipath support': mpathpersist.found()}
summary_info += {'VNC support': vnc.found()}
if vnc.found()
summary_info += {'VNC SASL support': sasl.found()}
diff --git a/meson_options.txt b/meson_options.txt
index 543cf70043..b38a6ae92a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -6,6 +6,8 @@ option('docdir', type : 'string', value : 'doc',
option('gettext', type : 'boolean', value : true,
description: 'Localization of the GTK+ user interface')
+option('mpath', type : 'feature', value : 'auto',
+ description: 'Multipath persistent reservation passthrough')
option('sdl', type : 'feature', value : 'auto',
description: 'SDL user interface')
option('sdl_image', type : 'feature', value : 'auto',
--
2.26.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PULL v6 00/87] Misc patches for 2020-09-24
2020-09-25 19:47 [PULL v6 00/87] Misc patches for 2020-09-24 Paolo Bonzini
` (2 preceding siblings ...)
2020-09-25 19:47 ` [PULL 30/87] meson: move libmpathpersist test Paolo Bonzini
@ 2020-09-25 22:04 ` Peter Maydell
3 siblings, 0 replies; 5+ messages in thread
From: Peter Maydell @ 2020-09-25 22:04 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: QEMU Developers
On Fri, 25 Sep 2020 at 20:51, Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> The following changes since commit 8c1c07929feae876202ba26f07a540c5115c18cd:
>
> Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into staging (2020-09-24 18:48:45 +0100)
>
> are available in the Git repository at:
>
> https://gitlab.com/bonzini/qemu.git tags/for-upstream
>
> for you to fetch changes up to f19fc40acf2a4481f56165228f788f322d947f60:
>
> hw/net/can: Correct Kconfig dependencies (2020-09-25 15:21:30 -0400)
>
> ----------------------------------------------------------------
> * SCSI fix (Dmitry, Li Feng, Li Qiang)
> * memory API fixes (Eduardo)
> * removal of deprecated '-numa node', 'cpu-add', '-smp' (Igor)
> * ACPI fix for VMBus (Jon)
> * relocatable install (myself)
> * always remove docker containers (myself)
> * serial cleanups (Philippe)
> * vmware cpuid leaf for tsc and apic frequency (Sunil)
> * KVM_FEATURE_ASYNC_PF_INT support (Vitaly)
> * i386 XSAVE bugfix (Xiaoyao)
> * QOM developer documentation in docs/devel (Eduardo)
> * new checkpatch tests (Dov)
> * x86_64 syscall fix (Douglas)
> * interrupt-based APF fix (Vitaly)
> * always create kvmclock (Vitaly)
> * fix bios-tables-test (Eduardo)
> * KVM PV features cleanup (myself)
> * CAN FD (Pavel)
>
> meson:
> * fixes (Marc-André, Max, Stefan, Alexander, myself)
> * moved libmpathpersist, cocoa, malloc tests (myself)
> * support for 0.56 introspected test dependencies (myself)
This version fails on the BSDs:
Library util found: YES
Found pkg-config: /usr/local/bin/pkg-config (1.7.3)
Run-time dependency pixman-1 found: YES 0.40.0
Library pam found: YES
Library aio found: NO
Run-time dependency zlib found: YES 1.2.10
Run-time dependency xkbcommon found: YES 0.10.0
Library rt found: YES
../src/meson.build:274:3: ERROR: Unknown variable "target_os".
A full log can be found at
/usr/home/qemu/qemu-test.5nusiE/build/meson-logs/meson-log.txt
ERROR: meson setup failed
Windows crossbuild produces the meson.build error but then
somehow proceeds to link executables and succeed anyway(?!) :
C++ compiler for the host machine: i686-w64-mingw32.shared-g++ (gcc
5.5.0 "i686-w64-mingw32.shared-g++ (GCC) 5.5.0")
C++ linker for the host machine: i686-w64-mingw32.shared-g++ ld.bfd 2.28
Library m found: YES
Library util found: NO
Library ws2_32 found: YES
Library winmm found: YES
Windows resource compiler: GNU windres (GNU Binutils) 2.28
Dependency pixman-1 found: YES 0.33.6 (cached)
Library aio found: NO
Dependency zlib found: YES 1.2.11 (cached)
Found pkg-config: /usr/lib/mxe/usr/bin/i686-w64-mingw32.shared-pkg-config (0.28)
Run-time dependency xkbcommon found: NO (tried pkgconfig)
Library rt found: NO
../../meson.build:274:3: ERROR: Unknown variable "target_os".
A full log can be found at
/home/petmay01/qemu-for-merges/build/w32/meson-logs/meson-log.txt
Generating qemu-version.h with a meson_exe.py custom command
Compiling C object libqemu-i386-softmmu.fa.p/target_i386_cpu.c.obj
Compiling C object libqemu-x86_64-softmmu.fa.p/target_i386_cpu.c.obj
Linking target qemu-system-i386.exe
Linking target qemu-system-i386w.exe
Linking target qemu-system-x86_64.exe
Linking target qemu-system-x86_64w.exe
make: Leaving directory '/home/petmay01/qemu-for-merges/build/w32'
OK DONE windows crossbuilds
thanks
-- PMM
^ permalink raw reply [flat|nested] 5+ messages in thread