qemu-e2k/include
Roman Kagan 4cbaf3c133 hyperv: add synic message delivery
Add infrastructure to deliver SynIC messages to the SynIC message page.

Note that KVM may also want to deliver (SynIC timer) messages to the
same message slot.

The problem is that the access to a SynIC message slot is controlled by
the value of its .msg_type field which indicates if the slot is being
owned by the hypervisor (zero) or by the guest (non-zero).

This leaves no room for synchronizing multiple concurrent producers.

The simplest way to deal with this for both KVM and QEMU is to only
deliver messages in the vcpu thread.  KVM already does this; this patch
makes it for QEMU, too.

Specifically,

 - add a function for posting messages, which only copies the message
   into the staging buffer if its free, and schedules a work on the
   corresponding vcpu to actually deliver it to the guest slot;

 - instead of a sint ack callback, set up the sint route with a message
   status callback.  This function is called in a bh whenever there are
   updates to the message slot status: either the vcpu made definitive
   progress delivering the message from the staging buffer (succeeded or
   failed) or the guest issued EOM; the status is passed as an argument
   to the callback.

Signed-off-by: Roman Kagan <rkagan@virtuozzo.com>
Message-Id: <20180921082217.29481-6-rkagan@virtuozzo.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2018-10-19 13:44:14 +02:00
..
block qemu-timer: introduce timer attributes 2018-10-19 13:44:03 +02:00
chardev chardev: mark the calls that allow an implicit mux monitor 2018-10-03 14:45:05 +04:00
crypto tests: call qcrypto_init instead of gnutls_global_init 2018-07-24 17:33:39 +01:00
disas
exec target-i386 : add coalesced_pio API 2018-10-19 13:44:11 +02:00
fpu softfloat: Specialize udiv_qrnnd for ppc64 2018-10-05 12:57:41 -05:00
hw hyperv: add synic message delivery 2018-10-19 13:44:14 +02:00
io
libdecnumber
migration
monitor qdev-monitor: print help to stdout 2018-10-05 16:14:22 +04:00
net
qapi
qemu qemu-timer: avoid checkpoints for virtual clock timers in external subsystems 2018-10-19 13:44:03 +02:00
qom cpu: Provide a proper prototype for target_words_bigendian() in a header 2018-10-17 08:41:43 +02:00
scsi
standard-headers linux-headers: update 2018-10-12 11:32:18 +02:00
sysemu i386: hvf: Remove hvf_disabled 2018-10-19 13:44:12 +02:00
ui ui: remove support for GTK2 in favour of GTK3 2018-10-12 15:22:18 +02:00
elf.h
glib-compat.h
qemu-common.h qemu-common.h: update copyright date to 2018 2018-10-16 17:52:06 +02:00
qemu-io.h
trace-tcg.h