diff options
author | Jack F Vogel <jfv@FreeBSD.org> | 2009-11-16 18:46:33 +0000 |
---|---|---|
committer | Jack F Vogel <jfv@FreeBSD.org> | 2009-11-16 18:46:33 +0000 |
commit | 17a789523fa2b7507d226bc3c5fced35c07900fc (patch) | |
tree | 25e4060156a8471658324f2e4ad71ff43bb3cacc | |
parent | cb752cfcac9e53cac9546b8711894bb7ae2d27b7 (diff) |
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.c | 6 |
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 */ |