Patchwork virtio-pci: thinko fix

login
register
mail settings
Submitter Michael S. Tsirkin
Date Jan. 11, 2010, 3:57 p.m.
Message ID <20100111155739.GA8588@redhat.com>
Download mbox | patch
Permalink /patch/42630/
State New
Headers show

Comments

Michael S. Tsirkin - Jan. 11, 2010, 3:57 p.m.
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>
---

 hw/virtio-pci.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
Anthony Liguori - Jan. 11, 2010, 7:47 p.m.
On 01/11/2010 09:57 AM, Michael S. Tsirkin wrote:
> 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.
>    

Actually, the original patch used '!'.  It didn't carry a Signed-off-by 
and when it was reposted with a SoB, this was changed to '~'.  There was 
no indication though that the contents of the patch was different.

Moral of the story is, when you make a change to the patch, add a (v2) 
and state in the commit message what change was made.

Thanks for catching this.

Regards,

Anthony Liguori

Patch

diff --git a/hw/virtio-pci.c b/hw/virtio-pci.c
index d222ce0..f4f1bc1 100644
--- a/hw/virtio-pci.c
+++ b/hw/virtio-pci.c
@@ -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;
         }
     }