From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932295AbdBPOeb (ORCPT ); Thu, 16 Feb 2017 09:34:31 -0500 Received: from terminus.zytor.com ([65.50.211.136]:33666 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932140AbdBPOe3 (ORCPT ); Thu, 16 Feb 2017 09:34:29 -0500 Date: Thu, 16 Feb 2017 06:34:08 -0800 From: tip-bot for Arnd Bergmann Message-ID: Cc: bart.vanassche@sandisk.com, hpa@zytor.com, mingo@kernel.org, bhelgaas@google.com, tglx@linutronix.de, linux-kernel@vger.kernel.org, arnd@arndb.de, alex.williamson@redhat.com, marc.zyngier@arm.com Reply-To: mingo@kernel.org, hpa@zytor.com, bart.vanassche@sandisk.com, linux-kernel@vger.kernel.org, marc.zyngier@arm.com, alex.williamson@redhat.com, arnd@arndb.de, bhelgaas@google.com, tglx@linutronix.de In-Reply-To: <20170214215343.3307861-1-arnd@arndb.de> References: <1413190208.4202.34.camel@ul30vt.home> <20170214215343.3307861-1-arnd@arndb.de> To: linux-tip-commits@vger.kernel.org Subject: [tip:irq/core] genirq/msi: Add stubs for get_cached_msi_msg/pci_write_msi_msg Git-Commit-ID: 2f44e29cef006a4b0a4ecf7d4c5aac7d0fbb505c X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 2f44e29cef006a4b0a4ecf7d4c5aac7d0fbb505c Gitweb: http://git.kernel.org/tip/2f44e29cef006a4b0a4ecf7d4c5aac7d0fbb505c Author: Arnd Bergmann AuthorDate: Tue, 14 Feb 2017 22:53:12 +0100 Committer: Thomas Gleixner CommitDate: Thu, 16 Feb 2017 15:32:19 +0100 genirq/msi: Add stubs for get_cached_msi_msg/pci_write_msi_msg A bug fix to the MSIx handling in vfio added references to functions that may not be defined if MSI is disabled in the kernel, resulting in this link error: drivers/built-in.o: In function `vfio_msi_set_vector_signal': :(.text+0x450808): undefined reference to `get_cached_msi_msg' :(.text+0x45080c): undefined reference to `write_msi_msg' As suggested by Alex Williamson, add stub implementations for get_cached_msi_msg() and pci_write_msi_msg(). In case this bugfix gets backported, please note that the #ifdef has changed over time, originally both functions were implemented in drivers/pci/msi.c and controlled by CONFIG_PCI_MSI, while nowadays get_cached_msi_msg() is part of the generic MSI support and can be used without PCI. Fixes: b8f02af096b1 ("vfio/pci: Restore MSIx message prior to enabling") Signed-off-by: Arnd Bergmann Cc: Marc Zyngier Cc: Alex Williamson Cc: Bjorn Helgaas Cc: Bart Van Assche Link: http://lkml.kernel.org/r/1413190208.4202.34.camel@ul30vt.home Link: http://lkml.kernel.org/r/20170214215343.3307861-1-arnd@arndb.de Signed-off-by: Thomas Gleixner --- include/linux/msi.h | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/include/linux/msi.h b/include/linux/msi.h index 0db320b..a83b84f 100644 --- a/include/linux/msi.h +++ b/include/linux/msi.h @@ -17,7 +17,13 @@ struct msi_desc; struct pci_dev; struct platform_msi_priv_data; void __get_cached_msi_msg(struct msi_desc *entry, struct msi_msg *msg); +#ifdef CONFIG_GENERIC_MSI_IRQ void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg); +#else +static inline void get_cached_msi_msg(unsigned int irq, struct msi_msg *msg) +{ +} +#endif typedef void (*irq_write_msi_msg_t)(struct msi_desc *desc, struct msi_msg *msg); @@ -116,11 +122,15 @@ struct msi_desc { struct pci_dev *msi_desc_to_pci_dev(struct msi_desc *desc); void *msi_desc_to_pci_sysdata(struct msi_desc *desc); +void pci_write_msi_msg(unsigned int irq, struct msi_msg *msg); #else /* CONFIG_PCI_MSI */ static inline void *msi_desc_to_pci_sysdata(struct msi_desc *desc) { return NULL; } +static inline void pci_write_msi_msg(unsigned int irq, struct msi_msg *msg) +{ +} #endif /* CONFIG_PCI_MSI */ struct msi_desc *alloc_msi_entry(struct device *dev, int nvec, @@ -128,7 +138,6 @@ struct msi_desc *alloc_msi_entry(struct device *dev, int nvec, void free_msi_entry(struct msi_desc *entry); void __pci_read_msi_msg(struct msi_desc *entry, struct msi_msg *msg); void __pci_write_msi_msg(struct msi_desc *entry, struct msi_msg *msg); -void pci_write_msi_msg(unsigned int irq, struct msi_msg *msg); u32 __pci_msix_desc_mask_irq(struct msi_desc *desc, u32 flag); u32 __pci_msi_desc_mask_irq(struct msi_desc *desc, u32 mask, u32 flag);