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>
This commit is contained in:
parent
661e21c48e
commit
9b5b473eae
|
@ -58,6 +58,25 @@ static void remote_machine_init(MachineState *machine)
|
||||||
qbus_set_hotplug_handler(BUS(pci_host->bus), OBJECT(s));
|
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)
|
static void remote_machine_class_init(ObjectClass *oc, void *data)
|
||||||
{
|
{
|
||||||
MachineClass *mc = MACHINE_CLASS(oc);
|
MachineClass *mc = MACHINE_CLASS(oc);
|
||||||
|
@ -67,6 +86,10 @@ static void remote_machine_class_init(ObjectClass *oc, void *data)
|
||||||
mc->desc = "Experimental remote machine";
|
mc->desc = "Experimental remote machine";
|
||||||
|
|
||||||
hc->unplug = qdev_simple_device_unplug_cb;
|
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 = {
|
static const TypeInfo remote_machine = {
|
||||||
|
|
|
@ -22,6 +22,8 @@ struct RemoteMachineState {
|
||||||
|
|
||||||
RemotePCIHost *host;
|
RemotePCIHost *host;
|
||||||
RemoteIOHubState iohub;
|
RemoteIOHubState iohub;
|
||||||
|
|
||||||
|
bool vfio_user;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Used to pass to co-routine device and ioc. */
|
/* Used to pass to co-routine device and ioc. */
|
||||||
|
|
Loading…
Reference in New Issue