Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 13 Jul 2015 12:35:51 +0000 (13:35 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 13 Jul 2015 12:35:51 +0000 (13:35 +0100)
pc,virtio: fixes for 2.4

pc and virtio changes, bugfixes only.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
# gpg: Signature made Mon Jul 13 13:03:38 2015 BST using RSA key ID D28D5469
# gpg: Good signature from "Michael S. Tsirkin <mst@kernel.org>"
# gpg:                 aka "Michael S. Tsirkin <mst@redhat.com>"

* remotes/mst/tags/for_upstream:
  pc: fix reuse of pc-i440fx-2.4 in pc-i440fx-2.3
  Revert "virtio-net: enable virtio 1.0"
  virtio-pci: don't crash on illegal length
  qdev: fix 64 bit properties

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
1  2 
hw/i386/pc_piix.c
hw/virtio/virtio-pci.c

diff --combined hw/i386/pc_piix.c
@@@ -311,8 -311,6 +311,8 @@@ static void pc_compat_2_3(MachineState 
      if (kvm_enabled()) {
          pcms->smm = ON_OFF_AUTO_OFF;
      }
 +    global_state_set_optional();
 +    savevm_skip_configuration();
  }
  
  static void pc_compat_2_2(MachineState *machine)
@@@ -492,7 -490,7 +492,7 @@@ DEFINE_I440FX_MACHINE(v2_4, "pc-i440fx-
  
  static void pc_i440fx_2_3_machine_options(MachineClass *m)
  {
-     pc_i440fx_machine_options(m);
+     pc_i440fx_2_4_machine_options(m);
      m->alias = NULL;
      m->is_default = 0;
      SET_MACHINE_COMPAT(m, PC_COMPAT_2_3);
diff --combined hw/virtio/virtio-pci.c
@@@ -546,7 -546,8 +546,8 @@@ static void virtio_write_config(PCIDevi
          off = le32_to_cpu(cfg->cap.offset);
          len = le32_to_cpu(cfg->cap.length);
  
-         if (len <= sizeof cfg->pci_cfg_data) {
+         if (len == 1 || len == 2 || len == 4) {
+             assert(len <= sizeof cfg->pci_cfg_data);
              virtio_address_space_write(&proxy->modern_as, off,
                                         cfg->pci_cfg_data, len);
          }
@@@ -570,7 -571,8 +571,8 @@@ static uint32_t virtio_read_config(PCID
          off = le32_to_cpu(cfg->cap.offset);
          len = le32_to_cpu(cfg->cap.length);
  
-         if (len <= sizeof cfg->pci_cfg_data) {
+         if (len == 1 || len == 2 || len == 4) {
+             assert(len <= sizeof cfg->pci_cfg_data);
              virtio_address_space_read(&proxy->modern_as, off,
                                        cfg->pci_cfg_data, len);
          }
@@@ -616,7 -618,7 +618,7 @@@ static int kvm_virtio_pci_irqfd_use(Vir
      VirtQueue *vq = virtio_get_queue(vdev, queue_no);
      EventNotifier *n = virtio_queue_get_guest_notifier(vq);
      int ret;
 -    ret = kvm_irqchip_add_irqfd_notifier(kvm_state, n, NULL, irqfd->virq);
 +    ret = kvm_irqchip_add_irqfd_notifier_gsi(kvm_state, n, NULL, irqfd->virq);
      return ret;
  }
  
@@@ -630,7 -632,7 +632,7 @@@ static void kvm_virtio_pci_irqfd_releas
      VirtIOIRQFD *irqfd = &proxy->vector_irqfd[vector];
      int ret;
  
 -    ret = kvm_irqchip_remove_irqfd_notifier(kvm_state, n, irqfd->virq);
 +    ret = kvm_irqchip_remove_irqfd_notifier_gsi(kvm_state, n, irqfd->virq);
      assert(ret == 0);
  }