projects/linux·commit df3fe8de

[PATCH] ipmi: don't start kipmid if the IPMI driver can use interrupts

df3fe8de · Corey Minyard <[email protected]> · 2006-09-30 23:28:20 -07:00

If the driver has interrupts available to it, there is really no reason to
have a kernel daemon push the IPMI state machine.

Note that I have experienced machines where the interrupts do not work
correctly.  This was a long time ago and hopefully things are better now.
If some machines still have broken interrupts, a blacklist will need to be
added.

Signed-off-by: Corey Minyard <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
df3fe8defedc52745526914e12eb4ba0b8a9f6ca
Parents
dcb9c392

Changes

1 files changed · +5 −1

FileStatusAddDelContent
drivers/char/ipmi/ipmi_si_intf.cmodified+5−1View file

drivers/char/ipmi/ipmi_si_intf.c

View file
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index abca98b..908521e 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -916,7 +916,11 @@ static int smi_start_processing(void *send_info,
new_smi->last_timeout_jiffies = jiffies;
mod_timer(&new_smi->si_timer, jiffies + SI_TIMEOUT_JIFFIES);
- if (new_smi->si_type != SI_BT) {
+ /*
+ * The BT interface is efficient enough to not need a thread,
+ * and there is no need for a thread if we have interrupts.
+ */
+ if ((new_smi->si_type != SI_BT) && (!new_smi->irq)) {
new_smi->thread = kthread_run(ipmi_thread, new_smi,
"kipmi%d", new_smi->intf_num);
if (IS_ERR(new_smi->thread)) {