Browse Source

ipmi: Turn off default probing of interfaces

The default probing can cause problems with some system, slow booting,
extra CPU usages, etc.  Turn it off by default and give a config option
to enable it.

From: Matthew Garrett <matthew.garrett@nebula.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Corey Minyard 11 years ago
parent
commit
0dfe6e7ed4
2 changed files with 13 additions and 1 deletions
  1. 12 0
      drivers/char/ipmi/Kconfig
  2. 1 1
      drivers/char/ipmi/ipmi_si_intf.c

+ 12 - 0
drivers/char/ipmi/Kconfig

@@ -50,6 +50,18 @@ config IPMI_SI
 	 Currently, only KCS and SMIC are supported.  If
 	 Currently, only KCS and SMIC are supported.  If
 	 you are using IPMI, you should probably say "y" here.
 	 you are using IPMI, you should probably say "y" here.
 
 
+config IPMI_SI_PROBE_DEFAULTS
+       bool 'Probe for all possible IPMI system interfaces by default'
+       default n
+       depends on IPMI_SI
+       help
+	 Modern systems will usually expose IPMI interfaces via a discoverable
+	 firmware mechanism such as ACPI or DMI. Older systems do not, and so
+	 the driver is forced to probe hardware manually. This may cause boot
+	 delays. Say "n" here to disable this manual probing. IPMI will then
+	 only be available on older systems if the "ipmi_si_intf.trydefaults=1"
+	 boot argument is passed.
+
 config IPMI_WATCHDOG
 config IPMI_WATCHDOG
        tristate 'IPMI Watchdog Timer'
        tristate 'IPMI Watchdog Timer'
        help
        help

+ 1 - 1
drivers/char/ipmi/ipmi_si_intf.c

@@ -1239,7 +1239,7 @@ static bool          si_tryplatform = 1;
 #ifdef CONFIG_PCI
 #ifdef CONFIG_PCI
 static bool          si_trypci = 1;
 static bool          si_trypci = 1;
 #endif
 #endif
-static bool          si_trydefaults = 1;
+static bool          si_trydefaults = IS_ENABLED(CONFIG_IPMI_SI_PROBE_DEFAULTS);
 static char          *si_type[SI_MAX_PARMS];
 static char          *si_type[SI_MAX_PARMS];
 #define MAX_SI_TYPE_STR 30
 #define MAX_SI_TYPE_STR 30
 static char          si_type_str[MAX_SI_TYPE_STR];
 static char          si_type_str[MAX_SI_TYPE_STR];