Re: e1000 driver failed to call pci_enable_device

From: Guillaume Thouvenin
Date: Mon Aug 30 2004 - 02:57:39 EST


On Fri, Aug 27, 2004 at 09:42:57AM -0600, Bjorn Helgaas wrote:
> On Friday 27 August 2004 5:44 am, you wrote:
> > I tried to boot the linux-2.6.9-rc1-mm1 kernel and it generates an oops
> > because the e1000 driver failed to call pci_enable_device(). The kernel
> > boots normally with "pci=routeirq" argument sets. I copy the output of
> > "lspci" and also the oops message generated during the boot.
> Thanks very much for your testing and detailed problem report. This
> problem actually isn't in e1000. Can you try the attached patch,
> please? I thought I'd seen this patch before, but it doesn't seem to
> be in -mm yet.
>
> Make assign_irq_vector() non-__init always (it's called from
> io_apic_set_pci_routing(), which is used in the pci_enable_device()
> path).
>
> Signed-off-by: Bjorn Helgaas <bjorn.helgaas@xxxxxx>
>
> ===== arch/i386/kernel/io_apic.c 1.109 vs edited =====
> --- 1.109/arch/i386/kernel/io_apic.c 2004-08-24 03:08:37 -06:00
> +++ edited/arch/i386/kernel/io_apic.c 2004-08-27 09:30:37 -06:00
> @@ -1120,11 +1120,7 @@
> /* irq_vectors is indexed by the sum of all RTEs in all I/O APICs. */
> u8 irq_vector[NR_IRQ_VECTORS] = { FIRST_DEVICE_VECTOR , 0 };
>
> -#ifdef CONFIG_PCI_MSI
> int assign_irq_vector(int irq)
> -#else
> -int __init assign_irq_vector(int irq)
> -#endif
> {
> static int current_vector = FIRST_DEVICE_VECTOR, offset = 0;

The patch fixes the problem. Everything works fine.
Thank you very much for your help

Best regards,
Guillaume
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/