All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kok, Auke" <auke-jan.h.kok@intel.com>
To: Jeff Garzik <jeff@garzik.org>, Ian Wienand <ianw@gelato.unsw.edu.au>
Cc: e1000-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org,
	Auke Kok <auke-jan.h.kok@intel.com>
Subject: Re: [PATCH] e100: free IRQ to remove warning when rebooting
Date: Mon, 26 Nov 2007 15:23:16 -0800	[thread overview]
Message-ID: <474B5564.4090501@intel.com> (raw)
In-Reply-To: <47479260.7010101@garzik.org>

Jeff Garzik wrote:
> Ian Wienand wrote:
>> Hi,
>>
>> When rebooting today I got
>>
>> Will now restart.
>> ACPI: PCI interrupt for device 0000:00:03.0 disabled
>> GSI 20 (level, low) -> CPU 1 (0x0100) vector 53 unregistered
>> Destroying IRQ53 without calling free_irq
>> WARNING: at
>> /home/insecure/ianw/programs/git-kernel/linux-2.6/kernel/irq/chip.c:76
>> dynamic_irq_cleanup()
>>
>> Call Trace:
>>  [<a000000100014340>] show_stack+0x40/0xa0
>>                                 sp=e00000407c927b40 bsp=e00000407c920eb8
>>  [<a0000001000143d0>] dump_stack+0x30/0x60
>>                                 sp=e00000407c927d10 bsp=e00000407c920ea0
>>  [<a0000001000e58e0>] dynamic_irq_cleanup+0x160/0x1e0
>>                                 sp=e00000407c927d10 bsp=e00000407c920e70
>>  [<a0000001000106b0>] destroy_and_reserve_irq+0x30/0xc0
>>                                 sp=e00000407c927d10 bsp=e00000407c920e40
>>  [<a0000001000508f0>] iosapic_unregister_intr+0x5b0/0x5e0
>>                                 sp=e00000407c927d10 bsp=e00000407c920dd8
>>  [<a00000010000aa70>] acpi_unregister_gsi+0x30/0x60
>>                                 sp=e00000407c927d10 bsp=e00000407c920db8
>>  [<a00000010042e300>] acpi_pci_irq_disable+0x140/0x160
>>                                 sp=e00000407c927d10 bsp=e00000407c920d88
>>  [<a000000100774200>] pcibios_disable_device+0xa0/0xc0
>>                                 sp=e00000407c927d20 bsp=e00000407c920d68
>>  [<a0000001003778d0>] pci_disable_device+0x130/0x160
>>                                 sp=e00000407c927d20 bsp=e00000407c920d38
>>  [<a000000100525d20>] e100_shutdown+0x1c0/0x220
>>                                 sp=e00000407c927d30 bsp=e00000407c920d08
>>  [<a00000010037d0e0>] pci_device_shutdown+0x80/0xc0
>>                                 sp=e00000407c927d30 bsp=e00000407c920ce8
>>  [<a0000001004ecb70>] device_shutdown+0xf0/0x180
>>                                 sp=e00000407c927d30 bsp=e00000407c920cc8
>>  [<a0000001000ac4e0>] kernel_restart+0x60/0x120
>>                                 sp=e00000407c927d30 bsp=e00000407c920ca8
>>  [<a0000001000ac990>] sys_reboot+0x3b0/0x480
>>                                 sp=e00000407c927d30 bsp=e00000407c920c30
>>  [<a00000010000b4e0>] ia64_ret_from_syscall+0x0/0x20
>>                                 sp=e00000407c927e30 bsp=e00000407c920c30
>>  [<a000000000010620>] ia64_ivt+0xffffffff00010620/0x400
>>                                 sp=e00000407c928000 bsp=e00000407c920c30
>> Restarting system.
>>
>> I think the solution might be to free the IRQ before the
>> pci_device_shutdown
>>
>> Signed-off-by: Ian Wienand <ianw@gelato.unsw.edu.au>
>>
>> ---
>>
>>  e100.c |    1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/net/e100.c b/drivers/net/e100.c
>> index 3dbaec6..8ae5ac3 100644
>> --- a/drivers/net/e100.c
>> +++ b/drivers/net/e100.c
>> @@ -2782,6 +2782,7 @@ static void e100_shutdown(struct pci_dev *pdev)
>>          pci_enable_wake(pdev, PCI_D3cold, 0);
>>      }
>>  
>> +    free_irq(pdev->irq, netdev);
>>      pci_disable_device(pdev);
>>      pci_set_power_state(pdev, PCI_D3hot);
> 
> agreed, though I think free_irq() should come after pci_disable_device()
> like it does in e100_suspend().
> 
> auke?

I actually think that's unintentional (the free_irq being after
pci_disable_device()) and possibly wrong. Looking at all our other drivers and
various others I see a consistent pattern of enable_device->enable_irq ->
free_irq->disable_device which makes much more sense to me since it's symmetric
and you can't enable irq's on a disabled device anyway.

So, I'd like to ACK this patch and I'll owe you a patch to fix the order up for
the e100_suspend code to change the order - but obviously I'll give that one a
test first.

Acked-by: Auke Kok <auke-jan.h.kok@intel.com>


Thanks,

Auke

      reply	other threads:[~2007-11-26 23:23 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-20  5:30 [PATCH] e100: free IRQ to remove warning when rebooting Ian Wienand
2007-11-20 17:11 ` [E1000-devel] [PATCH] e100: free IRQ to remove warning whenrebooting Brandeburg, Jesse
2007-11-20 17:11   ` Brandeburg, Jesse
2007-11-24  2:54 ` [PATCH] e100: free IRQ to remove warning when rebooting Jeff Garzik
2007-11-26 23:23   ` Kok, Auke [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=474B5564.4090501@intel.com \
    --to=auke-jan.h.kok@intel.com \
    --cc=e1000-devel@lists.sourceforge.net \
    --cc=ianw@gelato.unsw.edu.au \
    --cc=jeff@garzik.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.