diff options
author | Jagannathan Raman <jag.raman@oracle.com> | 2022-06-13 16:26:23 -0400 |
---|---|---|
committer | Stefan Hajnoczi <stefanha@redhat.com> | 2022-06-15 14:50:41 +0100 |
commit | 9b5b473eae3fa0450a7fce21f7e01f3ab1136bb8 (patch) | |
tree | adbbfa285e435f130612c211437d4a189235572a | |
parent | 661e21c48e9e0bea2a23d22cdbb83e02234fb164 (diff) | |
download | qemu-9b5b473eae3fa0450a7fce21f7e01f3ab1136bb8.zip qemu-9b5b473eae3fa0450a7fce21f7e01f3ab1136bb8.tar.gz qemu-9b5b473eae3fa0450a7fce21f7e01f3ab1136bb8.tar.bz2 |
remote/machine: add vfio-user property
Add vfio-user to x-remote machine. It is a boolean, which indicates if
the machine supports vfio-user protocol. The machine configures the bus
differently vfio-user and multiprocess protocols, so this property
informs it on how to configure the bus.
This property should be short lived. Once vfio-user fully replaces
multiprocess, this property could be removed.
Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
Signed-off-by: John G Johnson <john.g.johnson@oracle.com>
Signed-off-by: Jagannathan Raman <jag.raman@oracle.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 5d51a152a419cbda35d070b8e49b772b60a7230a.1655151679.git.jag.raman@oracle.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
-rw-r--r-- | hw/remote/machine.c | 23 | ||||
-rw-r--r-- | include/hw/remote/machine.h | 2 |
2 files changed, 25 insertions, 0 deletions
diff --git a/hw/remote/machine.c b/hw/remote/machine.c index a97e53e..9f3cdc5 100644 --- a/hw/remote/machine.c +++ b/hw/remote/machine.c @@ -58,6 +58,25 @@ static void remote_machine_init(MachineState *machine) qbus_set_hotplug_handler(BUS(pci_host->bus), OBJECT(s)); } +static bool remote_machine_get_vfio_user(Object *obj, Error **errp) +{ + RemoteMachineState *s = REMOTE_MACHINE(obj); + + return s->vfio_user; +} + +static void remote_machine_set_vfio_user(Object *obj, bool value, Error **errp) +{ + RemoteMachineState *s = REMOTE_MACHINE(obj); + + if (phase_check(PHASE_MACHINE_CREATED)) { + error_setg(errp, "Error enabling vfio-user - machine already created"); + return; + } + + s->vfio_user = value; +} + static void remote_machine_class_init(ObjectClass *oc, void *data) { MachineClass *mc = MACHINE_CLASS(oc); @@ -67,6 +86,10 @@ static void remote_machine_class_init(ObjectClass *oc, void *data) mc->desc = "Experimental remote machine"; hc->unplug = qdev_simple_device_unplug_cb; + + object_class_property_add_bool(oc, "vfio-user", + remote_machine_get_vfio_user, + remote_machine_set_vfio_user); } static const TypeInfo remote_machine = { diff --git a/include/hw/remote/machine.h b/include/hw/remote/machine.h index 2a2a33c..8d0fa98 100644 --- a/include/hw/remote/machine.h +++ b/include/hw/remote/machine.h @@ -22,6 +22,8 @@ struct RemoteMachineState { RemotePCIHost *host; RemoteIOHubState iohub; + + bool vfio_user; }; /* Used to pass to co-routine device and ioc. */ |