qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 10/16] qdev: make the non-legacy pci address pro


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 10/16] qdev: make the non-legacy pci address property accept an integer
Date: Thu, 02 Feb 2012 14:07:02 -0600
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.23) Gecko/20110922 Lightning/1.0b2 Thunderbird/3.1.15

On 02/02/2012 10:45 AM, Paolo Bonzini wrote:
PCI addresses are set with qdev_prop_uint32.  Thus we make the QOM
property accept a device and function encoded in an 8-bit integer,
instead of the magic dd.f hex string.

Signed-off-by: Paolo Bonzini<address@hidden>

Isn't this a compatibility breaker?

Won't this break libvirt's usage of -device addr=0.2 ?

Regards,

Anthony Liguori

---
  hw/qdev-properties.c |   25 +++++++------------------
  1 files changed, 7 insertions(+), 18 deletions(-)

diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c
index 4fb5cf8..e4bcc6d 100644
--- a/hw/qdev-properties.c
+++ b/hw/qdev-properties.c
@@ -950,30 +950,19 @@ static int print_pci_devfn(DeviceState *dev, Property 
*prop, char *dest, size_t
      }
  }

-static void get_pci_devfn(Object *obj, Visitor *v, void *opaque,
-                          const char *name, Error **errp)
-{
-    DeviceState *dev = DEVICE(obj);
-    Property *prop = opaque;
-    uint32_t *ptr = qdev_get_prop_ptr(dev, prop);
-    char buffer[32];
-    char *p = buffer;
-
-    buffer[0] = 0;
-    if (*ptr != -1) {
-        snprintf(buffer, sizeof(buffer), "%02x.%x", *ptr>>  3, *ptr&  7);
-    }
-    visit_type_str(v,&p, name, errp);
-}
-
  PropertyInfo qdev_prop_pci_devfn = {
      .name  = "pci-devfn",
      .type  = PROP_TYPE_UINT32,
      .size  = sizeof(uint32_t),
      .parse = parse_pci_devfn,
      .print = print_pci_devfn,
-    .get   = get_pci_devfn,
-    .set   = set_generic,
+    .get   = get_int32,
+    .set   = set_int32,
+    /* FIXME: this should be -1...255, but the address is stored
+     * into an uint32_t rather than int32_t.
+     */
+    .min   = 0,
+    .max   = 0xFFFFFFFFULL,
  };

  /* --- public helpers --- */




reply via email to

[Prev in Thread] Current Thread [Next in Thread]