Jan Beulich
2008-Jul-23 12:26 UTC
[Xen-devel] [PATCH] linux: fix warnings (some errors with -Werror-implicit-function-declaration) in PCI-MSI code
Plus a little bit of other cleanup. As usual, written and tested on 2.6.26 and made apply to the 2.6.18 tree without further testing. Signed-off-by: Jan Beulich <jbeulich@novell.com> Index: head-2008-07-21/drivers/pci/msi.h ==================================================================--- head-2008-07-21.orig/drivers/pci/msi.h 2008-07-22 10:40:56.000000000 +0200 +++ head-2008-07-21/drivers/pci/msi.h 2008-07-22 10:23:23.000000000 +0200 @@ -84,11 +84,6 @@ extern void (*interrupt[NR_IRQS])(void); extern int pci_vector_resources(int last, int nr_released); -#ifdef CONFIG_XEN -extern int unregister_msi_get_owner(int (*func)(struct pci_dev *dev)); -extern int register_msi_get_owner(int (*func)(struct pci_dev *dev)); -#endif - /* * MSI-X Address Register */ Index: head-2008-07-21/drivers/pci/msi-xen.c ==================================================================--- head-2008-07-21.orig/drivers/pci/msi-xen.c 2008-07-22 10:40:56.000000000 +0200 +++ head-2008-07-21/drivers/pci/msi-xen.c 2008-07-22 10:34:02.000000000 +0200 @@ -116,7 +116,7 @@ static void detach_pirq_entry(int entry_ /* * pciback will provide device''s owner */ -int (*get_owner)(struct pci_dev *dev); +static int (*get_owner)(struct pci_dev *dev); int register_msi_get_owner(int (*func)(struct pci_dev *dev)) { @@ -130,33 +130,32 @@ EXPORT_SYMBOL(register_msi_get_owner); int unregister_msi_get_owner(int (*func)(struct pci_dev *dev)) { - if (get_owner == func) - get_owner = NULL; + if (get_owner != func) + return -EINVAL; + get_owner = NULL; return 0; } static int msi_get_dev_owner(struct pci_dev *dev) { - int owner = DOMID_SELF; + int owner; BUG_ON(!is_initial_xendomain()); - if (get_owner && (owner = get_owner(dev)) >=0 ) { + if (get_owner && (owner = get_owner(dev)) >= 0) { printk(KERN_INFO "get owner for dev %x get %x \n", - dev->devfn, owner); + dev->devfn, owner); return owner; } - else - return DOMID_SELF; + + return DOMID_SELF; } static int msi_unmap_pirq(struct pci_dev *dev, int pirq) { struct physdev_unmap_pirq unmap; int rc; - domid_t domid = DOMID_SELF; - domid = msi_get_dev_owner(dev); - unmap.domid = domid; + unmap.domid = msi_get_dev_owner(dev); unmap.pirq = pirq; if ((rc = HYPERVISOR_physdev_op(PHYSDEVOP_unmap_pirq, &unmap))) @@ -164,7 +163,7 @@ static int msi_unmap_pirq(struct pci_dev if (rc < 0) return rc; - return 0; + return 0; } /* Index: head-2008-07-21/drivers/xen/core/pci.c ==================================================================--- head-2008-07-21.orig/drivers/xen/core/pci.c 2008-07-22 10:40:56.000000000 +0200 +++ head-2008-07-21/drivers/xen/core/pci.c 2008-07-22 10:19:07.000000000 +0200 @@ -24,7 +24,8 @@ static int pci_bus_probe_wrapper(struct r = pci_bus_probe(dev); if (r) - HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_remove, &manage_pci); + WARN_ON(HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_remove, + &manage_pci)); return r; } @@ -40,7 +41,8 @@ static int pci_bus_remove_wrapper(struct r = pci_bus_remove(dev); /* dev and pci_dev are no longer valid!! */ - HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_remove, &manage_pci); + WARN_ON(HYPERVISOR_physdev_op(PHYSDEVOP_manage_pci_remove, + &manage_pci)); return r; } Index: head-2008-07-21/drivers/xen/pciback/pci_stub.c ==================================================================--- head-2008-07-21.orig/drivers/xen/pciback/pci_stub.c 2008-07-22 10:40:56.000000000 +0200 +++ head-2008-07-21/drivers/xen/pciback/pci_stub.c 2008-07-22 10:25:42.000000000 +0200 @@ -832,9 +832,7 @@ static void pcistub_exit(void) driver_remove_file(&pciback_pci_driver.driver, &driver_attr_permissive); pci_unregister_driver(&pciback_pci_driver); -#ifdef CONFIG_PCI_MSI - unregister_msi_get_owner(pciback_get_owner); -#endif + WARN_ON(unregister_msi_get_owner(pciback_get_owner)); } static int __init pcistub_init(void) @@ -892,10 +890,8 @@ static int __init pcistub_init(void) err = driver_create_file(&pciback_pci_driver.driver, &driver_attr_permissive); -#ifdef CONFIG_PCI_MSI if (!err) err = register_msi_get_owner(pciback_get_owner); -#endif if (err) pcistub_exit(); Index: head-2008-07-21/include/linux/pci.h ==================================================================--- head-2008-07-21.orig/include/linux/pci.h 2008-07-22 10:40:56.000000000 +0200 +++ head-2008-07-21/include/linux/pci.h 2008-07-22 10:41:49.000000000 +0200 @@ -599,6 +599,10 @@ static inline void msi_remove_pci_irq_ve struct msix_entry *entries, int nvec) {return -1;} static inline void pci_disable_msix(struct pci_dev *dev) {} static inline void msi_remove_pci_irq_vectors(struct pci_dev *dev) {} +#ifdef CONFIG_XEN +#define register_msi_get_owner(func) 0 +#define unregister_msi_get_owner(func) 0 +#endif #else extern void pci_scan_msi_device(struct pci_dev *dev); extern int pci_enable_msi(struct pci_dev *dev); @@ -607,6 +611,10 @@ extern void pci_msix_shutdown(struct pci struct msix_entry *entries, int nvec); extern void pci_disable_msix(struct pci_dev *dev); extern void msi_remove_pci_irq_vectors(struct pci_dev *dev); +#ifdef CONFIG_XEN +extern int register_msi_get_owner(int (*func)(struct pci_dev *dev)); +extern int unregister_msi_get_owner(int (*func)(struct pci_dev *dev)); +#endif #endif extern void pci_block_user_cfg_access(struct pci_dev *dev); _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel