virtio-pci: thinko fix
authorMichael S. Tsirkin <mst@redhat.com>
Mon, 11 Jan 2010 15:57:41 +0000 (17:57 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 11 Jan 2010 19:41:00 +0000 (13:41 -0600)
Since patch ed757e140c0ada220f213036e4497315d24ca8bct, virtio will
sometimes clear all status registers on bus master disable, which loses
information such as VIRTIO_CONFIG_S_FAILED bit.  This is a result of
a patch being misapplied: code uses !  instead of ~ for bit
operations as in Yan's original patch.  This obviously does not make
sense.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
hw/virtio-pci.c

index 6d0f9dd37a02b91b1ed5fe02d065ca026ba93fc6..573c98a08bea62947354d84d14799d21488faf58 100644 (file)
@@ -374,7 +374,7 @@ static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,
 
     if (PCI_COMMAND == address) {
         if (!(val & PCI_COMMAND_MASTER)) {
-            proxy->vdev->status &= !VIRTIO_CONFIG_S_DRIVER_OK;
+            proxy->vdev->status &= ~VIRTIO_CONFIG_S_DRIVER_OK;
         }
     }