* [PULL v6 00/87] Misc patches for 2020-09-24
@ 2020-09-25 19:47 Paolo Bonzini
2020-09-25 19:47 ` [PULL 09/87] target/i386: support KVM_FEATURE_ASYNC_PF_INT Paolo Bonzini
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Paolo Bonzini @ 2020-09-25 19:47 UTC (permalink / raw)
To: qemu-devel
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)
----------------------------------------------------------------
Alexander Bulekov (1):
oss-fuzz: move linker arg to fix coverage-build
Anthony PERARD (1):
meson: fix installation of keymaps
Claudio Fontana (1):
tests: add missing genh dependency
Daniel P. Berrangé (1):
char: fix logging when chardev write fails
Dmitry Fomichev (1):
scsi-generic: Fix HM-zoned device scan
Douglas Crosher (1):
helper_syscall x86_64: clear exception_is_int
Dov Murik (1):
checkpatch: Detect '%#' or '%0#' in printf-style format strings
Eduardo Habkost (10):
memory: Convert IOMMUMemoryRegionClass doc comment to kernel-doc
qom: Document all function parameters in doc comments
qom: Use kernel-doc private/public tags in structs
qom: Use ``code`` Sphinx syntax where appropriate
qom: Add kernel-doc markup to introduction doc comment
qom: Reformat section titles using Sphinx syntax
qom: Indent existing code examples
qom: Add code block markup to all code blocks
docs: Create docs/devel/qom.rst
bios-tables-test: Remove kernel-irqchip=off option
Igor Mammedov (5):
numa: drop support for '-numa node' (without memory specified)
doc: Cleanup "'-mem-path' fallback to RAM" deprecation text
numa: remove fixup numa_state->num_nodes to MAX_NODES
smp: drop support for deprecated (invalid topologies)
cphp: remove deprecated cpu-add command(s)
Jan Charvat (5):
net/can: Initial host SocketCan support for CAN FD.
hw/net/can: sja1000 ignore CAN FD frames
net/can: Add can_dlc2len and can_len2dlc for CAN FD.
hw/net/can/ctucafd: Add CTU CAN FD core register definitions.
hw/net/can: CTU CAN FD IP open hardware core emulation.
Jon Doron (1):
acpi: i386: Move VMBus DSDT entry to SB
Li Feng (1):
vhost-scsi: support inflight io track
Li Qiang (2):
hw: megasas: return -1 when 'megasas_map_sgl' fails
hw: megasas: consider 'iov_count=0' is an error in megasas_map_sgl
Marc-André Lureau (2):
meson: fix MSI rule
meson: error out if qemu_suffix starts with /
Paolo Bonzini (28):
meson: clean up build_by_default
ninjatool: rebuild multi-output targets if outputs are missing
meson: move libudev test
meson: move libmpathpersist test
meson: extend libmpathpersist test for static linking
configure: move malloc_trim/tcmalloc/jemalloc to meson
configure: fix --meson=/path/to/meson
configure: move cocoa option to Meson
configure: do not limit Hypervisor.framework test to Darwin
meson: qtest: set "depends" correctly
mtest2make: add support for introspected test dependencies
meson: report accelerator support
oslib: do not call g_strdup from qemu_get_exec_dir
fuzz: use qemu_get_exec_dir
oslib-posix: default exec_dir to bindir
cutils: introduce get_relocated_path
oslib-posix: relocate path to /var
module: relocate path to modules
net: relocate paths to helpers and scripts
vl: relocate paths to data directories
vl: relocate path to configuration file
qemu-bridge-helper: relocate path to default ACL
qga: relocate path to default configuration and hook
ui: relocate paths to icons and translations
configure: use a platform-neutral prefix
tests/tcg: reinstate or replace desired parts of rules.mak
docs: Move object.h overview doc comment to qom.rst
target/i386: kvm: do not use kvm_check_extension to find paravirtual capabilities
Pavel Pisa (2):
hw/net/can: Documentation for CTU CAN FD IP open hardware core emulation.
hw/net/can: Correct Kconfig dependencies
Philippe Mathieu-Daudé (16):
configure: Do not intent to build WHPX on 32-bit host
hw/mips/mipssim: Use MMIO serial device on fake ISA I/O
hw/char/serial: Remove TYPE_SERIAL_IO
hw/char/serial: Assert serial_ioport_read/write offset fits 8 bytes
hw/char/serial: Replace commented DPRINTF() by trace event
hw/char/serial: Remove old DEBUG_SERIAL commented code
hw/char/serial: Rename I/O read/write trace events
hw/char/serial: Make 'wakeup' property boolean
hw/char/serial-{isa, pci}: Alias QDEV properties from generic serial object
hw/i386/q35: Remove unreachable Xen code on Q35 machine
exec: Remove MemoryRegion::global_locking field
hw/i386/xen: Rename X86/PC specific function as xen_hvm_init_pc()
sysemu/xen: Add missing 'exec/cpu-common.h' header for ram_addr_t type
stubs: Split accelerator / hardware related stubs
hw/xen: Split x86-specific declaration from generic hardware ones
typedefs: Restrict PCMachineState to 'hw/i386/pc.h'
Stefan Hajnoczi (2):
MAINTAINERS: add Paolo Bonzini as RCU maintainer
configure: rename QEMU_GA_MSI_ENABLED to CONFIG_QGA_MSI
Stefano Garzarella (1):
checkpatch: avoid error on cover letter files
Sunil Muthuswamy (1):
WHPX: vmware cpuid leaf for tsc and apic frequency
Vitaly Kuznetsov (3):
target/i386: support KVM_FEATURE_ASYNC_PF_INT
target/i386: Fix VM migration when interrupt based APF is enabled
target/i386: always create kvmclock device
Xiaoyao Li (1):
i386/cpu: Clear FEAT_XSAVE_COMP_{LO,HI} when XSAVE is not available
MAINTAINERS | 18 +
Makefile | 4 +-
accel/stubs/xen-stub.c | 41 +-
accel/tcg/cputlb.c | 4 +-
chardev/char.c | 13 +
configure | 237 ++-------
docs/can.txt | 113 +++-
docs/devel/build-system.rst | 5 +
docs/devel/index.rst | 1 +
docs/devel/qom.rst | 378 +++++++++++++
docs/system/deprecated.rst | 82 +--
exec.c | 2 +-
hmp-commands.hx | 15 -
hw/char/serial-isa.c | 4 +-
hw/char/serial-pci.c | 3 +-
hw/char/serial.c | 65 +--
hw/char/trace-events | 5 +-
hw/core/machine-hmp-cmds.c | 12 -
hw/core/machine-qmp-cmds.c | 12 -
hw/core/machine.c | 1 -
hw/core/numa.c | 59 ---
hw/i386/acpi-build.c | 12 +-
hw/i386/kvm/clock.c | 7 +-
hw/i386/microvm.c | 2 +-
hw/i386/pc.c | 28 +-
hw/i386/pc_piix.c | 17 +-
hw/i386/pc_q35.c | 19 +-
hw/i386/xen/xen-hvm.c | 3 +-
hw/mips/mipssim.c | 5 +-
hw/net/Kconfig | 16 +-
hw/net/can/can_sja1000.c | 31 +-
hw/net/can/ctu_can_fd_frame.h | 189 +++++++
hw/net/can/ctu_can_fd_regs.h | 971 ++++++++++++++++++++++++++++++++++
hw/net/can/ctucan_core.c | 696 ++++++++++++++++++++++++
hw/net/can/ctucan_core.h | 127 +++++
hw/net/can/ctucan_pci.c | 281 ++++++++++
hw/net/can/meson.build | 2 +
hw/ppc/spapr.c | 1 -
hw/s390x/s390-virtio-ccw.c | 12 -
hw/scsi/megasas.c | 6 +-
hw/scsi/scsi-generic.c | 10 +-
hw/scsi/vhost-scsi-common.c | 27 +
include/exec/memory.h | 64 ++-
include/hw/boards.h | 3 -
include/hw/char/serial.h | 11 +-
include/hw/i386/pc.h | 8 +-
include/hw/kvm/clock.h | 4 +-
include/hw/virtio/vhost-scsi-common.h | 2 +
include/hw/xen/xen-x86.h | 15 +
include/hw/xen/xen.h | 2 -
include/monitor/hmp.h | 1 -
include/net/can_emu.h | 12 +-
include/net/net.h | 4 +-
include/qemu-common.h | 1 -
include/qemu/cutils.h | 12 +
include/qemu/osdep.h | 8 +-
include/qemu/typedefs.h | 1 -
include/qom/object.h | 547 ++++---------------
include/scsi/constants.h | 1 +
include/sysemu/numa.h | 4 -
include/sysemu/sysemu.h | 2 +-
include/sysemu/xen.h | 2 +
meson.build | 202 +++++--
meson_options.txt | 9 +
net/can/can_core.c | 36 ++
net/can/can_socketcan.c | 47 +-
net/tap.c | 26 +-
os-posix.c | 24 -
os-win32.c | 11 -
pc-bios/keymaps/meson.build | 2 +
qapi/machine.json | 24 -
qemu-bridge-helper.c | 9 +-
qga/main.c | 8 +-
qga/meson.build | 1 +
scripts/checkpatch.pl | 12 +-
scripts/mtest2make.py | 19 +-
scripts/ninjatool.py | 3 +
softmmu/memory.c | 6 -
softmmu/vl.c | 43 +-
stubs/meson.build | 1 +
stubs/xen-hw-stub.c | 50 ++
target/i386/cpu.c | 5 +-
target/i386/cpu.h | 1 +
target/i386/kvm.c | 45 +-
target/i386/kvm_i386.h | 1 +
target/i386/machine.c | 19 +
target/i386/seg_helper.c | 1 +
target/i386/whp-dispatch.h | 3 +-
target/i386/whpx-all.c | 96 +++-
tests/fp/meson.build | 2 -
tests/meson.build | 9 +-
tests/qemu-iotests/meson.build | 3 +-
tests/qtest/bios-tables-test.c | 3 +-
tests/qtest/cpu-plug-test.c | 100 +---
tests/qtest/fuzz/fuzz.c | 12 +-
tests/qtest/meson.build | 8 +-
tests/qtest/test-hmp.c | 1 -
tests/tcg/Makefile.qemu | 13 +-
tests/tcg/configure.sh | 4 +-
trace/meson.build | 1 -
ui/gtk.c | 10 +-
ui/meson.build | 2 +-
ui/sdl2.c | 9 +-
ui/shader/meson.build | 1 -
util/cutils.c | 61 +++
util/module.c | 10 +-
util/oslib-posix.c | 35 +-
util/oslib-win32.c | 14 +-
108 files changed, 3863 insertions(+), 1379 deletions(-)
create mode 100644 docs/devel/qom.rst
create mode 100644 hw/net/can/ctu_can_fd_frame.h
create mode 100644 hw/net/can/ctu_can_fd_regs.h
create mode 100644 hw/net/can/ctucan_core.c
create mode 100644 hw/net/can/ctucan_core.h
create mode 100644 hw/net/can/ctucan_pci.c
create mode 100644 include/hw/xen/xen-x86.h
create mode 100644 stubs/xen-hw-stub.c
--
2.26.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [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
end of thread, other threads:[~2020-09-25 22:05 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).