Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 1617

kernel-2.6.18-238.el5.src.rpm

From: Peter Martuccelli <peterm@redhat.com>
Date: Mon, 10 Dec 2007 16:47:42 -0500
Subject: [ipmi] do not enable interrupts too early
Message-id: 200712102147.lBALlgBO021271@redrum.boston.redhat.com
O-Subject: [RHEL 5.2][Patch 2/7] IPMI: Do not enable interrupts too early
Bugzilla: 279191

Startup race where interrupts were being enabled for the IPMI interface before the
driver was ready to service them.  Move the IRQ setup code up to the section of
IPMI code that does the actual processing.

Patch is from upstream, please ACK.

diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c
index 4a00727..60f380c 100644
--- a/drivers/char/ipmi/ipmi_si_intf.c
+++ b/drivers/char/ipmi/ipmi_si_intf.c
@@ -947,6 +947,10 @@ static int smi_start_processing(void       *send_info,
 
 	new_smi->intf = intf;
 
+	/* Try to claim any interrupts. */
+	if (new_smi->irq_setup)
+		new_smi->irq_setup(new_smi);
+
 	/* Set up the timer that drives the interface. */
 	setup_timer(&new_smi->si_timer, smi_timeout, (long)new_smi);
 	new_smi->last_timeout_jiffies = jiffies;
@@ -2617,10 +2621,6 @@ static int try_smi_init(struct smi_info *new_smi)
 	setup_oem_data_handler(new_smi);
 	setup_xaction_handlers(new_smi);
 
-	/* Try to claim any interrupts. */
-	if (new_smi->irq_setup)
-		new_smi->irq_setup(new_smi);
-
 	INIT_LIST_HEAD(&(new_smi->xmit_msgs));
 	INIT_LIST_HEAD(&(new_smi->hp_xmit_msgs));
 	new_smi->curr_msg = NULL;