On Mon, Oct 20, 2014 at 06:08:56PM +0200, Alexander Graf wrote: > > > On 20.10.14 08:58, Michael S. Tsirkin wrote: > > Current support for bus master (clearing OK bit) together with the need to > > support guests which do not enable PCI bus mastering, leads to extra state > > in > > VIRTIO_PCI_FLAG_BUS_MASTER_BUG bit, which isn't robust in case of > > cross-version > > migration for the case when guests use the device before setting DRIVER_OK. > > > > Rip out this code, and replace it: > > - Modern QEMU doesn't need VIRTIO_PCI_FLAG_BUS_MASTER_BUG > > so just drop it for latest machine type. > > - For compat machine types, set PCI_COMMAND if DRIVER_OK > > is set. > > > > As this is needed for 2.1 for both pc and ppc, move PC_COMPAT macros from > > pc.h > > to a new common header. > > > > Reviewed-by: Greg Kurz <gk...@linux.vnet.ibm.com> > > Tested-by: Greg Kurz <gk...@linux.vnet.ibm.com> > > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > > --- > > > > Alexander, could you pls ack me merging this? > > Thanks! > > Have you tried whether this works with old kernel versions? We > introduced the broken flag for very specific old kernel versions that > got their flags wrong IIRC. > > > Alex
Yes. The point is that since 2.1 the broken flag isn't effective anymore: when bus master is off, PCI blocks outgoing transactions and setting internal flags isn't going to help. Instead, we detect a buggy guest and immediately enable bus master for it - no need for a separate flag. -- MST