On 11/04/2016 03:00 AM, Yuanhan Liu wrote: > On Thu, Nov 03, 2016 at 09:36:52PM +0100, Maxime Coquelin wrote: >> Hi Yuanhan, >> >> On 11/03/2016 05:09 PM, Yuanhan Liu wrote: >>> This reverts commit 9a0615af7746 ("virtio: fix restart"); conflict is >>> manually addressed. >>> >>> Kyle reported an issue with above commit >>> >>> qemu-kvm: Guest moved used index from 5 to 1 >>> >>> with following steps, >>> >>> 1) Start my virtio interfaces >>> 2) Send some traffic into/out of the interfaces >>> 3) Stop the interfaces >>> 4) Start the interfaces >>> 5) Send some more traffic >>> >>> And here are some quotes from Kyle's analysis, >>> >>> Prior to the patch, if an interface were stopped then started, without >>> restarting the application, the queues would be left as-is, because >>> hw->started would be set to 1. Now, calling stop sets hw->started to 0, >>> which means the next call to start will "touch the queues". This is the >>> unintended side-effect that causes the problem. >> >> Maybe a good idea to explain what is the problem the revert aims to fix. > > It aims to fix the issue, by "not touching the queues" on restart. > >> It does not seem to be clearly stated in the commit message. > > I was thinking the quote from Kyle is enough. How about following supplement: > > We should not touch the queues once the init is done, otherwise, the > vring state of virtio PMD driver and vhost-user would be inconsistent, > leading some issue like above. > > Thus this patch is reverted. > > Better now? Yes, this is much clearer from my PoV.
Thanks! Maxime > > --yliu >