Hi Alex,

Looks like the value is written but is not sticking.
Curious if you know what the cause might be.

igb_assign_vector: Value after write: 0x00000000

David




At 10:44 12/1/2008 -0800, Duyck, Alexander H wrote:
>David,
>
>I think I have a pretty clear idea of what is going on now and 
>why things aren't working in MSI-X mode.  Now I just need to 
>figure out why this is happening.
>
>Below is the dump of the MSIXBM registers you provided with your 
>dmesg output.  The obvious issue is that there is nothing 
>mapping any of the queues or the link status change to any of 
>the msix interrupts.
>igb: eth4: igb_open: MSIXBM(0): 0x00000000
>igb: eth4: igb_open: MSIXBM(1): 0x00000000
>igb: eth4: igb_open: MSIXBM(2): 0x00000000
>igb: eth4: igb_open: MSIXBM(3): 0x00000000
>igb: eth4: igb_open: MSIXBM(4): 0x00000000
>
>What we should be seeing here is something like:
>igb: eth4: igb_open: MSIXBM(0): 0x00000101
>igb: eth4: igb_open: MSIXBM(1): 0x00000202
>igb: eth4: igb_open: MSIXBM(2): 0x00000404
>igb: eth4: igb_open: MSIXBM(3): 0x00000808
>igb: eth4: igb_open: MSIXBM(4): 0x80000000
>
>Below/attached is one more debug patch I would like you to try, 
>and then send me the dmesg output from.  It will essentially 
>verify if the driver is writing these registers with the correct 
>values or not, and if those writes are being stored.
>
>Thanks,
>
>Alex
>
>diff -urp a/src/igb_main.c b/src/igb_main.c
>--- a/src/igb_main.c   2008-12-01 09:03:06.000000000 -0800
>+++ b/src/igb_main.c   2008-12-01 09:58:03.000000000 -0800
>@@ -373,7 +373,11 @@ static void igb_assign_vector(struct igb
>                       adapter->tx_ring[tx_queue].eims_value =
>                                 E1000_EICR_TX_QUEUE0 << tx_queue;
>               }
>+              DPRINTK(PROBE, INFO, "Writing 0x%08X to MSIXBM(%d)\n", 
>msixbm,
>+                      msix_vector);
>               E1000_WRITE_REG_ARRAY(hw, E1000_MSIXBM(0), msix_vector, 
>msixbm);
>+              DPRINTK(PROBE, INFO, "Value after write: 0x%08X\n",
>+                      E1000_READ_REG(hw, E1000_MSIXBM(msix_vector)));
>               break;
>       case e1000_82576:
>               /* 82576 uses a table-based method for assigning vectors.
>
Intel(R) Gigabit Ethernet Network Driver - version 1.3.8.6
Copyright (c) 2007-2008 Intel Corporation.
igb 0000:0d:00.0: PCI INT A -> GSI 66 (level, low) -> IRQ 66
Disabling ASPM L0s upstream switch port b:2.0
igb 0000:0d:00.0: setting latency timer to 64
igb: 0000:0d:00.0: igb_validate_option: Interrupt Mode set to 3
igb: eth4: igb_probe: Intel(R) Gigabit Ethernet Network Connection
igb: eth4: igb_probe: (PCIe:2.5Gb/s:Width x4) 00:1b:21:09:25:d0
igb: eth4: igb_probe: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)
igb 0000:0d:00.1: PCI INT B -> GSI 62 (level, low) -> IRQ 62
Disabling ASPM L0s upstream switch port b:2.0
igb 0000:0d:00.1: setting latency timer to 64
igb: 0000:0d:00.1: igb_validate_option: Interrupt Mode set to 3
igb: eth4: igb_assign_vector: Writing 0x00000101 to MSIXBM(0)
igb: eth4: igb_assign_vector: Value after write: 0x00000000
igb: eth4: igb_assign_vector: Writing 0x00000202 to MSIXBM(1)
igb: eth4: igb_assign_vector: Value after write: 0x00000000
igb: eth4: igb_assign_vector: Writing 0x00000404 to MSIXBM(2)
igb: eth4: igb_assign_vector: Value after write: 0x00000000
igb: eth4: igb_assign_vector: Writing 0x00000808 to MSIXBM(3)
igb: eth4: igb_assign_vector: Value after write: 0x00000000
igb: eth4: igb_open: MSIXBM(0): 0x00000000
igb: eth4: igb_open: MSIXBM(1): 0x00000000
igb: eth4: igb_open: MSIXBM(2): 0x00000000
igb: eth4: igb_open: MSIXBM(3): 0x00000000
igb: eth4: igb_open: MSIXBM(4): 0x00000000
igb: eth4: igb_open: MSIXBM(5): 0x00000000
igb: eth4: igb_open: MSIXBM(6): 0x00000000
igb: eth4: igb_open: MSIXBM(7): 0x00000000
igb: eth4: igb_open: MSIXBM(8): 0x00000000
igb: eth4: igb_open: MSIXBM(9): 0x00000000
ADDRCONF(NETDEV_UP): eth4: link is not ready
igb: eth5: igb_probe: Intel(R) Gigabit Ethernet Network Connection
igb: eth5: igb_probe: (PCIe:2.5Gb/s:Width x4) 00:1b:21:09:25:d1
igb: eth5: igb_probe: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)
igb 0000:0c:00.0: PCI INT A -> GSI 48 (level, low) -> IRQ 48
Disabling ASPM L0s upstream switch port b:4.0
igb 0000:0c:00.0: setting latency timer to 64
igb: 0000:0c:00.0: igb_validate_option: Interrupt Mode set to 3
igb: eth5: igb_assign_vector: Writing 0x00000101 to MSIXBM(0)
igb: eth5: igb_assign_vector: Value after write: 0x00000000
igb: eth5: igb_assign_vector: Writing 0x00000202 to MSIXBM(1)
igb: eth5: igb_assign_vector: Value after write: 0x00000000
igb: eth5: igb_assign_vector: Writing 0x00000404 to MSIXBM(2)
igb: eth5: igb_assign_vector: Value after write: 0x00000000
igb: eth5: igb_assign_vector: Writing 0x00000808 to MSIXBM(3)
igb: eth5: igb_assign_vector: Value after write: 0x00000000
igb: eth5: igb_open: MSIXBM(0): 0x00000000
igb: eth5: igb_open: MSIXBM(1): 0x00000000
igb: eth5: igb_open: MSIXBM(2): 0x00000000
igb: eth5: igb_open: MSIXBM(3): 0x00000000
igb: eth5: igb_open: MSIXBM(4): 0x00000000
igb: eth5: igb_open: MSIXBM(5): 0x00000000
igb: eth5: igb_open: MSIXBM(6): 0x00000000
igb: eth5: igb_open: MSIXBM(7): 0x00000000
igb: eth5: igb_open: MSIXBM(8): 0x00000000
igb: eth5: igb_open: MSIXBM(9): 0x00000000
ADDRCONF(NETDEV_UP): eth5: link is not ready
igb: eth6: igb_probe: Intel(R) Gigabit Ethernet Network Connection
igb: eth6: igb_probe: (PCIe:2.5Gb/s:Width x4) 00:1b:21:09:25:d4
igb: eth6: igb_probe: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)
igb 0000:0c:00.1: PCI INT B -> GSI 58 (level, low) -> IRQ 58
Disabling ASPM L0s upstream switch port b:4.0
igb 0000:0c:00.1: setting latency timer to 64
igb: 0000:0c:00.1: igb_validate_option: Interrupt Mode set to 3
igb: eth6: igb_assign_vector: Writing 0x00000101 to MSIXBM(0)
igb: eth6: igb_assign_vector: Value after write: 0x00000000
igb: eth6: igb_assign_vector: Writing 0x00000202 to MSIXBM(1)
igb: eth6: igb_assign_vector: Value after write: 0x00000000
igb: eth6: igb_assign_vector: Writing 0x00000404 to MSIXBM(2)
igb: eth6: igb_assign_vector: Value after write: 0x00000000
igb: eth6: igb_assign_vector: Writing 0x00000808 to MSIXBM(3)
igb: eth6: igb_assign_vector: Value after write: 0x00000000
igb: eth6: igb_open: MSIXBM(0): 0x00000000
igb: eth6: igb_open: MSIXBM(1): 0x00000000
igb: eth6: igb_open: MSIXBM(2): 0x00000000
igb: eth6: igb_open: MSIXBM(3): 0x00000000
igb: eth6: igb_open: MSIXBM(4): 0x00000000
igb: eth6: igb_open: MSIXBM(5): 0x00000000
igb: eth6: igb_open: MSIXBM(6): 0x00000000
igb: eth6: igb_open: MSIXBM(7): 0x00000000
igb: eth6: igb_open: MSIXBM(8): 0x00000000
igb: eth6: igb_open: MSIXBM(9): 0x00000000
ADDRCONF(NETDEV_UP): eth6: link is not ready
igb: eth7: igb_probe: Intel(R) Gigabit Ethernet Network Connection
igb: eth7: igb_probe: (PCIe:2.5Gb/s:Width x4) 00:1b:21:09:25:d5
igb: eth7: igb_probe: Using MSI-X interrupts. 4 rx queue(s), 4 tx queue(s)
igb: eth7: igb_assign_vector: Writing 0x00000101 to MSIXBM(0)
igb: eth7: igb_assign_vector: Value after write: 0x00000000
igb: eth7: igb_assign_vector: Writing 0x00000202 to MSIXBM(1)
igb: eth7: igb_assign_vector: Value after write: 0x00000000
igb: eth7: igb_assign_vector: Writing 0x00000404 to MSIXBM(2)
igb: eth7: igb_assign_vector: Value after write: 0x00000000
igb: eth7: igb_assign_vector: Writing 0x00000808 to MSIXBM(3)
igb: eth7: igb_assign_vector: Value after write: 0x00000000
igb: eth7: igb_open: MSIXBM(0): 0x00000000
igb: eth7: igb_open: MSIXBM(1): 0x00000000
igb: eth7: igb_open: MSIXBM(2): 0x00000000
igb: eth7: igb_open: MSIXBM(3): 0x00000000
igb: eth7: igb_open: MSIXBM(4): 0x00000000
igb: eth7: igb_open: MSIXBM(5): 0x00000000
igb: eth7: igb_open: MSIXBM(6): 0x00000000
igb: eth7: igb_open: MSIXBM(7): 0x00000000
igb: eth7: igb_open: MSIXBM(8): 0x00000000
igb: eth7: igb_open: MSIXBM(9): 0x00000000
ADDRCONF(NETDEV_UP): eth7: link is not ready
igb: eth4: igb_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex, Flow 
Control: RX
ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
igb: eth7: igb_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex, Flow 
Control: RX
ADDRCONF(NETDEV_CHANGE): eth7: link becomes ready
igb: eth6: igb_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex, Flow 
Control: RX
ADDRCONF(NETDEV_CHANGE): eth6: link becomes ready
igb: eth5: igb_watchdog_task: NIC Link is Up 1000 Mbps Full Duplex, Flow 
Control: RX
ADDRCONF(NETDEV_CHANGE): eth5: link becomes ready
eth4: no IPv6 routers present
eth7: no IPv6 routers present
eth5: no IPv6 routers present
eth6: no IPv6 routers present
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel

Reply via email to