--- linux-2.6.18.noarch/include/linux/pci.h.orig 2007-12-11 13:26:51.000000000 -0500 +++ linux-2.6.18.noarch/include/linux/pci.h 2007-12-11 13:27:27.000000000 -0500 @@ -540,6 +540,7 @@ void pci_set_master(struct pci_dev *dev) int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); #define HAVE_PCI_SET_MWI int pci_set_mwi(struct pci_dev *dev); +int pci_try_set_mwi(struct pci_dev *dev); void pci_clear_mwi(struct pci_dev *dev); void pci_intx(struct pci_dev *dev, int enable); int pci_set_dma_mask(struct pci_dev *dev, u64 mask); --- linux-2.6.18.noarch/drivers/pci/pci.c.orig 2007-12-11 13:26:51.000000000 -0500 +++ linux-2.6.18.noarch/drivers/pci/pci.c 2007-12-11 13:31:05.000000000 -0500 @@ -1116,6 +1116,21 @@ pci_set_mwi(struct pci_dev *dev) } /** + * pci_try_set_mwi - enables memory-write-invalidate PCI transaction + * @dev: the PCI device for which MWI is enabled + * + * Enables the Memory-Write-Invalidate transaction in %PCI_COMMAND. + * Callers are not required to check the return value. + * + * RETURNS: An appropriate -ERRNO error value on error, or zero for success. + */ +int pci_try_set_mwi(struct pci_dev *dev) +{ + int rc = pci_set_mwi(dev); + return rc; +} + +/** * pci_clear_mwi - disables Memory-Write-Invalidate for device dev * @dev: the PCI device to disable * @@ -1410,6 +1425,7 @@ EXPORT_SYMBOL(pci_release_region); EXPORT_SYMBOL(pci_request_region); EXPORT_SYMBOL(pci_set_master); EXPORT_SYMBOL(pci_set_mwi); +EXPORT_SYMBOL(pci_try_set_mwi); EXPORT_SYMBOL(pci_clear_mwi); EXPORT_SYMBOL_GPL(pci_intx); EXPORT_SYMBOL(pci_set_dma_mask); --- linux-2.6.18.noarch/include/linux/libata-compat.h.orig 2008-05-14 14:18:13.000000000 -0400 +++ linux-2.6.18.noarch/include/linux/libata-compat.h 2008-05-14 14:18:30.000000000 -0400 @@ -39,11 +39,6 @@ #ifdef CONFIG_PCI -static inline int pci_try_set_mwi(struct pci_dev *pdev) -{ - return pci_set_mwi(pdev); -} - static inline int pci_reenable_device(struct pci_dev *pdev) { return pci_enable_device(pdev);