From: Tim Harvey Date: Thu, 20 Apr 2017 20:28:20 +0000 (-0700) Subject: imx6: disable MSI interrupts X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=456bd950236e5a8a59c19ae8614bec65ed513a2f;p=openwrt%2Fstaging%2Fthess.git imx6: disable MSI interrupts 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 Tested-by: Koen Vandeputte --- diff --git a/target/linux/imx6/config-4.9 b/target/linux/imx6/config-4.9 index b4d23de423..701bb53e4b 100644 --- a/target/linux/imx6/config-4.9 +++ b/target/linux/imx6/config-4.9 @@ -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 index 0000000000..290147c944 --- /dev/null +++ b/target/linux/imx6/patches-4.9/200-disable-msi.patch @@ -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 +