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;