aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJack F Vogel <jfv@FreeBSD.org>2009-11-16 18:46:33 +0000
committerJack F Vogel <jfv@FreeBSD.org>2009-11-16 18:46:33 +0000
commit17a789523fa2b7507d226bc3c5fced35c07900fc (patch)
tree25e4060156a8471658324f2e4ad71ff43bb3cacc
parentcb752cfcac9e53cac9546b8711894bb7ae2d27b7 (diff)
downloadsrc-17a789523fa2b7507d226bc3c5fced35c07900fc.tar.gz
src-17a789523fa2b7507d226bc3c5fced35c07900fc.zip
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
Notes
Notes: svn path=/releng/8.0/; revision=199325
-rw-r--r--sys/dev/e1000/if_igb.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/e1000/if_igb.c b/sys/dev/e1000/if_igb.c
index e6ad0fccc878..61743dfdc0b9 100644
--- a/sys/dev/e1000/if_igb.c
+++ b/sys/dev/e1000/if_igb.c
@@ -2654,7 +2654,7 @@ igb_dma_malloc(struct adapter *adapter, bus_size_t size,
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_ring *txr)
* 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_ring *rxr)
** 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 */