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 <tharvey@gateworks.com>
Tested-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
master
Tim Harvey 8 years ago committed by Felix Fietkau
parent bc1e7469aa
commit 456bd95023
  1. 42
      target/linux/imx6/config-4.9
  2. 22
      target/linux/imx6/patches-4.9/200-disable-msi.patch

@ -1,7 +1,5 @@
CONFIG_AHCI_IMX=y CONFIG_AHCI_IMX=y
CONFIG_ALIGNMENT_TRAP=y CONFIG_ALIGNMENT_TRAP=y
# CONFIG_APM_EMULATION is not set
# CONFIG_ARCH_ARTPEC is not set
CONFIG_ARCH_CLOCKSOURCE_DATA=y CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_ARCH_HAS_ELF_RANDOMIZE=y CONFIG_ARCH_HAS_ELF_RANDOMIZE=y
CONFIG_ARCH_HAS_GCOV_PROFILE_ALL=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_MULTI_V7=y
CONFIG_ARCH_MXC=y CONFIG_ARCH_MXC=y
CONFIG_ARCH_NR_GPIO=0 CONFIG_ARCH_NR_GPIO=0
# CONFIG_ARCH_RENESAS is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y CONFIG_ARCH_SUPPORTS_ATOMIC_RMW=y
CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y CONFIG_ARCH_SUPPORTS_BIG_ENDIAN=y
CONFIG_ARCH_SUPPORTS_UPROBES=y CONFIG_ARCH_SUPPORTS_UPROBES=y
CONFIG_ARCH_SUSPEND_POSSIBLE=y CONFIG_ARCH_SUSPEND_POSSIBLE=y
# CONFIG_ARCH_TANGO is not set
CONFIG_ARCH_USE_BUILTIN_BSWAP=y CONFIG_ARCH_USE_BUILTIN_BSWAP=y
CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
CONFIG_ARCH_WANT_GENERAL_HUGETLB=y CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
CONFIG_ARM=y CONFIG_ARM=y
# CONFIG_ARM_CPU_SUSPEND is not set CONFIG_ARM_CPU_SUSPEND=y
CONFIG_ARM_CRYPTO=y CONFIG_ARM_CRYPTO=y
CONFIG_ARM_ERRATA_754322=y CONFIG_ARM_ERRATA_754322=y
CONFIG_ARM_ERRATA_764369=y CONFIG_ARM_ERRATA_764369=y
CONFIG_ARM_ERRATA_775420=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_GIC=y
CONFIG_ARM_HAS_SG_CHAIN=y CONFIG_ARM_HAS_SG_CHAIN=y
CONFIG_ARM_HEAVY_MB=y CONFIG_ARM_HEAVY_MB=y
@ -69,9 +60,6 @@ CONFIG_CLKSRC_PROBE=y
CONFIG_CLONE_BACKWARDS=y CONFIG_CLONE_BACKWARDS=y
CONFIG_CLZ_TAB=y CONFIG_CLZ_TAB=y
CONFIG_COMMON_CLK=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=y
CONFIG_CPUFREQ_DT_PLATDEV=y CONFIG_CPUFREQ_DT_PLATDEV=y
CONFIG_CPU_32v6K=y CONFIG_CPU_32v6K=y
@ -175,7 +163,6 @@ CONFIG_DMA_OF=y
CONFIG_DTC=y CONFIG_DTC=y
CONFIG_EDAC_ATOMIC_SCRUB=y CONFIG_EDAC_ATOMIC_SCRUB=y
CONFIG_EDAC_SUPPORT=y CONFIG_EDAC_SUPPORT=y
# CONFIG_EFI is not set
# CONFIG_ENABLE_DEFAULT_TRACERS is not set # CONFIG_ENABLE_DEFAULT_TRACERS is not set
CONFIG_ENCRYPTED_KEYS=y CONFIG_ENCRYPTED_KEYS=y
CONFIG_EXT2_FS=y CONFIG_EXT2_FS=y
@ -211,8 +198,6 @@ CONFIG_GENERIC_IO=y
CONFIG_GENERIC_IRQ_CHIP=y CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_GENERIC_IRQ_SHOW=y CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_SHOW_LEVEL=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_PCI_IOMAP=y
CONFIG_GENERIC_PINCONF=y CONFIG_GENERIC_PINCONF=y
CONFIG_GENERIC_SCHED_CLOCK=y CONFIG_GENERIC_SCHED_CLOCK=y
@ -224,7 +209,6 @@ CONFIG_GLOB=y
CONFIG_GPIOLIB=y CONFIG_GPIOLIB=y
CONFIG_GPIOLIB_IRQCHIP=y CONFIG_GPIOLIB_IRQCHIP=y
CONFIG_GPIO_GENERIC=y CONFIG_GPIO_GENERIC=y
# CONFIG_GPIO_MPC8XXX is not set
CONFIG_GPIO_MXC=y CONFIG_GPIO_MXC=y
CONFIG_GPIO_PCA953X=y CONFIG_GPIO_PCA953X=y
CONFIG_GPIO_PCA953X_IRQ=y CONFIG_GPIO_PCA953X_IRQ=y
@ -281,8 +265,6 @@ CONFIG_HAVE_SMP=y
CONFIG_HAVE_SYSCALL_TRACEPOINTS=y CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
CONFIG_HAVE_UID16=y CONFIG_HAVE_UID16=y
CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=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_HW_RANDOM=y
CONFIG_HZ_FIXED=0 CONFIG_HZ_FIXED=0
CONFIG_HZ_PERIODIC=y CONFIG_HZ_PERIODIC=y
@ -305,19 +287,12 @@ CONFIG_IRQ_WORK=y
CONFIG_JBD2=y CONFIG_JBD2=y
# CONFIG_JFFS2_FS is not set # CONFIG_JFFS2_FS is not set
CONFIG_KEYS=y 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_LIBFDT=y
CONFIG_LOCK_SPIN_ON_OWNER=y CONFIG_LOCK_SPIN_ON_OWNER=y
CONFIG_LZO_COMPRESS=y CONFIG_LZO_COMPRESS=y
CONFIG_LZO_DECOMPRESS=y CONFIG_LZO_DECOMPRESS=y
CONFIG_MARVELL_PHY=y CONFIG_MARVELL_PHY=y
CONFIG_MDIO_BOARDINFO=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_MAX77620 is not set
CONFIG_MFD_SYSCON=y CONFIG_MFD_SYSCON=y
CONFIG_MICREL_PHY=y CONFIG_MICREL_PHY=y
@ -338,7 +313,6 @@ CONFIG_MPILIB=y
CONFIG_MTD_NAND=y CONFIG_MTD_NAND=y
CONFIG_MTD_NAND_ECC=y CONFIG_MTD_NAND_ECC=y
CONFIG_MTD_NAND_GPMI_NAND=y CONFIG_MTD_NAND_GPMI_NAND=y
# CONFIG_MTD_NAND_MTK is not set
# CONFIG_MTD_PHYSMAP_OF_VERSATILE is not set # CONFIG_MTD_PHYSMAP_OF_VERSATILE is not set
CONFIG_MTD_UBI=y CONFIG_MTD_UBI=y
CONFIG_MTD_UBI_BEB_LIMIT=20 CONFIG_MTD_UBI_BEB_LIMIT=20
@ -353,10 +327,8 @@ CONFIG_MXS_DMA=y
CONFIG_NEED_DMA_MAP_STATE=y CONFIG_NEED_DMA_MAP_STATE=y
CONFIG_NEON=y CONFIG_NEON=y
CONFIG_NET_DSA=y CONFIG_NET_DSA=y
# CONFIG_B53 is not set
CONFIG_NET_DSA_MV88E6XXX=y CONFIG_NET_DSA_MV88E6XXX=y
CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y CONFIG_NET_DSA_MV88E6XXX_GLOBAL2=y
# CONFIG_NET_DSA_QCA8K is not set
CONFIG_NET_DSA_TAG_DSA=y CONFIG_NET_DSA_TAG_DSA=y
CONFIG_NET_DSA_TAG_EDSA=y CONFIG_NET_DSA_TAG_EDSA=y
CONFIG_NET_FLOW_LIMIT=y CONFIG_NET_FLOW_LIMIT=y
@ -386,18 +358,14 @@ CONFIG_OUTER_CACHE=y
CONFIG_OUTER_CACHE_SYNC=y CONFIG_OUTER_CACHE_SYNC=y
CONFIG_PADATA=y CONFIG_PADATA=y
CONFIG_PAGE_OFFSET=0x80000000 CONFIG_PAGE_OFFSET=0x80000000
# CONFIG_PARAVIRT is not set
# CONFIG_PARAVIRT_TIME_ACCOUNTING is not set
CONFIG_PCI=y CONFIG_PCI=y
CONFIG_PCIEAER=y CONFIG_PCIEAER=y
CONFIG_PCIEPORTBUS=y CONFIG_PCIEPORTBUS=y
CONFIG_PCIE_DW=y CONFIG_PCIE_DW=y
CONFIG_PCIE_DW_PLAT=y CONFIG_PCIE_PME=y
CONFIG_PCI_DOMAINS=y CONFIG_PCI_DOMAINS=y
CONFIG_PCI_DOMAINS_GENERIC=y CONFIG_PCI_DOMAINS_GENERIC=y
CONFIG_PCI_IMX6=y CONFIG_PCI_IMX6=y
CONFIG_PCI_MSI=y
CONFIG_PCI_MSI_IRQ_DOMAIN=y
CONFIG_PERF_USE_VMALLOC=y CONFIG_PERF_USE_VMALLOC=y
CONFIG_PGTABLE_LEVELS=2 CONFIG_PGTABLE_LEVELS=2
CONFIG_PHYLIB=y CONFIG_PHYLIB=y
@ -423,9 +391,6 @@ CONFIG_PTP_1588_CLOCK=y
CONFIG_PWM=y CONFIG_PWM=y
CONFIG_PWM_IMX=y CONFIG_PWM_IMX=y
CONFIG_PWM_SYSFS=y CONFIG_PWM_SYSFS=y
CONFIG_PWRSEQ_EMMC=y
CONFIG_PWRSEQ_SIMPLE=y
# CONFIG_QORIQ_THERMAL is not set
CONFIG_RAS=y CONFIG_RAS=y
CONFIG_RATIONAL=y CONFIG_RATIONAL=y
CONFIG_RCU_STALL_COMMON=y CONFIG_RCU_STALL_COMMON=y
@ -442,9 +407,6 @@ CONFIG_REGULATOR_ANATOP=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_REGULATOR_LTC3676=y CONFIG_REGULATOR_LTC3676=y
CONFIG_REGULATOR_PFUZE100=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_RFS_ACCEL=y
CONFIG_RPS=y CONFIG_RPS=y
CONFIG_RTC_CLASS=y CONFIG_RTC_CLASS=y

@ -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
Loading…
Cancel
Save