imx6: disable MSI interrupts
authorTim Harvey <tharvey@gateworks.com>
Thu, 20 Apr 2017 20:28:20 +0000 (13:28 -0700)
committerFelix Fietkau <nbd@nbd.name>
Wed, 26 Apr 2017 09:52:55 +0000 (11:52 +0200)
The IMX6 PCIe host controller does not fire legacy interrupts if MSI is
enabled. A patch is being worked on to enable MSI at runtime only when
it is needed but meanwhile this patch will disable MSI for the imx6 kernel.

This fixes the no interrupt issue on cards/drivers that use legacy interrupts
such as ath9k.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
target/linux/imx6/config-4.9
target/linux/imx6/patches-4.9/200-disable-msi.patch [new file with mode: 0644]

index b4d23de423ab7ebe886172a2b6477a3671900570..701bb53e4b1ddb2c9402035b4bea1cabe749027e 100644 (file)
@@ -1,7 +1,5 @@
 CONFIG_AHCI_IMX=y
 CONFIG_ALIGNMENT_TRAP=y
-# CONFIG_APM_EMULATION is not set
-# CONFIG_ARCH_ARTPEC is not set
 CONFIG_ARCH_CLOCKSOURCE_DATA=y
 CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
 CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=y
@@ -18,29 +16,22 @@ CONFIG_ARCH_MULTI_V6_V7=y
 CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_MXC=y
 CONFIG_ARCH_NR_GPIO=0
-# CONFIG_ARCH_RENESAS is not set
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
 CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
 CONFIG_ARCH_SUPPORTS_UPROBES=y
 CONFIG_ARCH_SUSPEND_POSSIBLE=y
-# CONFIG_ARCH_TANGO is not set
 CONFIG_ARCH_USE_BUILTIN_BSWAP=y
 CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
 CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_ARM=y
-# CONFIG_ARM_CPU_SUSPEND is not set
+CONFIG_ARM_CPU_SUSPEND=y
 CONFIG_ARM_CRYPTO=y
 CONFIG_ARM_ERRATA_754322=y
 CONFIG_ARM_ERRATA_764369=y
 CONFIG_ARM_ERRATA_775420=y
-# CONFIG_ARM_ERRATA_818325_852422 is not set
-# CONFIG_ARM_ERRATA_821420 is not set
-# CONFIG_ARM_ERRATA_825619 is not set
-# CONFIG_ARM_ERRATA_852421 is not set
-# CONFIG_ARM_ERRATA_852423 is not set
 CONFIG_ARM_GIC=y
 CONFIG_ARM_HAS_SG_CHAIN=y
 CONFIG_ARM_HEAVY_MB=y
@@ -69,9 +60,6 @@ CONFIG_CLKSRC_PROBE=y
 CONFIG_CLONE_BACKWARDS=y
 CONFIG_CLZ_TAB=y
 CONFIG_COMMON_CLK=y
-# CONFIG_COMMON_CLK_CS2000_CP is not set
-# CONFIG_COMMON_CLK_NXP is not set
-# CONFIG_COMMON_CLK_PIC32 is not set
 CONFIG_CPUFREQ_DT=y
 CONFIG_CPUFREQ_DT_PLATDEV=y
 CONFIG_CPU_32v6K=y
@@ -175,7 +163,6 @@ CONFIG_DMA_OF=y
 CONFIG_DTC=y
 CONFIG_EDAC_ATOMIC_SCRUB=y
 CONFIG_EDAC_SUPPORT=y
-# CONFIG_EFI is not set
 # CONFIG_ENABLE_DEFAULT_TRACERS is not set
 CONFIG_ENCRYPTED_KEYS=y
 CONFIG_EXT2_FS=y
@@ -211,8 +198,6 @@ CONFIG_GENERIC_IO=y
 CONFIG_GENERIC_IRQ_CHIP=y
 CONFIG_GENERIC_IRQ_SHOW=y
 CONFIG_GENERIC_IRQ_SHOW_LEVEL=y
-CONFIG_GENERIC_MSI_IRQ=y
-CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
 CONFIG_GENERIC_PCI_IOMAP=y
 CONFIG_GENERIC_PINCONF=y
 CONFIG_GENERIC_SCHED_CLOCK=y
@@ -224,7 +209,6 @@ CONFIG_GLOB=y
 CONFIG_GPIOLIB=y
 CONFIG_GPIOLIB_IRQCHIP=y
 CONFIG_GPIO_GENERIC=y
-# CONFIG_GPIO_MPC8XXX is not set
 CONFIG_GPIO_MXC=y
 CONFIG_GPIO_PCA953X=y
 CONFIG_GPIO_PCA953X_IRQ=y
@@ -281,8 +265,6 @@ CONFIG_HAVE_SMP=y
 CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
 CONFIG_HAVE_UID16=y
 CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
-# CONFIG_HISI_FEMAC is not set
-# CONFIG_HWLAT_TRACER is not set
 CONFIG_HW_RANDOM=y
 CONFIG_HZ_FIXED=0
 CONFIG_HZ_PERIODIC=y
@@ -305,19 +287,12 @@ CONFIG_IRQ_WORK=y
 CONFIG_JBD2=y
 # CONFIG_JFFS2_FS is not set
 CONFIG_KEYS=y
-# CONFIG_KEY_DH_OPERATIONS is not set
-CONFIG_LD_DEAD_CODE_DATA_ELIMINATION=y
-# CONFIG_LEDS_IS31FL319X is not set
-# CONFIG_LEDS_IS31FL32XX is not set
-# CONFIG_LEDS_TRIGGER_MTD is not set
 CONFIG_LIBFDT=y
 CONFIG_LOCK_SPIN_ON_OWNER=y
 CONFIG_LZO_COMPRESS=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_MARVELL_PHY=y
 CONFIG_MDIO_BOARDINFO=y
-# CONFIG_MDIO_HISI_FEMAC is not set
-# CONFIG_MFD_ACT8945A is not set
 # CONFIG_MFD_MAX77620 is not set
 CONFIG_MFD_SYSCON=y
 CONFIG_MICREL_PHY=y
@@ -338,7 +313,6 @@ CONFIG_MPILIB=y
 CONFIG_MTD_NAND=y
 CONFIG_MTD_NAND_ECC=y
 CONFIG_MTD_NAND_GPMI_NAND=y
-# CONFIG_MTD_NAND_MTK is not set
 # CONFIG_MTD_PHYSMAP_OF_VERSATILE is not set
 CONFIG_MTD_UBI=y
 CONFIG_MTD_UBI_BEB_LIMIT=20
@@ -353,10 +327,8 @@ CONFIG_MXS_DMA=y
 CONFIG_NEED_DMA_MAP_STATE=y
 CONFIG_NEON=y
 CONFIG_NET_DSA=y
-# CONFIG_B53 is not set
 CONFIG_NET_DSA_MV88E6XXX=y
 CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
-# CONFIG_NET_DSA_QCA8K is not set
 CONFIG_NET_DSA_TAG_DSA=y
 CONFIG_NET_DSA_TAG_EDSA=y
 CONFIG_NET_FLOW_LIMIT=y
@@ -386,18 +358,14 @@ CONFIG_OUTER_CACHE=y
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_PADATA=y
 CONFIG_PAGE_OFFSET=0x80000000
-# CONFIG_PARAVIRT is not set
-# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
 CONFIG_PCI=y
 CONFIG_PCIEAER=y
 CONFIG_PCIEPORTBUS=y
 CONFIG_PCIE_DW=y
-CONFIG_PCIE_DW_PLAT=y
+CONFIG_PCIE_PME=y
 CONFIG_PCI_DOMAINS=y
 CONFIG_PCI_DOMAINS_GENERIC=y
 CONFIG_PCI_IMX6=y
-CONFIG_PCI_MSI=y
-CONFIG_PCI_MSI_IRQ_DOMAIN=y
 CONFIG_PERF_USE_VMALLOC=y
 CONFIG_PGTABLE_LEVELS=2
 CONFIG_PHYLIB=y
@@ -423,9 +391,6 @@ CONFIG_PTP_1588_CLOCK=y
 CONFIG_PWM=y
 CONFIG_PWM_IMX=y
 CONFIG_PWM_SYSFS=y
-CONFIG_PWRSEQ_EMMC=y
-CONFIG_PWRSEQ_SIMPLE=y
-# CONFIG_QORIQ_THERMAL is not set
 CONFIG_RAS=y
 CONFIG_RATIONAL=y
 CONFIG_RCU_STALL_COMMON=y
@@ -442,9 +407,6 @@ CONFIG_REGULATOR_ANATOP=y
 CONFIG_REGULATOR_FIXED_VOLTAGE=y
 CONFIG_REGULATOR_LTC3676=y
 CONFIG_REGULATOR_PFUZE100=y
-# CONFIG_REGULATOR_PV88060 is not set
-# CONFIG_REGULATOR_PV88080 is not set
-# CONFIG_REGULATOR_PV88090 is not set
 CONFIG_RFS_ACCEL=y
 CONFIG_RPS=y
 CONFIG_RTC_CLASS=y
diff --git a/target/linux/imx6/patches-4.9/200-disable-msi.patch b/target/linux/imx6/patches-4.9/200-disable-msi.patch
new file mode 100644 (file)
index 0000000..290147c
--- /dev/null
@@ -0,0 +1,22 @@
+The IMX6 PCIe host controller does not fire legacy interrupts when MSI is
+enabled. A patch is being worked on upstream to only enable MSI at runtime
+when needed, but until that is ready we will allow MSI to be disabled.
+
+--- a/drivers/pci/host/Kconfig
++++ b/drivers/pci/host/Kconfig
+@@ -51,7 +51,6 @@ config PCIE_DW_PLAT
+ config PCIE_DW
+       bool
+-      depends on PCI_MSI_IRQ_DOMAIN
+ config PCI_EXYNOS
+       bool "Samsung Exynos PCIe controller"
+@@ -63,7 +62,6 @@ config PCI_EXYNOS
+ config PCI_IMX6
+       bool "Freescale i.MX6 PCIe controller"
+       depends on SOC_IMX6Q
+-      depends on PCI_MSI_IRQ_DOMAIN
+       select PCIEPORTBUS
+       select PCIE_DW