From mboxrd@z Thu Jan 1 00:00:00 1970 From: Simon Horman Subject: Re: [PATCH] xend: pci: find_parent: should return string rather than int Date: Wed, 17 Jun 2009 21:31:08 +1000 Message-ID: <20090617113102.GA3504@verge.net.au> References: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Cui, Dexuan" Cc: "xen-devel@lists.xensource.com" , Keir Fraser List-Id: xen-devel@lists.xenproject.org On Wed, Jun 17, 2009 at 07:02:27PM +0800, Cui, Dexuan wrote: > Using changeset 19783: 61ec78692b13, device assignment can't work: > e.g., in find_the_uppermost_pci_bridge(), > parent = dev_parent.find_parent() > ... > dev_parent = PciDevice(parent), > we can see parent['domain'] is int and in PciDevice's __init__, int(dev['domain'], 16) would fail: > TypeError: int() can't convert non-string with explicit base > > The patch fixes the issue. Hi Dexuan, sorry about that. The fix looks good to me. Could you tell me a bit about what config/command you ran to produce this problem? I'd like to add something to the tests that I run. Acked-by: Simon Horman > > diff -r 61ec78692b13 tools/python/xen/util/pci.py > --- a/tools/python/xen/util/pci.py Wed Jun 17 07:39:27 2009 +0100 > +++ b/tools/python/xen/util/pci.py Wed Jun 17 18:35:31 2009 +0800 > @@ -547,12 +547,12 @@ class PciDevice: > else: > dev = {} > lst = parent.split(':') > - dev['domain'] = int(lst[0], 16) > - dev['bus'] = int(lst[1], 16) > + dev['domain'] = '%04x' % int(lst[0], 16) > + dev['bus'] = '%02x' % int(lst[1], 16) > lst = lst[2] > lst = lst.split('.') > - dev['slot'] = int(lst[0], 16) > - dev['func'] = int(lst[1], 16) > + dev['slot'] = '%02x' % int(lst[0], 16) > + dev['func'] = '%x' % int(lst[1], 16) > return dev > except OSError, (errno, strerr): > raise PciDeviceParseError('Can not locate the parent of %s',