On Tue, 17 Jun 2014 15:44:28 +0800 Ming Lei <[email protected]> wrote:
> On Tue, Jun 17, 2014 at 3:07 PM, Cornelia Huck <[email protected]> > wrote: > > On Tue, 17 Jun 2014 10:44:11 +0800 > > Ming Lei <[email protected]> wrote: > > > >> On Tue, Jun 17, 2014 at 12:04 AM, Cornelia Huck > >> <[email protected]> wrote: > >> > On Mon, 16 Jun 2014 23:40:50 +0800 > >> > Ming Lei <[email protected]> wrote: > >> > > >> >> The two common virtio features can be defined per bus, so move all > >> >> into virtio-s390 class device to make code more clean. > >> >> > >> >> Suggested-by: Paolo Bonzini <[email protected]> > >> >> Signed-off-by: Ming Lei <[email protected]> > >> >> --- > >> >> hw/s390x/s390-virtio-bus.c | 15 ++++++--------- > >> >> 1 file changed, 6 insertions(+), 9 deletions(-) > >> > > >> > This one breaks for me: > >> > > >> > qemu-system-s390x: -device > >> > virtio-blk-s390,scsi=off,config-wce=off,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1: > >> > Property '.scsi' not found > >> > > >> >> > >> >> diff --git a/hw/s390x/s390-virtio-bus.c b/hw/s390x/s390-virtio-bus.c > >> >> index 9c71afa..ab9758e 100644 > >> >> --- a/hw/s390x/s390-virtio-bus.c > >> >> +++ b/hw/s390x/s390-virtio-bus.c > >> >> @@ -526,18 +526,11 @@ static const TypeInfo s390_virtio_net = { > >> >> .class_init = s390_virtio_net_class_init, > >> >> }; > >> >> > >> >> -static Property s390_virtio_blk_properties[] = { > >> >> - DEFINE_VIRTIO_BLK_PROPERTIES(VirtIOBlkS390, blk), > >> >> - DEFINE_PROP_END_OF_LIST(), > >> >> -}; > >> >> - > >> >> static void s390_virtio_blk_class_init(ObjectClass *klass, void *data) > >> >> { > >> >> - DeviceClass *dc = DEVICE_CLASS(klass); > >> >> VirtIOS390DeviceClass *k = VIRTIO_S390_DEVICE_CLASS(klass); > >> >> > >> >> k->init = s390_virtio_blk_init; > >> >> - dc->props = s390_virtio_blk_properties; > >> > > >> > ...which is probably because you removed the block properties here. > >> > >> You are right, DEFINE_VIRTIO_BLK_PROPERTIES() should have been > >> kept. > >> > >> Could you test attached patch? > >> > > Hm, with the attached patch qemu starts, but the guest will not come up > > (same commandline + kernel comes up fine on master). Let me dig around > > a bit. > > Looks like s390 virtio-blk never enables the two common features, is > there any reason the two features can't be supported by s390? Indirect descriptors are fine. event_idx will not work IIUC because we always need to do a sync before we see changes, and this needs an interrupt to trigger. The correct way, of course, is to unset VIRTIO_RING_F_EVENT_IDX in the guest driver, and I verified that this works - this does not help with old guests, however. Note that this applies only to the old s390-virtio transport - virtio-ccw is fine.
