Hi Peter, On 1/15/20 4:04 PM, Peter Xu wrote: > On Wed, Jan 15, 2020 at 02:12:20PM +0100, Auger Eric wrote: >>>> +static void virtio_iommu_report_fault(VirtIOIOMMU *viommu, uint8_t reason, >>>> + int flags, uint32_t endpoint, >>>> + uint64_t address) >>>> +{ > > [...] > >>>> + if (iov_size(elem->in_sg, elem->in_num) < sizeof(fault)) { >>>> + virtio_error(vdev, "error buffer of wrong size"); >>>> + virtqueue_detach_element(vq, elem, 0); >>>> + g_free(elem); >>>> + continue; >>> >>> If virtio_error(), should we stop rather than continue? >> My understanding is the buffer just popped had a wrong size so it is not >> usable. We skip it we try to use another one if any. Does it make sense? > > I'm not very familiar to virtio, but I see that virtio_error marks > vdev->broken to true. If with that iiuc the next virtqueue_pop() will > fail directly (see the first call to virtio_device_disabled in > virtqueue_pop). Then I don't see why retry any more... You're right. I will fix it.
Thanks Eric > > Thanks, >