Takashi Iwai 8d36d7
From: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 8d36d7
Subject: kABI workaround for pcie_port_bus_type change
Takashi Iwai 8d36d7
Patch-mainline: Never, kABI workaround
Takashi Iwai 8d36d7
References: bsc#1161561
Takashi Iwai 8d36d7
Takashi Iwai 8d36d7
patches.suse/PCI-portdrv-Remove-pcie_port_bus_type-link-order-dep.patch
Takashi Iwai 8d36d7
moved pcie_port_bus_type definition into pci-driver.c, and this broke
Takashi Iwai 8d36d7
kABI.  Take it back to generate the compatible kABI again.
Takashi Iwai 8d36d7
Takashi Iwai 8d36d7
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai 8d36d7
Takashi Iwai 8d36d7
---
Takashi Iwai 8d36d7
 drivers/pci/pci-driver.c       |    8 +-------
Takashi Iwai 8d36d7
 drivers/pci/pcie/Makefile      |    2 +-
Takashi Iwai 8d36d7
 drivers/pci/pcie/portdrv_bus.c |   15 +++++++++++++++
Takashi Iwai 8d36d7
 3 files changed, 17 insertions(+), 8 deletions(-)
Takashi Iwai 8d36d7
Takashi Iwai 8d36d7
--- a/drivers/pci/pci-driver.c
Takashi Iwai 8d36d7
+++ b/drivers/pci/pci-driver.c
Takashi Iwai 8d36d7
@@ -1639,7 +1639,7 @@ struct bus_type pci_bus_type = {
Takashi Iwai 8d36d7
 EXPORT_SYMBOL(pci_bus_type);
Takashi Iwai 8d36d7
 
Takashi Iwai 8d36d7
 #ifdef CONFIG_PCIEPORTBUS
Takashi Iwai 8d36d7
-static int pcie_port_bus_match(struct device *dev, struct device_driver *drv)
Takashi Iwai 8d36d7
+int pcie_port_bus_match(struct device *dev, struct device_driver *drv)
Takashi Iwai 8d36d7
 {
Takashi Iwai 8d36d7
 	struct pcie_device *pciedev;
Takashi Iwai 8d36d7
 	struct pcie_port_service_driver *driver;
Takashi Iwai 8d36d7
@@ -1659,12 +1659,6 @@ static int pcie_port_bus_match(struct de
Takashi Iwai 8d36d7
 
Takashi Iwai 8d36d7
 	return 1;
Takashi Iwai 8d36d7
 }
Takashi Iwai 8d36d7
-
Takashi Iwai 8d36d7
-struct bus_type pcie_port_bus_type = {
Takashi Iwai 8d36d7
-	.name		= "pci_express",
Takashi Iwai 8d36d7
-	.match		= pcie_port_bus_match,
Takashi Iwai 8d36d7
-};
Takashi Iwai 8d36d7
-EXPORT_SYMBOL_GPL(pcie_port_bus_type);
Takashi Iwai 8d36d7
 #endif
Takashi Iwai 8d36d7
 
Takashi Iwai 8d36d7
 static int __init pci_driver_init(void)
Takashi Iwai 8d36d7
--- a/drivers/pci/pcie/Makefile
Takashi Iwai 8d36d7
+++ b/drivers/pci/pcie/Makefile
Takashi Iwai 8d36d7
@@ -5,7 +5,7 @@
Takashi Iwai 8d36d7
 # Build PCI Express ASPM if needed
Takashi Iwai 8d36d7
 obj-$(CONFIG_PCIEASPM)		+= aspm.o
Takashi Iwai 8d36d7
 
Takashi Iwai 8d36d7
-pcieportdrv-y			:= portdrv_core.o portdrv_pci.o err.o
Takashi Iwai 8d36d7
+pcieportdrv-y			:= portdrv_core.o portdrv_pci.o err.o portdrv_bus.o
Takashi Iwai 8d36d7
 
Takashi Iwai 8d36d7
 obj-$(CONFIG_PCIEPORTBUS)	+= pcieportdrv.o
Takashi Iwai 8d36d7
 
Takashi Iwai 8d36d7
--- /dev/null
Takashi Iwai 8d36d7
+++ b/drivers/pci/pcie/portdrv_bus.c
Takashi Iwai 8d36d7
@@ -0,0 +1,15 @@
Takashi Iwai 8d36d7
+#include <linux/module.h>
Takashi Iwai 8d36d7
+#include <linux/pci.h>
Takashi Iwai 8d36d7
+#include <linux/kernel.h>
Takashi Iwai 8d36d7
+#include <linux/errno.h>
Takashi Iwai 8d36d7
+#include <linux/pm.h>
Takashi Iwai 8d36d7
+
Takashi Iwai 8d36d7
+#include "portdrv.h"
Takashi Iwai 8d36d7
+
Takashi Iwai 8d36d7
+extern int pcie_port_bus_match(struct device *dev, struct device_driver *drv);
Takashi Iwai 8d36d7
+
Takashi Iwai 8d36d7
+struct bus_type pcie_port_bus_type = {
Takashi Iwai 8d36d7
+	.name		= "pci_express",
Takashi Iwai 8d36d7
+	.match		= pcie_port_bus_match,
Takashi Iwai 8d36d7
+};
Takashi Iwai 8d36d7
+EXPORT_SYMBOL_GPL(pcie_port_bus_type);