[Spice-commits] 6 commits - hw/core hw/i386 hw/net hw/virtio include/hw tcg/tci

Gerd Hoffmann kraxel at kemper.freedesktop.org
Wed Jul 15 02:39:15 PDT 2015


 hw/core/qdev-properties.c    |    2 +-
 hw/i386/pc_piix.c            |    2 +-
 hw/net/virtio-net.c          |    1 -
 hw/virtio/virtio-pci.c       |    6 ++++--
 include/hw/qdev-properties.h |    2 +-
 tcg/tci/tcg-target.c         |    6 ------
 6 files changed, 7 insertions(+), 12 deletions(-)

New commits:
commit f3a1b5068cea303a55e2a21a97e66d057eaae638
Merge: 6e3c0c6 4421c6a
Author: Peter Maydell <peter.maydell at linaro.org>
Date:   Mon Jul 13 13:35:51 2015 +0100

    Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
    
    pc,virtio: fixes for 2.4
    
    pc and virtio changes, bugfixes only.
    
    Signed-off-by: Michael S. Tsirkin <mst at 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 at kernel.org>"
    # gpg:                 aka "Michael S. Tsirkin <mst at 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 at linaro.org>

commit 4421c6a38a37d558b8e6f82d2d54aee30350f57f
Author: Eduardo Habkost <ehabkost at redhat.com>
Date:   Tue Jun 23 14:00:51 2015 -0300

    pc: fix reuse of pc-i440fx-2.4 in pc-i440fx-2.3
    
    commit fddd179ab962f6f78a8493742e1068d6a620e059,
        "pc: Convert *_MACHINE_OPTIONS macros into functions"
    broke the chaining of *_machine_options() functions on
    pc-i440fx-2.3, at:
    
      -#define PC_I440FX_2_3_MACHINE_OPTIONS \
      -    PC_I440FX_2_4_MACHINE_OPTIONS, \
      -    .alias = NULL, \
      -    .is_default = 0
      +static void pc_i440fx_2_3_machine_options(QEMUMachine *m)
      +{
      +    pc_i440fx_machine_options(m);
      +    m->alias = NULL;
      +    m->is_default = 0;
      +}
    
    I have replaced PC_I440FX_2_4_MACHINE_OPTIONS with a
    pc_i440fx_machine_options() call, instead of calling
    pc_i440fx_2_4_machine_options(). This broke the setting of default_machine_opts
    and default_display on pc-i440fx-{2.0,2,1,2.2,2.3}.
    
    Fix this by making pc_i440fx_2_3_machine_options() reuse
    pc_i440fx_2_4_machine_options().
    
    Reported-by: "Dr. David Alan Gilbert" <dgilbert at redhat.com>
    Signed-off-by: Eduardo Habkost <ehabkost at redhat.com>
    Signed-off-by: Michael Roth <mdroth at linux.vnet.ibm.com>
    Reviewed-by: Michael S. Tsirkin <mst at redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
    Reviewed-by: Laszlo Ersek <lersek at redhat.com>

diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 0f99fdc..916d626 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -490,7 +490,7 @@ DEFINE_I440FX_MACHINE(v2_4, "pc-i440fx-2.4", NULL,
 
 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);
commit 06c4670ff6d4acdc5a24e3d25748ee4a489d5869
Author: Jason Wang <jasowang at redhat.com>
Date:   Mon Jul 13 13:46:50 2015 +0800

    Revert "virtio-net: enable virtio 1.0"
    
    This reverts commit df91055db5c9cee93d70ca8c08d72119a240b987.
    
    This is because:
    - vhost support virtio 1.0 now
    - transport code (e.g virtio-pci) set this feature when modern is
      enabled, setting this unconditionally will break disable-modern=on.
    
    Cc: Cornelia Huck <cornelia.huck at de.ibm.com>
    Signed-off-by: Jason Wang <jasowang at redhat.com>
    Reviewed-by: Michael S. Tsirkin <mst at redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst at redhat.com>

diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index d728233..e3c2db3 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -466,7 +466,6 @@ static uint64_t virtio_net_get_features(VirtIODevice *vdev, uint64_t features)
     }
 
     if (!get_vhost_net(nc->peer)) {
-        virtio_add_feature(&features, VIRTIO_F_VERSION_1);
         return features;
     }
     return vhost_net_get_features(get_vhost_net(nc->peer), features);
commit 2a6391232fa58f32469fb61d55343eff32a91083
Author: Michael S. Tsirkin <mst at redhat.com>
Date:   Mon Jul 13 10:32:50 2015 +0300

    virtio-pci: don't crash on illegal length
    
    Some guests seem to access cfg with an illegal length value.
    It's worth fixing them but debugging is easier if
    qemu does not crash.
    
    Signed-off-by: Michael S. Tsirkin <mst at redhat.com>

diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c
index 6ca0258..c5e8cc0 100644
--- a/hw/virtio/virtio-pci.c
+++ b/hw/virtio/virtio-pci.c
@@ -546,7 +546,8 @@ static void virtio_write_config(PCIDevice *pci_dev, uint32_t address,
         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 @@ static uint32_t virtio_read_config(PCIDevice *pci_dev,
         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);
         }
commit 8aedc369c6ae4fb4c4c6920f703b000015df3d8d
Author: Cornelia Huck <cornelia.huck at de.ibm.com>
Date:   Thu Jul 9 13:01:14 2015 +0200

    qdev: fix 64 bit properties
    
    64 bit props used 32 bit callbacks in two places, leading to broken
    feature bits on virtio (example: got 0x31000000000006d4 which is
    obviously bogus). Fix this.
    
    Fixes: fdba6d96 ("qdev: add 64bit properties")
    Signed-off-by: Cornelia Huck <cornelia.huck at de.ibm.com>
    Reviewed-by: Michael S. Tsirkin <mst at redhat.com>
    Signed-off-by: Michael S. Tsirkin <mst at redhat.com>
    Tested-by: Christian Borntraeger <borntraeger at de.ibm.com>
    Acked-by: Paolo Bonzini <pbonzini at redhat.com>

diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index e9e686f..04fd80a 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -130,7 +130,7 @@ PropertyInfo qdev_prop_bit = {
 
 static uint64_t qdev_get_prop_mask64(Property *prop)
 {
-    assert(prop->info == &qdev_prop_bit);
+    assert(prop->info == &qdev_prop_bit64);
     return 0x1ull << prop->bitnr;
 }
 
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index 0cfff1c..77538a8 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -53,7 +53,7 @@ extern PropertyInfo qdev_prop_arraylen;
         }
 #define DEFINE_PROP_BIT64(_name, _state, _field, _bit, _defval) {       \
         .name      = (_name),                                           \
-        .info      = &(qdev_prop_bit),                                  \
+        .info      = &(qdev_prop_bit64),                                \
         .bitnr    = (_bit),                                             \
         .offset    = offsetof(_state, _field)                           \
             + type_check(uint64_t, typeof_field(_state, _field)),       \
commit 6e3c0c6edbdddb8dd676bec1ac51b5faffc19a77
Author: Stefan Weil <sw at weilnetz.de>
Date:   Fri Jul 10 21:22:39 2015 +0200

    tci: Fix regression with INDEX_op_qemu_st_i32, INDEX_op_qemu_st_i64
    
    Commit 59227d5d45bb3c31dc2118011691c35b3c00879c did not update the
    code in tcg/tci/tcg-target.c for those two cases.
    
    Signed-off-by: Stefan Weil <sw at weilnetz.de>
    Message-id: 1436556159-3002-1-git-send-email-sw at weilnetz.de
    Reviewed-by: Richard Henderson <rth at twiddle.net>
    Signed-off-by: Peter Maydell <peter.maydell at linaro.org>

diff --git a/tcg/tci/tcg-target.c b/tcg/tci/tcg-target.c
index 10affab..83472db 100644
--- a/tcg/tci/tcg-target.c
+++ b/tcg/tci/tcg-target.c
@@ -782,9 +782,6 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
             tcg_out_r(s, *args++);
         }
         tcg_out_i(s, *args++);
-#ifdef CONFIG_SOFTMMU
-        tcg_out_i(s, *args);
-#endif
         break;
     case INDEX_op_qemu_st_i64:
         tcg_out_r(s, *args++);
@@ -796,9 +793,6 @@ static void tcg_out_op(TCGContext *s, TCGOpcode opc, const TCGArg *args,
             tcg_out_r(s, *args++);
         }
         tcg_out_i(s, *args++);
-#ifdef CONFIG_SOFTMMU
-        tcg_out_i(s, *args);
-#endif
         break;
     case INDEX_op_mov_i32:  /* Always emitted via tcg_out_mov.  */
     case INDEX_op_mov_i64:


More information about the Spice-commits mailing list