From: "Michael Chan" <mchan@broadcom.com>

> Kernel BUG at "drivers/net/tg3.c":2805
> invalid operand: 0000 [1] SMP

David and I discussed about this and one possible theory is that your
system is reordering the MMIOs to the device.  We have seen this on some
Athlon chipsets in the past and in fact the tg3 driver will flush all MMIO
writes when that Athlon chipset is detected.  Please set
TG3_FLAG_MBOX_WRITE_REORDER flag in tg3_get_invariants() or use the patch
below to see if the problem goes away, assuming the flag did not already
get set on your system.


Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/net/tg3.c |    2 ++
 1 files changed, 2 insertions(+)

diff -puN drivers/net/tg3.c~tg3-handle-mmio-reordering-for-all-devices drivers/net/tg3.c
--- devel/drivers/net/tg3.c~tg3-handle-mmio-reordering-for-all-devices	2005-09-13 18:26:59.000000000 -0700
+++ devel-akpm/drivers/net/tg3.c	2005-09-13 18:26:59.000000000 -0700
@@ -9294,6 +9294,8 @@ static int __devinit tg3_get_invariants(
 	if (pci_dev_present(write_reorder_chipsets))
 		tp->tg3_flags |= TG3_FLAG_MBOX_WRITE_REORDER;
 
+	tp->tg3_flags |= TG3_FLAG_MBOX_WRITE_REORDER;
+
 	/* Force memory write invalidate off.  If we leave it on,
 	 * then on 5700_BX chips we have to enable a workaround.
 	 * The workaround is to set the TG3PCI_DMA_RW_CTRL boundary
_