Hi,
Software used : qemu-0.10.0, coreboot-v2, filo(latest svn version), fedora9 image
Problem encountered: qemu boots Fedora9 image successfully. However, the ethernet interface isn't up and dmesg shows an irq problem.
Thhings tried out: I've tried pci=biosirq and problems still remains. I've also patched with the qemu bios patch (0.9.1) available at: http://www.mail-archive.com/coreboot@coreboot.org/msg01771.html However, I haven't applied the other patches that are meant for 0.9 and available at
ttp://www.coreboot.org/QEMU_Build_Tutorial#Building_Qemu http://www.coreboot.org/QEMU_Build_Tutorial#Building_Qemu because the code difference with 0.10.0
Any suggestions from coreboot experts on howto proceed to resolve this issue?
===
The following is an edited version of dmesg that shows an irq problem:
ne2k-pci.c:v1.03 9/22/2003 D. Becker/P. Gortmaker PCI: No IRQ known for interrupt pin A of device 0000:00:03.0. Please try using pci=biosirq. eth0: RealTek RTL-8029 found at 0x1000, IRQ 0, 52:54:00:12:34:56. PCI: No IRQ known for interrupt pin A of device 0000:00:04.0. Please try using pci=biosirq. IRQ handler type mismatch for IRQ 0 current handler: timer Pid: 490, comm: modprobe Not tainted 2.6.25-14.fc9.i686 #1 [<c045cae6>] setup_irq+0x19a/0x1b2 [<c48ec2fe>] ? vp_interrupt+0x0/0x9a [virtio_pci] [<c045cbc6>] request_irq+0xc8/0xe6 [<c48ec53a>] virtio_pci_probe+0x138/0x193 [virtio_pci] [<c04feac9>] pci_device_probe+0x39/0x59 [<c0562826>] driver_probe_device+0xa0/0x136 [<c0562935>] __driver_attach+0x79/0xaf [<c05621d3>] bus_for_each_dev+0x3b/0x63 [<c05626cb>] driver_attach+0x14/0x16 [<c05628bc>] ? __driver_attach+0x0/0xaf [<c0561ba4>] bus_add_driver+0x9d/0x1ba [<c0562ab8>] driver_register+0x47/0xa7 [<c04fec75>] __pci_register_driver+0x35/0x64 [<c480e028>] virtio_pci_init+0x28/0x3d [virtio_pci] [<c0446f93>] sys_init_module+0x17be/0x18f6 [<c04d3577>] ? selinux_file_permission+0x100/0x106 [<c04cc41c>] ? security_file_permission+0xf/0x11 [<c04835e1>] ? sys_read+0x3b/0x60 [<c0405bf2>] syscall_call+0x7/0xb ======================= virtio-pci: probe of 0000:00:04.0 failed with error -16
--- IRQ handler type mismatch for IRQ 0 current handler: timer Pid: 1524, comm: NetworkManager Not tainted 2.6.25-14.fc9.i686 #1 [<c045cae6>] setup_irq+0x19a/0x1b2 [<c488ff10>] ? ei_interrupt+0x0/0xa [8390] [<c045cbc6>] request_irq+0xc8/0xe6 [<c48e8447>] ne2k_pci_open+0x1c/0x79 [ne2k_pci] [<c05baccf>] dev_open+0x46/0x7e [<c05ba84e>] dev_change_flags+0x9f/0x152 [<c05c12f6>] do_setlink+0x211/0x2c3 [<c05c148a>] rtnl_setlink+0xe2/0xe6 [<c05c13a8>] ? rtnl_setlink+0x0/0xe6 [<c05c231f>] rtnetlink_rcv_msg+0x1a0/0x1ba [<c05c217f>] ? rtnetlink_rcv_msg+0x0/0x1ba [<c05cf18e>] netlink_rcv_skb+0x30/0x86 [<c05c2177>] rtnetlink_rcv+0x1c/0x24 [<c05cecb8>] netlink_unicast+0x1b1/0x20f [<c05cef6b>] netlink_sendmsg+0x255/0x262 [<c05afda0>] sock_sendmsg+0xde/0xf9 [<c04387e7>] ? autoremove_wake_function+0x0/0x33 [<c04387e7>] ? autoremove_wake_function+0x0/0x33 [<c04cf49e>] ? socket_has_perm+0x53/0x5d [<c04f5874>] ? copy_from_user+0x39/0x121 [<c05b6309>] ? verify_iovec+0x40/0x6f [<c05afefa>] sys_sendmsg+0x13f/0x192 [<c05b08e7>] ? sys_recvmsg+0x116/0x17b [<c04f5997>] ? copy_to_user+0x3b/0x10a [<c05b07b9>] ? move_addr_to_user+0x56/0x6e [<c05b0aef>] ? sys_getsockname+0x59/0x76 [<c062bb5a>] ? _spin_unlock_bh+0xe/0x10 [<c05b18b2>] ? release_sock+0x80/0x88 [<c05b2f92>] ? sock_setsockopt+0x506/0x510 [<c04d2097>] ? selinux_socket_setsockopt+0x2d/0x32 [<c05b0deb>] sys_socketcall+0x16b/0x188 [<c0405bf2>] syscall_call+0x7/0xb = ====================== cat /proc/interrupts shows - CPU0 0: 154394 XT-PIC-XT timer 1: 221 XT-PIC-XT i8042 2: 0 XT-PIC-XT cascade 4: 4 XT-PIC-XT 12: 111 XT-PIC-XT i8042 14: 5125 XT-PIC-XT ata_piix 15: 753 XT-PIC-XT ata_piix NMI: 0 Non-maskable interrupts LOC: 102 Local timer interrupts RES: 0 Rescheduling interrupts CAL: 0 function call interrupts TLB: 0 TLB shootdowns TRM: 0 Thermal event interrupts SPU: 0 Spurious interrupts ERR: 0 MIS: 0
Thanks, -Rukhsana
I wonder if qemu changed how they are "routing" IRQs.
Can you boot and run getpir and we can compare what you get vs. what is in the existing v2 tables?
ron
Sorry, couldn't run it from Linux. Can you give me the instructions on when and how to run it?
-Rukhsana
On Thu, Mar 19, 2009 at 12:01 AM, ron minnich rminnich@gmail.com wrote:
I wonder if qemu changed how they are "routing" IRQs.
Can you boot and run getpir and we can compare what you get vs. what is in the existing v2 tables?
ron
-
On Wed, Mar 18, 2009 at 12:08 PM, rukhsana ansari ruk.ansari@gmail.com wrote:
Sorry, couldn't run it from Linux. Can you give me the instructions on when and how to run it?
send me your errors. It should "just work" when run as root.
ron
Not sure if this is the procedure: I copied util/getpir to the fedora9 image, booted qemu with that image and ran getpir. Got the following error: Probing PIRQ table in memory. No PCI IRQ routing table signature found.
-Rukhsana
On Thu, Mar 19, 2009 at 1:06 AM, ron minnich rminnich@gmail.com wrote:
On Wed, Mar 18, 2009 at 12:08 PM, rukhsana ansari ruk.ansari@gmail.com wrote:
Sorry, couldn't run it from Linux. Can you give me the instructions on when and how to run it?
send me your errors. It should "just work" when run as root.
ron
On Wed, Mar 18, 2009 at 1:06 PM, rukhsana ansari ruk.ansari@gmail.com wrote:
Not sure if this is the procedure: I copied util/getpir to the fedora9 image, booted qemu with that image and ran getpir. Got the following error: Probing PIRQ table in memory. No PCI IRQ routing table signature found.
well that does explain the other error.
I'm sorry, my fault; this is under coreboot or under the standard qemu bios? I'd like to see it from the standard.
ron
Ron,
The following was the irq_tables.c file created when getpir was run with QEMU using its default Bochs BIOS.
== #ifdef GETPIR #include "pirq_routing.h" #else #include <arch/pirq_routing.h> #endif
const struct irq_routing_table intel_irq_routing_table = { PIRQ_SIGNATURE, /* u32 signature */ PIRQ_VERSION, /* u16 version */ 32+16*6, /* There can be total 6 devices on the bus */ 0x00, /* Where the interrupt router lies (bus) */ (0x01<<3)|0x0, /* Where the interrupt router lies (dev) */ 0, /* IRQs devoted exclusively to PCI usage */ 0x8086, /* Vendor */ 0x122e, /* Device */ 0, /* Miniport */ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */ 0x37, /* u8 checksum. This has to be set to some value that would give 0 after the sum of all bytes for this structure (including checksum) */ { /* bus, dev|fn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */ {0x00,(0x01<<3)|0x0, {{0x60, 0xdef8}, {0x61, 0xdef8}, {0x62, 0xdef8}, {0x63, 0xdef8}}, 0x0, 0x0}, {0x00,(0x02<<3)|0x0, {{0x61, 0xdef8}, {0x62, 0xdef8}, {0x63, 0xdef8}, {0x60, 0xdef8}}, 0x1, 0x0}, {0x00,(0x03<<3)|0x0, {{0x62, 0xdef8}, {0x63, 0xdef8}, {0x60, 0xdef8}, {0x61, 0xdef8}}, 0x2, 0x0}, {0x00,(0x04<<3)|0x0, {{0x63, 0xdef8}, {0x60, 0xdef8}, {0x61, 0xdef8}, {0x62, 0xdef8}}, 0x3, 0x0}, {0x00,(0x05<<3)|0x0, {{0x60, 0xdef8}, {0x61, 0xdef8}, {0x62, 0xdef8}, {0x63, 0xdef8}}, 0x4, 0x0}, {0x00,(0x06<<3)|0x0, {{0x61, 0xdef8}, {0x62, 0xdef8}, {0x63, 0xdef8}, {0x60, 0xdef8}}, 0x5, 0x0}, } };
unsigned long write_pirq_routing_table(unsigned long addr) { return copy_pirq_routing_table(addr); }
On Thu, Mar 19, 2009 at 1:39 AM, ron minnich rminnich@gmail.com wrote:
On Wed, Mar 18, 2009 at 1:06 PM, rukhsana ansari ruk.ansari@gmail.com wrote:
Not sure if this is the procedure: I copied util/getpir to the fedora9 image, booted qemu with that image
and
ran getpir. Got the following error: Probing PIRQ table in memory. No PCI IRQ routing table signature found.
well that does explain the other error.
I'm sorry, my fault; this is under coreboot or under the standard qemu bios? I'd like to see it from the standard.
ron
Rukhsana, please test qemu again with v2. The qemu problem should be fixed.
ron