[PATCH] ipmi: don't start kipmid if the IPMI driver can use interrupts
authorCorey Minyard <minyard@acm.org>
Sun, 1 Oct 2006 06:28:20 +0000 (23:28 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 1 Oct 2006 07:39:26 +0000 (00:39 -0700)
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>
drivers/char/ipmi/ipmi_si_intf.c

index abca98beac14507471537abfc50403e06d10abdf..908521e36d81ca137abdce89f0c09e2475d1af30 100644 (file)
@@ -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)) {