* Laszlo Ersek (ler...@redhat.com) wrote: > virtio-fs qualifies as a bootable device minimally under OVMF, but > currently the necessary "bootindex" property is missing (fw_cfg kernel > boot notwithstanding). > > Add the property. For completeness, add it to the CCW device as well; > other virtio-ccw devices seem to have "bootindex" properties too. > > Example OpenFirmware device path for the "vhost-user-fs-pci" device in the > "bootorder" fw_cfg file: > > /pci@i0cf8/pci-bridge@1,6/pci1af4,105a@0/filesystem@0 > > Cc: "Dr. David Alan Gilbert" <dgilb...@redhat.com> > Cc: "Michael S. Tsirkin" <m...@redhat.com> > Cc: Christian Borntraeger <borntrae...@de.ibm.com> > Cc: Cornelia Huck <coh...@redhat.com> > Cc: Halil Pasic <pa...@linux.ibm.com> > Cc: Stefan Hajnoczi <stefa...@redhat.com> > Cc: qemu-s3...@nongnu.org > Cc: virtio...@redhat.com > Signed-off-by: Laszlo Ersek <ler...@redhat.com> > --- > include/hw/virtio/vhost-user-fs.h | 1 + > hw/s390x/vhost-user-fs-ccw.c | 2 ++ > hw/virtio/vhost-user-fs-pci.c | 2 ++ > hw/virtio/vhost-user-fs.c | 10 ++++++++++ > 4 files changed, 15 insertions(+) >
That looks reasonable; although I'm not familiar with the bootindex system; so Acked-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > diff --git a/include/hw/virtio/vhost-user-fs.h > b/include/hw/virtio/vhost-user-fs.h > index 698575277101..0d62834c2510 100644 > --- a/include/hw/virtio/vhost-user-fs.h > +++ b/include/hw/virtio/vhost-user-fs.h > @@ -39,6 +39,7 @@ struct VHostUserFS { > VhostUserState vhost_user; > VirtQueue **req_vqs; > VirtQueue *hiprio_vq; > + int32_t bootindex; > > /*< public >*/ > }; > diff --git a/hw/s390x/vhost-user-fs-ccw.c b/hw/s390x/vhost-user-fs-ccw.c > index 6c6f26929301..474e97e937b8 100644 > --- a/hw/s390x/vhost-user-fs-ccw.c > +++ b/hw/s390x/vhost-user-fs-ccw.c > @@ -47,6 +47,8 @@ static void vhost_user_fs_ccw_instance_init(Object *obj) > ccw_dev->force_revision_1 = true; > virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), > TYPE_VHOST_USER_FS); > + object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), > + "bootindex"); > } > > static void vhost_user_fs_ccw_class_init(ObjectClass *klass, void *data) > diff --git a/hw/virtio/vhost-user-fs-pci.c b/hw/virtio/vhost-user-fs-pci.c > index 8bb389bd282a..2ed8492b3fa3 100644 > --- a/hw/virtio/vhost-user-fs-pci.c > +++ b/hw/virtio/vhost-user-fs-pci.c > @@ -68,6 +68,8 @@ static void vhost_user_fs_pci_instance_init(Object *obj) > > virtio_instance_init_common(obj, &dev->vdev, sizeof(dev->vdev), > TYPE_VHOST_USER_FS); > + object_property_add_alias(obj, "bootindex", OBJECT(&dev->vdev), > + "bootindex"); > } > > static const VirtioPCIDeviceTypeInfo vhost_user_fs_pci_info = { > diff --git a/hw/virtio/vhost-user-fs.c b/hw/virtio/vhost-user-fs.c > index ed036ad9c13f..ac4fc34b36a2 100644 > --- a/hw/virtio/vhost-user-fs.c > +++ b/hw/virtio/vhost-user-fs.c > @@ -22,6 +22,7 @@ > #include "qemu/error-report.h" > #include "hw/virtio/vhost-user-fs.h" > #include "monitor/monitor.h" > +#include "sysemu/sysemu.h" > > static void vuf_get_config(VirtIODevice *vdev, uint8_t *config) > { > @@ -279,6 +280,14 @@ static Property vuf_properties[] = { > DEFINE_PROP_END_OF_LIST(), > }; > > +static void vuf_instance_init(Object *obj) > +{ > + VHostUserFS *fs = VHOST_USER_FS(obj); > + > + device_add_bootindex_property(obj, &fs->bootindex, "bootindex", > + "/filesystem@0", DEVICE(obj)); > +} > + > static void vuf_class_init(ObjectClass *klass, void *data) > { > DeviceClass *dc = DEVICE_CLASS(klass); > @@ -300,6 +309,7 @@ static const TypeInfo vuf_info = { > .name = TYPE_VHOST_USER_FS, > .parent = TYPE_VIRTIO_DEVICE, > .instance_size = sizeof(VHostUserFS), > + .instance_init = vuf_instance_init, > .class_init = vuf_class_init, > }; > > -- > 2.19.1.3.g30247aa5d201 > -- Dr. David Alan Gilbert / dgilb...@redhat.com / Manchester, UK