svn commit: r199325 - releng/8.0/sys/dev/e1000

Jack F Vogel jfv at FreeBSD.org
Mon Nov 16 18:46:33 UTC 2009


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 */


More information about the svn-src-all mailing list