Re: [PATCH v2 0/4] virtio: Clean up scatterlists and use the DMA API

Andy Lutomirski
2014-08-28T18:51:58Z

On Thu, Aug 28, 2014 at 11:29 AM, Christian Borntraeger
<borntraeger@de.ibm.com> wrote:
> On 28/08/14 20:06, Andy Lutomirski wrote:
> [...]
>>> block seems to work, with net a simple ping works, iperf causes this:
>>
>> I neither see the bug, nor can I reproduce it on x86_64 on KVM. I
>> doubt that dma vs. non-dma is relevant. I tried -net user a -net tap
>> with iperf running in both directions. I also tried switching
>> virtio_pci into non-DMA-API mode. No errors.
>>
>> Is there any chance that you could instrument that BUG_ON to print n,
>> i, in_sgs, out_sgs, total_sg, total_in, and total_out? I assume this
>> is some oddity with patch 1, but I'm mystified.
>
> Yes, its triggered by patch 1.

I must be doing something wrong, since virtio_net isn't sending me
through that code path at all. This may be related to ethtool
refusing to enable scatter-gather on my NIC. This happens on
vhost-net and QEMU's implementation. Grr.

Can you change the code to something like:

if (i != total_sg) {
printk(KERN_ERR "i=%d total_sg=%u total_out=%u total_in=%u out_\
sgs=%u in_sgs=%u\n",
i, total_sg, total_out, total_in, out_sgs, in_sgs);
}
BUG_ON(i != total_sg);

and try to capture another oops?

Sorry to ask for debugging help for something that's explicitly
designed not to affect your arch :-/

--Andy