Date: Mon, 16 Nov 2009 18:46:33 +0000 (UTC) From: Jack F Vogel <jfv@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-releng@freebsd.org Subject: svn commit: r199325 - releng/8.0/sys/dev/e1000 Message-ID: <200911161846.nAGIkXeL078226@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jfv Date: Mon Nov 16 18:46:33 2009 New Revision: 199325 URL: http://svn.freebsd.org/changeset/base/199325 Log: On a 32 bit kernel the igb driver may cause a page fault panic due to a failed bounce page allocation during RX mbuf setup. The large demand on bounce pages is due to the alignment requirement in the tag, the ixgbe driver has demonstrated this to be unnecessary and so it is being removed here to fix this problem. Note that ultimately there needs to be a more elegant handling of the failure case here. Approved by: re Modified: releng/8.0/sys/dev/e1000/if_igb.c Directory Properties: releng/8.0/sys/ (props changed) releng/8.0/sys/amd64/include/xen/ (props changed) releng/8.0/sys/cddl/contrib/opensolaris/ (props changed) releng/8.0/sys/contrib/dev/acpica/ (props changed) releng/8.0/sys/contrib/pf/ (props changed) releng/8.0/sys/dev/xen/xenpci/ (props changed) Modified: releng/8.0/sys/dev/e1000/if_igb.c ============================================================================== --- releng/8.0/sys/dev/e1000/if_igb.c Mon Nov 16 18:29:52 2009 (r199324) +++ releng/8.0/sys/dev/e1000/if_igb.c Mon Nov 16 18:46:33 2009 (r199325) @@ -2654,7 +2654,7 @@ igb_dma_malloc(struct adapter *adapter, 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 @@ igb_allocate_transmit_buffers(struct tx_ * 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 @@ igb_allocate_receive_buffers(struct rx_r ** 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 */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911161846.nAGIkXeL078226>