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