Merge remote-tracking branch 'bonzini/virtio-scsi' into staging
authorAnthony Liguori <aliguori@us.ibm.com>
Fri, 24 Feb 2012 15:33:03 +0000 (09:33 -0600)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 24 Feb 2012 15:33:03 +0000 (09:33 -0600)
* bonzini/virtio-scsi:
  scsi-block: always use scsi_generic_ops for cache != none
  scsi: fix searching for an empty id
  scsi: fix wrong return for target INQUIRY
  virtio-scsi: add migration support
  virtio-scsi: process control queue requests
  virtio-scsi: add basic SCSI bus operation
  virtio-scsi: Add basic request processing infrastructure
  virtio-scsi: Add virtio-scsi stub device
  scsi-disk: add migration support
  scsi-generic: add migration support
  scsi: add SCSIDevice vmstate definitions
  scsi-disk: enable scatter/gather functionality
  scsi: add scatter/gather functionality
  scsi: pass residual amount to command_complete
  ahci: use new DMA helpers
  dma-helpers: add accounting wrappers
  dma-helpers: add dma_buf_read and dma_buf_write
  dma-helpers: make QEMUSGList target independent

1  2 
Makefile.target
hw/pci.h

diff --combined Makefile.target
@@@ -200,6 -200,7 +200,7 @@@ obj-y = arch_init.o cpus.o monitor.o ma
  # need to fix this properly
  obj-$(CONFIG_NO_PCI) += pci-stub.o
  obj-$(CONFIG_VIRTIO) += virtio.o virtio-blk.o virtio-balloon.o virtio-net.o virtio-serial-bus.o
+ obj-$(CONFIG_VIRTIO_SCSI) += virtio-scsi.o
  obj-y += vhost_net.o
  obj-$(CONFIG_VHOST_NET) += vhost.o
  obj-$(CONFIG_REALLY_VIRTFS) += 9pfs/virtio-9p-device.o
@@@ -241,7 -242,6 +242,7 @@@ obj-i386-y += vmport.
  obj-i386-y += pci-hotplug.o smbios.o wdt_ib700.o
  obj-i386-y += debugcon.o multiboot.o
  obj-i386-y += pc_piix.o
 +obj-i386-y += pc_sysfw.o
  obj-i386-$(CONFIG_KVM) += kvm/clock.o kvm/apic.o kvm/i8259.o kvm/ioapic.o
  obj-i386-$(CONFIG_SPICE) += qxl.o qxl-logger.o qxl-render.o
  
@@@ -300,6 -300,7 +301,6 @@@ obj-lm32-y += framebuffer.
  
  obj-mips-y = mips_r4k.o mips_jazz.o mips_malta.o mips_mipssim.o
  obj-mips-y += mips_addr.o mips_timer.o mips_int.o
 -obj-mips-y += jazz_led.o
  obj-mips-y += gt64xxx.o mc146818rtc.o
  obj-mips-$(CONFIG_FULONG) += bonito.o vt82c686.o mips_fulong2e.o
  
diff --combined hw/pci.h
+++ b/hw/pci.h
@@@ -75,6 -75,7 +75,7 @@@
  #define PCI_DEVICE_ID_VIRTIO_BLOCK       0x1001
  #define PCI_DEVICE_ID_VIRTIO_BALLOON     0x1002
  #define PCI_DEVICE_ID_VIRTIO_CONSOLE     0x1003
+ #define PCI_DEVICE_ID_VIRTIO_SCSI        0x1004
  
  #define FMT_PCIBUS                      PRIx64
  
@@@ -464,67 -465,6 +465,67 @@@ pci_quad_test_and_set_mask(uint8_t *con
      return val & mask;
  }
  
 +/* Access a register specified by a mask */
 +static inline void
 +pci_set_byte_by_mask(uint8_t *config, uint8_t mask, uint8_t reg)
 +{
 +    uint8_t val = pci_get_byte(config);
 +    uint8_t rval = reg << (ffs(mask) - 1);
 +    pci_set_byte(config, (~mask & val) | (mask & rval));
 +}
 +
 +static inline uint8_t
 +pci_get_byte_by_mask(uint8_t *config, uint8_t mask)
 +{
 +    uint8_t val = pci_get_byte(config);
 +    return (val & mask) >> (ffs(mask) - 1);
 +}
 +
 +static inline void
 +pci_set_word_by_mask(uint8_t *config, uint16_t mask, uint16_t reg)
 +{
 +    uint16_t val = pci_get_word(config);
 +    uint16_t rval = reg << (ffs(mask) - 1);
 +    pci_set_word(config, (~mask & val) | (mask & rval));
 +}
 +
 +static inline uint16_t
 +pci_get_word_by_mask(uint8_t *config, uint16_t mask)
 +{
 +    uint16_t val = pci_get_word(config);
 +    return (val & mask) >> (ffs(mask) - 1);
 +}
 +
 +static inline void
 +pci_set_long_by_mask(uint8_t *config, uint32_t mask, uint32_t reg)
 +{
 +    uint32_t val = pci_get_long(config);
 +    uint32_t rval = reg << (ffs(mask) - 1);
 +    pci_set_long(config, (~mask & val) | (mask & rval));
 +}
 +
 +static inline uint32_t
 +pci_get_long_by_mask(uint8_t *config, uint32_t mask)
 +{
 +    uint32_t val = pci_get_long(config);
 +    return (val & mask) >> (ffs(mask) - 1);
 +}
 +
 +static inline void
 +pci_set_quad_by_mask(uint8_t *config, uint64_t mask, uint64_t reg)
 +{
 +    uint64_t val = pci_get_quad(config);
 +    uint64_t rval = reg << (ffs(mask) - 1);
 +    pci_set_quad(config, (~mask & val) | (mask & rval));
 +}
 +
 +static inline uint64_t
 +pci_get_quad_by_mask(uint8_t *config, uint64_t mask)
 +{
 +    uint64_t val = pci_get_quad(config);
 +    return (val & mask) >> (ffs(mask) - 1);
 +}
 +
  PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction,
                                      const char *name);
  PCIDevice *pci_create_simple_multifunction(PCIBus *bus, int devfn,