ipmi: add new kernel options to prevent automatic ipmi init
The configuration change building ipmi_si into the kernel precludes the use of a custom driver that can utilize more than one KCS interface, multiple IPMBs, and more than one BMC. This capability is important for fault-tolerant systems. Even if the kernel option ipmi_si.trydefaults=0 is specified, ipmi_si discovers and claims one of the KCS interfaces on a Stratus server. The inability to now prevent the kernel from managing this device is a regression from previous kernels. The regression breaks a capability fault-tolerant vendors have relied upon. To support both ACPI opregion access and the need to avoid activation of ipmi_si on some platforms, we've added two new kernel options, ipmi_si.tryacpi and ipmi_si.trydmi be added to prevent ipmi_si from initializing when these options are set to 0 on the kernel command line. With these options at the default value of 1, ipmi_si init proceeds according to the kernel default. Tested-by: Jim Paradis <jparadis@redhat.com> Signed-off-by: Robert Evans <Robert.Evans@stratus.com> Signed-off-by: Jim Paradis <jparadis@redhat.com> Signed-off-by: Tony Camuso <tcamuso@redhat.com> Signed-off-by: Corey Minyard <cminyard@mvista.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
59fb1b9f5d
commit
d941aeae42
|
@ -1208,6 +1208,12 @@ static int smi_num; /* Used to sequence the SMIs */
|
|||
#define DEFAULT_REGSPACING 1
|
||||
#define DEFAULT_REGSIZE 1
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
static bool si_tryacpi = 1;
|
||||
#endif
|
||||
#ifdef CONFIG_DMI
|
||||
static bool si_trydmi = 1;
|
||||
#endif
|
||||
static bool si_trydefaults = 1;
|
||||
static char *si_type[SI_MAX_PARMS];
|
||||
#define MAX_SI_TYPE_STR 30
|
||||
|
@ -1238,6 +1244,16 @@ MODULE_PARM_DESC(hotmod, "Add and remove interfaces. See"
|
|||
" Documentation/IPMI.txt in the kernel sources for the"
|
||||
" gory details.");
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
module_param_named(tryacpi, si_tryacpi, bool, 0);
|
||||
MODULE_PARM_DESC(tryacpi, "Setting this to zero will disable the"
|
||||
" default scan of the interfaces identified via ACPI");
|
||||
#endif
|
||||
#ifdef CONFIG_DMI
|
||||
module_param_named(trydmi, si_trydmi, bool, 0);
|
||||
MODULE_PARM_DESC(trydmi, "Setting this to zero will disable the"
|
||||
" default scan of the interfaces identified via DMI");
|
||||
#endif
|
||||
module_param_named(trydefaults, si_trydefaults, bool, 0);
|
||||
MODULE_PARM_DESC(trydefaults, "Setting this to 'false' will disable the"
|
||||
" default scan of the KCS and SMIC interface at the standard"
|
||||
|
@ -3408,16 +3424,20 @@ static int init_ipmi_si(void)
|
|||
#endif
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
pnp_register_driver(&ipmi_pnp_driver);
|
||||
pnp_registered = 1;
|
||||
if (si_tryacpi) {
|
||||
pnp_register_driver(&ipmi_pnp_driver);
|
||||
pnp_registered = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_DMI
|
||||
dmi_find_bmc();
|
||||
if (si_trydmi)
|
||||
dmi_find_bmc();
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ACPI
|
||||
spmi_find_bmc();
|
||||
if (si_tryacpi)
|
||||
spmi_find_bmc();
|
||||
#endif
|
||||
|
||||
/* We prefer devices with interrupts, but in the case of a machine
|
||||
|
|
Loading…
Reference in New Issue