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

Re: [Xen-devel] Issue With Patch Compilation Fails ( xen/arm: Introduce a generic way to describe device) with HAS_PCI and HAS_PASSTHROUGH.



On Wed, 8 Apr 2015, Manish Jaggi wrote:
> On Wednesday 08 April 2015 11:05 AM, Manish Jaggi wrote:
> > 
> > On Tuesday 07 April 2015 10:13 PM, Stefano Stabellini wrote:
> > > On Tue, 7 Apr 2015, Jaggi, Manish wrote:
> > > > Hi Julien,
> > > > 
> > > > 
> > > > Following patch generated compiler error when HAS_PCI adn
> > > > HAS_PASSTHROUGH enabled.
> > > > Please advice how to fix this issue, or you can revert this patch.
> > > > Should I add a device structure in pci_dev or there is another way.
> > > Hello Manish,
> > > 
> > > we have never really built Xen on ARM with HAS_PCI=y so it is normal
> > > that it won't compile out of the box, it is not just a problem caused by
> > > the commit below.
> > The problem with the patch is it introduces two different structures for
> > device for x86 and arm. While x86 device = pci_dev, for ARM there is a
> > proper device structure and != pci_dev.
> > So the compilation failure is by design.
> > >   I imagine that you'll need to do more than setting
> > > HAS_PCI to y in order to get PCI and PCI passthrough working properly
> > > with Xen on ARM.  Feel free to go ahead and propose any changes
> > > necessary.
> > ok
> The source of the problem is reusing code of two functions
> - reassign_device
> - assign_device
> Earlier code has dt_ variants of these two functions.
> 
> Now the point is simple, should there be redundancy of two functions OR
> change a lot of code in common file drivers/passthrough/pci.c and add
> pci_to_dev macros in all platform_ops calls ?

It doesn't look like we need such a big change, just few more pci_to_dev
and dev_is_pci calls under drivers/passthrough.
Certainly better than duplicating assign_device and reassign_device.


> There are lot of issues with pci_to_dev approach
> a) iommu_ops callbacks have a pci_dev parameter in x86 but have a device
> parameter in arm (smmu.c)
> b) hack is done to make device as pci_dev and that is not a good way of doing.
> 
> I prefer having minimal/some redundancy of two functions rather than changing
> a lot of code.

Code duplication is harmful and it is not that minimal. In any case it
is good to have a common arch-independent infrastructure. However if you
don't like 6c5d3075d97ebe26661df063ee95b14168ad10f7, that's fine, you
can come up with a generalization that works better.


> > > 
> > > Cheers,
> > > 
> > > Stefano
> > > 
> > > 
> > > >      xen/arm: Introduce a generic way to describe device
> > > >           Currently, Xen is supporting PCI and Platform device (based on
> > > > Device Tree).
> > > >          While Xen only supports Platform device on ARM, Xen will gain
> > > > support of
> > > >      PCI soon.
> > > >           Some drivers, such as IOMMU drivers, may handle PCI and
> > > > platform device in
> > > >      the same way. Only few lines of code differs.
> > > >           Rather than requesting to provide 2 set of functions (one for
> > > > PCI and
> > > >      one for platform device), introduce a generic structure "device"
> > > > which
> > > >      is embedded in each specialized device.
> > > >           As x86 only supports PCI, introduce a new type device_t which
> > > > will be an
> > > >      alias to pci_dev for this architecture. It will avoid to add a new
> > > > field
> > > >      for this place.
> > > >           Signed-off-by: Julien Grall <julien.grall@xxxxxxxxxx>
> > > >      Acked-by: Jan Beulich <jbeulich@xxxxxxxx>
> > > >      Acked-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
> > > >      CC: Keir Fraser <keir@xxxxxxx>
> > > >      CC: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
> > > > 
> > > > ----
> > > > 
> > > > Compilation error
> > > > pci.c: In function âiommu_add_deviceâ:
> > > > pci.c:1263:5: error: implicit declaration of function âpci_to_devâ
> > > > [-Werror=implicit-function-declaration]
> > > > pci.c:1263:5: error: nested extern declaration of âpci_to_devâ
> > > > [-Werror=nested-externs]
> > > > pci.c:1263:5: error: passing argument 2 of
> > > > âhd->platform_ops->add_deviceâ makes pointer from integer without a cast
> > > > [-Werror]
> > > > pci.c:1263:5: note: expected âstruct device_t *â but argument is of type
> > > > âintâ
> > > > pci.c:1272:9: error: passing argument 2 of
> > > > âhd->platform_ops->add_deviceâ makes pointer from integer without a cast
> > > > [-Werror]
> > > > pci.c:1272:9: note: expected âstruct device_t *â but argument is of type
> > > > âintâ
> > > > 
> > > > 
> > > > Regards,
> > > > Manish Jaggi
> > 
> 
_______________________________________________
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®.