[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] vhost-user-scsi: implement handle_output
From: |
Felipe Franciosi |
Subject: |
Re: [PATCH] vhost-user-scsi: implement handle_output |
Date: |
Fri, 18 Oct 2019 11:14:12 +0000 |
> On Oct 18, 2019, at 3:59 AM, Yongji Xie <address@hidden> wrote:
>
> On Fri, 18 Oct 2019 at 01:17, Felipe Franciosi <address@hidden> wrote:
>>
>> Originally, vhost-user-scsi did not implement a handle_output callback
>> as that didn't seem necessary. Turns out it is.
>>
>> Depending on which other devices are presented to a VM, SeaBIOS may
>> decide to map vhost-user-scsi devices on the 64-bit range of the address
>> space. As a result, SeaBIOS will kick VQs via the config space. Those
>> land on Qemu (not the vhost backend) and are missed, causing the VM not
>> to boot. This fixes the issue by getting Qemu to post the notification.
>>
> Should we fix this in vhost-user-blk too?
I'm not sure vhost-user-blk suffers from the same problem. Certainly
vhost-scsi does, but I'd prefer to tackle that separately because I
can't trivially test it. If it breaks something there, we can revert
it without affecting a valid fix for vhost-user-scsi.
I can send that patch immediately after this is queued (or resend a v2
including both patches separately if maintainers prefer that).
F.
>
> Thanks,
> Yongji
>
>> Signed-off-by: Felipe Franciosi <address@hidden>
>> ---
>> hw/scsi/vhost-user-scsi.c | 9 +++++----
>> 1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/scsi/vhost-user-scsi.c b/hw/scsi/vhost-user-scsi.c
>> index 6a6c15dd32..13278ed151 100644
>> --- a/hw/scsi/vhost-user-scsi.c
>> +++ b/hw/scsi/vhost-user-scsi.c
>> @@ -62,8 +62,9 @@ static void vhost_user_scsi_set_status(VirtIODevice *vdev,
>> uint8_t status)
>> }
>> }
>>
>> -static void vhost_dummy_handle_output(VirtIODevice *vdev, VirtQueue *vq)
>> +static void vhost_handle_output(VirtIODevice *vdev, VirtQueue *vq)
>> {
>> + event_notifier_set(virtio_queue_get_host_notifier(vq));
>> }
>>
>> static void vhost_user_scsi_realize(DeviceState *dev, Error **errp)
>> @@ -80,9 +81,9 @@ static void vhost_user_scsi_realize(DeviceState *dev,
>> Error **errp)
>> return;
>> }
>>
>> - virtio_scsi_common_realize(dev, vhost_dummy_handle_output,
>> - vhost_dummy_handle_output,
>> - vhost_dummy_handle_output, &err);
>> + virtio_scsi_common_realize(dev, vhost_handle_output,
>> + vhost_handle_output,
>> + vhost_handle_output, &err);
>> if (err != NULL) {
>> error_propagate(errp, err);
>> return;
>> --
>> 2.20.1
>>
- [PATCH] vhost-user-scsi: implement handle_output, Felipe Franciosi, 2019/10/17
- Re: [PATCH] vhost-user-scsi: implement handle_output, Yongji Xie, 2019/10/17
- Re: [PATCH] vhost-user-scsi: implement handle_output,
Felipe Franciosi <=
- Re: [PATCH] vhost-user-scsi: implement handle_output, Yongji Xie, 2019/10/21
- Re: [PATCH] vhost-user-scsi: implement handle_output, Felipe Franciosi, 2019/10/21
- RE: [PATCH] vhost-user-scsi: implement handle_output, Liu, Changpeng, 2019/10/21
- Re: [PATCH] vhost-user-scsi: implement handle_output, Yongji Xie, 2019/10/21
- Re: [PATCH] vhost-user-scsi: implement handle_output, Stefan Hajnoczi, 2019/10/22
- Re: [PATCH] vhost-user-scsi: implement handle_output, Yongji Xie, 2019/10/21
Re: [PATCH] vhost-user-scsi: implement handle_output, Stefan Hajnoczi, 2019/10/21