]> xenbits.xensource.com Git - xen.git/commit
xm, xend: xen-api: DPCI.get_hotplug_slot() returns a decimal
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 4 Jun 2009 09:40:24 +0000 (10:40 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 4 Jun 2009 09:40:24 +0000 (10:40 +0100)
commita5582cb100e63dd7b175eed0cfa248169bdc532c
tree07fc91947a270ccfed034d26704114b712a99079
parent418ab3dcc0df5b61f7b491e9a56e0ab45a323e0c
xm, xend: xen-api: DPCI.get_hotplug_slot() returns a decimal

xm uses the following code to read pci information using Xen API:

    ppci_ref =3D server.xenapi.DPCI.get_PPCI(dpci_ref)
    ppci_record =3D server.xenapi.PPCI.get_record(ppci_ref)
    dev =3D {
        "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.

Signed-off-by: Simon Horman <horms@verge.net.au>
tools/python/xen/xend/XendDPCI.py