qemu-e2k/include/hw
Jon Doron 0d71f7082d 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-06-10 12:09:40 -04:00
..
acpi Drop more @errp parameters after previous commit 2020-05-15 07:08:14 +02:00
adc
arm wire in the dwc-hsotg (dwc2) USB host controller emulation 2020-06-05 17:23:09 +01:00
audio
block
char hw/char/cadence_uart: add clock support 2020-04-30 15:35:41 +01:00
core hw/core: Restrict CpuClass::get_crash_info() to system-mode 2020-06-05 21:23:22 +02:00
cpu
cris
display qom/object: Move Object typedef to 'qemu/typedefs.h' 2020-06-10 12:09:36 -04:00
dma hw/arm/bcm283x: Correct the license text 2020-03-23 17:22:30 +00:00
firmware
gpio nrf51: Fix last GPIO CNF address 2020-04-30 11:52:27 +01:00
hyperv vmbus: vmbus implementation 2020-06-10 12:09:40 -04:00
i2c hw/arm/nrf51: Add NRF51_PERIPHERAL_SIZE definition 2020-05-11 11:05:11 +01:00
i386 hw: add compat machines for 5.1 2020-05-06 10:12:16 -04:00
ide hw/ide: Move MAX_IDE_DEVS define to hw/ide/internal.h 2020-03-17 12:22:36 -04:00
input
intc hw/arm/bcm283x: Correct the license text 2020-03-23 17:22:30 +00:00
ipack
ipmi
isa acpi: add ISADeviceClass->build_aml() 2020-05-04 10:25:02 -04:00
kvm
lm32
m68k
mem nvdimm: Use configurable ACPI IO base and size 2020-05-04 10:25:02 -04:00
mips
misc hw/misc/empty_slot: Name the slots when created 2020-06-09 06:59:44 +02:00
net hw/net: Add Smartfusion2 emac block 2020-04-30 11:52:28 +01:00
nubus
nvram fw_cfg: Migrate ACPI table mr sizes separately 2020-04-13 06:55:54 -04:00
pci
pci-bridge
pci-host
ppc ppc/spapr: Add hotremovable flag on DIMM LMBs on drmem_v2 2020-05-27 15:29:36 +10:00
rdma
riscv riscv: Initial commit of OpenTitan machine 2020-06-03 09:11:51 -07:00
rtc rtc: add RTC_ISA_BASE 2020-05-04 10:25:02 -04:00
s390x s390x: pv: Fix KVM_PV_PREP_RESET command wrapper name 2020-06-05 17:13:11 +02:00
scsi qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
sd
semihosting
sh4
southbridge hw/ide: Do ide_drive_get() within pci_ide_create_devs() 2020-03-17 12:22:36 -04:00
sparc
ssi
timer hw/timer/nrf51_timer: Display timer ID in trace events 2020-05-11 11:05:52 +01:00
tricore
unicore32
usb dwc-hsotg (dwc2) USB host controller register definitions 2020-06-05 17:23:09 +01:00
vfio
virtio fix vhost_user_blk_watch crash 2020-03-29 09:52:13 -04:00
watchdog hw/watchdog: Implement full i.MX watchdog support 2020-05-21 20:00:18 +01:00
xen qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
xtensa
boards.h hw: add compat machines for 5.1 2020-05-06 10:12:16 -04:00
clock.h hw/core/clock-vmstate: define a vmstate entry for clock state 2020-04-30 15:35:40 +01:00
elf_ops.h elf_ops: Don't try to g_mapped_file_unref(NULL) 2020-05-04 14:35:23 +02:00
fw-path-provider.h
hotplug.h
hw.h
ide.h hw/ide: Move MAX_IDE_DEVS define to hw/ide/internal.h 2020-03-17 12:22:36 -04:00
irq.h
loader-fit.h
loader.h
nmi.h
or-irq.h
pcmcia.h
platform-bus.h platform-bus-device: use device plug callback instead of machine_done notifier 2018-05-10 18:10:56 +01:00
ptimer.h
qdev-clock.h qdev-clock: introduce an init array to ease the device construction 2020-04-30 15:35:40 +01:00
qdev-core.h qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
qdev-dma.h
qdev-properties.h
register.h hw/core/register: Add register_init_block8 helper. 2020-05-05 13:37:51 -07:00
registerfields.h hw/registerfields: Prefix local variables with underscore in macros 2020-05-27 11:23:07 -07:00
resettable.h
stream.h hw/core: stream: Add an end-of-packet flag 2020-05-14 13:44:35 +02:00
sysbus.h
usb.h qdev: Unrealize must not fail 2020-05-15 07:08:14 +02:00
vmstate-if.h