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

Re: [Xen-devel] How to register a 64 bit BAR



On Wed, Sep 24, 2014 at 03:57:58PM +0300, Pasi Kärkkäinen wrote:
> On Wed, Sep 24, 2014 at 12:47:01PM +0000, Zytaruk, Kelly wrote:
> > Thanks Anthony, you have saved me hours of searching through the source 
> > code.
> > 
> > I am working with Xen 4.2 qemu-traditional.  I checked the source code for 
> > upstream xen (qemu-xen-dir) and I didn't even find any support for the 
> > pci_register_io_region() function.  Apparently BAR remapping callbacks 
> > aren't supported in this version.  This is most unfortunate :-(
> > 
> 
> Hmm.. I wonder if this old patch would be of any help?
> 
> http://lists.xen.org/archives/html/xen-devel/2012-08/msg01168.html
>

And the two other patches from the "xen/tools: Add 64 bits big bar support" 
thread (3 patches total).


-- Pasi
 
> 
> > Thanks for the help,
> > Kelly
> > 
> > > -----Original Message-----
> > > From: Anthony PERARD [mailto:anthony.perard@xxxxxxxxxx]
> > > Sent: Wednesday, September 24, 2014 5:53 AM
> > > To: Zytaruk, Kelly
> > > Cc: xen-devel@xxxxxxxxxxxxx
> > > Subject: Re: [Xen-devel] How to register a 64 bit BAR
> > > 
> > > On Tue, Sep 23, 2014 at 08:33:08PM +0000, Zytaruk, Kelly wrote:
> > > > I have used pci_register_io_region() to register 32 bit BARs but how do 
> > > > I
> > > register a 64 bit BAR?
> > > >
> > > > Let's say my region uses BAR 2 and BAR 3 for a 64 bit address.  Do I
> > > > register them separately as in
> > > >
> > > > pci_register_io_region (dev, 2, region_size, PCI_ADDRESS_SPACE_MEM,
> > > > &my_func); pci_register_io_region (dev, 3, region_size, ???,
> > > > &my_func);
> > > 
> > > No, that would register two different BARs.
> > > 
> > > > What would I specify as a region type for BAR 3?
> > > 
> > > Nothing, since you don't want two different BARs.
> > > 
> > > > Or is QEMU smart enough for me to register just BAR 2 and it will know
> > > somehow that it is a 64 bit BAR?
> > > 
> > > Nop.
> > > 
> > > > I also want to call cpu_register_physical_memory() from within the 
> > > > callback
> > > but the callback only takes a uint32_t as a physical address.
> > > > I am having difficulty finding an example that uses a 64 bit BAR 
> > > > address.
> > > 
> > > Look for where PCI_ADDRESS_SPACE_MEM is define, and you will find how to
> > > register a 64bit BAR.
> > > Unless your are speaking about qemu-traditional and I'm not sure that is
> > > possible.
> > > 
> > > After looking in the source code of qemu-traditional, it does not appear 
> > > to
> > > support 64bit BAR. Only QEMU upstream handle them (also called qemu-xen).
> > > 
> > > --
> > > Anthony PERARD
> > 
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxx
> > http://lists.xen.org/xen-devel
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.