From 17a789523fa2b7507d226bc3c5fced35c07900fc Mon Sep 17 00:00:00 2001 From: Jack F Vogel Date: Mon, 16 Nov 2009 18:46:33 +0000 Subject: 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 --- sys/dev/e1000/if_igb.c | 6 +++--- 1 file 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 */ -- cgit v1.2.3