Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Aug 2009 12:29:20 -0700
From:      Pyun YongHyeon <pyunyh@gmail.com>
To:        Jeff Blank <jb000003@mr-happy.com>
Cc:        freebsd-stable@freebsd.org
Subject:   Re: 8.0-BETA3 and txp(4) panic: vm_phys_alloc_contig
Message-ID:  <20090831192920.GA2190@michelle.cdnetworks.com>
In-Reply-To: <20090831182910.GA96366@mr-happy.com>
References:  <20090831172917.GA1512@mr-happy.com> <20090831174918.GA1258@michelle.cdnetworks.com> <20090831182910.GA96366@mr-happy.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--G4iJoqBmSsgzjUCe
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Mon, Aug 31, 2009 at 02:29:10PM -0400, Jeff Blank wrote:
> On Mon, Aug 31, 2009 at 10:49:18AM -0700, Pyun YongHyeon wrote:
> > Hmm, this is odd. I can't find where the alignment is not power of
> > 2 in txp_dma_alloc(). Could you show me the line number of
> > txp_attach+0x6f5?
> 
> What's the command to do this?  I thought it might be
> 'x/A txp_attach+0x65f', but that gave me nothing.  (I don't
> have a crash dump to work with, just a serial console and ddb.)
> 

Hmm... never mind. Please try attached patch let me know how it
goes.

> Jeff

--G4iJoqBmSsgzjUCe
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="txp.align.fix"

Index: sys/dev/txp/if_txp.c
===================================================================
--- sys/dev/txp/if_txp.c	(revision 196606)
+++ sys/dev/txp/if_txp.c	(working copy)
@@ -1389,7 +1389,8 @@
 
 	/* High priority rx ring. */
 	error = txp_dma_alloc(sc, "hi priority rx ring",
-	    &sc->sc_cdata.txp_rxhiring_tag, sizeof(struct txp_rx_desc), 0,
+	    &sc->sc_cdata.txp_rxhiring_tag,
+	    roundup(sizeof(struct txp_rx_desc), 16), 0,
 	    &sc->sc_cdata.txp_rxhiring_map, (void **)&sc->sc_ldata.txp_rxhiring,
 	    sizeof(struct txp_rx_desc) * RX_ENTRIES,
 	    &sc->sc_ldata.txp_rxhiring_paddr);
@@ -1409,7 +1410,8 @@
 
 	/* Low priority rx ring. */
 	error = txp_dma_alloc(sc, "low priority rx ring",
-	    &sc->sc_cdata.txp_rxloring_tag, sizeof(struct txp_rx_desc), 0,
+	    &sc->sc_cdata.txp_rxloring_tag,
+	    roundup(sizeof(struct txp_rx_desc), 16), 0,
 	    &sc->sc_cdata.txp_rxloring_map, (void **)&sc->sc_ldata.txp_rxloring,
 	    sizeof(struct txp_rx_desc) * RX_ENTRIES,
 	    &sc->sc_ldata.txp_rxloring_paddr);

--G4iJoqBmSsgzjUCe--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090831192920.GA2190>