2012-11-16 21:35:27 +04:00
|
|
|
#######################################################################
|
2012-12-20 19:10:26 +04:00
|
|
|
# Common libraries for tools and emulators
|
2019-08-06 16:12:18 +03:00
|
|
|
stub-obj-y = stubs/
|
2019-07-29 16:55:47 +03:00
|
|
|
util-obj-y = crypto/ util/ qobject/ qapi/
|
2020-01-18 17:06:15 +03:00
|
|
|
qom-obj-y = qom/
|
2016-12-12 15:49:01 +03:00
|
|
|
|
2015-10-21 15:16:21 +03:00
|
|
|
#######################################################################
|
2020-01-18 17:06:16 +03:00
|
|
|
# code used by both qemu system emulation and qemu-img
|
2015-10-21 15:16:21 +03:00
|
|
|
|
2020-01-18 17:06:16 +03:00
|
|
|
ifeq ($(call lor,$(CONFIG_SOFTMMU),$(CONFIG_TOOLS)),y)
|
2015-10-21 15:16:21 +03:00
|
|
|
|
2020-01-18 17:06:16 +03:00
|
|
|
chardev-obj-y = chardev/
|
|
|
|
|
|
|
|
authz-obj-y = authz/
|
2010-01-06 22:24:05 +03:00
|
|
|
|
2020-06-08 20:33:39 +03:00
|
|
|
block-obj-y = block/ nbd/ scsi/
|
2018-04-12 18:29:59 +03:00
|
|
|
block-obj-y += block.o blockjob.o job.o
|
2013-06-05 16:19:41 +04:00
|
|
|
block-obj-y += qemu-io-cmds.o
|
2016-07-27 10:01:49 +03:00
|
|
|
block-obj-$(CONFIG_REPLICATION) += replication.o
|
2010-01-06 22:24:05 +03:00
|
|
|
|
2014-02-10 10:48:59 +04:00
|
|
|
block-obj-m = block/
|
|
|
|
|
2015-09-02 12:57:27 +03:00
|
|
|
crypto-obj-y = crypto/
|
2010-04-29 16:14:43 +04:00
|
|
|
|
2015-02-27 19:19:33 +03:00
|
|
|
io-obj-y = io/
|
|
|
|
|
2020-01-18 17:06:16 +03:00
|
|
|
endif # CONFIG_SOFTMMU or CONFIG_TOOLS
|
|
|
|
|
2020-02-24 17:29:54 +03:00
|
|
|
#######################################################################
|
|
|
|
# storage-daemon-obj-y is code used by qemu-storage-daemon (these objects are
|
|
|
|
# used for system emulation, too, but specified separately there)
|
|
|
|
|
2020-02-24 17:30:08 +03:00
|
|
|
storage-daemon-obj-y = block/ monitor/ qapi/ qom/ storage-daemon/
|
|
|
|
storage-daemon-obj-y += blockdev.o blockdev-nbd.o iothread.o job-qmp.o
|
2020-02-24 17:30:00 +03:00
|
|
|
storage-daemon-obj-$(CONFIG_WIN32) += os-win32.o
|
|
|
|
storage-daemon-obj-$(CONFIG_POSIX) += os-posix.o
|
2020-02-24 17:29:54 +03:00
|
|
|
|
2010-01-06 22:24:05 +03:00
|
|
|
######################################################################
|
2011-11-15 16:47:11 +04:00
|
|
|
# Target independent part of system emulation. The long term path is to
|
|
|
|
# suppress *all* target specific code in case of system emulation, i.e. a
|
|
|
|
# single QEMU executable should support all CPUs and machines.
|
2010-01-06 22:24:05 +03:00
|
|
|
|
2013-01-19 14:06:47 +04:00
|
|
|
ifeq ($(CONFIG_SOFTMMU),y)
|
2014-02-10 10:48:52 +04:00
|
|
|
common-obj-y = blockdev.o blockdev-nbd.o block/
|
2017-06-26 08:22:57 +03:00
|
|
|
common-obj-y += bootdevice.o iothread.o
|
2019-06-19 23:10:50 +03:00
|
|
|
common-obj-y += dump/
|
2018-05-03 20:01:14 +03:00
|
|
|
common-obj-y += job-qmp.o
|
2019-06-13 18:34:00 +03:00
|
|
|
common-obj-y += monitor/
|
2012-10-24 13:27:28 +04:00
|
|
|
common-obj-y += net/
|
2020-03-08 12:24:32 +03:00
|
|
|
common-obj-y += qdev-monitor.o
|
2010-06-12 09:49:30 +04:00
|
|
|
common-obj-$(CONFIG_WIN32) += os-win32.o
|
|
|
|
common-obj-$(CONFIG_POSIX) += os-posix.o
|
2010-05-21 13:54:32 +04:00
|
|
|
|
2012-05-22 15:46:08 +04:00
|
|
|
common-obj-$(CONFIG_LINUX) += fsdev/
|
|
|
|
|
2019-11-14 14:06:52 +03:00
|
|
|
common-obj-y += accel/
|
2014-12-12 14:13:38 +03:00
|
|
|
common-obj-y += migration/
|
2010-01-06 22:24:05 +03:00
|
|
|
|
2012-05-22 15:49:02 +04:00
|
|
|
common-obj-y += audio/
|
2018-03-06 10:40:49 +03:00
|
|
|
common-obj-m += audio/
|
2012-05-29 13:08:47 +04:00
|
|
|
common-obj-y += hw/
|
2012-12-17 21:17:08 +04:00
|
|
|
|
2015-09-17 19:23:37 +03:00
|
|
|
common-obj-y += replay/
|
|
|
|
|
2012-05-22 15:48:15 +04:00
|
|
|
common-obj-y += ui/
|
2018-03-01 13:05:41 +03:00
|
|
|
common-obj-m += ui/
|
2010-07-07 22:57:52 +04:00
|
|
|
|
2012-10-05 21:39:33 +04:00
|
|
|
common-obj-y += dma-helpers.o
|
2017-10-24 15:20:43 +03:00
|
|
|
common-obj-$(CONFIG_TPM) += tpm.o
|
2010-01-06 22:24:05 +03:00
|
|
|
|
2012-06-25 19:03:47 +04:00
|
|
|
common-obj-y += backends/
|
2017-05-29 11:39:42 +03:00
|
|
|
common-obj-y += chardev/
|
2012-06-25 19:03:47 +04:00
|
|
|
|
2013-01-19 14:06:46 +04:00
|
|
|
common-obj-$(CONFIG_SECCOMP) += qemu-seccomp.o
|
2017-09-07 11:53:16 +03:00
|
|
|
qemu-seccomp.o-cflags := $(SECCOMP_CFLAGS)
|
|
|
|
qemu-seccomp.o-libs := $(SECCOMP_LIBS)
|
2012-08-15 01:44:05 +04:00
|
|
|
|
2015-05-24 23:20:14 +03:00
|
|
|
common-obj-$(CONFIG_FDT) += device_tree.o
|
|
|
|
|
2019-02-14 18:22:40 +03:00
|
|
|
common-obj-y += qapi/
|
2020-01-18 17:06:17 +03:00
|
|
|
|
|
|
|
endif # CONFIG_SOFTMMU
|
2011-09-02 21:34:47 +04:00
|
|
|
|
2012-12-20 18:24:49 +04:00
|
|
|
#######################################################################
|
|
|
|
# Target-independent parts used in system and user emulation
|
2016-06-28 21:37:27 +03:00
|
|
|
common-obj-y += cpus-common.o
|
2013-01-19 14:06:47 +04:00
|
|
|
common-obj-y += hw/
|
|
|
|
common-obj-y += qom/
|
|
|
|
common-obj-y += disas/
|
2012-03-05 00:32:36 +04:00
|
|
|
|
2013-08-08 22:18:07 +04:00
|
|
|
######################################################################
|
|
|
|
# Resource file for Windows executables
|
|
|
|
version-obj-$(CONFIG_WIN32) += $(BUILD_DIR)/version.o
|
|
|
|
|
2014-05-30 16:11:56 +04:00
|
|
|
######################################################################
|
|
|
|
# tracing
|
|
|
|
util-obj-y += trace/
|
|
|
|
|
2011-08-12 00:38:12 +04:00
|
|
|
######################################################################
|
|
|
|
# guest agent
|
|
|
|
|
2018-02-11 12:36:05 +03:00
|
|
|
# FIXME: a few definitions from qapi/qapi-types.o and
|
|
|
|
# qapi/qapi-visit.o are needed by libqemuutil.a. These should be
|
|
|
|
# extracted into a QAPI schema module, or perhaps a separate schema.
|
2014-08-07 06:34:41 +04:00
|
|
|
qga-obj-y = qga/
|
qemu-ga: Add Windows VSS provider and requester as DLL
Adds VSS provider and requester as a qga-vss.dll, which is loaded by
Windows VSS service as well as by qemu-ga.
"provider.cpp" implements a basic stub of a software VSS provider.
Currently, this module only relays a frozen event from VSS service to the
agent, and thaw event from the agent to VSS service, to block VSS process
to keep the system frozen while snapshots are taken at the host.
To register the provider to the guest system as COM+ application, the type
library (.tlb) for qga-vss.dll is required. To build it from COM IDL (.idl),
VisualC++, MIDL and stdole2.tlb in Windows SDK are required. This patch also
adds pre-compiled .tlb file in the repository in order to enable
cross-compile qemu-ga.exe for Windows with VSS support.
"requester.cpp" provides the VSS requester to kick the VSS snapshot process.
Qemu-ga.exe works without the DLL, although fsfreeze features are disabled.
These functions are only supported in Windows 2003 or later. In older
systems, fsfreeze features are disabled.
In several versions of Windows which don't support attribute
VSS_VOLSNAP_ATTR_NO_AUTORECOVERY, DoSnapshotSet fails with error
VSS_E_OBJECT_NOT_FOUND. In this patch, we just ignore this error.
To solve this fundamentally, we need a framework to handle mount writable
snapshot on guests, which is required by VSS auto-recovery feature
(cleanup phase after a snapshot is taken).
Signed-off-by: Tomoki Sekiyama <tomoki.sekiyama@hds.com>
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
2013-08-07 19:40:18 +04:00
|
|
|
qga-vss-dll-obj-y = qga/
|
2014-09-08 13:17:48 +04:00
|
|
|
|
|
|
|
######################################################################
|
|
|
|
# contrib
|
2018-08-29 15:41:25 +03:00
|
|
|
elf2dmp-obj-y = contrib/elf2dmp/
|
2017-07-14 11:33:45 +03:00
|
|
|
ivshmem-client-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-client/
|
|
|
|
ivshmem-server-obj-$(CONFIG_IVSHMEM) = contrib/ivshmem-server/
|
contrib: add libvhost-user
Add a library to help implementing vhost-user backend (or slave).
Dealing with vhost-user as an application developer isn't so easy: you
have all the trouble with any protocol: validation, unix ancillary data,
shared memory, eventfd, logging, and on top of that you need to deal
with virtio queues, if possible efficiently.
qemu test has a nice vhost-user testing application vhost-user-bridge,
which implements most of vhost-user, and virtio.c which implements
virtqueues manipulation. Based on these two, I tried to make a simple
library, reusable for tests or development of new vhost-user scenarios.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
[Felipe: set used_idx copy on SET_VRING_ADDR and update shadow avail idx
on SET_VRING_BASE]
Signed-off-by: Felipe Franciosi <felipe@nutanix.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2016-10-18 12:24:04 +03:00
|
|
|
libvhost-user-obj-y = contrib/libvhost-user/
|
vhost-user-scsi: Introduce a vhost-user-scsi sample application
This commit introduces a vhost-user-scsi backend sample application. It
must be linked with libiscsi and libvhost-user.
To use it, compile with:
$ make vhost-user-scsi
And run as follows:
$ ./vhost-user-scsi -u vus.sock -i iscsi://uri_to_target/
$ qemu-system-x86_64 --enable-kvm -m 512 \
-object memory-backend-file,id=mem,size=512m,share=on,mem-path=guestmem \
-numa node,memdev=mem \
-chardev socket,id=vhost-user-scsi,path=vus.sock \
-device vhost-user-scsi-pci,chardev=vhost-user-scsi \
The application is currently limited at one LUN only and it processes
requests synchronously (therefore only achieving QD1). The purpose of
the code is to show how a backend can be implemented and to test the
vhost-user-scsi Qemu implementation.
If a different instance of this vhost-user-scsi application is executed
at a remote host, a VM can be live migrated to such a host.
Signed-off-by: Felipe Franciosi <felipe@nutanix.com>
Message-Id: <1488479153-21203-5-git-send-email-felipe@nutanix.com>
2017-03-02 21:25:53 +03:00
|
|
|
vhost-user-scsi.o-cflags := $(LIBISCSI_CFLAGS)
|
|
|
|
vhost-user-scsi.o-libs := $(LIBISCSI_LIBS)
|
|
|
|
vhost-user-scsi-obj-y = contrib/vhost-user-scsi/
|
2018-01-04 04:53:34 +03:00
|
|
|
vhost-user-blk-obj-y = contrib/vhost-user-blk/
|
2018-12-21 17:40:15 +03:00
|
|
|
rdmacm-mux-obj-y = contrib/rdmacm-mux/
|
2019-05-14 13:41:26 +03:00
|
|
|
vhost-user-input-obj-y = contrib/vhost-user-input/
|
2019-05-24 16:09:42 +03:00
|
|
|
vhost-user-gpu-obj-y = contrib/vhost-user-gpu/
|
2019-02-07 15:17:21 +03:00
|
|
|
virtiofsd-obj-y = tools/virtiofsd/
|
2016-06-16 11:39:47 +03:00
|
|
|
|
|
|
|
######################################################################
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs =
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += accel/kvm
|
|
|
|
trace-events-subdirs += accel/tcg
|
2019-12-16 10:48:53 +03:00
|
|
|
trace-events-subdirs += backends
|
2020-06-12 11:54:44 +03:00
|
|
|
trace-events-subdirs += backends/tpm
|
2019-04-01 17:12:22 +03:00
|
|
|
trace-events-subdirs += crypto
|
2019-06-13 18:33:57 +03:00
|
|
|
trace-events-subdirs += monitor
|
2019-04-01 17:12:22 +03:00
|
|
|
ifeq ($(CONFIG_USER_ONLY),y)
|
|
|
|
trace-events-subdirs += linux-user
|
|
|
|
endif
|
|
|
|
ifeq ($(CONFIG_BLOCK),y)
|
2015-10-21 15:16:21 +03:00
|
|
|
trace-events-subdirs += authz
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += block
|
2019-04-01 17:12:22 +03:00
|
|
|
trace-events-subdirs += io
|
|
|
|
trace-events-subdirs += nbd
|
|
|
|
trace-events-subdirs += scsi
|
|
|
|
endif
|
2019-04-01 17:12:18 +03:00
|
|
|
ifeq ($(CONFIG_SOFTMMU),y)
|
|
|
|
trace-events-subdirs += audio
|
2020-01-16 14:43:39 +03:00
|
|
|
trace-events-subdirs += chardev
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/9pfs
|
|
|
|
trace-events-subdirs += hw/acpi
|
|
|
|
trace-events-subdirs += hw/alpha
|
|
|
|
trace-events-subdirs += hw/arm
|
|
|
|
trace-events-subdirs += hw/audio
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += hw/block
|
|
|
|
trace-events-subdirs += hw/block/dataplane
|
|
|
|
trace-events-subdirs += hw/char
|
|
|
|
trace-events-subdirs += hw/dma
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/hppa
|
vmbus: vmbus implementation
Add the VMBus infrastructure -- bus, devices, root bridge, vmbus state
machine, vmbus channel interactions, etc.
VMBus is a collection of technologies. At its lowest layer, it's a message
passing and signaling mechanism, allowing efficient passing of messages to and
from guest VMs. A layer higher, it's a mechanism for defining channels of
communication, where each channel is tagged with a type (which implies a
protocol) and a instance ID. A layer higher than that, it's a bus driver,
serving as the basis of device enumeration within a VM, where a channel can
optionally be exposed as a paravirtual device. When a server-side (paravirtual
back-end) component wishes to offer a channel to a guest VM, it does so by
specifying a channel type, a mode, and an instance ID. VMBus then exposes this
in the guest.
More information about VMBus can be found in the file
vmbuskernelmodeclientlibapi.h in Microsoft's WDK.
TODO:
- split into smaller palatable pieces
- more comments
- check and handle corner cases
Kudos to Evgeny Yakovlev (formerly eyakovlev@virtuozzo.com) and Andrey
Smetatin (formerly asmetanin@virtuozzo.com) for research and
prototyping.
Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
Signed-off-by: Maciej S. Szmigiero <maciej.szmigiero@oracle.com>
Signed-off-by: Jon Doron <arilou@gmail.com>
Message-Id: <20200424123444.3481728-4-arilou@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2020-04-24 15:34:41 +03:00
|
|
|
trace-events-subdirs += hw/hyperv
|
2018-06-08 15:15:33 +03:00
|
|
|
trace-events-subdirs += hw/i2c
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += hw/i386
|
|
|
|
trace-events-subdirs += hw/i386/xen
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/ide
|
|
|
|
trace-events-subdirs += hw/input
|
|
|
|
trace-events-subdirs += hw/intc
|
|
|
|
trace-events-subdirs += hw/isa
|
|
|
|
trace-events-subdirs += hw/mem
|
2019-06-25 01:28:40 +03:00
|
|
|
trace-events-subdirs += hw/mips
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/misc
|
|
|
|
trace-events-subdirs += hw/misc/macio
|
|
|
|
trace-events-subdirs += hw/net
|
|
|
|
trace-events-subdirs += hw/nvram
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += hw/pci
|
2018-01-21 11:59:45 +03:00
|
|
|
trace-events-subdirs += hw/pci-host
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/ppc
|
|
|
|
trace-events-subdirs += hw/rdma
|
|
|
|
trace-events-subdirs += hw/rdma/vmw
|
2019-10-04 02:03:52 +03:00
|
|
|
trace-events-subdirs += hw/rtc
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += hw/s390x
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/scsi
|
|
|
|
trace-events-subdirs += hw/sd
|
|
|
|
trace-events-subdirs += hw/sparc
|
|
|
|
trace-events-subdirs += hw/sparc64
|
2020-02-06 14:26:44 +03:00
|
|
|
trace-events-subdirs += hw/ssi
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/timer
|
|
|
|
trace-events-subdirs += hw/tpm
|
|
|
|
trace-events-subdirs += hw/usb
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += hw/vfio
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += hw/virtio
|
2018-08-20 13:24:33 +03:00
|
|
|
trace-events-subdirs += hw/watchdog
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += hw/xen
|
2019-01-07 18:23:47 +03:00
|
|
|
trace-events-subdirs += hw/gpio
|
2019-02-12 20:38:39 +03:00
|
|
|
trace-events-subdirs += hw/riscv
|
2019-04-01 17:12:18 +03:00
|
|
|
trace-events-subdirs += migration
|
|
|
|
trace-events-subdirs += net
|
|
|
|
trace-events-subdirs += ui
|
|
|
|
endif
|
2020-01-16 14:43:39 +03:00
|
|
|
trace-events-subdirs += hw/core
|
2019-04-01 17:12:18 +03:00
|
|
|
trace-events-subdirs += hw/display
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += qapi
|
|
|
|
trace-events-subdirs += qom
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += target/arm
|
2019-03-11 22:15:55 +03:00
|
|
|
trace-events-subdirs += target/hppa
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += target/i386
|
2017-03-04 21:56:52 +03:00
|
|
|
trace-events-subdirs += target/mips
|
2017-01-25 19:14:15 +03:00
|
|
|
trace-events-subdirs += target/ppc
|
2019-03-16 04:21:12 +03:00
|
|
|
trace-events-subdirs += target/riscv
|
2018-05-28 08:40:55 +03:00
|
|
|
trace-events-subdirs += target/s390x
|
|
|
|
trace-events-subdirs += target/sparc
|
|
|
|
trace-events-subdirs += util
|
2017-01-25 19:14:15 +03:00
|
|
|
|
|
|
|
trace-events-files = $(SRC_PATH)/trace-events $(trace-events-subdirs:%=$(SRC_PATH)/%/trace-events)
|
|
|
|
|
|
|
|
trace-obj-y = trace-root.o
|
|
|
|
trace-obj-y += $(trace-events-subdirs:%=%/trace.o)
|
|
|
|
trace-obj-$(CONFIG_TRACE_UST) += trace-ust-all.o
|
|
|
|
trace-obj-$(CONFIG_TRACE_DTRACE) += trace-dtrace-root.o
|
|
|
|
trace-obj-$(CONFIG_TRACE_DTRACE) += $(trace-events-subdirs:%=%/trace-dtrace.o)
|