git.kernel.org

media: ddbridge: Kconfig option to control the MSI modparam default - kernel/git/torvalds/linux.git - Linux kernel source tree

  • ️Sat Aug 12 2017
authorDaniel Scheller <d.scheller@gmx.net>2017-08-12 07:56:01 -0400
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2017-08-20 07:09:33 -0400
commitadaf4df70521e656c38ace740f1d98096825a430 (patch)
tree0592518b6547b2a7a396ba506b1db35e90abe6b0
parentfc3fb43e41a15a3508f919a825c186c6e5a22404 (diff)
downloadlinux-adaf4df70521e656c38ace740f1d98096825a430.tar.gz

media: ddbridge: Kconfig option to control the MSI modparam default

It is known that MSI interrupts - while working quite well so far - can still cause issues on some hardware platforms (causing I2C timeouts due to unhandled interrupts). The msi variable/option is set to 1 by default. So, add a Kconfig option prefixed with "EXPERIMENTAL" that will control the default value of that modparam, defaulting to off for a better user experience and (guaranteed) stable operation "per default". Cc: Ralph Metzler <rjkm@metzlerbros.de> Signed-off-by: Daniel Scheller <d.scheller@gmx.net> Tested-by: Richard Scobie <r.scobie@clear.net.nz> Tested-by: Jasmin Jessich <jasmin@anw.at> Tested-by: Dietmar Spingler <d_spingler@freenet.de> Tested-by: Manfred Knick <Manfred.Knick@t-online.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>

-rw-r--r--drivers/media/pci/ddbridge/Kconfig15
-rw-r--r--drivers/media/pci/ddbridge/ddbridge-main.c11

2 files changed, 24 insertions, 2 deletions

diff --git a/drivers/media/pci/ddbridge/Kconfig b/drivers/media/pci/ddbridge/Kconfig
index c79a58fa5fc3a2..1330b2ecc72aac 100644
--- a/drivers/media/pci/ddbridge/Kconfig
+++ b/drivers/media/pci/ddbridge/Kconfig

@@ -26,3 +26,18 @@ config DVB_DDBRIDGE

- CineS2 V7/V7A and DuoFlex S2 V4 (ST STV0910-based)

Say Y if you own such a card and want to use it.

+

+config DVB_DDBRIDGE_MSIENABLE

+ bool "Enable Message Signaled Interrupts (MSI) per default (EXPERIMENTAL)"

+ depends on DVB_DDBRIDGE

+ depends on PCI_MSI

+ default n

+ ---help---

+ Use PCI MSI (Message Signaled Interrupts) per default. Enabling this

+ might lead to I2C errors originating from the bridge in conjunction

+ with certain SATA controllers, requiring a reload of the ddbridge

+ module. MSI can still be disabled by passing msi=0 as option, as

+ this will just change the msi option default value.

+

+ If you're unsure, concerned about stability and don't want to pass

+ module options in case of troubles, say N.

diff --git a/drivers/media/pci/ddbridge/ddbridge-main.c b/drivers/media/pci/ddbridge/ddbridge-main.c
index 420335f4b7bf27..181d5f17fe9135 100644
--- a/drivers/media/pci/ddbridge/ddbridge-main.c
+++ b/drivers/media/pci/ddbridge/ddbridge-main.c

@@ -47,10 +47,17 @@ MODULE_PARM_DESC(adapter_alloc,

"0-one adapter per io, 1-one per tab with io, 2-one per tab, 3-one for all");

#ifdef CONFIG_PCI_MSI

+#ifdef CONFIG_DVB_DDBRIDGE_MSIENABLE

int msi = 1;

+#else

+int msi;

+#endif

module_param(msi, int, 0444);

-MODULE_PARM_DESC(msi,

- " Control MSI interrupts: 0-disable, 1-enable (default)");

+#ifdef CONFIG_DVB_DDBRIDGE_MSIENABLE

+MODULE_PARM_DESC(msi, "Control MSI interrupts: 0-disable, 1-enable (default)");

+#else

+MODULE_PARM_DESC(msi, "Control MSI interrupts: 0-disable (default), 1-enable");

+#endif

#endif

int ci_bitrate = 70000;