WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [patch 5/9] xm, xend: xen-api: DPCI.get_hotplug_slot() retur

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [patch 5/9] xm, xend: xen-api: DPCI.get_hotplug_slot() returns a decimal
From: Simon Horman <horms@xxxxxxxxxxxx>
Date: Thu, 04 Jun 2009 13:21:20 +1000
Cc: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>, Dexuan Cui <dexuan.cui@xxxxxxxxx>
Delivery-date: Wed, 03 Jun 2009 20:29:31 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20090604032115.934982694@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: quilt/0.46-1
xm uses the following code to read pci information using Xen API:

    ppci_ref = server.xenapi.DPCI.get_PPCI(dpci_ref)
    ppci_record = server.xenapi.PPCI.get_record(ppci_ref)
    dev = {
        "domain":   int(ppci_record["domain"]),
        "bus":      int(ppci_record["bus"]),
        "slot":     int(ppci_record["slot"]),
        "func":     int(ppci_record["func"]),
        "vslot":    int(server.xenapi.DPCI.get_hotplug_slot(dpci_ref))
    }

As the domain, bus, slot and func values are returned as string
representations of decimal, it makes sense for get_hotplug_slot() to also
return string representations of decimal.

As it is, the int() conversion will break cause xm to fail with
an error if the vslot is in the range 0xa-0xf or 0x1a-0x1f.

$ xm pci-list debian
Error: Invalid argument.

And the int() conversion will return the wrong value if
the vslot is in the range 0x10-0x19.


This patch also alters XendDPCI to store hotplug_vslot as an integer
rather than a string. This is consitent with the way other
values are stored inside XendDPCI.

get_hotplug_slot() returning a string is not consistent
with other calls inside XendDPCI, which return integers.

Cc: Dexuan Cui <dexuan.cui@xxxxxxxxx>
Cc: Masaki Kanno <kanno.masaki@xxxxxxxxxxxxxx>
Signed-off-by: Simon Horman <horms@xxxxxxxxxxxx>

Index: xen-unstable.hg/tools/python/xen/xend/XendDPCI.py
===================================================================
--- xen-unstable.hg.orig/tools/python/xen/xend/XendDPCI.py      2009-06-03 
15:03:10.000000000 +1000
+++ xen-unstable.hg/tools/python/xen/xend/XendDPCI.py   2009-06-03 
15:04:10.000000000 +1000
@@ -119,7 +119,7 @@ class XendDPCI(XendBase):
 
         self.VM = record['VM']
         self.PPCI = record['PPCI']
-        self.hotplug_slot = record['hotplug_slot']
+        self.hotplug_slot = int(record['hotplug_slot'], 16)
         if 'options' in record.keys():
             self.options = record['options']
 
@@ -153,7 +153,7 @@ class XendDPCI(XendBase):
         return self.PPCI
 
     def get_hotplug_slot(self):
-        return self.hotplug_slot
+        return "%d" % self.hotplug_slot
 
     def get_options(self):
         return self.options

-- 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>