summaryrefslogtreecommitdiff
path: root/drivers/char/ipmi
diff options
context:
space:
mode:
authorCorey Minyard <minyard@acm.org>2006-09-30 23:28:20 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-01 00:39:26 -0700
commitdf3fe8defedc52745526914e12eb4ba0b8a9f6ca (patch)
tree389280329901ab1e01e4549ca4fb67b6d3c20060 /drivers/char/ipmi
parentdcb9c39236a27c2288a7059aa504abb57427df7c (diff)
[PATCH] ipmi: don't start kipmid if the IPMI driver can use interrupts
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 <minyard@acm.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/char/ipmi')
-rw-r--r--drivers/char/ipmi/ipmi_si_intf.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index abca98beac14..908521e36d81 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)) {