Hi,
I am trying to use e1000e driver in Ankh to bring-up intel's 82574L ethernet controller. But its unable to allocate interrupt and I cant figure out the source of the problem.
Here is the ankh log:
------------------------------------------------------------------------
ankh | Initialized DDELinux 2.6 ankh | Initializing DDE page cache ankh | ddekit_pci_init ankh | pci bus constructor ankh | PCI: L4 root bridge is device 4e768 ankh | init_wq_head ankh | l4dde26_register_rx_callback: New rx callback @ 0x1000270. ankh | Softirq daemon starting ankh | <6>e1000e: Intel(R) PRO/1000 Network Driver - 0.3.3.3-k6 ankh | <6>e1000e: Copyright (c) 1999-2008 Intel Corporation. ankh | unimplemented: pci_set_master ankh | <3>0000:00:01.0: 0000:00:01.0: Failed to initialize MSI-X interrupts. Falling back to MSI interrupts. ankh | <3>0000:00:01.0: 0000:00:01.0: Failed to initialize MSI interrupts. Falling back to legacy interrupts. ankh | <6>0000:00:01.0: eth0: (PCI Express:2.5GB/s:Width x1) 0x14815cM ankh | <6>0000:00:01.0: eth0: Intel(R) PRO/1000 Network Connection ankh | <6>0000:00:01.0: eth0: MAC: 3, PHY: 8, PBA No: ffffff-0ff ankh | <6>Intel(R) PRO/1000 Network Driver - version 7.3.21-k3-NAPI ankh | <6>Copyright (c) 1999-2006 Intel Corporation. ankh | <6>net_namespace: 636 bytes ankh | open_network_devices() ankh | opening lo ankh | <6>device lo entered promiscuous mode ankh | set interface to promiscuous mode. ankh | opening eth0 ankh | <6>device eth0 entered promiscuous mode ankh | set interface to promiscuous mode. ankh | Thread 0xb0 for IRQ 10 ankh | Bind irq to icu failed with -2 ankh | claim_irq: failed to attach IRQ ankh | <3>0000:00:01.0: eth0: Unable to allocate interrupt, Error: -16 ankh | error opening eth0 : -16 ankh | Opened -16 network devices. ankh | lo IRQ: 0x00 MAC: 00:00:00:00:00:00 MTU: 16436 ankh | Registered @ registry. ankh | Gooood Morning Ankh-Morpoooooork! TID = 0x57 ankh | Creating session factory. ankh | Configuration: debug,promisc,device=eth0,shm=shm,bufsize=16384,phys_mac ankh | Debug mode ON. ankh | Using promiscuous mode. ankh | Device 'eth0' requested. ankh | SHM area 'shm' requested. ankh | Buffer size: 16384 ankh | Physical MAC requested. ankh | rom/ankh: /home/shashi/Desktop/L4/src/l4/pkg/ankh/server/src/session: 159: Ankh::ServerSession::ServerSession(bool, bool, bool, const char*, const char*, unsigned int. bool): Assertion `_dev' failed.
---------------------------------------------------------------------------------------
I appreciate your help.
Regards, Shashi
Hi,
I am trying to use e1000e driver in Ankh to bring-up intel's 82574L ethernet controller. But its unable to allocate interrupt and I cant figure out the source of the problem.
this may be related to the problem reported by Timur on this list a week ago or so. I'll try to come up with a fix.
Bjoern
Hi Bjorn,
I think Timur's problem was solved. Here is the link http://old.nabble.com/how-to-start-wget-example--td33415431.html
In his case he just had to set the NIC driver in qemu, which he wasnt doing and so was getting assert.
I my case, I am using it on a real hardware where the Ethernet controller is present. The correct driver gets loaded by Ankh. But it fails when it tries to allocate the IRQ.
The Following is the log which shows what I am saying.
------------------------------------- ankh | <6>0000:00:01.0: eth0: (PCI Express:2.5GB/s:Width x1) 0x14815cM ankh | <6>0000:00:01.0: eth0: Intel(R) PRO/1000 Network Connection ankh | <6>0000:00:01.0: eth0: MAC: 3, PHY: 8, PBA No: ffffff-0ff ankh | <6>Intel(R) PRO/1000 Network Driver - version 7.3.21-k3-NAPI ankh | <6>Copyright (c) 1999-2006 Intel Corporation. ankh | <6>net_namespace: 636 bytes ankh | open_network_devices() ankh | opening lo ankh | <6>device lo entered promiscuous mode ankh | set interface to promiscuous mode. ankh | opening eth0 ankh | <6>device eth0 entered promiscuous mode ankh | set interface to promiscuous mode. ankh | Thread 0xb0 for IRQ 10 ankh | Bind irq to icu failed with -2 ankh | claim_irq: failed to attach IRQ ankh | <3>0000:00:01.0: eth0: Unable to allocate interrupt, Error: -16 ankh | error opening eth0 : -16 -------------------------------------------------- -Shashi
On Wed, 2012-03-21 at 22:51 +0100, Björn Döbel wrote:
Hi,
I am trying to use e1000e driver in Ankh to bring-up intel's 82574L ethernet controller. But its unable to allocate interrupt and I cant figure out the source of the problem.
this may be related to the problem reported by Timur on this list a week ago or so. I'll try to come up with a fix.
Bjoern
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
Hello,
just a shot in the dark: Is IRQ 10 shared with other PCI devices and therefore cannot be claimed by the driver?
Greets
On 21.03.2012 22:29, Shashi Sharma wrote:
Hi,
I am trying to use e1000e driver in Ankh to bring-up intel's 82574L ethernet controller. But its unable to allocate interrupt and I cant figure out the source of the problem.
Can you please try this?
Index: dde/linux26/lib/src/arch/l4/pci.c =================================================================== --- dde/linux26/lib/src/arch/l4/pci.c (Revision 41236) +++ dde/linux26/lib/src/arch/l4/pci.c (Arbeitskopie) @@ -196,6 +196,7 @@ Assert(pci_bus);
pci_do_scan_bus(pci_bus); + pci_walk_bus(pci_bus, pci_irq_enable, NULL);
INITIALIZE_INITVAR(dde26_pci); }
Then rebuild the dde & Ankh packages.
Björn
Hi again,
I am trying to use e1000e driver in Ankh to bring-up intel's 82574L ethernet controller. But its unable to allocate interrupt and I cant figure out the source of the problem.
Can you please try this?
Index: dde/linux26/lib/src/arch/l4/pci.c
--- dde/linux26/lib/src/arch/l4/pci.c (Revision 41236) +++ dde/linux26/lib/src/arch/l4/pci.c (Arbeitskopie) @@ -196,6 +196,7 @@ Assert(pci_bus);
pci_do_scan_bus(pci_bus);
pci_walk_bus(pci_bus, pci_irq_enable, NULL); INITIALIZE_INITVAR(dde26_pci);
}
Christian kindly asked for a longer explanation: modern BIOSes reroute IRQs. The updated information on the newly assigned IRQ number is provided through some ACPI tables that are parsed correctly by the IO server.
The Linux drivers, though, try to read the IRQ no. from the PCI config space, which is not touched by the BIOS and hence contains an invalid value. Calling pci_irq_enable() afterwards will make sure that DDE gets the "right" IRQ value from the IO server.
Björn
On Fri, 2012-03-23 at 11:53 +0100, Björn Döbel wrote:
On 21.03.2012 22:29, Shashi Sharma wrote:
Hi,
I am trying to use e1000e driver in Ankh to bring-up intel's 82574L ethernet controller. But its unable to allocate interrupt and I cant figure out the source of the problem.
Can you please try this?
Index: dde/linux26/lib/src/arch/l4/pci.c
--- dde/linux26/lib/src/arch/l4/pci.c (Revision 41236) +++ dde/linux26/lib/src/arch/l4/pci.c (Arbeitskopie) @@ -196,6 +196,7 @@ Assert(pci_bus);
pci_do_scan_bus(pci_bus);
pci_walk_bus(pci_bus, pci_irq_enable, NULL); INITIALIZE_INITVAR(dde26_pci);
}
Then rebuild the dde & Ankh packages.
Thank you Björn for quick fix. It solved it.
Ankh is now able to open eth0 (via e1000e driver). And l4ankh driver in l4linux can now see the eth0 device.
------------------------------------- sh-2.05a# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:E0:81:C4:68:03 BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b) Interrupt:65
-----------------------------------
But when I do sh-2.05a# ifup eth0 It crashes with following error.
-------------------------- l4lx_irq_dev_startup: creating IRQ thread for 65 (IRQ-cap 428000) l4lx_irq_dev_startup: creating IRQ thread for 65 (IRQ-cap 428000) l4linux | l4lx_thread_create: Created thread 433 (IRQ65) (u:b3000e00, sp:006bfff4) l4linux | irq_thread: Started IRQ thread for IRQ 65 l4linux | wait_for_irq_message: IRQ 65 (428) receive failed, error = 0x4 ------------------------
I would really appreciate some pointers on how to go about using device eth0.
-Shashi
Björn
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
But when I do sh-2.05a# ifup eth0 It crashes with following error.
l4lx_irq_dev_startup: creating IRQ thread for 65 (IRQ-cap 428000) l4lx_irq_dev_startup: creating IRQ thread for 65 (IRQ-cap 428000) l4linux | l4lx_thread_create: Created thread 433 (IRQ65) (u:b3000e00, sp:006bfff4) l4linux | irq_thread: Started IRQ thread for IRQ 65 l4linux | wait_for_irq_message: IRQ 65 (428) receive failed, error = 0x4
I would really appreciate some pointers on how to go about using device eth0.
-Shashi
Hi! Did you solve this problem?
On Sun, 2012-04-08 at 09:31 -0700, Timur wrote:
But when I do sh-2.05a# ifup eth0 It crashes with following error.
l4lx_irq_dev_startup: creating IRQ thread for 65 (IRQ-cap 428000) l4lx_irq_dev_startup: creating IRQ thread for 65 (IRQ-cap 428000) l4linux | l4lx_thread_create: Created thread 433 (IRQ65) (u:b3000e00, sp:006bfff4) l4linux | irq_thread: Started IRQ thread for IRQ 65 l4linux | wait_for_irq_message: IRQ 65 (428) receive failed, error = 0x4
I would really appreciate some pointers on how to go about using device eth0.
-Shashi
Hi! Did you solve this problem?
Not yet.
-Shashi
l4-hackers@os.inf.tu-dresden.de