page fault in igb driver on 8.0-RC2

Pyun YongHyeon pyunyh at gmail.com
Wed Nov 11 20:31:35 UTC 2009


On Tue, Nov 10, 2009 at 03:18:09PM -0500, Mike Tancsa wrote:
> At 02:20 PM 11/10/2009, Jack Vogel wrote:
> >This is a fix for this problem, please apply and test this.
> 
> Hi,
>         Thanks! Yes, I am able to use both ports of the NIC now and 
> no panics yet. Prior to this patch, bringing up both ports resulted 
> in a non functioning NIC and panic!  Generating some UDP and tcp 
> traffic through the box, all seems to be OK on first blush.
> 

I think this is a separate issue. Jack's patch surely reduce the
number of chance of bus_dmamap_load_mbuf_sg(9) failure because it
removed unnecessary DMA alignment restriction but once it happen
you would get the same result. Note, original poster's machine is
amd64.

> I will try some more extensive tests over the next little while.
> 
> igb0: Excessive collisions = 0
> igb0: Sequence errors = 0
> igb0: Defer count = 0
> igb0: Missed Packets = 0
> igb0: Receive No Buffers = 40
> igb0: Receive Length Errors = 0
> igb0: Receive errors = 2
> igb0: Crc errors = 4
> igb0: Alignment errors = 0
> igb0: Collision/Carrier extension errors = 0
> igb0: RX overruns = 0
> igb0: watchdog timeouts = 0
> igb0: XON Rcvd = 0
> igb0: XON Xmtd = 0
> igb0: XOFF Rcvd = 0
> igb0: XOFF Xmtd = 0
> igb0: Good Packets Rcvd = 103212774
> igb0: Good Packets Xmtd = 9347339
> igb0: TSO Contexts Xmtd = 0
> igb0: TSO Contexts Failed = 0
> igb1: Excessive collisions = 0
> igb1: Sequence errors = 0
> igb1: Defer count = 0
> igb1: Missed Packets = 0
> igb1: Receive No Buffers = 0
> igb1: Receive Length Errors = 0
> igb1: Receive errors = 0
> igb1: Crc errors = 0
> igb1: Alignment errors = 0
> igb1: Collision/Carrier extension errors = 0
> igb1: RX overruns = 0
> igb1: watchdog timeouts = 0
> igb1: XON Rcvd = 0
> igb1: XON Xmtd = 0
> igb1: XOFF Rcvd = 0
> igb1: XOFF Xmtd = 0
> igb1: Good Packets Rcvd = 9365642
> igb1: Good Packets Xmtd = 17781877
> igb1: TSO Contexts Xmtd = 988
> igb1: TSO Contexts Failed = 0
> 
> 
> 
> # ./netsend 10.255.255.3 600 300 280000 10
> Sending packet of payload size 300 every 0.000003571s for 10 seconds
> 
> start:             1257884127.000000000
> finish:            1257884137.000003339
> send calls:        2800336
> send errors:       1970
> approx send rate:  279836
> approx error rate: 0
> waited:            1259257
> approx waits/sec:  125925
> approx wait rate:  0
> # traceroute 10.255.255.3
> traceroute to 10.255.255.3 (10.255.255.3), 64 hops max, 40 byte packets
>  1  1.1.1.1 (1.1.1.1)  0.096 ms  0.073 ms  0.115 ms
>  2  10.255.255.3 (10.255.255.3)  67.953 ms  0.297 ms  0.241 ms
> 
> The box with the igb nics has the interfaces 1.1.1.1 and 10.255.255.1
> 
>         ---Mike
> 
> 
> >Jack
> >
> >------- if_igb.c    (revision 197079)
> >+++ if_igb.c    (working copy)
> >@@ -2654,7 +2654,7 @@
> >     int error;
> >
> >     error = bus_dma_tag_create(bus_get_dma_tag(adapter->dev), /* parent */
> >-                IGB_DBA_ALIGN, 0,    /* alignment, bounds */
> >+                1, 0,            /* alignment, bounds */
> >                 BUS_SPACE_MAXADDR,    /* lowaddr */
> >                 BUS_SPACE_MAXADDR,    /* highaddr */
> >                 NULL, NULL,        /* filter, filterarg */
> >@@ -2867,7 +2867,7 @@
> >      * Setup DMA descriptor areas.
> >      */
> >     if ((error = bus_dma_tag_create(NULL,        /* parent */
> >-                   PAGE_SIZE, 0,        /* alignment, bounds */
> >+                   1, 0,            /* alignment, bounds */
> >                    BUS_SPACE_MAXADDR,    /* lowaddr */
> >                    BUS_SPACE_MAXADDR,    /* highaddr */
> >                    NULL, NULL,        /* filter, filterarg */
> >@@ -3554,7 +3554,7 @@
> >     ** it may not always use this.
> >     */
> >     if ((error = bus_dma_tag_create(NULL,        /* parent */
> >-                   PAGE_SIZE, 0,    /* alignment, bounds */
> >+                   1, 0,        /* alignment, bounds */
> >                    BUS_SPACE_MAXADDR,    /* lowaddr */
> >                    BUS_SPACE_MAXADDR,    /* highaddr */
> >                    NULL, NULL,        /* filter, filterarg */
> >
> >
> >
> >On Tue, Nov 10, 2009 at 10:57 AM, Jack Vogel 
> ><<mailto:jfvogel at gmail.com>jfvogel at gmail.com> wrote:
> >I have repro'd this failure this morning and think I have a fix for 
> >it, I am testing that soon.
> >
> >Stay tuned,
> >
> >Jack
> >
> >
> >
> >On Mon, Nov 9, 2009 at 6:28 PM, Mike Tancsa 
> ><<mailto:mike at sentex.net>mike at sentex.net> wrote:
> >At 07:33 PM 11/9/2009, Jack Vogel wrote:
> >Some reason you aren't using amd64? I will have a system installed that way
> >and see if I can repro it then, thanks.
> >
> >
> >
> >I had found in the past i386 was faster for firewall and routing 
> >applications.   Perhaps thats different now, I will give it a try 
> >again to see if there is any difference.
> >
> >pciconf and dmesg attached.
> >
> >       ---Mike
> >
> >
> >
> >Jack
> >
> >
> >
> >On Mon, Nov 9, 2009 at 4:22 PM, Mike Tancsa 
> ><<mailto:mike at sentex.net>mike at sentex.net> wrote:
> >At 05:59 PM 11/9/2009, Jack Vogel wrote:
> >Are you using standard MTU or jumbo? That get_buf error is ENOMEM, looks 
> >like
> >that happens when in the bus_dma stuff reserve_bounce_pages() fails.
> >
> >Are you maybe using a 32 bit kernel? I have not seen this failure here.
> >
> >
> >Hi Jack,
> >      Standard MTU and i386
> >
> >      ---Mike
> >
> >
> >
> >--------------------------------------------------------------------
> >Mike Tancsa,                                      tel +1 519 651 3400
> >Sentex Communications, <mailto:mike at sentex.net>mike at sentex.net
> >Providing Internet since 
> >1994 
> ><<http://www.sentex.net>http://www.sentex.net>www.sentex.net
> >Cambridge, Ontario 
> >Canada 
> ><<http://www.sentex.net/mike>http://www.sentex.net/mike>www.sentex.net/mike
> >
> >
> >--------------------------------------------------------------------
> >Mike Tancsa,                                      tel +1 519 651 3400
> >Sentex 
> >Communications, 
> ><mailto:mike at sentex.net>mike at sentex.net
> >Providing Internet since 
> >1994                    <http://www.sentex.net>www.sentex.net
> >Cambridge, Ontario 
> >Canada                         
> ><http://www.sentex.net/mike>www.sentex.net/mike
> >
> >
> 
> --------------------------------------------------------------------
> Mike Tancsa,                                      tel +1 519 651 3400
> Sentex Communications,                            mike at sentex.net
> Providing Internet since 1994                    www.sentex.net
> Cambridge, Ontario Canada                         www.sentex.net/mike
> 


More information about the freebsd-current mailing list