LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
* Re: Intel 82559 NIC corrupted EEPROM
       [not found]         ` <fa.yV32AYzot0OkvPVCY7VTCvd6rJw@ifi.uio.no>
@ 2007-02-07 11:06           ` John
  2007-02-13 19:45             ` Brandeburg, Jesse
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2007-02-07 11:06 UTC (permalink / raw)
  To: linux-kernel
  Cc: jesse.brandeburg, jesse.brandeburg, netdev, auke-jan.h.kok, bunk,
	jgarzik, saw, linux.kernel

Jesse Brandeburg wrote:

> John wrote:
>
>> Jesse Brandeburg wrote:
>>
>>> can you try adding mdelay(100); in e100_eeprom_load before the for loop,
>>> and then change the multiple udelay(4) to mdelay(1) in e100_eeprom_read
>>
>> I applied the attached patch.
>>
>> Loading the driver now takes around one minute :-)
> 
> ouch, but yep, thats what happens when you use "super extra delay"
> 
>> I ran 'source load_unload' 25 times in a loop.
>>
>> The first 12 times were successful. The last 13 times failed.
>> (cf. attached archive)
>>
>> I noticed something very strange.
>>
>> The number of words obviously in error (0xFFFF) returned by the EEPROM
>> on 00:09.0 is not constant.
> 
> That is very strange, I would think that maybe you have something else
> on the bus with the e100 that may be hogging bus cycles you have
> failing hardware (maybe a bad eeprom, or possibly a bad mac chip)
> 
>> $ grep -c 0xFFFF insmod*
>> insmod_300.txt:0
>> insmod_301.txt:0
>> insmod_302.txt:0
>> insmod_303.txt:0
>> insmod_304.txt:0
>> insmod_305.txt:0
>> insmod_306.txt:0
>> insmod_307.txt:0
>> insmod_308.txt:0
>> insmod_309.txt:0
>> insmod_310.txt:0
>> insmod_311.txt:0
>> insmod_312.txt:1
>> insmod_313.txt:5
>> insmod_314.txt:24
>> insmod_315.txt:45
>> insmod_316.txt:243
>> insmod_317.txt:256
>> insmod_318.txt:256
>> insmod_319.txt:256
>> insmod_320.txt:256
>> insmod_321.txt:256
>> insmod_322.txt:256
>> insmod_323.txt:253
>> insmod_324.txt:240
> 
> this is even stranger, does it cycle back down (sine wave) to zero
> again?  The delays did seem to work, at least sometimes.  This
> indicates that something needs that extra delay to successfully read
> the eeprom.  I might try changing all the udelay(4) to udelay(40) (x10
> increase) and see if that gives you a happy medium of "most times
> driver loads without error"
> 
> John, this problem seems to be very specific to your hardware.  I know
> that you have put in a lot of time debugging this, but I'm not sure
> what we can do from here.  If this were a generic code problem more
> people would be reporting the issue.
> 
> What would you like to do?  At this stage I would like e100 to work
> better than it is, but I'm not sure what to do next.

Hello everyone,

I'm resurrecting this thread because it appears we'll need to support 
these motherboards for several months to come, yet Adrian Bunk has 
scheduled the removal of eepro100 in January 2007.

To recap, we have to support ~30 EBC-2000T motherboards.
http://www.adlinktech.com/PD/web/PD_detail.php?pid=213
These motherboards come with three on-board Intel 82559 NICs.

Last time I checked, i.e. two months ago, e100 did not correctly 
initialize all three NICs on these motherboards. Therefore, we've been 
using eepro100.

I will be testing the latest 2.6.20 kernel to see if the situation has 
changed, but I wanted to let you all know that there are still some 
eepro100 users out there, out of necessity.

Regards,

John


^ permalink raw reply	[flat|nested] 27+ messages in thread

* RE: Intel 82559 NIC corrupted EEPROM
  2007-02-07 11:06           ` Intel 82559 NIC corrupted EEPROM John
@ 2007-02-13 19:45             ` Brandeburg, Jesse
  0 siblings, 0 replies; 27+ messages in thread
From: Brandeburg, Jesse @ 2007-02-13 19:45 UTC (permalink / raw)
  To: John, linux-kernel
  Cc: jesse.brandeburg, netdev, Kok, Auke-jan H, bunk, jgarzik, saw

[-- Attachment #1: Type: text/plain, Size: 11947 bytes --]

John wrote:
> Jesse Brandeburg wrote:
>> What would you like to do?  At this stage I would like e100 to work
>> better than it is, but I'm not sure what to do next.
> 
> Hello everyone,
> 
> I'm resurrecting this thread because it appears we'll need to support
> these motherboards for several months to come, yet Adrian Bunk has
> scheduled the removal of eepro100 in January 2007.
> 
> To recap, we have to support ~30 EBC-2000T motherboards.
> http://www.adlinktech.com/PD/web/PD_detail.php?pid=213
> These motherboards come with three on-board Intel 82559 NICs.
> 
> Last time I checked, i.e. two months ago, e100 did not correctly
> initialize all three NICs on these motherboards. Therefore, we've been
> using eepro100.
> 
> I will be testing the latest 2.6.20 kernel to see if the situation has
> changed, but I wanted to let you all know that there are still some
> eepro100 users out there, out of necessity.

John, I've made this patch against 2.6.20 to enable IO access for e100,
in the hope it might change something with the timings. I smoke tested
it against one e100 in one of my machines, and I disabled the Mem bit in
the COMMAND register after loading the driver to make sure that it
wasn't using memory access to the registers.

Please test with insmod e100.ko use_io=1

The patch is actually short, considering the magnitude of the change,
its inline and attached in case my mailer corrupts it.

Please let me know if it changes something, I still believe this is
something very specific to your systems (or more likely the eeprom on
your systems)

== begin patch ==

e100: try using io only
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
---

 drivers/net/e100.c |   74
++++++++++++++++++++++++++++------------------------
 1 files changed, 40 insertions(+), 34 deletions(-)

diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 0cefef5..df3d2e7 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -159,7 +159,7 @@ #include <asm/unaligned.h>
 
 #define DRV_NAME		"e100"
 #define DRV_EXT			"-NAPI"
-#define DRV_VERSION		"3.5.17-k2"DRV_EXT
+#define DRV_VERSION		"3.5.17-k2_iodebug"DRV_EXT
 #define DRV_DESCRIPTION		"Intel(R) PRO/100 Network
Driver"
 #define DRV_COPYRIGHT		"Copyright(c) 1999-2006 Intel
Corporation"
 #define PFX			DRV_NAME ": "
@@ -174,10 +174,13 @@ MODULE_VERSION(DRV_VERSION);
 
 static int debug = 3;
 static int eeprom_bad_csum_allow = 0;
+static int use_io = 0;
 module_param(debug, int, 0);
 module_param(eeprom_bad_csum_allow, int, 0);
+module_param(use_io, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad eeprom checksums");
+MODULE_PARM_DESC(use_io, "Force use of i/o access mode");
 #define DPRINTK(nlevel, klevel, fmt, args...) \
 	(void)((NETIF_MSG_##nlevel & nic->msg_enable) && \
 	printk(KERN_##klevel PFX "%s: %s: " fmt, nic->netdev->name, \
@@ -591,7 +594,7 @@ static inline void e100_write_flush(stru
 {
 	/* Flush previous PCI writes through intermediate bridges
 	 * by doing a benign read */
-	(void)readb(&nic->csr->scb.status);
+	(void)ioread8(&nic->csr->scb.status);
 }
 
 static void e100_enable_irq(struct nic *nic)
@@ -599,7 +602,7 @@ static void e100_enable_irq(struct nic *
 	unsigned long flags;
 
 	spin_lock_irqsave(&nic->cmd_lock, flags);
-	writeb(irq_mask_none, &nic->csr->scb.cmd_hi);
+	iowrite8(irq_mask_none, &nic->csr->scb.cmd_hi);
 	e100_write_flush(nic);
 	spin_unlock_irqrestore(&nic->cmd_lock, flags);
 }
@@ -609,7 +612,7 @@ static void e100_disable_irq(struct nic 
 	unsigned long flags;
 
 	spin_lock_irqsave(&nic->cmd_lock, flags);
-	writeb(irq_mask_all, &nic->csr->scb.cmd_hi);
+	iowrite8(irq_mask_all, &nic->csr->scb.cmd_hi);
 	e100_write_flush(nic);
 	spin_unlock_irqrestore(&nic->cmd_lock, flags);
 }
@@ -618,11 +621,11 @@ static void e100_hw_reset(struct nic *ni
 {
 	/* Put CU and RU into idle with a selective reset to get
 	 * device off of PCI bus */
-	writel(selective_reset, &nic->csr->port);
+	iowrite32(selective_reset, &nic->csr->port);
 	e100_write_flush(nic); udelay(20);
 
 	/* Now fully reset device */
-	writel(software_reset, &nic->csr->port);
+	iowrite32(software_reset, &nic->csr->port);
 	e100_write_flush(nic); udelay(20);
 
 	/* Mask off our interrupt line - it's unmasked after reset */
@@ -639,7 +642,7 @@ static int e100_self_test(struct nic *ni
 	nic->mem->selftest.signature = 0;
 	nic->mem->selftest.result = 0xFFFFFFFF;
 
-	writel(selftest | dma_addr, &nic->csr->port);
+	iowrite32(selftest | dma_addr, &nic->csr->port);
 	e100_write_flush(nic);
 	/* Wait 10 msec for self-test to complete */
 	msleep(10);
@@ -677,23 +680,23 @@ static void e100_eeprom_write(struct nic
 	for(j = 0; j < 3; j++) {
 
 		/* Chip select */
-		writeb(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 
 		for(i = 31; i >= 0; i--) {
 			ctrl = (cmd_addr_data[j] & (1 << i)) ?
 				eecs | eedi : eecs;
-			writeb(ctrl, &nic->csr->eeprom_ctrl_lo);
+			iowrite8(ctrl, &nic->csr->eeprom_ctrl_lo);
 			e100_write_flush(nic); udelay(4);
 
-			writeb(ctrl | eesk, &nic->csr->eeprom_ctrl_lo);
+			iowrite8(ctrl | eesk,
&nic->csr->eeprom_ctrl_lo);
 			e100_write_flush(nic); udelay(4);
 		}
 		/* Wait 10 msec for cmd to complete */
 		msleep(10);
 
 		/* Chip deselect */
-		writeb(0, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(0, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 	}
 };
@@ -709,21 +712,21 @@ static u16 e100_eeprom_read(struct nic *
 	cmd_addr_data = ((op_read << *addr_len) | addr) << 16;
 
 	/* Chip select */
-	writeb(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
+	iowrite8(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
 	e100_write_flush(nic); udelay(4);
 
 	/* Bit-bang to read word from eeprom */
 	for(i = 31; i >= 0; i--) {
 		ctrl = (cmd_addr_data & (1 << i)) ? eecs | eedi : eecs;
-		writeb(ctrl, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(ctrl, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 
-		writeb(ctrl | eesk, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(ctrl | eesk, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 
 		/* Eeprom drives a dummy zero to EEDO after receiving
 		 * complete address.  Use this to adjust addr_len. */
-		ctrl = readb(&nic->csr->eeprom_ctrl_lo);
+		ctrl = ioread8(&nic->csr->eeprom_ctrl_lo);
 		if(!(ctrl & eedo) && i > 16) {
 			*addr_len -= (i - 16);
 			i = 17;
@@ -733,7 +736,7 @@ static u16 e100_eeprom_read(struct nic *
 	}
 
 	/* Chip deselect */
-	writeb(0, &nic->csr->eeprom_ctrl_lo);
+	iowrite8(0, &nic->csr->eeprom_ctrl_lo);
 	e100_write_flush(nic); udelay(4);
 
 	return le16_to_cpu(data);
@@ -804,7 +807,7 @@ static int e100_exec_cmd(struct nic *nic
 
 	/* Previous command is accepted when SCB clears */
 	for(i = 0; i < E100_WAIT_SCB_TIMEOUT; i++) {
-		if(likely(!readb(&nic->csr->scb.cmd_lo)))
+		if(likely(!ioread8(&nic->csr->scb.cmd_lo)))
 			break;
 		cpu_relax();
 		if(unlikely(i > E100_WAIT_SCB_FAST))
@@ -816,8 +819,8 @@ static int e100_exec_cmd(struct nic *nic
 	}
 
 	if(unlikely(cmd != cuc_resume))
-		writel(dma_addr, &nic->csr->scb.gen_ptr);
-	writeb(cmd, &nic->csr->scb.cmd_lo);
+		iowrite32(dma_addr, &nic->csr->scb.gen_ptr);
+	iowrite8(cmd, &nic->csr->scb.cmd_lo);
 
 err_unlock:
 	spin_unlock_irqrestore(&nic->cmd_lock, flags);
@@ -895,7 +898,7 @@ static u16 mdio_ctrl(struct nic *nic, u3
 	 */
 	spin_lock_irqsave(&nic->mdio_lock, flags);
 	for (i = 100; i; --i) {
-		if (readl(&nic->csr->mdi_ctrl) & mdi_ready)
+		if (ioread32(&nic->csr->mdi_ctrl) & mdi_ready)
 			break;
 		udelay(20);
 	}
@@ -905,11 +908,11 @@ static u16 mdio_ctrl(struct nic *nic, u3
 		spin_unlock_irqrestore(&nic->mdio_lock, flags);
 		return 0;		/* No way to indicate timeout
error */
 	}
-	writel((reg << 16) | (addr << 21) | dir | data,
&nic->csr->mdi_ctrl);
+	iowrite32((reg << 16) | (addr << 21) | dir | data,
&nic->csr->mdi_ctrl);
 
 	for (i = 0; i < 100; i++) {
 		udelay(20);
-		if ((data_out = readl(&nic->csr->mdi_ctrl)) & mdi_ready)
+		if ((data_out = ioread32(&nic->csr->mdi_ctrl)) &
mdi_ready)
 			break;
 	}
 	spin_unlock_irqrestore(&nic->mdio_lock, flags);
@@ -1318,7 +1321,7 @@ static inline int e100_exec_cb_wait(stru
 	}
 
 	/* ack any interupts, something could have been set */
-	writeb(~0, &nic->csr->scb.stat_ack);
+	iowrite8(~0, &nic->csr->scb.stat_ack);
 
 	/* if the command failed, or is not OK, notify and return */
 	if (!counter || !(cb->status & cpu_to_le16(cb_ok))) {
@@ -1580,7 +1583,7 @@ static void e100_watchdog(unsigned long 
 	 * accidentally, due to hardware that shares a register between
the
 	 * interrupt mask bit and the SW Interrupt generation bit */
 	spin_lock_irq(&nic->cmd_lock);
-	writeb(readb(&nic->csr->scb.cmd_hi) |
irq_sw_gen,&nic->csr->scb.cmd_hi);
+	iowrite8(ioread8(&nic->csr->scb.cmd_hi) |
irq_sw_gen,&nic->csr->scb.cmd_hi);
 	e100_write_flush(nic);
 	spin_unlock_irq(&nic->cmd_lock);
 
@@ -1893,7 +1896,7 @@ static void e100_rx_clean(struct nic *ni
 
 	if(restart_required) {
 		// ack the rnr?
-		writeb(stat_ack_rnr, &nic->csr->scb.stat_ack);
+		iowrite8(stat_ack_rnr, &nic->csr->scb.stat_ack);
 		e100_start_receiver(nic, rx_to_start);
 		if(work_done)
 			(*work_done)++;
@@ -1952,7 +1955,7 @@ static irqreturn_t e100_intr(int irq, vo
 {
 	struct net_device *netdev = dev_id;
 	struct nic *nic = netdev_priv(netdev);
-	u8 stat_ack = readb(&nic->csr->scb.stat_ack);
+	u8 stat_ack = ioread8(&nic->csr->scb.stat_ack);
 
 	DPRINTK(INTR, DEBUG, "stat_ack = 0x%02X\n", stat_ack);
 
@@ -1961,7 +1964,7 @@ static irqreturn_t e100_intr(int irq, vo
 		return IRQ_NONE;
 
 	/* Ack interrupt(s) */
-	writeb(stat_ack, &nic->csr->scb.stat_ack);
+	iowrite8(stat_ack, &nic->csr->scb.stat_ack);
 
 	/* We hit Receive No Resource (RNR); restart RU after cleaning
*/
 	if(stat_ack & stat_ack_rnr)
@@ -2107,7 +2110,7 @@ static void e100_tx_timeout_task(struct 
 	struct net_device *netdev = nic->netdev;
 
 	DPRINTK(TX_ERR, DEBUG, "scb.status=0x%02X\n",
-		readb(&nic->csr->scb.status));
+		ioread8(&nic->csr->scb.status));
 	e100_down(netdev_priv(netdev));
 	e100_up(netdev_priv(netdev));
 }
@@ -2230,9 +2233,9 @@ static void e100_get_regs(struct net_dev
 	int i;
 
 	regs->version = (1 << 24) | nic->rev_id;
-	buff[0] = readb(&nic->csr->scb.cmd_hi) << 24 |
-		readb(&nic->csr->scb.cmd_lo) << 16 |
-		readw(&nic->csr->scb.status);
+	buff[0] = ioread8(&nic->csr->scb.cmd_hi) << 24 |
+		ioread8(&nic->csr->scb.cmd_lo) << 16 |
+		ioread16(&nic->csr->scb.status);
 	for(i = E100_PHY_REGS; i >= 0; i--)
 		buff[1 + E100_PHY_REGS - i] =
 			mdio_read(netdev, nic->mii.phy_id, i);
@@ -2604,7 +2607,10 @@ #endif
 	SET_MODULE_OWNER(netdev);
 	SET_NETDEV_DEV(netdev, &pdev->dev);
 
-	nic->csr = ioremap(pci_resource_start(pdev, 0), sizeof(struct
csr));
+	if (use_io)
+		DPRINTK(PROBE, INFO, "using i/o access mode\n");
+
+	nic->csr = pci_iomap(pdev, (use_io ? 1 : 0), sizeof(struct
csr));
 	if(!nic->csr) {
 		DPRINTK(PROBE, ERR, "Cannot map device registers,
aborting.\n");
 		err = -ENOMEM;
@@ -2676,7 +2682,7 @@ #endif
 
 	DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, "
 		"MAC addr %02X:%02X:%02X:%02X:%02X:%02X\n",
-		(unsigned long long)pci_resource_start(pdev, 0),
pdev->irq,
+		(unsigned long long)pci_resource_start(pdev, use_io ? 1
: 0), pdev->irq,
 		netdev->dev_addr[0], netdev->dev_addr[1],
netdev->dev_addr[2],
 		netdev->dev_addr[3], netdev->dev_addr[4],
netdev->dev_addr[5]);
 
@@ -2685,7 +2691,7 @@ #endif
 err_out_free:
 	e100_free(nic);
 err_out_iounmap:
-	iounmap(nic->csr);
+	pci_iounmap(pdev, nic->csr);
 err_out_free_res:
 	pci_release_regions(pdev);
 err_out_disable_pdev:


[-- Attachment #2: e100_io_enable.patch --]
[-- Type: application/octet-stream, Size: 10022 bytes --]

e100: try using io only

From:  <>

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
---

 drivers/net/e100.c |   74 ++++++++++++++++++++++++++++------------------------
 1 files changed, 40 insertions(+), 34 deletions(-)

diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 0cefef5..df3d2e7 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -159,7 +159,7 @@ #include <asm/unaligned.h>
 
 #define DRV_NAME		"e100"
 #define DRV_EXT			"-NAPI"
-#define DRV_VERSION		"3.5.17-k2"DRV_EXT
+#define DRV_VERSION		"3.5.17-k2_iodebug"DRV_EXT
 #define DRV_DESCRIPTION		"Intel(R) PRO/100 Network Driver"
 #define DRV_COPYRIGHT		"Copyright(c) 1999-2006 Intel Corporation"
 #define PFX			DRV_NAME ": "
@@ -174,10 +174,13 @@ MODULE_VERSION(DRV_VERSION);
 
 static int debug = 3;
 static int eeprom_bad_csum_allow = 0;
+static int use_io = 0;
 module_param(debug, int, 0);
 module_param(eeprom_bad_csum_allow, int, 0);
+module_param(use_io, int, 0);
 MODULE_PARM_DESC(debug, "Debug level (0=none,...,16=all)");
 MODULE_PARM_DESC(eeprom_bad_csum_allow, "Allow bad eeprom checksums");
+MODULE_PARM_DESC(use_io, "Force use of i/o access mode");
 #define DPRINTK(nlevel, klevel, fmt, args...) \
 	(void)((NETIF_MSG_##nlevel & nic->msg_enable) && \
 	printk(KERN_##klevel PFX "%s: %s: " fmt, nic->netdev->name, \
@@ -591,7 +594,7 @@ static inline void e100_write_flush(stru
 {
 	/* Flush previous PCI writes through intermediate bridges
 	 * by doing a benign read */
-	(void)readb(&nic->csr->scb.status);
+	(void)ioread8(&nic->csr->scb.status);
 }
 
 static void e100_enable_irq(struct nic *nic)
@@ -599,7 +602,7 @@ static void e100_enable_irq(struct nic *
 	unsigned long flags;
 
 	spin_lock_irqsave(&nic->cmd_lock, flags);
-	writeb(irq_mask_none, &nic->csr->scb.cmd_hi);
+	iowrite8(irq_mask_none, &nic->csr->scb.cmd_hi);
 	e100_write_flush(nic);
 	spin_unlock_irqrestore(&nic->cmd_lock, flags);
 }
@@ -609,7 +612,7 @@ static void e100_disable_irq(struct nic 
 	unsigned long flags;
 
 	spin_lock_irqsave(&nic->cmd_lock, flags);
-	writeb(irq_mask_all, &nic->csr->scb.cmd_hi);
+	iowrite8(irq_mask_all, &nic->csr->scb.cmd_hi);
 	e100_write_flush(nic);
 	spin_unlock_irqrestore(&nic->cmd_lock, flags);
 }
@@ -618,11 +621,11 @@ static void e100_hw_reset(struct nic *ni
 {
 	/* Put CU and RU into idle with a selective reset to get
 	 * device off of PCI bus */
-	writel(selective_reset, &nic->csr->port);
+	iowrite32(selective_reset, &nic->csr->port);
 	e100_write_flush(nic); udelay(20);
 
 	/* Now fully reset device */
-	writel(software_reset, &nic->csr->port);
+	iowrite32(software_reset, &nic->csr->port);
 	e100_write_flush(nic); udelay(20);
 
 	/* Mask off our interrupt line - it's unmasked after reset */
@@ -639,7 +642,7 @@ static int e100_self_test(struct nic *ni
 	nic->mem->selftest.signature = 0;
 	nic->mem->selftest.result = 0xFFFFFFFF;
 
-	writel(selftest | dma_addr, &nic->csr->port);
+	iowrite32(selftest | dma_addr, &nic->csr->port);
 	e100_write_flush(nic);
 	/* Wait 10 msec for self-test to complete */
 	msleep(10);
@@ -677,23 +680,23 @@ static void e100_eeprom_write(struct nic
 	for(j = 0; j < 3; j++) {
 
 		/* Chip select */
-		writeb(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 
 		for(i = 31; i >= 0; i--) {
 			ctrl = (cmd_addr_data[j] & (1 << i)) ?
 				eecs | eedi : eecs;
-			writeb(ctrl, &nic->csr->eeprom_ctrl_lo);
+			iowrite8(ctrl, &nic->csr->eeprom_ctrl_lo);
 			e100_write_flush(nic); udelay(4);
 
-			writeb(ctrl | eesk, &nic->csr->eeprom_ctrl_lo);
+			iowrite8(ctrl | eesk, &nic->csr->eeprom_ctrl_lo);
 			e100_write_flush(nic); udelay(4);
 		}
 		/* Wait 10 msec for cmd to complete */
 		msleep(10);
 
 		/* Chip deselect */
-		writeb(0, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(0, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 	}
 };
@@ -709,21 +712,21 @@ static u16 e100_eeprom_read(struct nic *
 	cmd_addr_data = ((op_read << *addr_len) | addr) << 16;
 
 	/* Chip select */
-	writeb(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
+	iowrite8(eecs | eesk, &nic->csr->eeprom_ctrl_lo);
 	e100_write_flush(nic); udelay(4);
 
 	/* Bit-bang to read word from eeprom */
 	for(i = 31; i >= 0; i--) {
 		ctrl = (cmd_addr_data & (1 << i)) ? eecs | eedi : eecs;
-		writeb(ctrl, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(ctrl, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 
-		writeb(ctrl | eesk, &nic->csr->eeprom_ctrl_lo);
+		iowrite8(ctrl | eesk, &nic->csr->eeprom_ctrl_lo);
 		e100_write_flush(nic); udelay(4);
 
 		/* Eeprom drives a dummy zero to EEDO after receiving
 		 * complete address.  Use this to adjust addr_len. */
-		ctrl = readb(&nic->csr->eeprom_ctrl_lo);
+		ctrl = ioread8(&nic->csr->eeprom_ctrl_lo);
 		if(!(ctrl & eedo) && i > 16) {
 			*addr_len -= (i - 16);
 			i = 17;
@@ -733,7 +736,7 @@ static u16 e100_eeprom_read(struct nic *
 	}
 
 	/* Chip deselect */
-	writeb(0, &nic->csr->eeprom_ctrl_lo);
+	iowrite8(0, &nic->csr->eeprom_ctrl_lo);
 	e100_write_flush(nic); udelay(4);
 
 	return le16_to_cpu(data);
@@ -804,7 +807,7 @@ static int e100_exec_cmd(struct nic *nic
 
 	/* Previous command is accepted when SCB clears */
 	for(i = 0; i < E100_WAIT_SCB_TIMEOUT; i++) {
-		if(likely(!readb(&nic->csr->scb.cmd_lo)))
+		if(likely(!ioread8(&nic->csr->scb.cmd_lo)))
 			break;
 		cpu_relax();
 		if(unlikely(i > E100_WAIT_SCB_FAST))
@@ -816,8 +819,8 @@ static int e100_exec_cmd(struct nic *nic
 	}
 
 	if(unlikely(cmd != cuc_resume))
-		writel(dma_addr, &nic->csr->scb.gen_ptr);
-	writeb(cmd, &nic->csr->scb.cmd_lo);
+		iowrite32(dma_addr, &nic->csr->scb.gen_ptr);
+	iowrite8(cmd, &nic->csr->scb.cmd_lo);
 
 err_unlock:
 	spin_unlock_irqrestore(&nic->cmd_lock, flags);
@@ -895,7 +898,7 @@ static u16 mdio_ctrl(struct nic *nic, u3
 	 */
 	spin_lock_irqsave(&nic->mdio_lock, flags);
 	for (i = 100; i; --i) {
-		if (readl(&nic->csr->mdi_ctrl) & mdi_ready)
+		if (ioread32(&nic->csr->mdi_ctrl) & mdi_ready)
 			break;
 		udelay(20);
 	}
@@ -905,11 +908,11 @@ static u16 mdio_ctrl(struct nic *nic, u3
 		spin_unlock_irqrestore(&nic->mdio_lock, flags);
 		return 0;		/* No way to indicate timeout error */
 	}
-	writel((reg << 16) | (addr << 21) | dir | data, &nic->csr->mdi_ctrl);
+	iowrite32((reg << 16) | (addr << 21) | dir | data, &nic->csr->mdi_ctrl);
 
 	for (i = 0; i < 100; i++) {
 		udelay(20);
-		if ((data_out = readl(&nic->csr->mdi_ctrl)) & mdi_ready)
+		if ((data_out = ioread32(&nic->csr->mdi_ctrl)) & mdi_ready)
 			break;
 	}
 	spin_unlock_irqrestore(&nic->mdio_lock, flags);
@@ -1318,7 +1321,7 @@ static inline int e100_exec_cb_wait(stru
 	}
 
 	/* ack any interupts, something could have been set */
-	writeb(~0, &nic->csr->scb.stat_ack);
+	iowrite8(~0, &nic->csr->scb.stat_ack);
 
 	/* if the command failed, or is not OK, notify and return */
 	if (!counter || !(cb->status & cpu_to_le16(cb_ok))) {
@@ -1580,7 +1583,7 @@ static void e100_watchdog(unsigned long 
 	 * accidentally, due to hardware that shares a register between the
 	 * interrupt mask bit and the SW Interrupt generation bit */
 	spin_lock_irq(&nic->cmd_lock);
-	writeb(readb(&nic->csr->scb.cmd_hi) | irq_sw_gen,&nic->csr->scb.cmd_hi);
+	iowrite8(ioread8(&nic->csr->scb.cmd_hi) | irq_sw_gen,&nic->csr->scb.cmd_hi);
 	e100_write_flush(nic);
 	spin_unlock_irq(&nic->cmd_lock);
 
@@ -1893,7 +1896,7 @@ static void e100_rx_clean(struct nic *ni
 
 	if(restart_required) {
 		// ack the rnr?
-		writeb(stat_ack_rnr, &nic->csr->scb.stat_ack);
+		iowrite8(stat_ack_rnr, &nic->csr->scb.stat_ack);
 		e100_start_receiver(nic, rx_to_start);
 		if(work_done)
 			(*work_done)++;
@@ -1952,7 +1955,7 @@ static irqreturn_t e100_intr(int irq, vo
 {
 	struct net_device *netdev = dev_id;
 	struct nic *nic = netdev_priv(netdev);
-	u8 stat_ack = readb(&nic->csr->scb.stat_ack);
+	u8 stat_ack = ioread8(&nic->csr->scb.stat_ack);
 
 	DPRINTK(INTR, DEBUG, "stat_ack = 0x%02X\n", stat_ack);
 
@@ -1961,7 +1964,7 @@ static irqreturn_t e100_intr(int irq, vo
 		return IRQ_NONE;
 
 	/* Ack interrupt(s) */
-	writeb(stat_ack, &nic->csr->scb.stat_ack);
+	iowrite8(stat_ack, &nic->csr->scb.stat_ack);
 
 	/* We hit Receive No Resource (RNR); restart RU after cleaning */
 	if(stat_ack & stat_ack_rnr)
@@ -2107,7 +2110,7 @@ static void e100_tx_timeout_task(struct 
 	struct net_device *netdev = nic->netdev;
 
 	DPRINTK(TX_ERR, DEBUG, "scb.status=0x%02X\n",
-		readb(&nic->csr->scb.status));
+		ioread8(&nic->csr->scb.status));
 	e100_down(netdev_priv(netdev));
 	e100_up(netdev_priv(netdev));
 }
@@ -2230,9 +2233,9 @@ static void e100_get_regs(struct net_dev
 	int i;
 
 	regs->version = (1 << 24) | nic->rev_id;
-	buff[0] = readb(&nic->csr->scb.cmd_hi) << 24 |
-		readb(&nic->csr->scb.cmd_lo) << 16 |
-		readw(&nic->csr->scb.status);
+	buff[0] = ioread8(&nic->csr->scb.cmd_hi) << 24 |
+		ioread8(&nic->csr->scb.cmd_lo) << 16 |
+		ioread16(&nic->csr->scb.status);
 	for(i = E100_PHY_REGS; i >= 0; i--)
 		buff[1 + E100_PHY_REGS - i] =
 			mdio_read(netdev, nic->mii.phy_id, i);
@@ -2604,7 +2607,10 @@ #endif
 	SET_MODULE_OWNER(netdev);
 	SET_NETDEV_DEV(netdev, &pdev->dev);
 
-	nic->csr = ioremap(pci_resource_start(pdev, 0), sizeof(struct csr));
+	if (use_io)
+		DPRINTK(PROBE, INFO, "using i/o access mode\n");
+
+	nic->csr = pci_iomap(pdev, (use_io ? 1 : 0), sizeof(struct csr));
 	if(!nic->csr) {
 		DPRINTK(PROBE, ERR, "Cannot map device registers, aborting.\n");
 		err = -ENOMEM;
@@ -2676,7 +2682,7 @@ #endif
 
 	DPRINTK(PROBE, INFO, "addr 0x%llx, irq %d, "
 		"MAC addr %02X:%02X:%02X:%02X:%02X:%02X\n",
-		(unsigned long long)pci_resource_start(pdev, 0), pdev->irq,
+		(unsigned long long)pci_resource_start(pdev, use_io ? 1 : 0), pdev->irq,
 		netdev->dev_addr[0], netdev->dev_addr[1], netdev->dev_addr[2],
 		netdev->dev_addr[3], netdev->dev_addr[4], netdev->dev_addr[5]);
 
@@ -2685,7 +2691,7 @@ #endif
 err_out_free:
 	e100_free(nic);
 err_out_iounmap:
-	iounmap(nic->csr);
+	pci_iounmap(pdev, nic->csr);
 err_out_free_res:
 	pci_release_regions(pdev);
 err_out_disable_pdev:

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM 
@ 2007-08-14 16:35 Amin Azez
  0 siblings, 0 replies; 27+ messages in thread
From: Amin Azez @ 2007-08-14 16:35 UTC (permalink / raw)
  To: linux-kernel, jesse.brandeburg, me, hpa

Regarding the thread accessible at:
   
http://groups.google.com/group/linux.kernel/browse_frm/thread/bdc8fd08fb601c26

that ended with "looks like it is specific to your hardware",

Can I check where we are with this?

I've just had a small installation run fail on 3 boxes with the same
problems, on new hardware, which sort of suggests there is no longer a
shortage of test scenarios.

To summarise, in my case it looks as though it really was a bad
checksum, by using the eepro100 driver and the lucky-fortune eeprom tool
at http://www.hockin.org/~thockin/enet_eeprom/enet_eeprom.tgz I was able
to re-write the mac address and thus have the EEPROM checksum re-calculated.

I don't recall the original reporter (John) saying that he had tried this.

I'm still checking with my supplier to see how this could have happened.

Sam

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
       [not found]                         ` <45704001.9040108@privacy.net>
@ 2006-12-04 23:26                           ` Jesse Brandeburg
  0 siblings, 0 replies; 27+ messages in thread
From: Jesse Brandeburg @ 2006-12-04 23:26 UTC (permalink / raw)
  To: Brandeburg, Jesse
  Cc: netdev, linux-kernel, auke-jan.h.kok, bunk, jgarzik, saw

On 12/1/06, John <me@privacy.net> wrote:
> > can you try adding mdelay(100); in e100_eeprom_load before the for loop,
> > and then change the multiple udelay(4) to mdelay(1) in e100_eeprom_read
>
> I applied the attached patch.
>
> Loading the driver now takes around one minute :-)

ouch, but yep, thats what happens when you use "super extra delay"

> I ran 'source load_unload' 25 times in a loop.
>
> The first 12 times were successful. The last 13 times failed.
> (cf. attached archive)
>
> I noticed something very strange.
>
> The number of words obviously in error (0xFFFF) returned by the EEPROM
> on 00:09.0 is not constant.

That is very strange, I would think that maybe you have something else
on the bus with the e100 that may be hogging bus cycles you have
failing hardware (maybe a bad eeprom, or possibly a bad mac chip)

> $ grep -c 0xFFFF insmod*
> insmod_300.txt:0
> insmod_301.txt:0
> insmod_302.txt:0
> insmod_303.txt:0
> insmod_304.txt:0
> insmod_305.txt:0
> insmod_306.txt:0
> insmod_307.txt:0
> insmod_308.txt:0
> insmod_309.txt:0
> insmod_310.txt:0
> insmod_311.txt:0
> insmod_312.txt:1
> insmod_313.txt:5
> insmod_314.txt:24
> insmod_315.txt:45
> insmod_316.txt:243
> insmod_317.txt:256
> insmod_318.txt:256
> insmod_319.txt:256
> insmod_320.txt:256
> insmod_321.txt:256
> insmod_322.txt:256
> insmod_323.txt:253
> insmod_324.txt:240

this is even stranger, does it cycle back down (sine wave) to zero
again?  The delays did seem to work, at least sometimes.  This
indicates that something needs that extra delay to successfully read
the eeprom.  I might try changing all the udelay(4) to udelay(40) (x10
increase) and see if that gives you a happy medium of "most times
driver loads without error"

John, this problem seems to be very specific to your hardware.  I know
that you have put in a lot of time debugging this, but I'm not sure
what we can do from here.  If this were a generic code problem more
people would be reporting the issue.

What would you like to do?  At this stage I would like e100 to work
better than it is, but I'm not sure what to do next.

Thanks for your patience on this issue,
  Jesse

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-29 11:26                     ` John
@ 2006-11-29 18:55                       ` Jesse Brandeburg
       [not found]                         ` <45704001.9040108@privacy.net>
  0 siblings, 1 reply; 27+ messages in thread
From: Jesse Brandeburg @ 2006-11-29 18:55 UTC (permalink / raw)
  To: Brandeburg, Jesse
  Cc: netdev, linux-kernel, auke-jan.h.kok, bunk, jgarzik, saw

On 11/29/06, John <me@privacy.net> wrote:
> > Let's go ahead and print the output from e100_load_eeprom
> > debug patch attached.
>
> Loading (then unloading) e100.ko fails the first few times (i.e. the
> driver claims one of the EEPROMs is corrupted). Thereafter, sometimes it
> fails, other times it works. Sounds like a race, no?

yes, or something like that.  I think you may have a piece of eeprom
hardware that is either "slow" or slightly out of spec.  I wonder if
the hrt kernel makes udelay(4) much more like 4us than the regular
kernels.

can you try adding mdelay(100); in e100_eeprom_load before the for loop,
and then change the multiple udelay(4) to mdelay(1) in e100_eeprom_read

> On an unrelated note, insmod_100.txt is truncated at the beginning, and
> insmod_110.txt is truncated in the middle (!!) cf. line 14. What would
> cause klogd to behave like that?

usually its because whatever is printing is printing too fast or too
much at a time.

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-27 20:34                   ` Jesse Brandeburg
@ 2006-11-29 11:26                     ` John
  2006-11-29 18:55                       ` Jesse Brandeburg
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2006-11-29 11:26 UTC (permalink / raw)
  To: Jesse Brandeburg; +Cc: netdev, linux-kernel, auke-jan.h.kok, bunk, jgarzik, saw

[-- Attachment #1: Type: text/plain, Size: 1430 bytes --]

Jesse Brandeburg wrote:

> John wrote:
> 
>> Here is some context for those who have been added to the CC list:
>> http://groups.google.com/group/linux.kernel/browse_frm/thread/bdc8fd08fb601c26
>>
>> As far as I understand, some consider the eepro100 driver to be
>> obsolete, and it has been considered for removal.
>>
>> What is the current status?
>>
>> Unfortunately, e100 does not work out-of-the-box on this system.
>>
>> Is there something I can do to improve the situation?
> 
> Let's go ahead and print the output from e100_load_eeprom
> debug patch attached.

Loading (then unloading) e100.ko fails the first few times (i.e. the 
driver claims one of the EEPROMs is corrupted). Thereafter, sometimes it 
fails, other times it works. Sounds like a race, no?

$ cat load_unload
: > /var/log/kern.log
insmod e100.ko debug=16
sleep 1
cp /var/log/kern.log insmod_$I.txt
ip link > ip_link_$I.txt
sleep 2
rmmod e100
let "I=I+1"

(cf. attached compressed archive)

FAILURE:
insmod_100.txt
insmod_101.txt
insmod_102.txt
insmod_105.txt
insmod_107.txt
insmod_108.txt
insmod_110.txt
insmod_111.txt
insmod_114.txt

SUCCESS:
insmod_103.txt
insmod_104.txt
insmod_106.txt
insmod_109.txt
insmod_112.txt
insmod_113.txt
insmod_115.txt
insmod_116.txt

On an unrelated note, insmod_100.txt is truncated at the beginning, and 
insmod_110.txt is truncated in the middle (!!) cf. line 14. What would 
cause klogd to behave like that?

Regards.

[-- Attachment #2: TEST-e100.tar.bz2 --]
[-- Type: application/octet-stream, Size: 14424 bytes --]

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-27 14:17                 ` John
@ 2006-11-27 20:34                   ` Jesse Brandeburg
  2006-11-29 11:26                     ` John
  0 siblings, 1 reply; 27+ messages in thread
From: Jesse Brandeburg @ 2006-11-27 20:34 UTC (permalink / raw)
  To: Brandeburg, Jesse
  Cc: netdev, linux-kernel, auke-jan.h.kok, bunk, jgarzik, saw

[-- Attachment #1: Type: text/plain, Size: 1560 bytes --]

On 11/27/06, John <me@privacy.net> wrote:
> John wrote:
>
> >> 00000000-0009ffff : System RAM
> >> 000a0000-000bffff : Video RAM area
> >> 000f0000-000fffff : System ROM
> >> 00100000-0ffeffff : System RAM
> >>   00100000-00296a1a : Kernel code
> >>   00296a1b-0031bbe7 : Kernel data
> >> 0fff0000-0fff2fff : ACPI Non-volatile Storage
> >> 0fff3000-0fffffff : ACPI Tables
> >> 20000000-200fffff : 0000:00:08.0
> >> 20100000-201fffff : 0000:00:09.0
> >> 20200000-202fffff : 0000:00:0a.0
> >> e0000000-e3ffffff : 0000:00:00.0
> >> e5000000-e50fffff : 0000:00:08.0
> >> e5100000-e51fffff : 0000:00:09.0
> >> e5200000-e52fffff : 0000:00:0a.0
> >> e5300000-e5300fff : 0000:00:08.0
> >> e5301000-e5301fff : 0000:00:0a.0
> >> e5302000-e5302fff : 0000:00:09.0
> >> ffff0000-ffffffff : reserved
> >>
> >> I've also attached:
> >>
> >> o config-2.6.18.1-adlink used to compile this kernel
> >> o dmesg output after the machine boots
> >
> > I suppose the information I've sent is not enough to locate the
> > root of the problem. Is there more I can provide?
>
> Here is some context for those who have been added to the CC list:
> http://groups.google.com/group/linux.kernel/browse_frm/thread/bdc8fd08fb601c26
>
> As far as I understand, some consider the eepro100 driver to be
> obsolete, and it has been considered for removal.
>
> What is the current status?
>
> Unfortunately, e100 does not work out-of-the-box on this system.
>
> Is there something I can do to improve the situation?

lets go ahead and print the output from e100_load_eeprom
debug patch attached.

[-- Attachment #2: e100_debug.patch --]
[-- Type: application/octet-stream, Size: 849 bytes --]

[e100] debug eeprom problems

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>

---

 drivers/net/e100.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index 19ab344..376ff2d 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -746,10 +746,12 @@ static int e100_eeprom_load(struct nic *
 
 	/* Try reading with an 8-bit addr len to discover actual addr len */
 	e100_eeprom_read(nic, &addr_len, 0);
+	DPRINTK(PROBE, INFO, "addr_len 0x%04X\n", addr_len);
 	nic->eeprom_wc = 1 << addr_len;
 
 	for(addr = 0; addr < nic->eeprom_wc; addr++) {
 		nic->eeprom[addr] = e100_eeprom_read(nic, &addr_len, addr);
+		DPRINTK(PROBE, INFO, "eeprom[%d] = 0x%04X\n", addr, nic->eeprom[addr]);
 		if(addr < nic->eeprom_wc - 1)
 			checksum += cpu_to_le16(nic->eeprom[addr]);
 	}

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-15  8:34               ` John
@ 2006-11-27 14:17                 ` John
  2006-11-27 20:34                   ` Jesse Brandeburg
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2006-11-27 14:17 UTC (permalink / raw)
  To: netdev, linux-kernel; +Cc: auke-jan.h.kok, jesse.brandeburg, bunk, jgarzik, saw

John wrote:

>> 00000000-0009ffff : System RAM
>> 000a0000-000bffff : Video RAM area
>> 000f0000-000fffff : System ROM
>> 00100000-0ffeffff : System RAM
>>   00100000-00296a1a : Kernel code
>>   00296a1b-0031bbe7 : Kernel data
>> 0fff0000-0fff2fff : ACPI Non-volatile Storage
>> 0fff3000-0fffffff : ACPI Tables
>> 20000000-200fffff : 0000:00:08.0
>> 20100000-201fffff : 0000:00:09.0
>> 20200000-202fffff : 0000:00:0a.0
>> e0000000-e3ffffff : 0000:00:00.0
>> e5000000-e50fffff : 0000:00:08.0
>> e5100000-e51fffff : 0000:00:09.0
>> e5200000-e52fffff : 0000:00:0a.0
>> e5300000-e5300fff : 0000:00:08.0
>> e5301000-e5301fff : 0000:00:0a.0
>> e5302000-e5302fff : 0000:00:09.0
>> ffff0000-ffffffff : reserved
>>
>> I've also attached:
>>
>> o config-2.6.18.1-adlink used to compile this kernel
>> o dmesg output after the machine boots
> 
> I suppose the information I've sent is not enough to locate the
> root of the problem. Is there more I can provide?

Here is some context for those who have been added to the CC list:
http://groups.google.com/group/linux.kernel/browse_frm/thread/bdc8fd08fb601c26

As far as I understand, some consider the eepro100 driver to be 
obsolete, and it has been considered for removal.

What is the current status?

Unfortunately, e100 does not work out-of-the-box on this system.

Is there something I can do to improve the situation?

-- 
Regards,

John

[ E-mail address is a bit-bucket. I *do* monitor the mailing lists. ]


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-10 12:03             ` John
@ 2006-11-15  8:34               ` John
  2006-11-27 14:17                 ` John
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2006-11-15  8:34 UTC (permalink / raw)
  To: Jesse Brandeburg; +Cc: auke-jan.h.kok, linux-kernel, netdev, hpa

John wrote:

> 00000000-0009ffff : System RAM
> 000a0000-000bffff : Video RAM area
> 000f0000-000fffff : System ROM
> 00100000-0ffeffff : System RAM
>   00100000-00296a1a : Kernel code
>   00296a1b-0031bbe7 : Kernel data
> 0fff0000-0fff2fff : ACPI Non-volatile Storage
> 0fff3000-0fffffff : ACPI Tables
> 20000000-200fffff : 0000:00:08.0
> 20100000-201fffff : 0000:00:09.0
> 20200000-202fffff : 0000:00:0a.0
> e0000000-e3ffffff : 0000:00:00.0
> e5000000-e50fffff : 0000:00:08.0
> e5100000-e51fffff : 0000:00:09.0
> e5200000-e52fffff : 0000:00:0a.0
> e5300000-e5300fff : 0000:00:08.0
> e5301000-e5301fff : 0000:00:0a.0
> e5302000-e5302fff : 0000:00:09.0
> ffff0000-ffffffff : reserved
> 
> I've also attached:
> 
> o config-2.6.18.1-adlink used to compile this kernel
> o dmesg output after the machine boots

I suppose the information I've sent is not enough to locate the
root of the problem. Is there more I can provide?

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-10  0:19           ` Jesse Brandeburg
@ 2006-11-10 12:03             ` John
  2006-11-15  8:34               ` John
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2006-11-10 12:03 UTC (permalink / raw)
  To: Jesse Brandeburg; +Cc: auke-jan.h.kok, linux-kernel, netdev, hpa, saw

[-- Attachment #1: Type: text/plain, Size: 2369 bytes --]

Jesse Brandeburg wrote:

> Can you send output of cat /proc/iomem

00000000-0009ffff : System RAM
000a0000-000bffff : Video RAM area
000f0000-000fffff : System ROM
00100000-0ffeffff : System RAM
   00100000-00296a1a : Kernel code
   00296a1b-0031bbe7 : Kernel data
0fff0000-0fff2fff : ACPI Non-volatile Storage
0fff3000-0fffffff : ACPI Tables
20000000-200fffff : 0000:00:08.0
20100000-201fffff : 0000:00:09.0
20200000-202fffff : 0000:00:0a.0
e0000000-e3ffffff : 0000:00:00.0
e5000000-e50fffff : 0000:00:08.0
e5100000-e51fffff : 0000:00:09.0
e5200000-e52fffff : 0000:00:0a.0
e5300000-e5300fff : 0000:00:08.0
e5301000-e5301fff : 0000:00:0a.0
e5302000-e5302fff : 0000:00:09.0
ffff0000-ffffffff : reserved

I've also attached:

o config-2.6.18.1-adlink used to compile this kernel
o dmesg output after the machine boots

> try something like the attached patch

Loading e100-debug.ko reports:

e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation

***e100 debug: unable to set power state (error 0)
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA]
  -> GSI 12 (level, low) -> IRQ 12
***e100 debug: read 01000000/00000000 from the same register
e100: eth0: e100_probe: addr 0xe5300000, irq 12, MAC addr 00:30:64:04:E6:E4

***e100 debug: unable to set power state (error 0)
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB]
  -> GSI 10 (level, low) -> IRQ 10
***e100 debug: read 01000000/00000000 from the same register
e100: 0000:00:09.0: e100_eeprom_load: EEPROM corrupted
ACPI: PCI interrupt for device 0000:00:09.0 disabled
e100: probe of 0000:00:09.0 failed with error -11

***e100 debug: unable to set power state (error 0)
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC]
  -> GSI 11 (level, low) -> IRQ 11
***e100 debug: read 01000000/00000000 from the same register
e100: eth1: e100_probe: addr 0xe5301000, irq 11, MAC addr 00:30:64:04:E6:E6


In other words, the behavior is the same for all three NICs.

pci_set_power_state(pdev, PCI_D0) returns 0
pci_iomap returns something != NULL

Can I provide more information to help locate the problem?

[-- Attachment #2: config-2.6.18.1-adlink --]
[-- Type: text/plain, Size: 20923 bytes --]

#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.18.1-hrt
# Tue Nov  7 17:52:26 2006
#
CONFIG_X86_32=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_SEMAPHORE_SLEEPERS=y
CONFIG_X86=y
CONFIG_MMU=y
CONFIG_GENERIC_ISA_DMA=y
CONFIG_GENERIC_IOMAP=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_ARCH_MAY_HAVE_PC_FDC=y
CONFIG_DMI=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32

#
# General setup
#
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
# CONFIG_RELAY is not set
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
# CONFIG_EMBEDDED is not set
CONFIG_UID16=y
CONFIG_SYSCTL=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
CONFIG_EPOLL=y
CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
# CONFIG_SLOB is not set

#
# Loadable module support
#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_MODULE_FORCE_UNLOAD is not set
# CONFIG_MODVERSIONS is not set
# CONFIG_MODULE_SRCVERSION_ALL is not set
# CONFIG_KMOD is not set

#
# Block layer
#
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
# CONFIG_IOSCHED_DEADLINE is not set
CONFIG_IOSCHED_CFQ=y
# CONFIG_DEFAULT_AS is not set
# CONFIG_DEFAULT_DEADLINE is not set
CONFIG_DEFAULT_CFQ=y
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="cfq"

#
# Processor type and features
#
# CONFIG_HIGH_RES_TIMERS is not set
# CONFIG_SMP is not set
CONFIG_X86_PC=y
# CONFIG_X86_ELAN is not set
# CONFIG_X86_VOYAGER is not set
# CONFIG_X86_NUMAQ is not set
# CONFIG_X86_SUMMIT is not set
# CONFIG_X86_BIGSMP is not set
# CONFIG_X86_VISWS is not set
# CONFIG_X86_GENERICARCH is not set
# CONFIG_X86_ES7000 is not set
# CONFIG_M386 is not set
# CONFIG_M486 is not set
# CONFIG_M586 is not set
# CONFIG_M586TSC is not set
# CONFIG_M586MMX is not set
# CONFIG_M686 is not set
# CONFIG_MPENTIUMII is not set
CONFIG_MPENTIUMIII=y
# CONFIG_MPENTIUMM is not set
# CONFIG_MPENTIUM4 is not set
# CONFIG_MK6 is not set
# CONFIG_MK7 is not set
# CONFIG_MK8 is not set
# CONFIG_MCRUSOE is not set
# CONFIG_MEFFICEON is not set
# CONFIG_MWINCHIPC6 is not set
# CONFIG_MWINCHIP2 is not set
# CONFIG_MWINCHIP3D is not set
# CONFIG_MGEODEGX1 is not set
# CONFIG_MGEODE_LX is not set
# CONFIG_MCYRIXIII is not set
# CONFIG_MVIAC3_2 is not set
# CONFIG_X86_GENERIC is not set
CONFIG_X86_CMPXCHG=y
CONFIG_X86_XADD=y
CONFIG_X86_L1_CACHE_SHIFT=5
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_X86_WP_WORKS_OK=y
CONFIG_X86_INVLPG=y
CONFIG_X86_BSWAP=y
CONFIG_X86_POPAD_OK=y
CONFIG_X86_CMPXCHG64=y
CONFIG_X86_GOOD_APIC=y
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_TSC=y
# CONFIG_HPET_TIMER is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_BKL=y
CONFIG_X86_UP_APIC=y
CONFIG_X86_UP_IOAPIC=y
CONFIG_X86_LOCAL_APIC=y
CONFIG_X86_IO_APIC=y
CONFIG_X86_MCE=y
CONFIG_X86_MCE_NONFATAL=y
CONFIG_X86_MCE_P4THERMAL=y
CONFIG_VM86=y
# CONFIG_TOSHIBA is not set
# CONFIG_I8K is not set
# CONFIG_X86_REBOOTFIXUPS is not set
CONFIG_MICROCODE=y
CONFIG_X86_MSR=y
CONFIG_X86_CPUID=y

#
# Firmware Drivers
#
# CONFIG_EDD is not set
# CONFIG_DELL_RBU is not set
# CONFIG_DCDBAS is not set
CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
CONFIG_PAGE_OFFSET=0xC0000000
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_SPARSEMEM_ENABLE=y
CONFIG_ARCH_SELECT_MEMORY_MODEL=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPARSEMEM_STATIC=y
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
# CONFIG_MATH_EMULATION is not set
CONFIG_MTRR=y
# CONFIG_EFI is not set
CONFIG_REGPARM=y
# CONFIG_SECCOMP is not set
# CONFIG_HZ_100 is not set
CONFIG_HZ_250=y
# CONFIG_HZ_1000 is not set
CONFIG_HZ=250
# CONFIG_KEXEC is not set
CONFIG_PHYSICAL_START=0x100000
CONFIG_COMPAT_VDSO=y
CONFIG_GENERIC_TIME_VSYSCALL=y

#
# Power management options (ACPI, APM)
#
CONFIG_PM=y
# CONFIG_PM_LEGACY is not set
# CONFIG_PM_DEBUG is not set
# CONFIG_SOFTWARE_SUSPEND is not set

#
# ACPI (Advanced Configuration and Power Interface) Support
#
CONFIG_ACPI=y
# CONFIG_ACPI_SLEEP is not set
# CONFIG_ACPI_AC is not set
# CONFIG_ACPI_BATTERY is not set
CONFIG_ACPI_BUTTON=y
# CONFIG_ACPI_VIDEO is not set
# CONFIG_ACPI_HOTKEY is not set
CONFIG_ACPI_FAN=y
# CONFIG_ACPI_DOCK is not set
CONFIG_ACPI_PROCESSOR=y
CONFIG_ACPI_THERMAL=y
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_IBM is not set
# CONFIG_ACPI_TOSHIBA is not set
CONFIG_ACPI_BLACKLIST_YEAR=0
# CONFIG_ACPI_DEBUG is not set
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_SYSTEM=y
CONFIG_X86_PM_TIMER=y
# CONFIG_ACPI_CONTAINER is not set

#
# APM (Advanced Power Management) BIOS Support
#
# CONFIG_APM is not set

#
# CPU Frequency scaling
#
# CONFIG_CPU_FREQ is not set

#
# Bus options (PCI, PCMCIA, EISA, MCA, ISA)
#
CONFIG_PCI=y
# CONFIG_PCI_GOBIOS is not set
# CONFIG_PCI_GOMMCONFIG is not set
# CONFIG_PCI_GODIRECT is not set
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_MMCONFIG=y
# CONFIG_PCIEPORTBUS is not set
# CONFIG_PCI_MSI is not set
CONFIG_ISA_DMA_API=y
# CONFIG_ISA is not set
# CONFIG_MCA is not set
# CONFIG_SCx200 is not set

#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set

#
# PCI Hotplug Support
#
# CONFIG_HOTPLUG_PCI is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_NETDEBUG=y
CONFIG_PACKET=y
CONFIG_PACKET_MMAP=y
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_ASK_IP_FIB_HASH=y
# CONFIG_IP_FIB_TRIE is not set
CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
# CONFIG_IP_ROUTE_MULTIPATH is not set
CONFIG_IP_ROUTE_VERBOSE=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_IP_MROUTE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
CONFIG_INET_DIAG=y
CONFIG_INET_TCP_DIAG=y
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_BIC=y
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set

#
# DCCP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_DCCP is not set

#
# SCTP Configuration (EXPERIMENTAL)
#
# CONFIG_IP_SCTP is not set

#
# TIPC Configuration (EXPERIMENTAL)
#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
CONFIG_BRIDGE=y
CONFIG_VLAN_8021Q=y
# CONFIG_DECNET is not set
CONFIG_LLC=y
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set

#
# QoS and/or fair queueing
#
CONFIG_NET_SCHED=y
# CONFIG_NET_SCH_CLK_JIFFIES is not set
CONFIG_NET_SCH_CLK_GETTIMEOFDAY=y
# CONFIG_NET_SCH_CLK_CPU is not set

#
# Queueing/Scheduling
#
# CONFIG_NET_SCH_CBQ is not set
# CONFIG_NET_SCH_HTB is not set
# CONFIG_NET_SCH_HFSC is not set
# CONFIG_NET_SCH_PRIO is not set
# CONFIG_NET_SCH_RED is not set
# CONFIG_NET_SCH_SFQ is not set
# CONFIG_NET_SCH_TEQL is not set
# CONFIG_NET_SCH_TBF is not set
# CONFIG_NET_SCH_GRED is not set
# CONFIG_NET_SCH_DSMARK is not set
CONFIG_NET_SCH_NETEM=y
# CONFIG_NET_SCH_INGRESS is not set

#
# Classification
#
# CONFIG_NET_CLS_BASIC is not set
# CONFIG_NET_CLS_TCINDEX is not set
# CONFIG_NET_CLS_ROUTE4 is not set
# CONFIG_NET_CLS_FW is not set
# CONFIG_NET_CLS_U32 is not set
# CONFIG_NET_CLS_RSVP is not set
# CONFIG_NET_CLS_RSVP6 is not set
# CONFIG_NET_EMATCH is not set
# CONFIG_NET_CLS_ACT is not set
# CONFIG_NET_CLS_POLICE is not set
# CONFIG_NET_ESTIMATOR is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_IEEE80211 is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_SYS_HYPERVISOR is not set

#
# Connector - unified userspace <-> kernelspace linker
#
# CONFIG_CONNECTOR is not set

#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set

#
# Parallel port support
#
# CONFIG_PARPORT is not set

#
# Plug and Play support
#
CONFIG_PNP=y
# CONFIG_PNP_DEBUG is not set

#
# Protocols
#
CONFIG_PNPACPI=y

#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_UMEM is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_BLK_DEV_INITRD is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set

#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y

#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDETAPE is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_IDE_TASK_IOCTL is not set

#
# IDE chipset support/bugfixes
#
CONFIG_IDE_GENERIC=y
# CONFIG_BLK_DEV_CMD640 is not set
# CONFIG_BLK_DEV_IDEPNP is not set
CONFIG_BLK_DEV_IDEPCI=y
CONFIG_IDEPCI_SHARE_IRQ=y
# CONFIG_BLK_DEV_OFFBOARD is not set
CONFIG_BLK_DEV_GENERIC=y
# CONFIG_BLK_DEV_OPTI621 is not set
# CONFIG_BLK_DEV_RZ1000 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
CONFIG_IDEDMA_PCI_AUTO=y
# CONFIG_IDEDMA_ONLYDISK is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_ATIIXP is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5520 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_CS5535 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_IT821X is not set
# CONFIG_BLK_DEV_NS87415 is not set
# CONFIG_BLK_DEV_PDC202XX_OLD is not set
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SIS5513 is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
CONFIG_BLK_DEV_VIA82CXXX=y
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
CONFIG_IDEDMA_AUTO=y
# CONFIG_BLK_DEV_HD is not set

#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set

#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set

#
# Fusion MPT device support
#
# CONFIG_FUSION is not set

#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set

#
# I2O device support
#
# CONFIG_I2O is not set

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_NET_SB1000 is not set

#
# ARCnet devices
#
# CONFIG_ARCNET is not set

#
# PHY device support
#
# CONFIG_PHYLIB is not set

#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
CONFIG_MII=y
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_CASSINI is not set
# CONFIG_NET_VENDOR_3COM is not set

#
# Tulip family network device support
#
# CONFIG_NET_TULIP is not set
# CONFIG_HP100 is not set
CONFIG_NET_PCI=y
# CONFIG_PCNET32 is not set
# CONFIG_AMD8111_ETH is not set
# CONFIG_ADAPTEC_STARFIRE is not set
# CONFIG_B44 is not set
# CONFIG_FORCEDETH is not set
# CONFIG_DGRS is not set
CONFIG_EEPRO100=m
CONFIG_E100=m
# CONFIG_FEALNX is not set
CONFIG_NATSEMI=m
# CONFIG_NE2K_PCI is not set
# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
# CONFIG_8139TOO_8129 is not set
# CONFIG_8139_OLD_RX_RESET is not set
# CONFIG_SIS900 is not set
# CONFIG_EPIC100 is not set
# CONFIG_SUNDANCE is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set

#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_R8169 is not set
# CONFIG_SIS190 is not set
# CONFIG_SKGE is not set
# CONFIG_SKY2 is not set
# CONFIG_SK98LIN is not set
# CONFIG_VIA_VELOCITY is not set
# CONFIG_TIGON3 is not set
# CONFIG_BNX2 is not set

#
# Ethernet (10000 Mbit)
#
# CONFIG_CHELSIO_T1 is not set
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
# CONFIG_MYRI10GE is not set

#
# Token Ring devices
#
# CONFIG_TR is not set

#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set

#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set

#
# ISDN subsystem
#
# CONFIG_ISDN is not set

#
# Telephony Support
#
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y

#
# Userland interfaces
#
CONFIG_INPUT_MOUSEDEV=y
CONFIG_INPUT_MOUSEDEV_PSAUX=y
CONFIG_INPUT_MOUSEDEV_SCREEN_X=1280
CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1024
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
CONFIG_KEYBOARD_ATKBD=y
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
CONFIG_INPUT_MOUSE=y
CONFIG_MOUSE_PS2=y
# CONFIG_MOUSE_SERIAL is not set
# CONFIG_MOUSE_VSXXXAA is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
CONFIG_SERIO=y
CONFIG_SERIO_I8042=y
# CONFIG_SERIO_SERPORT is not set
# CONFIG_SERIO_CT82C710 is not set
# CONFIG_SERIO_PCIPS2 is not set
CONFIG_SERIO_LIBPS2=y
# CONFIG_SERIO_RAW is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_VT_HW_CONSOLE_BINDING is not set
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_PCI=y
CONFIG_SERIAL_8250_PNP=y
CONFIG_SERIAL_8250_NR_UARTS=4
CONFIG_SERIAL_8250_RUNTIME_UARTS=4
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
# CONFIG_SERIAL_JSM is not set
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256

#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set

#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
CONFIG_HW_RANDOM=y
CONFIG_HW_RANDOM_INTEL=y
# CONFIG_HW_RANDOM_AMD is not set
# CONFIG_HW_RANDOM_GEODE is not set
CONFIG_HW_RANDOM_VIA=y
CONFIG_NVRAM=y
# CONFIG_RTC is not set
# CONFIG_GEN_RTC is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
# CONFIG_SONYPI is not set

#
# Ftape, the floppy tape device driver
#
# CONFIG_FTAPE is not set
CONFIG_AGP=y
# CONFIG_AGP_ALI is not set
# CONFIG_AGP_ATI is not set
# CONFIG_AGP_AMD is not set
# CONFIG_AGP_AMD64 is not set
# CONFIG_AGP_INTEL is not set
# CONFIG_AGP_NVIDIA is not set
# CONFIG_AGP_SIS is not set
# CONFIG_AGP_SWORKS is not set
CONFIG_AGP_VIA=y
# CONFIG_AGP_EFFICEON is not set
# CONFIG_DRM is not set
# CONFIG_MWAVE is not set
# CONFIG_PC8736x_GPIO is not set
# CONFIG_NSC_GPIO is not set
# CONFIG_CS5535_GPIO is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_HPET is not set
# CONFIG_HANGCHECK_TIMER is not set

#
# TPM devices
#
CONFIG_TCG_TPM=y
CONFIG_TCG_TIS=y
CONFIG_TCG_NSC=y
CONFIG_TCG_ATMEL=y
CONFIG_TCG_INFINEON=y
# CONFIG_TELCLOCK is not set

#
# I2C support
#
# CONFIG_I2C is not set

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set

#
# Dallas's 1-wire bus
#

#
# Hardware Monitoring support
#
# CONFIG_HWMON is not set
# CONFIG_HWMON_VID is not set

#
# Misc devices
#
# CONFIG_IBM_ASM is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
CONFIG_VIDEO_V4L2=y

#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set

#
# Graphics support
#
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB is not set

#
# Console display driver support
#
CONFIG_VGA_CONSOLE=y
CONFIG_VGACON_SOFT_SCROLLBACK=y
CONFIG_VGACON_SOFT_SCROLLBACK_SIZE=64
CONFIG_VIDEO_SELECT=y
CONFIG_DUMMY_CONSOLE=y
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set

#
# Sound
#
# CONFIG_SOUND is not set

#
# USB support
#
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
CONFIG_USB_ARCH_HAS_EHCI=y
# CONFIG_USB is not set

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set

#
# MMC/SD Card support
#
# CONFIG_MMC is not set

#
# LED devices
#
# CONFIG_NEW_LEDS is not set

#
# LED drivers
#

#
# LED Triggers
#

#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set

#
# EDAC - error detection and reporting (RAS) (EXPERIMENTAL)
#
# CONFIG_EDAC is not set

#
# Real Time Clock
#
# CONFIG_RTC_CLASS is not set

#
# DMA Engine support
#
# CONFIG_DMA_ENGINE is not set

#
# DMA Clients
#

#
# DMA Devices
#

#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_INOTIFY is not set
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_HUGETLBFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set

#
# Network File Systems
#
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
# CONFIG_9P_FS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y

#
# Native Language Support
#
# CONFIG_NLS is not set

#
# Instrumentation Support
#
CONFIG_PROFILING=y
CONFIG_OPROFILE=y
# CONFIG_KPROBES is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_MAGIC_SYSRQ=y
CONFIG_UNUSED_SYMBOLS=y
# CONFIG_DEBUG_KERNEL is not set
CONFIG_LOG_BUF_SHIFT=14
CONFIG_DEBUG_BUGVERBOSE=y
# CONFIG_DEBUG_FS is not set
# CONFIG_UNWIND_INFO is not set
CONFIG_EARLY_PRINTK=y
CONFIG_X86_FIND_SMP_CONFIG=y
CONFIG_X86_MPPARSE=y
CONFIG_DOUBLEFAULT=y

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set

#
# Cryptographic options
#
# CONFIG_CRYPTO is not set

#
# Hardware crypto devices
#

#
# Library routines
#
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
CONFIG_PLIST=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_X86_BIOS_REBOOT=y
CONFIG_KTIME_SCALAR=y

[-- Attachment #3: dmesg.txt --]
[-- Type: text/plain, Size: 7223 bytes --]

Linux version 2.6.18.1-hrt (john@venus) (gcc version 3.4.4) #1 PREEMPT Tue Nov 7 18:00:05 CET 2006
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 00000000000a0000 (usable)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000000fff0000 (usable)
 BIOS-e820: 000000000fff0000 - 000000000fff3000 (ACPI NVS)
 BIOS-e820: 000000000fff3000 - 0000000010000000 (ACPI data)
 BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
255MB LOWMEM available.
On node 0 totalpages: 65520
  DMA zone: 4096 pages, LIFO batch:0
  Normal zone: 61424 pages, LIFO batch:15
DMI 2.3 present.
ACPI: RSDP (v000 VIA601                                ) @ 0x000f6950
ACPI: RSDT (v001 VIA601 AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x0fff3000
ACPI: FADT (v001 VIA601 AWRDACPI 0x42302e31 AWRD 0x00000000) @ 0x0fff3040
ACPI: DSDT (v001 VIA601 AWRDACPI 0x00001000 MSFT 0x0100000c) @ 0x00000000
ACPI: PM-Timer IO Port: 0x4008
Allocating PCI resources starting at 20000000 (gap: 10000000:efff0000)
Detected 1266.766 MHz processor.
VSYSCALL: consistency checks...passed...mapping...done.
VSYSCALL: fixmap virt addr: 0xffffd000
Built 1 zonelists.  Total pages: 65520
Kernel command line: ro root=/dev/hda1 console=ttyS0,57600n8 console=tty0 panic=3
Local APIC disabled by BIOS -- you can enable it with "lapic"
mapped APIC to ffffc000 (01201000)
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Initializing CPU#0
Clock event device pit configured with caps set: 07
PID hash table entries: 1024 (order: 10, 4096 bytes)
Console: colour dummy device 80x25
Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
Memory: 256840k/262080k available (1626k kernel code, 4752k reserved, 532k data, 160k init, 0k highmem)
Checking if this processor honours the WP bit even in supervisor mode... Ok.
Calibrating delay using timer specific routine.. 2535.90 BogoMIPS (lpj=5071805)
Mount-cache hash table entries: 512
CPU: After generic identify, caps: 0383f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: After vendor identify, caps: 0383f9ff 00000000 00000000 00000000 00000000 00000000 00000000
CPU: L1 I cache: 16K, L1 D cache: 16K
CPU: L2 cache: 512K
CPU: After all inits, caps: 0383f9ff 00000000 00000000 00000040 00000000 00000000 00000000
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Compat vDSO mapped to ffffe000.
CPU: Intel(R) Pentium(R) III CPU - S         1266MHz stepping 04
Checking 'hlt' instruction... OK.
ACPI: Core revision 20060707
ACPI: setting ELCR to 0200 (from 1e20)
NET: Registered protocol family 16
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfb210, last bus=2
PCI: Using configuration type 1
Setting up standard PCI resources
ACPI: Interpreter enabled
ACPI: Using PIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: Probing PCI hardware (bus 00)
ACPI: Assume root bridge [\_SB_.PCI0] bus is 0
PCI quirk: region 6000-607f claimed by vt82c686 HW-mon
PCI quirk: region 5000-500f claimed by vt82c686 SMB
PCI: Firmware left 0000:00:08.0 e100 interrupts enabled, disabling
PCI: Firmware left 0000:00:09.0 e100 interrupts enabled, disabling
PCI: Firmware left 0000:00:0a.0 e100 interrupts enabled, disabling
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 10 11 *12 14 15)
ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 *10 11 12 14 15)
ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 *11 12 14 15)
ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 *5 6 7 10 11 12 14 15)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
pnp: PnP ACPI: found 13 devices
PCI: Using ACPI for IRQ routing
PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
PCI: Bridge: 0000:00:01.0
  IO window: disabled.
  MEM window: disabled.
  PREFETCH window: disabled.
PCI: Bridge: 0000:00:0d.0
  IO window: disabled.
  MEM window: disabled.
  PREFETCH window: disabled.
PCI: Setting latency timer of device 0000:00:01.0 to 64
NET: Registered protocol family 2
IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
TCP established hash table entries: 8192 (order: 3, 32768 bytes)
TCP bind hash table entries: 4096 (order: 2, 16384 bytes)
TCP: Hash tables configured (established 8192 bind 4096)
TCP reno registered
Machine check exception polling timer started.
IA-32 Microcode Update Driver: v1.14a <tigran@veritas.com>
io scheduler noop registered
io scheduler cfq registered (default)
PCI: Disabling Via external APIC routing
ACPI: Power Button (FF) [PWRF]
ACPI: Power Button (CM) [PWRB]
ACPI: CPU0 (power states: C1[C1] C2[C2])
ACPI: Processor [CPU0] (supports 2 throttling states)
Non-volatile memory driver v1.2
Linux agpgart interface v0.101 (c) Dave Jones
agpgart: Detected VIA Apollo Pro 133 chipset
agpgart: AGP aperture is 64M @ 0xe0000000
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
serial8250: ttyS2 at I/O 0x3e8 (irq = 4) is a 16550A
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
00:0c: ttyS2 at I/O 0x3e8 (irq = 4) is a 16550A
loop: loaded (max 8 devices)
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
VP_IDE: IDE controller at PCI slot 0000:00:07.1
PCI: VIA IRQ fixup for 0000:00:07.1, from 255 to 0
VP_IDE: chipset revision 6
VP_IDE: not 100% native mode: will probe irqs later
VP_IDE: VIA vt82c686b (rev 40) IDE UDMA100 controller on pci0000:00:07.1
    ide0: BM-DMA at 0xd000-0xd007, BIOS settings: hda:pio, hdb:pio
    ide1: BM-DMA at 0xd008-0xd00f, BIOS settings: hdc:pio, hdd:pio
Probing IDE interface ide0...
hda: PQI IDE DiskOnModule, ATA DISK drive
hda: set_drive_speed_status: status=0x51 { DriveReady SeekComplete Error }
hda: set_drive_speed_status: error=0x04 { DriveStatusError }
hda: set_drive_speed_status: status=0x51 { DriveReady SeekComplete Error }
hda: set_drive_speed_status: error=0x04 { DriveStatusError }
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
Probing IDE interface ide1...
Probing IDE interface ide1...
hda: max request size: 128KiB
hda: 256000 sectors (131 MB) w/1KiB Cache, CHS=500/16/32
 hda: hda1 hda2 hda3 hda4
PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
PNP: PS/2 controller doesn't have AUX irq; using default 12
serio: i8042 AUX port at 0x60,0x64 irq 12
serio: i8042 KBD port at 0x60,0x64 irq 1
mice: PS/2 mouse device common for all mice
oprofile: using timer interrupt.
netem: version 1.2
TCP bic registered
NET: Registered protocol family 1
NET: Registered protocol family 17
802.1Q VLAN Support v1.8 Ben Greear <greearb@candelatech.com>
All bugs added by David S. Miller <davem@redhat.com>
Using IPI Shortcut mode
VFS: Mounted root (ext2 filesystem) readonly.
Time: tsc clocksource has been installed.
Freeing unused kernel memory: 160k freed
Time: acpi_pm clocksource has been installed.
process `syslogd' is using obsolete setsockopt SO_BSDCOMPAT

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-09 14:15         ` John
@ 2006-11-10  0:19           ` Jesse Brandeburg
  2006-11-10 12:03             ` John
  0 siblings, 1 reply; 27+ messages in thread
From: Jesse Brandeburg @ 2006-11-10  0:19 UTC (permalink / raw)
  To: Jesse Brandeburg; +Cc: auke-jan.h.kok, linux-kernel, netdev, hpa, saw

[-- Attachment #1: Type: text/plain, Size: 3117 bytes --]

On 11/9/06, John <me@privacy.net> wrote:
> > The second thought is that the adapter is in D3, and something about
> > your kernel or the driver doesn't successfully wake it up to D0.
>
> On my NICs, the EEPROM ID (Word 0Ah) is set to 0x40a2.
> Thus DDPD (bit 6) is set to 0.
>
> DDPD is the "Disable Deep Power Down while PME is disabled" bit.
> 0 - Deep Power Down is enabled in D3 state while PME-disabled.
> 1 - Deep Power Down disabled in D3 state while PME-disabled.
> This bit should be set to 1b if a TCO controller is being used via the
> SMB because it requires receive functionality at all power states.
>
> Are you suggesting I try and set DDPD to 1?
> Or is this completely unrelated?

This may be related but I doubt it.  Something is strange about how
memory is being mapped in your system.  whatever is creating the
problem moved when you changed the kernel version.  I'm wondering if
there is a device collision at e5302000.  I'm not convinced at this
point it is e100's fault.

can you send output of cat /proc/iomem

> > An indication of this would be looking at lspci -vv before/after
> > loading the driver.
>
> $ diff -u lspci_vv_before_e100.txt lspci_vv_after_e100.txt
> --- lspci_vv_before_e100.txt    2006-11-09 14:51:30.000000000 +0100
> +++ lspci_vv_after_e100.txt     2006-11-09 14:51:30.000000000 +0100
> @@ -74,21 +74,20 @@
>          Expansion ROM at 20000000 [disabled] [size=1M]
>          Capabilities: [dc] Power Management version 2
>                  Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA
> PME(D0+,D1+,D2+,D3hot+,D3cold+)
> -               Status: D0 PME-Enable+ DSel=0 DScale=2 PME-
> +               Status: D0 PME-Enable- DSel=0 DScale=2 PME-

okay when the driver loads it is clearing PME enable, but not
re-enabling it when it unloads.  That is pretty much expected.

>   00:09.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro
> 100] (rev 08)
>          Subsystem: Intel Corporation EtherExpress PRO/100B (TX)
> -       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B-
> +       Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B-
>          Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium
>  >TAbort- <TAbort- <MAbort- >SERR- <PERR-

pci_enable_device should be enabling io,mem,busmaster, they are
probably being disabled when the driver errors out of init.  maybe you
should add a call to  pci_set_power_state(dev, PCI_D0); before the
call to e100_reset

> > Also, after loading/unloading eepro100 does the e100 driver work?
>
> No.

now that is really odd.

> > A third idea is look for a master abort in lspci after e100 fails to
> > load.
>
> I don't understand that one.

There isn't one, MAbort+ would be showing in the above lspci output.

The all 0xffffffff returns when you read registers is a sure sign the
hardware either isn't at the address specified or is in a power down
state.  The only other option i can think of is that something else is
intercepting memory reads and writes.

try something like the attached patch, compile tested only:

[-- Attachment #2: e100_debug.patch --]
[-- Type: application/octet-stream, Size: 969 bytes --]

diff --git a/drivers/net/e100.c b/drivers/net/e100.c
index ce850f1..69e62fd 100644
--- a/drivers/net/e100.c
+++ b/drivers/net/e100.c
@@ -2585,6 +2585,9 @@ #endif
 	nic->msg_enable = (1 << debug) - 1;
 	pci_set_drvdata(pdev, netdev);
 
+	err = pci_set_power_state(pdev, PCI_D0);
+	printk(" e100 debug: unable to set power state (error %d)\n", err);
+
 	if((err = pci_enable_device(pdev))) {
 		DPRINTK(PROBE, ERR, "Cannot enable PCI device, aborting.\n");
 		goto err_out_free_dev;
@@ -2617,6 +2620,24 @@ #endif
 		goto err_out_free_res;
 	}
 
+	/* quick register test */
+	{
+		void __iomem *iobase =  pci_iomap(pdev, 1, pci_resource_len(pdev, 1));
+		u32 ioreg, iomem;
+
+		if (!iobase)
+			goto notworking;
+
+		ioreg = ioread32(iobase);
+		iomem = readb(&nic->csr->scb.status);
+
+		printk("e100 debug: read %08X/%08X from the same register\n", ioreg, iomem);
+
+		pci_iounmap(pdev, iobase);
+	
+	}
+notworking:
+
 	if(ent->driver_data)
 		nic->flags |= ich;
 	else

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-09 12:17         ` John
@ 2006-11-09 17:03           ` Auke Kok
  0 siblings, 0 replies; 27+ messages in thread
From: Auke Kok @ 2006-11-09 17:03 UTC (permalink / raw)
  To: John; +Cc: Auke Kok, linux-kernel, netdev, hpa, saw

John wrote:
> Auke Kok wrote:
> 
>> This is what I was afraid of: even though the code allows you to 
>> bypass the EEPROM checksum, the probe fails on a further check to see 
>> if the MAC address is valid.
>>
>> Since something with this NIC specifically made the EEPROM return all 
>> 0xff's, the MAC address is automatically invalid, and thus probe fails.
> 
> I don't understand why you think there is something wrong with a
> specific NIC?

that was completely not my point - I was merely trying to point out that the original 
problem causes a cascade of error events later on, and bypassing the eeprom check in 
this case didn't help you at all. Something is wrong in the driver, but I don't 
understand yet why it only affects one of the 3 nics in your system.

> In 2.6.14.7, e100.ko fails to read the EEPROM on 0000:00:08.0 (eth0)
> In 2.6.18.1, e100.ko fails to read the EEPROM on 0000:00:09.0 (eth1)

almost sounds like a bug got fixed and it introduced a regression. this wouldn't be the 
right time to pull out git-bisect would it? even loading 2.6.15, 2.6.16, 2.6.17 on it 
would give us some good information.


Cheers,

Auke

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-08 17:26       ` Jesse Brandeburg
@ 2006-11-09 14:15         ` John
  2006-11-10  0:19           ` Jesse Brandeburg
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2006-11-09 14:15 UTC (permalink / raw)
  To: Jesse Brandeburg; +Cc: auke-jan.h.kok, linux-kernel, netdev, hpa, saw

Jesse Brandeburg wrote:

> I suspect that one reason Becker's code works is that it uses IO
> based access (slower, and different method) to the adapter rather
> than memory mapped access.

I've noticed this difference.

> The second thought is that the adapter is in D3, and something about
> your kernel or the driver doesn't successfully wake it up to D0.

On my NICs, the EEPROM ID (Word 0Ah) is set to 0x40a2.
Thus DDPD (bit 6) is set to 0.

DDPD is the "Disable Deep Power Down while PME is disabled" bit.
0 - Deep Power Down is enabled in D3 state while PME-disabled.
1 - Deep Power Down disabled in D3 state while PME-disabled.
This bit should be set to 1b if a TCO controller is being used via the 
SMB because it requires receive functionality at all power states.

Are you suggesting I try and set DDPD to 1?
Or is this completely unrelated?

> An indication of this would be looking at lspci -vv before/after
> loading the driver.

$ diff -u lspci_vv_before_e100.txt lspci_vv_after_e100.txt
--- lspci_vv_before_e100.txt    2006-11-09 14:51:30.000000000 +0100
+++ lspci_vv_after_e100.txt     2006-11-09 14:51:30.000000000 +0100
@@ -74,21 +74,20 @@
         Expansion ROM at 20000000 [disabled] [size=1M]
         Capabilities: [dc] Power Management version 2
                 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA 
PME(D0+,D1+,D2+,D3hot+,D3cold+)
-               Status: D0 PME-Enable+ DSel=0 DScale=2 PME-
+               Status: D0 PME-Enable- DSel=0 DScale=2 PME-

  00:09.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 
100] (rev 08)
         Subsystem: Intel Corporation EtherExpress PRO/100B (TX)
-       Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- 
ParErr- Stepping- SERR- FastB2B-
+       Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- 
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium 
 >TAbort- <TAbort- <MAbort- >SERR- <PERR-
-       Latency: 32 (2000ns min, 14000ns max), cache line size 08
         Interrupt: pin A routed to IRQ 10
-       Region 0: Memory at e5302000 (32-bit, non-prefetchable) [size=4K]
-       Region 1: I/O ports at dc00 [size=64]
-       Region 2: Memory at e5100000 (32-bit, non-prefetchable) [size=1M]
+       Region 0: Memory at e5302000 (32-bit, non-prefetchable) 
[disabled] [size=4K]
+       Region 1: I/O ports at dc00 [disabled] [size=64]
+       Region 2: Memory at e5100000 (32-bit, non-prefetchable) 
[disabled] [size=1M]
         Expansion ROM at 20100000 [disabled] [size=1M]
         Capabilities: [dc] Power Management version 2
                 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA 
PME(D0+,D1+,D2+,D3hot+,D3cold+)
-               Status: D0 PME-Enable+ DSel=0 DScale=2 PME-
+               Status: D0 PME-Enable- DSel=0 DScale=2 PME-

  00:0a.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 
100] (rev 08)
         Subsystem: Intel Corporation EtherExpress PRO/100B (TX)

> Also, after loading/unloading eepro100 does the e100 driver work?

No.

> A third idea is look for a master abort in lspci after e100 fails to
> load.

I don't understand that one.


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-08 16:17       ` Auke Kok
@ 2006-11-09 12:17         ` John
  2006-11-09 17:03           ` Auke Kok
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2006-11-09 12:17 UTC (permalink / raw)
  To: Auke Kok; +Cc: linux-kernel, netdev, hpa, saw

Auke Kok wrote:

> This is what I was afraid of: even though the code allows you to bypass 
> the EEPROM checksum, the probe fails on a further check to see if the 
> MAC address is valid.
> 
> Since something with this NIC specifically made the EEPROM return all 
> 0xff's, the MAC address is automatically invalid, and thus probe fails.

I don't understand why you think there is something wrong with a
specific NIC?

In 2.6.14.7, e100.ko fails to read the EEPROM on 0000:00:08.0 (eth0)
In 2.6.18.1, e100.ko fails to read the EEPROM on 0000:00:09.0 (eth1)
In both kernels, eepro100.ko successfully reads all the EEPROMs.

> It seems that the driver has more problems with this NIC than just the 
> eeprom checksum being bad. Needless to say this might need fixing.
> 
> Can you load the eepro driver and send me the full eeprom dump?
> Perhaps I can duplicate things over here.

00:08.0 EEPROM contents, size 64x16

   3000 0464 e4e6 0e03 0000 0201 4701 0000
   7213 8310 40a2 0001 8086 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0128 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 92f7

00:09.0 EEPROM contents, size 64x16

   3000 0464 e5e6 0e03 0000 0201 4701 0000
   7213 8310 40a2 0001 8086 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0128 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 91f7

00:0a.0 EEPROM contents, size 64x16

   3000 0464 e6e6 0e03 0000 0201 4701 0000
   7213 8310 40a2 0001 8086 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 0000
   0128 0000 0000 0000 0000 0000 0000 0000
   0000 0000 0000 0000 0000 0000 0000 90f7

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-08 10:55     ` John
  2006-11-08 16:17       ` Auke Kok
@ 2006-11-08 17:26       ` Jesse Brandeburg
  2006-11-09 14:15         ` John
  1 sibling, 1 reply; 27+ messages in thread
From: Jesse Brandeburg @ 2006-11-08 17:26 UTC (permalink / raw)
  To: John; +Cc: auke-jan.h.kok, linux-kernel, netdev, hpa, saw

On 11/8/06, John <me@privacy.net> wrote:
> Hello all,
>
> [ E-mail address is a bit-bucket. I *do* monitor the mailing lists. ]
>
> I will try and summarize the problem as I understand it at this point.
>
> I've written two messages so far:
> http://groups.google.com/group/linux.kernel/msg/3a05d819c66474db
> http://groups.google.com/group/linux.kernel/msg/391aebbb3dfd6039
>
> And here is a link to the complete thread:
> http://lkml.org/lkml/fancy/2006/11/3/124
>
> I have a motherboard with three on-board 82559 NICs.
>
>   o eepro100.ko properly initializes all three NICs
>   o e100.ko fails to initialize one of them
>
> NOTE: With kernel 2.6.14, e100.ko fails to initialize the NIC with MAC
> address 00:30:64:04:E6:E4. With kernel 2.6.18 e100.ko fails to
> initialize the NIC with MAC address 00:30:64:04:E6:E5.
>
> The problem is not an incorrect checksum. (Donald Becker's dump utility
> reports a correct checksum for all three NICs.) The problem seems to be
> that e100.ko fails to read the contents of one of the EEPROMs.

<snip>

Thanks for the report, I have some thoughts.
I suspect that one reason beckers code works is that it uses IO based
access (slower, and different method) to the adapter rather than
memory mapped access.

The second thought is that the adapter is in D3, and something about
your kernel or the driver doesn't successfully wake it up to D0.  An
indication of this would be looking at lspci -vv before/after loading
the driver.  Also, after loading/unloading eepro100 does the e100
driver work?

A third idea is look for a master abort in lspci after e100 fails to load.

And a last idea is for us to instrument the reads /writes from/to the
device during init and see if everything is returning 0xffffffff, as
that indicates the I/O and/or memory bar is not enabled, or the
address returned from ioremap is invalid.

Jesse

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-08 10:55     ` John
@ 2006-11-08 16:17       ` Auke Kok
  2006-11-09 12:17         ` John
  2006-11-08 17:26       ` Jesse Brandeburg
  1 sibling, 1 reply; 27+ messages in thread
From: Auke Kok @ 2006-11-08 16:17 UTC (permalink / raw)
  To: John; +Cc: linux-kernel, netdev, hpa, saw

John wrote:
> I have a motherboard with three on-board 82559 NICs.
> 
>  o eepro100.ko properly initializes all three NICs
>  o e100.ko fails to initialize one of them
> 
> NOTE: With kernel 2.6.14, e100.ko fails to initialize the NIC with MAC 
> address 00:30:64:04:E6:E4. With kernel 2.6.18 e100.ko fails to 
> initialize the NIC with MAC address 00:30:64:04:E6:E5.
> 
> The problem is not an incorrect checksum. (Donald Becker's dump utility 
> reports a correct checksum for all three NICs.) The problem seems to be 
> that e100.ko fails to read the contents of one of the EEPROMs.

[snip]

> 'insmod e100.ko eeprom_bad_csum_allow=1' reports:
> 
> e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
> e100: Copyright(c) 1999-2005 Intel Corporation
> ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 12
> PCI: setting IRQ 12 as level-triggered
> ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 12 (level, 
> low) -> IRQ 12
> e100: eth0: e100_probe: addr 0xe5300000, irq 12, MAC addr 00:30:64:04:E6:E4
> ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
> PCI: setting IRQ 10 as level-triggered
> ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 10 (level, 
> low) -> IRQ 10
> e100: 0000:00:09.0: e100_eeprom_load: EEPROM corrupted
> e100: 0000:00:09.0: e100_probe: Invalid MAC address from EEPROM, aborting.
> ACPI: PCI interrupt for device 0000:00:09.0 disabled
> e100: probe of 0000:00:09.0 failed with error -11

This is what I was afraid of: even though the code allows you to bypass the EEPROM 
checksum, the probe fails on a further check to see if the MAC address is valid.

Since something with this NIC specifically made the EEPROM return all 0xff's, the MAC 
address is automatically invalid, and thus probe fails.

It seems that the driver has more problems with this NIC than just the eeprom checksum 
being bad. Needless to say this might need fixing.

Can you load the eepro driver and send me the full eeprom dump? Perhaps I can duplicate 
things over here.

[snip]

> On a related note, I am concerned by this message:
> 
>    Sleep mode is enabled.  This is not recommended.
>    Under high load the card may not respond to
>    PCI requests, and thus cause a master abort.
>    To clear sleep mode use the '-G 0 -w -w -f' options.
> 
> Intel 82559 EEPROM Map and Programming Information (AP-394) states:
> http://www.intel.com/design/network/applnots/ap394.htm
> 
> The Standby Enable bit enables the 82559 to enter standby mode. When 
> this bit equals 1b, the 82559 is able to recognize an idle state and can 
> enter standby mode (some internal clocks are stopped for power saving 
> purposes). The 82559 does not require a PCI clock signal in standby 
> mode. If this bit equals 0b, the idle recognition circuit is disabled 
> and the 82559 always remains in an active state. Thus, the 82559 always 
> requests PCI CLK using the Clockrun mechanism.
> 
> Auke, do you agree with Donald Becker's warning?

If you are using the e100 in a performance situation, I would certainly switch it off :)

> If I disable STB, the NICs will waste a bit more power when idle,
> is that correct? Are there other implications?

hm, I don't know the power specs of e100 that well, so I can't say that it saves 
significant amounts of power, but I suspect it would.

Power management on nics is hairy business. As suggested, it can take time before the 
nic powers back up, performance can be impacted, and some commands might return an 
invalid or unknown value. OTOH our labs here test these things pretty well before they 
get send out to customers and resales agents, so Beckers cautious wording catches the 
severity pretty well (recommended).

I would say that under most circumstances, it's safe to enable STB, but you might want 
to disable it for use in routing and other server applications, where most of the time 
the NIC is active anyway.

hth

Auke


> 
> Thanks for reading this far!
> 
> John

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-07 11:23   ` John
  2006-11-07 17:17     ` H. Peter Anvin
@ 2006-11-08 10:55     ` John
  2006-11-08 16:17       ` Auke Kok
  2006-11-08 17:26       ` Jesse Brandeburg
  1 sibling, 2 replies; 27+ messages in thread
From: John @ 2006-11-08 10:55 UTC (permalink / raw)
  To: auke-jan.h.kok; +Cc: linux-kernel, netdev, linux.nics, hpa, saw

Hello all,

[ E-mail address is a bit-bucket. I *do* monitor the mailing lists. ]

I will try and summarize the problem as I understand it at this point.

I've written two messages so far:
http://groups.google.com/group/linux.kernel/msg/3a05d819c66474db
http://groups.google.com/group/linux.kernel/msg/391aebbb3dfd6039

And here is a link to the complete thread:
http://lkml.org/lkml/fancy/2006/11/3/124

I have a motherboard with three on-board 82559 NICs.

  o eepro100.ko properly initializes all three NICs
  o e100.ko fails to initialize one of them

NOTE: With kernel 2.6.14, e100.ko fails to initialize the NIC with MAC 
address 00:30:64:04:E6:E4. With kernel 2.6.18 e100.ko fails to 
initialize the NIC with MAC address 00:30:64:04:E6:E5.

The problem is not an incorrect checksum. (Donald Becker's dump utility 
reports a correct checksum for all three NICs.) The problem seems to be 
that e100.ko fails to read the contents of one of the EEPROMs.

Auke wrote:
> How did you do the first `ethtool` eeprom dump? did you have the
> `e100` module loaded at that time? Did you use the new `override`
> mechanism graciously donated by David M?

These tests were performed on a 2.6.14 kernel. I hacked
e100_eeprom_load() to return 0 even when the checksum
fails. Thus the driver did not refuse to load, and I was
able to use ethtool to dump the contents of the 3 EEPROMs.


Here are additional examples running a 2.6.18.1-hrt kernel.

'insmod e100.ko' reports:

e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 12 (level, 
low) -> IRQ 12
e100: eth0: e100_probe: addr 0xe5300000, irq 12, MAC addr 00:30:64:04:E6:E4
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 10 (level, 
low) -> IRQ 10
e100: 0000:00:09.0: e100_eeprom_load: EEPROM corrupted
ACPI: PCI interrupt for device 0000:00:09.0 disabled
e100: probe of 0000:00:09.0 failed with error -11
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 11 (level, 
low) -> IRQ 11
e100: eth1: e100_probe: addr 0xe5301000, irq 11, MAC addr 00:30:64:04:E6:E6


'insmod e100.ko eeprom_bad_csum_allow=1' reports:

e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 12 (level, 
low) -> IRQ 12
e100: eth0: e100_probe: addr 0xe5300000, irq 12, MAC addr 00:30:64:04:E6:E4
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 10 (level, 
low) -> IRQ 10
e100: 0000:00:09.0: e100_eeprom_load: EEPROM corrupted
e100: 0000:00:09.0: e100_probe: Invalid MAC address from EEPROM, aborting.
ACPI: PCI interrupt for device 0000:00:09.0 disabled
e100: probe of 0000:00:09.0 failed with error -11
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 11 (level, 
low) -> IRQ 11
e100: eth1: e100_probe: addr 0xe5301000, irq 11, MAC addr 00:30:64:04:E6:E6


'insmod e100.ko debug=16' reports:

e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 12 (level, 
low) -> IRQ 12
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:08.0: e100_phy_init: phy_addr = 1
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=0, reg=0, data_in=0x0400, 
data_out=0x14000400
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=1, reg=0, data_in=0x3000, 
data_out=0x14203000
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=2, reg=0, data_in=0x0400, 
data_out=0x14400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=3, reg=0, data_in=0x0400, 
data_out=0x14600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=4, reg=0, data_in=0x0400, 
data_out=0x14800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=5, reg=0, data_in=0x0400, 
data_out=0x14A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=6, reg=0, data_in=0x0400, 
data_out=0x14C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=7, reg=0, data_in=0x0400, 
data_out=0x14E00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=8, reg=0, data_in=0x0400, 
data_out=0x15000400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=9, reg=0, data_in=0x0400, 
data_out=0x15200400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=10, reg=0, data_in=0x0400, 
data_out=0x15400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=11, reg=0, data_in=0x0400, 
data_out=0x15600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=12, reg=0, data_in=0x0400, 
data_out=0x15800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=13, reg=0, data_in=0x0400, 
data_out=0x15A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=14, reg=0, data_in=0x0400, 
data_out=0x15C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=15, reg=0, data_in=0x0400, 
data_out=0x15E00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=16, reg=0, data_in=0x0400, 
data_out=0x16000400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=17, reg=0, data_in=0x0400, 
data_out=0x16200400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=18, reg=0, data_in=0x0400, 
data_out=0x16400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=19, reg=0, data_in=0x0400, 
data_out=0x16600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=20, reg=0, data_in=0x0400, 
data_out=0x16800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=21, reg=0, data_in=0x0400, 
data_out=0x16A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=22, reg=0, data_in=0x0400, 
data_out=0x16C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=23, reg=0, data_in=0x0400, 
data_out=0x16E00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=24, reg=0, data_in=0x0400, 
data_out=0x17000400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=25, reg=0, data_in=0x0400, 
data_out=0x17200400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=26, reg=0, data_in=0x0400, 
data_out=0x17400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=27, reg=0, data_in=0x0400, 
data_out=0x17600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=28, reg=0, data_in=0x0400, 
data_out=0x17800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=29, reg=0, data_in=0x0400, 
data_out=0x17A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=30, reg=0, data_in=0x0400, 
data_out=0x17C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=31, reg=0, data_in=0x0400, 
data_out=0x17E00400
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=2, data_in=0x0000, 
data_out=0x182202A8
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=3, data_in=0x0000, 
data_out=0x18230154
e100: 0000:00:08.0: e100_phy_init: phy ID = 0x015402A8
e100: eth0: e100_probe: addr 0xe5300000, irq 12, MAC addr 00:30:64:04:E6:E4
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 10 (level, 
low) -> IRQ 10
e100: 0000:00:09.0: e100_eeprom_load: EEPROM corrupted
ACPI: PCI interrupt for device 0000:00:09.0 disabled
e100: probe of 0000:00:09.0 failed with error -11
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 11 (level, 
low) -> IRQ 11
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:0a.0: e100_phy_init: phy_addr = 1
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=0, reg=0, data_in=0x0400, 
data_out=0x14000400
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=1, reg=0, data_in=0x3000, 
data_out=0x14203000
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=2, reg=0, data_in=0x0400, 
data_out=0x14400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=3, reg=0, data_in=0x0400, 
data_out=0x14600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=4, reg=0, data_in=0x0400, 
data_out=0x14800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=5, reg=0, data_in=0x0400, 
data_out=0x14A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=6, reg=0, data_in=0x0400, 
data_out=0x14C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=7, reg=0, data_in=0x0400, 
data_out=0x14E00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=8, reg=0, data_in=0x0400, 
data_out=0x15000400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=9, reg=0, data_in=0x0400, 
data_out=0x15200400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=10, reg=0, data_in=0x0400, 
data_out=0x15400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=11, reg=0, data_in=0x0400, 
data_out=0x15600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=12, reg=0, data_in=0x0400, 
data_out=0x15800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=13, reg=0, data_in=0x0400, 
data_out=0x15A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=14, reg=0, data_in=0x0400, 
data_out=0x15C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=15, reg=0, data_in=0x0400, 
data_out=0x15E00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=16, reg=0, data_in=0x0400, 
data_out=0x16000400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=17, reg=0, data_in=0x0400, 
data_out=0x16200400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=18, reg=0, data_in=0x0400, 
data_out=0x16400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=19, reg=0, data_in=0x0400, 
data_out=0x16600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=20, reg=0, data_in=0x0400, 
data_out=0x16800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=21, reg=0, data_in=0x0400, 
data_out=0x16A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=22, reg=0, data_in=0x0400, 
data_out=0x16C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=23, reg=0, data_in=0x0400, 
data_out=0x16E00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=24, reg=0, data_in=0x0400, 
data_out=0x17000400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=25, reg=0, data_in=0x0400, 
data_out=0x17200400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=26, reg=0, data_in=0x0400, 
data_out=0x17400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=27, reg=0, data_in=0x0400, 
data_out=0x17600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=28, reg=0, data_in=0x0400, 
data_out=0x17800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=29, reg=0, data_in=0x0400, 
data_out=0x17A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=30, reg=0, data_in=0x0400, 
data_out=0x17C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=31, reg=0, data_in=0x0400, 
data_out=0x17E00400
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=2, data_in=0x0000, 
data_out=0x182202A8
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=3, data_in=0x0000, 
data_out=0x18230154
e100: 0000:00:0a.0: e100_phy_init: phy ID = 0x015402A8
e100: eth1: e100_probe: addr 0xe5301000, irq 11, MAC addr 00:30:64:04:E6:E6


'insmod e100.ko eeprom_bad_csum_allow=1 debug=16' reports:

e100: Intel(R) PRO/100 Network Driver, 3.5.10-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
PCI: Enabling device 0000:00:08.0 (0000 -> 0003)
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 12 (level, 
low) -> IRQ 12
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:08.0: e100_phy_init: phy_addr = 1
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=0, reg=0, data_in=0x0400, 
data_out=0x14000400
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=1, reg=0, data_in=0x3000, 
data_out=0x14203000
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=2, reg=0, data_in=0x0400, 
data_out=0x14400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=3, reg=0, data_in=0x0400, 
data_out=0x14600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=4, reg=0, data_in=0x0400, 
data_out=0x14800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=5, reg=0, data_in=0x0400, 
data_out=0x14A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=6, reg=0, data_in=0x0400, 
data_out=0x14C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=7, reg=0, data_in=0x0400, 
data_out=0x14E00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=8, reg=0, data_in=0x0400, 
data_out=0x15000400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=9, reg=0, data_in=0x0400, 
data_out=0x15200400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=10, reg=0, data_in=0x0400, 
data_out=0x15400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=11, reg=0, data_in=0x0400, 
data_out=0x15600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=12, reg=0, data_in=0x0400, 
data_out=0x15800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=13, reg=0, data_in=0x0400, 
data_out=0x15A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=14, reg=0, data_in=0x0400, 
data_out=0x15C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=15, reg=0, data_in=0x0400, 
data_out=0x15E00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=16, reg=0, data_in=0x0400, 
data_out=0x16000400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=17, reg=0, data_in=0x0400, 
data_out=0x16200400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=18, reg=0, data_in=0x0400, 
data_out=0x16400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=19, reg=0, data_in=0x0400, 
data_out=0x16600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=20, reg=0, data_in=0x0400, 
data_out=0x16800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=21, reg=0, data_in=0x0400, 
data_out=0x16A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=22, reg=0, data_in=0x0400, 
data_out=0x16C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=23, reg=0, data_in=0x0400, 
data_out=0x16E00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=24, reg=0, data_in=0x0400, 
data_out=0x17000400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=25, reg=0, data_in=0x0400, 
data_out=0x17200400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=26, reg=0, data_in=0x0400, 
data_out=0x17400400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=27, reg=0, data_in=0x0400, 
data_out=0x17600400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=28, reg=0, data_in=0x0400, 
data_out=0x17800400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=29, reg=0, data_in=0x0400, 
data_out=0x17A00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=30, reg=0, data_in=0x0400, 
data_out=0x17C00400
e100: 0000:00:08.0: mdio_ctrl: WRITE:addr=31, reg=0, data_in=0x0400, 
data_out=0x17E00400
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=2, data_in=0x0000, 
data_out=0x182202A8
e100: 0000:00:08.0: mdio_ctrl: READ:addr=1, reg=3, data_in=0x0000, 
data_out=0x18230154
e100: 0000:00:08.0: e100_phy_init: phy ID = 0x015402A8
e100: eth0: e100_probe: addr 0xe5300000, irq 12, MAC addr 00:30:64:04:E6:E4
PCI: Enabling device 0000:00:09.0 (0000 -> 0003)
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 10 (level, 
low) -> IRQ 10
e100: 0000:00:09.0: e100_eeprom_load: EEPROM corrupted
e100: 0000:00:09.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:09.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217829
e100: 0000:00:09.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x1821782D
e100: 0000:00:09.0: e100_phy_init: phy_addr = 1
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=0, reg=0, data_in=0x0400, 
data_out=0x14000400
e100: 0000:00:09.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=1, reg=0, data_in=0x3000, 
data_out=0x14203000
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=2, reg=0, data_in=0x0400, 
data_out=0x14400400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=3, reg=0, data_in=0x0400, 
data_out=0x14600400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=4, reg=0, data_in=0x0400, 
data_out=0x14800400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=5, reg=0, data_in=0x0400, 
data_out=0x14A00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=6, reg=0, data_in=0x0400, 
data_out=0x14C00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=7, reg=0, data_in=0x0400, 
data_out=0x14E00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=8, reg=0, data_in=0x0400, 
data_out=0x15000400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=9, reg=0, data_in=0x0400, 
data_out=0x15200400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=10, reg=0, data_in=0x0400, 
data_out=0x15400400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=11, reg=0, data_in=0x0400, 
data_out=0x15600400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=12, reg=0, data_in=0x0400, 
data_out=0x15800400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=13, reg=0, data_in=0x0400, 
data_out=0x15A00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=14, reg=0, data_in=0x0400, 
data_out=0x15C00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=15, reg=0, data_in=0x0400, 
data_out=0x15E00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=16, reg=0, data_in=0x0400, 
data_out=0x16000400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=17, reg=0, data_in=0x0400, 
data_out=0x16200400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=18, reg=0, data_in=0x0400, 
data_out=0x16400400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=19, reg=0, data_in=0x0400, 
data_out=0x16600400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=20, reg=0, data_in=0x0400, 
data_out=0x16800400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=21, reg=0, data_in=0x0400, 
data_out=0x16A00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=22, reg=0, data_in=0x0400, 
data_out=0x16C00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=23, reg=0, data_in=0x0400, 
data_out=0x16E00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=24, reg=0, data_in=0x0400, 
data_out=0x17000400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=25, reg=0, data_in=0x0400, 
data_out=0x17200400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=26, reg=0, data_in=0x0400, 
data_out=0x17400400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=27, reg=0, data_in=0x0400, 
data_out=0x17600400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=28, reg=0, data_in=0x0400, 
data_out=0x17800400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=29, reg=0, data_in=0x0400, 
data_out=0x17A00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=30, reg=0, data_in=0x0400, 
data_out=0x17C00400
e100: 0000:00:09.0: mdio_ctrl: WRITE:addr=31, reg=0, data_in=0x0400, 
data_out=0x17E00400
e100: 0000:00:09.0: mdio_ctrl: READ:addr=1, reg=2, data_in=0x0000, 
data_out=0x182202A8
e100: 0000:00:09.0: mdio_ctrl: READ:addr=1, reg=3, data_in=0x0000, 
data_out=0x18230154
e100: 0000:00:09.0: e100_phy_init: phy ID = 0x015402A8
e100: 0000:00:09.0: e100_probe: Invalid MAC address from EEPROM, aborting.
ACPI: PCI interrupt for device 0000:00:09.0 disabled
e100: probe of 0000:00:09.0 failed with error -11
PCI: Enabling device 0000:00:0a.0 (0000 -> 0003)
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 11 (level, 
low) -> IRQ 11
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=1, data_in=0x0000, 
data_out=0x18217809
e100: 0000:00:0a.0: e100_phy_init: phy_addr = 1
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=0, reg=0, data_in=0x0400, 
data_out=0x14000400
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=0, data_in=0x0000, 
data_out=0x18203000
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=1, reg=0, data_in=0x3000, 
data_out=0x14203000
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=2, reg=0, data_in=0x0400, 
data_out=0x14400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=3, reg=0, data_in=0x0400, 
data_out=0x14600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=4, reg=0, data_in=0x0400, 
data_out=0x14800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=5, reg=0, data_in=0x0400, 
data_out=0x14A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=6, reg=0, data_in=0x0400, 
data_out=0x14C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=7, reg=0, data_in=0x0400, 
data_out=0x14E00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=8, reg=0, data_in=0x0400, 
data_out=0x15000400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=9, reg=0, data_in=0x0400, 
data_out=0x15200400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=10, reg=0, data_in=0x0400, 
data_out=0x15400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=11, reg=0, data_in=0x0400, 
data_out=0x15600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=12, reg=0, data_in=0x0400, 
data_out=0x15800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=13, reg=0, data_in=0x0400, 
data_out=0x15A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=14, reg=0, data_in=0x0400, 
data_out=0x15C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=15, reg=0, data_in=0x0400, 
data_out=0x15E00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=16, reg=0, data_in=0x0400, 
data_out=0x16000400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=17, reg=0, data_in=0x0400, 
data_out=0x16200400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=18, reg=0, data_in=0x0400, 
data_out=0x16400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=19, reg=0, data_in=0x0400, 
data_out=0x16600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=20, reg=0, data_in=0x0400, 
data_out=0x16800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=21, reg=0, data_in=0x0400, 
data_out=0x16A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=22, reg=0, data_in=0x0400, 
data_out=0x16C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=23, reg=0, data_in=0x0400, 
data_out=0x16E00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=24, reg=0, data_in=0x0400, 
data_out=0x17000400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=25, reg=0, data_in=0x0400, 
data_out=0x17200400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=26, reg=0, data_in=0x0400, 
data_out=0x17400400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=27, reg=0, data_in=0x0400, 
data_out=0x17600400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=28, reg=0, data_in=0x0400, 
data_out=0x17800400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=29, reg=0, data_in=0x0400, 
data_out=0x17A00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=30, reg=0, data_in=0x0400, 
data_out=0x17C00400
e100: 0000:00:0a.0: mdio_ctrl: WRITE:addr=31, reg=0, data_in=0x0400, 
data_out=0x17E00400
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=2, data_in=0x0000, 
data_out=0x182202A8
e100: 0000:00:0a.0: mdio_ctrl: READ:addr=1, reg=3, data_in=0x0000, 
data_out=0x18230154
e100: 0000:00:0a.0: e100_phy_init: phy ID = 0x015402A8
e100: eth1: e100_probe: addr 0xe5301000, irq 11, MAC addr 00:30:64:04:E6:E6


i.e. e100.ko initializes only two NICs:

# ip addr
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop
     link/ether e2:18:f7:f8:88:4e brd ff:ff:ff:ff:ff:ff
6: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e4 brd ff:ff:ff:ff:ff:ff
7: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e6 brd ff:ff:ff:ff:ff:ff


Constrast this with eepro100.ko...

'insmod e100.ko debug=6' reports:

eepro100.c:v1.09j-t 9/29/99 Donald Becker 
http://www.scyld.com/network/eepro100.html
eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin 
<saw@saw.sw.com.sg> and others
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 12 (level, 
low) -> IRQ 12
Found Intel i82557 PCI Speedo at 0xe5300000, IRQ 12.
eth0: 0000:00:08.0, 00:30:64:04:E6:E4, IRQ 12.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
   General self-test: passed.
   Serial sub-system self-test: passed.
   Internal registers self-test: passed.
   ROM checksum self-test: passed (0x04f4518b).
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 10 (level, 
low) -> IRQ 10
Found Intel i82557 PCI Speedo at 0xe5302000, IRQ 10.
eth1: 0000:00:09.0, 00:30:64:04:E6:E5, IRQ 10.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
   General self-test: passed.
   Serial sub-system self-test: passed.
   Internal registers self-test: passed.
   ROM checksum self-test: passed (0x04f4518b).
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 11 (level, 
low) -> IRQ 11
Found Intel i82557 PCI Speedo at 0xe5301000, IRQ 11.
eth2: 0000:00:0a.0, 00:30:64:04:E6:E6, IRQ 11.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
   General self-test: passed.
   Serial sub-system self-test: passed.
   Internal registers self-test: passed.
   ROM checksum self-test: passed (0x04f4518b).

#ip addr
1: lo: <LOOPBACK,UP,10000> mtu 16436 qdisc noqueue
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
2: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop
     link/ether e2:18:f7:f8:88:4e brd ff:ff:ff:ff:ff:ff
3: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e4 brd ff:ff:ff:ff:ff:ff
4: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e5 brd ff:ff:ff:ff:ff:ff
5: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e6 brd ff:ff:ff:ff:ff:ff

# eepro100-diag -aa -ee
eepro100-diag.c:v2.13 2/28/2005 Donald Becker (becker@scyld.com)
  http://www.scyld.com/diag/index.html
Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xd800.
i82557 chip registers at 0xd800:
   00000000 00000000 00000000 00080002 10000000 00000000
   No interrupt sources are pending.
    The transmit unit state is 'Idle'.
    The receive unit state is 'Idle'.
   This status is unusual for an activated interface.
EEPROM contents, size 64x16:
     00: 3000 0464 e4e6 0e03 0000 0201 4701 0000  _0d__________G__
   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
       ...
   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
   0x38: 0000 0000 0000 0000 0000 0000 0000 92f7  ________________
  The EEPROM checksum is correct.
Intel EtherExpress Pro 10/100 EEPROM contents:
   Station address 00:30:64:04:E6:E4.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
    Sleep mode is enabled.  This is not recommended.
    Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
    To clear sleep mode use the '-G 0 -w -w -f' options.
Index #2: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xdc00.
i82557 chip registers at 0xdc00:
   00000000 00000000 00000000 00080002 10000000 00000000
   No interrupt sources are pending.
    The transmit unit state is 'Idle'.
    The receive unit state is 'Idle'.
   This status is unusual for an activated interface.
EEPROM contents, size 64x16:
     00: 3000 0464 e5e6 0e03 0000 0201 4701 0000  _0d__________G__
   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
       ...
   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
   0x38: 0000 0000 0000 0000 0000 0000 0000 91f7  ________________
  The EEPROM checksum is correct.
Intel EtherExpress Pro 10/100 EEPROM contents:
   Station address 00:30:64:04:E6:E5.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
    Sleep mode is enabled.  This is not recommended.
    Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
    To clear sleep mode use the '-G 0 -w -w -f' options.
Index #3: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xe000.
i82557 chip registers at 0xe000:
   00000000 00000000 00000000 00080002 10000000 00000000
   No interrupt sources are pending.
    The transmit unit state is 'Idle'.
    The receive unit state is 'Idle'.
   This status is unusual for an activated interface.
EEPROM contents, size 64x16:
     00: 3000 0464 e6e6 0e03 0000 0201 4701 0000  _0d__________G__
   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
       ...
   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
   0x38: 0000 0000 0000 0000 0000 0000 0000 90f7  ________________
  The EEPROM checksum is correct.
Intel EtherExpress Pro 10/100 EEPROM contents:
   Station address 00:30:64:04:E6:E6.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
    Sleep mode is enabled.  This is not recommended.
    Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
    To clear sleep mode use the '-G 0 -w -w -f' options.


On a related note, I am concerned by this message:

    Sleep mode is enabled.  This is not recommended.
    Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
    To clear sleep mode use the '-G 0 -w -w -f' options.

Intel 82559 EEPROM Map and Programming Information (AP-394) states:
http://www.intel.com/design/network/applnots/ap394.htm

The Standby Enable bit enables the 82559 to enter standby mode. When 
this bit equals 1b, the 82559 is able to recognize an idle state and can 
enter standby mode (some internal clocks are stopped for power saving 
purposes). The 82559 does not require a PCI clock signal in standby 
mode. If this bit equals 0b, the idle recognition circuit is disabled 
and the 82559 always remains in an active state. Thus, the 82559 always 
requests PCI CLK using the Clockrun mechanism.

Auke, do you agree with Donald Becker's warning?

If I disable STB, the NICs will waste a bit more power when idle,
is that correct? Are there other implications?

Thanks for reading this far!

John

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-07 18:34           ` Auke Kok
@ 2006-11-07 18:38             ` H. Peter Anvin
  0 siblings, 0 replies; 27+ messages in thread
From: H. Peter Anvin @ 2006-11-07 18:38 UTC (permalink / raw)
  To: Auke Kok; +Cc: linux-kernel, saw, thockin, me

Auke Kok wrote:
> H. Peter Anvin wrote:
>> Auke Kok wrote:
>>>
>>> (Please CC either me or at netdev on all intel nic drivers. thanks. I 
>>> removed `john@privacy.net` since it throws a bounce, and 
>>> linux.nics@intel.com is a support address only, doesn't reach us 
>>> developers)
>>>
>>
>> I think John <me@privacy.net> is the one who can actually answer your 
>> questions...
> 
> his original mail reads:
> 
> "Please note, email address is a bit-bucket.
> I do monitor the mailing list. "

Ah.  So it makes no difference either way.  It definitely doesn't bounce.

	-hpa


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-07 18:27         ` H. Peter Anvin
@ 2006-11-07 18:34           ` Auke Kok
  2006-11-07 18:38             ` H. Peter Anvin
  0 siblings, 1 reply; 27+ messages in thread
From: Auke Kok @ 2006-11-07 18:34 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: linux-kernel, saw, thockin, me

H. Peter Anvin wrote:
> Auke Kok wrote:
>>
>> (Please CC either me or at netdev on all intel nic drivers. thanks. I 
>> removed `john@privacy.net` since it throws a bounce, and 
>> linux.nics@intel.com is a support address only, doesn't reach us 
>> developers)
>>
> 
> I think John <me@privacy.net> is the one who can actually answer your 
> questions...

his original mail reads:

"Please note, email address is a bit-bucket.
I do monitor the mailing list. "

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-07 17:43       ` Auke Kok
@ 2006-11-07 18:27         ` H. Peter Anvin
  2006-11-07 18:34           ` Auke Kok
  0 siblings, 1 reply; 27+ messages in thread
From: H. Peter Anvin @ 2006-11-07 18:27 UTC (permalink / raw)
  To: Auke Kok; +Cc: linux-kernel, saw, thockin, me

Auke Kok wrote:
> 
> (Please CC either me or at netdev on all intel nic drivers. thanks. I 
> removed `john@privacy.net` since it throws a bounce, and 
> linux.nics@intel.com is a support address only, doesn't reach us 
> developers)
> 

I think John <me@privacy.net> is the one who can actually answer your 
questions...

	-hpa

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-07 17:17     ` H. Peter Anvin
@ 2006-11-07 17:43       ` Auke Kok
  2006-11-07 18:27         ` H. Peter Anvin
  0 siblings, 1 reply; 27+ messages in thread
From: Auke Kok @ 2006-11-07 17:43 UTC (permalink / raw)
  To: linux-kernel; +Cc: H. Peter Anvin, saw, thockin

H. Peter Anvin wrote:
> John wrote:
>>
>> I then used ethtool to dump the contents of the EEPROMs.
>>
>> # ethtool -e eth0
>> Offset          Values
>> ------          ------
>> 0x0000          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> 0x0010          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> 0x0020          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> 0x0030          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> 0x0040          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> 0x0050          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> 0x0060          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>> 0x0070          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
>>
>> Either the EEPROM image on eth0 is corrupted, or ethtool is not
>> able to read the contents of the EEPROM.
>>
> 
> [...]
> 
>>
>> I then used Donald Becker's program to dump the contents of all
>> the EEPROMs. ( ftp://www.scyld.com/pub/diag/ )
>>
>> # eepro100-diag -ee
>> eepro100-diag.c:v2.13 2/28/2005 Donald Becker (becker@scyld.com)
>>  http://www.scyld.com/diag/index.html
>>
>> Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xd800.
>> EEPROM contents, size 64x16:
>>     00: 3000 0464 e4e6 0e03 0000 0201 4701 0000  _0d__________G__
>>   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
>>       ...
>>   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
>>   0x38: 0000 0000 0000 0000 0000 0000 0000 92f7  ________________
>>  The EEPROM checksum is correct.
>> Intel EtherExpress Pro 10/100 EEPROM contents:
>>   Station address 00:30:64:04:E6:E4.
>>   Board assembly 721383-016, Physical connectors present: RJ45
>>   Primary interface chip i82555 PHY #1.
>>    Sleep mode is enabled.  This is not recommended.
>>    Under high load the card may not respond to
>>    PCI requests, and thus cause a master abort.
>>    To clear sleep mode use the '-G 0 -w -w -f' options.
>>
>> Index #2: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xdc00.
>> EEPROM contents, size 64x16:
>>     00: 3000 0464 e5e6 0e03 0000 0201 4701 0000  _0d__________G__
>>   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
>>       ...
>>   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
>>   0x38: 0000 0000 0000 0000 0000 0000 0000 91f7  ________________
>>  The EEPROM checksum is correct.
>> Intel EtherExpress Pro 10/100 EEPROM contents:
>>   Station address 00:30:64:04:E6:E5.
>>   Board assembly 721383-016, Physical connectors present: RJ45
>>   Primary interface chip i82555 PHY #1.
>>    Sleep mode is enabled.  This is not recommended.
>>    Under high load the card may not respond to
>>    PCI requests, and thus cause a master abort.
>>    To clear sleep mode use the '-G 0 -w -w -f' options.
>>
>> Index #3: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xe000.
>> EEPROM contents, size 64x16:
>>     00: 3000 0464 e6e6 0e03 0000 0201 4701 0000  _0d__________G__
>>   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
>>       ...
>>   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
>>   0x38: 0000 0000 0000 0000 0000 0000 0000 90f7  ________________
>>  The EEPROM checksum is correct.
>> Intel EtherExpress Pro 10/100 EEPROM contents:
>>   Station address 00:30:64:04:E6:E6.
>>   Board assembly 721383-016, Physical connectors present: RJ45
>>   Primary interface chip i82555 PHY #1.
>>    Sleep mode is enabled.  This is not recommended.
>>    Under high load the card may not respond to
>>    PCI requests, and thus cause a master abort.
>>    To clear sleep mode use the '-G 0 -w -w -f' options.
>>
>> Apparently, eepro100.ko is able to read the contents of the EEPROM on 
>> eth0 and it declares the checksum correct. Is it possible that there 
>> is a bug in e100.c that makes it fail to read the EEPROM on eth0?
>>
> 
> Sure as heck sounds like it.

(Please CC either me or at netdev on all intel nic drivers. thanks. I removed 
`john@privacy.net` since it throws a bounce, and linux.nics@intel.com is a support 
address only, doesn't reach us developers)

how did you do the first `ethtool` eeprom dump? did you have the `e100` module loaded at 
that time? Did you use the new `override` mechanism graciously donated by David M?

Cheers,

Auke

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-07 11:23   ` John
@ 2006-11-07 17:17     ` H. Peter Anvin
  2006-11-07 17:43       ` Auke Kok
  2006-11-08 10:55     ` John
  1 sibling, 1 reply; 27+ messages in thread
From: H. Peter Anvin @ 2006-11-07 17:17 UTC (permalink / raw)
  To: John; +Cc: linux-kernel, linux.nics, saw, thockin

John wrote:
> 
> I then used ethtool to dump the contents of the EEPROMs.
> 
> # ethtool -e eth0
> Offset          Values
> ------          ------
> 0x0000          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 0x0010          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 0x0020          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 0x0030          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 0x0040          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 0x0050          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 0x0060          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 0x0070          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
> 
> Either the EEPROM image on eth0 is corrupted, or ethtool is not
> able to read the contents of the EEPROM.
> 

[...]

> 
> I then used Donald Becker's program to dump the contents of all
> the EEPROMs. ( ftp://www.scyld.com/pub/diag/ )
> 
> # eepro100-diag -ee
> eepro100-diag.c:v2.13 2/28/2005 Donald Becker (becker@scyld.com)
>  http://www.scyld.com/diag/index.html
> 
> Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xd800.
> EEPROM contents, size 64x16:
>     00: 3000 0464 e4e6 0e03 0000 0201 4701 0000  _0d__________G__
>   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
>       ...
>   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
>   0x38: 0000 0000 0000 0000 0000 0000 0000 92f7  ________________
>  The EEPROM checksum is correct.
> Intel EtherExpress Pro 10/100 EEPROM contents:
>   Station address 00:30:64:04:E6:E4.
>   Board assembly 721383-016, Physical connectors present: RJ45
>   Primary interface chip i82555 PHY #1.
>    Sleep mode is enabled.  This is not recommended.
>    Under high load the card may not respond to
>    PCI requests, and thus cause a master abort.
>    To clear sleep mode use the '-G 0 -w -w -f' options.
> 
> Index #2: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xdc00.
> EEPROM contents, size 64x16:
>     00: 3000 0464 e5e6 0e03 0000 0201 4701 0000  _0d__________G__
>   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
>       ...
>   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
>   0x38: 0000 0000 0000 0000 0000 0000 0000 91f7  ________________
>  The EEPROM checksum is correct.
> Intel EtherExpress Pro 10/100 EEPROM contents:
>   Station address 00:30:64:04:E6:E5.
>   Board assembly 721383-016, Physical connectors present: RJ45
>   Primary interface chip i82555 PHY #1.
>    Sleep mode is enabled.  This is not recommended.
>    Under high load the card may not respond to
>    PCI requests, and thus cause a master abort.
>    To clear sleep mode use the '-G 0 -w -w -f' options.
> 
> Index #3: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xe000.
> EEPROM contents, size 64x16:
>     00: 3000 0464 e6e6 0e03 0000 0201 4701 0000  _0d__________G__
>   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
>       ...
>   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
>   0x38: 0000 0000 0000 0000 0000 0000 0000 90f7  ________________
>  The EEPROM checksum is correct.
> Intel EtherExpress Pro 10/100 EEPROM contents:
>   Station address 00:30:64:04:E6:E6.
>   Board assembly 721383-016, Physical connectors present: RJ45
>   Primary interface chip i82555 PHY #1.
>    Sleep mode is enabled.  This is not recommended.
>    Under high load the card may not respond to
>    PCI requests, and thus cause a master abort.
>    To clear sleep mode use the '-G 0 -w -w -f' options.
> 
> Apparently, eepro100.ko is able to read the contents of the EEPROM on 
> eth0 and it declares the checksum correct. Is it possible that there is 
> a bug in e100.c that makes it fail to read the EEPROM on eth0?
> 

Sure as heck sounds like it.

	-hpa


^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-04  1:46 ` H. Peter Anvin
  2006-11-04  6:22   ` thockin
@ 2006-11-07 11:23   ` John
  2006-11-07 17:17     ` H. Peter Anvin
  2006-11-08 10:55     ` John
  1 sibling, 2 replies; 27+ messages in thread
From: John @ 2006-11-07 11:23 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux.nics, hpa, saw, thockin

H. Peter Anvin wrote:

> John wrote:
> 
>> Several people have reported the same error. Intel's Auke Kok has
>> stated that ignoring the error is a BAD idea.
>>
>> http://lkml.org/lkml/2006/7/10/215
>>
>> What tool is used to reprogram the EEPROM? ethtool?
>> I suppose I'll have to ask the manufacturer for an updated EEPROM?
>>
>> # ethtool -e eth0
>> Cannot get EEPROM data: Operation not supported
>>
>> I'm not sure why I can't dump the contents of the EEPROM.
>> Does the driver need to be loaded?
> 
> Yes, the driver needs to be loaded.
> 
> Basically, Auke wants you to throw away your NIC and/or motherboard.
> Since you're effectively dead, the only damage you can do by
> disabling the check has already been done.  This unfortunately seems
> to be fairly common with e100, especially for the on-motherboard
> version, and you basically have two options: either disable the check
> or write an offline tool to reprogram the EEPROM.
> 
> The latest netdev tree (if it's not in Linus' tree already, which it
> might be) does add back the option to ignore the check so you can
> update the EEPROM, which will automatically fix the checksum.

I have investigated further.

I changed e100_eeprom_load() to return 0 even when the checksum fails.

Loading e100.ko reports:

e100: Intel(R) PRO/100 Network Driver, 3.4.14-k2-NAPI
e100: Copyright(c) 1999-2005 Intel Corporation
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 11 (level, 
low) -> IRQ 11
e100: 0000:00:08.0: e100_eeprom_load: EEPROM corrupted
e100: eth0: e100_probe: addr 0xe6302000, irq 11, MAC addr FF:FF:FF:FF:FF:FF
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 12 (level, 
low) -> IRQ 12
e100: eth1: e100_probe: addr 0xe6301000, irq 12, MAC addr 00:30:64:04:E6:E5
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 10 (level, 
low) -> IRQ 10
e100: eth2: e100_probe: addr 0xe6300000, irq 10, MAC addr 00:30:64:04:E6:E6

I had thought all cards would have the same problem, but only the
first NIC seems affected.

The MAC address for eth0 should be 00:30:64:04:E6:E4
(0x003064 is an ADLINK OUI.)

#ip addr
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
5: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether ff:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
6: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e5 brd ff:ff:ff:ff:ff:ff
7: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e6 brd ff:ff:ff:ff:ff:ff


I then used ethtool to dump the contents of the EEPROMs.

# ethtool -e eth0
Offset          Values
------          ------
0x0000          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x0010          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x0020          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x0030          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x0040          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x0050          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x0060          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
0x0070          ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff

# ethtool -e eth1
Offset          Values
------          ------
0x0000          00 30 64 04 e6 e5 03 0e 00 00 01 02 01 47 00 00
0x0010          13 72 10 83 a2 40 01 00 86 80 00 00 00 00 00 00
0x0020          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0030          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0040          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0050          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0060          28 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0070          00 00 00 00 00 00 00 00 00 00 00 00 00 00 f7 91

# ethtool -e eth2
Offset          Values
------          ------
0x0000          00 30 64 04 e6 e6 03 0e 00 00 01 02 01 47 00 00
0x0010          13 72 10 83 a2 40 01 00 86 80 00 00 00 00 00 00
0x0020          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0030          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0040          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0050          00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0060          28 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x0070          00 00 00 00 00 00 00 00 00 00 00 00 00 00 f7 90


Either the EEPROM image on eth0 is corrupted, or ethtool is not
able to read the contents of the EEPROM.

So I tried the other driver, eepro100.c which, AFAIU, e100.c is
supposed to supersede.

Loading eepro100.ko reports:

eepro100.c:v1.09j-t 9/29/99 Donald Becker 
http://www.scyld.com/network/eepro100.html
eepro100.c: $Revision: 1.36 $ 2000/11/17 Modified by Andrey V. Savochkin 
<saw@saw.sw.com.sg> and others
ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 11
PCI: setting IRQ 11 as level-triggered
ACPI: PCI Interrupt 0000:00:08.0[A] -> Link [LNKA] -> GSI 11 (level, 
low) -> IRQ 11
eth0: 0000:00:08.0, 00:30:64:04:E6:E4, IRQ 11.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
   General self-test: passed.
   Serial sub-system self-test: passed.
   Internal registers self-test: passed.
   ROM checksum self-test: passed (0x04f4518b).
ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 12
PCI: setting IRQ 12 as level-triggered
ACPI: PCI Interrupt 0000:00:09.0[A] -> Link [LNKB] -> GSI 12 (level, 
low) -> IRQ 12
eth1: 0000:00:09.0, 00:30:64:04:E6:E5, IRQ 12.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
   General self-test: passed.
   Serial sub-system self-test: passed.
   Internal registers self-test: passed.
   ROM checksum self-test: passed (0x04f4518b).
ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 10
PCI: setting IRQ 10 as level-triggered
ACPI: PCI Interrupt 0000:00:0a.0[A] -> Link [LNKC] -> GSI 10 (level, 
low) -> IRQ 10
eth2: 0000:00:0a.0, 00:30:64:04:E6:E6, IRQ 10.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
   General self-test: passed.
   Serial sub-system self-test: passed.
   Internal registers self-test: passed.
   ROM checksum self-test: passed (0x04f4518b).


NOTE: eepro100.ko found the correct MAC address for eth0.

#ip addr
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
     inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e4 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e5 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
     link/ether 00:30:64:04:e6:e6 brd ff:ff:ff:ff:ff:ff


I then used Donald Becker's program to dump the contents of all
the EEPROMs. ( ftp://www.scyld.com/pub/diag/ )

# eepro100-diag -ee
eepro100-diag.c:v2.13 2/28/2005 Donald Becker (becker@scyld.com)
  http://www.scyld.com/diag/index.html

Index #1: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xd800.
EEPROM contents, size 64x16:
     00: 3000 0464 e4e6 0e03 0000 0201 4701 0000  _0d__________G__
   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
       ...
   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
   0x38: 0000 0000 0000 0000 0000 0000 0000 92f7  ________________
  The EEPROM checksum is correct.
Intel EtherExpress Pro 10/100 EEPROM contents:
   Station address 00:30:64:04:E6:E4.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
    Sleep mode is enabled.  This is not recommended.
    Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
    To clear sleep mode use the '-G 0 -w -w -f' options.

Index #2: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xdc00.
EEPROM contents, size 64x16:
     00: 3000 0464 e5e6 0e03 0000 0201 4701 0000  _0d__________G__
   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
       ...
   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
   0x38: 0000 0000 0000 0000 0000 0000 0000 91f7  ________________
  The EEPROM checksum is correct.
Intel EtherExpress Pro 10/100 EEPROM contents:
   Station address 00:30:64:04:E6:E5.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
    Sleep mode is enabled.  This is not recommended.
    Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
    To clear sleep mode use the '-G 0 -w -w -f' options.

Index #3: Found a Intel i82557/8/9 EtherExpressPro100 adapter at 0xe000.
EEPROM contents, size 64x16:
     00: 3000 0464 e6e6 0e03 0000 0201 4701 0000  _0d__________G__
   0x08: 7213 8310 40a2 0001 8086 0000 0000 0000  _r___@__________
       ...
   0x30: 0128 0000 0000 0000 0000 0000 0000 0000  (_______________
   0x38: 0000 0000 0000 0000 0000 0000 0000 90f7  ________________
  The EEPROM checksum is correct.
Intel EtherExpress Pro 10/100 EEPROM contents:
   Station address 00:30:64:04:E6:E6.
   Board assembly 721383-016, Physical connectors present: RJ45
   Primary interface chip i82555 PHY #1.
    Sleep mode is enabled.  This is not recommended.
    Under high load the card may not respond to
    PCI requests, and thus cause a master abort.
    To clear sleep mode use the '-G 0 -w -w -f' options.


Apparently, eepro100.ko is able to read the contents of the EEPROM on 
eth0 and it declares the checksum correct. Is it possible that there is 
a bug in e100.c that makes it fail to read the EEPROM on eth0?

Regards,

John

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-04  6:22   ` thockin
@ 2006-11-04  6:28     ` thockin
  0 siblings, 0 replies; 27+ messages in thread
From: thockin @ 2006-11-04  6:28 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: John, linux-kernel, linux.nics

On Fri, Nov 03, 2006 at 10:22:51PM -0800, thockin@hockin.org wrote:
> On Fri, Nov 03, 2006 at 05:46:25PM -0800, H. Peter Anvin wrote:
> > Basically, Auke wants you to throw away your NIC and/or motherboard. 
> > Since you're effectively dead, the only damage you can do by disabling 
> > the check has already been done.  This unfortunately seems to be fairly 
> > common with e100, especially for the on-motherboard version, and you 
> > basically have two options: either disable the check or write an offline 
> > tool to reprogram the EEPROM.
> 
> I have a tool to write the eepro100 EEPROM.  Let me see if I can find it.
> It even had all the default data coded, ready to restore a NIC to default.
> 
> However - back in the eepro100.c days, it was considered a warning only if
> the EEPROM had a bad checksum.  There were two "supported" formats for the
> EEPROM, one of which was just the MAC address.  And it worked!

One from the vaults:  http://www.hockin.org/~thockin/enet_eeprom/

It's pretty simple, but easily hacked.  ifdown your interface first! :)

Tim

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-04  1:46 ` H. Peter Anvin
@ 2006-11-04  6:22   ` thockin
  2006-11-04  6:28     ` thockin
  2006-11-07 11:23   ` John
  1 sibling, 1 reply; 27+ messages in thread
From: thockin @ 2006-11-04  6:22 UTC (permalink / raw)
  To: H. Peter Anvin; +Cc: John, linux-kernel, linux.nics

On Fri, Nov 03, 2006 at 05:46:25PM -0800, H. Peter Anvin wrote:
> Basically, Auke wants you to throw away your NIC and/or motherboard. 
> Since you're effectively dead, the only damage you can do by disabling 
> the check has already been done.  This unfortunately seems to be fairly 
> common with e100, especially for the on-motherboard version, and you 
> basically have two options: either disable the check or write an offline 
> tool to reprogram the EEPROM.

I have a tool to write the eepro100 EEPROM.  Let me see if I can find it.
It even had all the default data coded, ready to restore a NIC to default.

However - back in the eepro100.c days, it was considered a warning only if
the EEPROM had a bad checksum.  There were two "supported" formats for the
EEPROM, one of which was just the MAC address.  And it worked!

Tim

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Re: Intel 82559 NIC corrupted EEPROM
  2006-11-03 17:28 John
@ 2006-11-04  1:46 ` H. Peter Anvin
  2006-11-04  6:22   ` thockin
  2006-11-07 11:23   ` John
  0 siblings, 2 replies; 27+ messages in thread
From: H. Peter Anvin @ 2006-11-04  1:46 UTC (permalink / raw)
  To: John; +Cc: linux-kernel, linux.nics

John wrote:
> 
> Several people have reported the same error. Intel's Auke Kok has
> stated that ignoring the error is a BAD idea.
> 
> http://lkml.org/lkml/2006/7/10/215
> 
> What tool is used to reprogram the EEPROM? ethtool?
> I suppose I'll have to ask the manufacturer for an updated EEPROM?
> 
> # ethtool -e eth0
> Cannot get EEPROM data: Operation not supported
> 
> I'm not sure why I can't dump the contents of the EEPROM.
> Does the driver need to be loaded?
> 

Yes, the driver needs to be loaded.

Basically, Auke wants you to throw away your NIC and/or motherboard. 
Since you're effectively dead, the only damage you can do by disabling 
the check has already been done.  This unfortunately seems to be fairly 
common with e100, especially for the on-motherboard version, and you 
basically have two options: either disable the check or write an offline 
tool to reprogram the EEPROM.

The latest netdev tree (if it's not in Linus' tree already, which it 
might be) does add back the option to ignore the check so you can update 
the EEPROM, which will automatically fix the checksum.

	-hpa

^ permalink raw reply	[flat|nested] 27+ messages in thread

* Intel 82559 NIC corrupted EEPROM
@ 2006-11-03 17:28 John
  2006-11-04  1:46 ` H. Peter Anvin
  0 siblings, 1 reply; 27+ messages in thread
From: John @ 2006-11-03 17:28 UTC (permalink / raw)
  To: linux-kernel; +Cc: linux.nics

Hello,

I have an EBC-2000T motherboard with 3 on-board Intel 82559 NICs.

http://www.intel.com/design/network/products/lan/controllers/82559.htm
http://www.adlinktech.com/PD/web/PD_detail.php?pid=213
http://www.intel.com/support/network/adapter/1000/linux/e100.htm

Running a 2.6.14 kernel, the e100 driver refuses to load because
it detects a corrupted EEPROM.

cf. e100_eeprom_load()

   /* The checksum, stored in the last word, is calculated such that
    * the sum of words should be 0xBABA */
   checksum = le16_to_cpu(0xBABA - checksum);
   if(checksum != nic->eeprom[nic->eeprom_wc - 1]) {
         DPRINTK(PROBE, ERR, "EEPROM corrupted\n");
         if (!eeprom_bad_csum_allow)
                 return -EAGAIN;
   }

Several people have reported the same error. Intel's Auke Kok has
stated that ignoring the error is a BAD idea.

http://lkml.org/lkml/2006/7/10/215

What tool is used to reprogram the EEPROM? ethtool?
I suppose I'll have to ask the manufacturer for an updated EEPROM?


# ethtool -e eth0
Cannot get EEPROM data: Operation not supported

I'm not sure why I can't dump the contents of the EEPROM.
Does the driver need to be loaded?

On a totally unrelated note, does the 82559 support VLAN tagging?
(I believe the driver supports it.)

Thanks for reading this far.

Please note, email address is a bit-bucket.
I do monitor the mailing list.

Regards.

John

# lspci -vv
[...]
00:08.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 
100] (rev 08)
         Subsystem: Intel Corporation EtherExpress PRO/100B (TX)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- 
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium 
 >TAbort- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 32 (2000ns min, 14000ns max), cache line size 08
         Interrupt: pin A routed to IRQ 11
         Region 0: Memory at e5402000 (32-bit, non-prefetchable) [size=4K]
         Region 1: I/O ports at d800 [size=64]
         Region 2: Memory at e5000000 (32-bit, non-prefetchable) [size=1M]
         Expansion ROM at 20000000 [disabled] [size=1M]
         Capabilities: [dc] Power Management version 2
                 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA 
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                 Status: D0 PME-Enable- DSel=0 DScale=2 PME-

00:09.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 
100] (rev 08)
         Subsystem: Intel Corporation EtherExpress PRO/100B (TX)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- 
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium 
 >TAbort- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 32 (2000ns min, 14000ns max), cache line size 08
         Interrupt: pin A routed to IRQ 12
         Region 0: Memory at e5401000 (32-bit, non-prefetchable) [size=4K]
         Region 1: I/O ports at dc00 [size=64]
         Region 2: Memory at e5100000 (32-bit, non-prefetchable) [size=1M]
         Expansion ROM at 20100000 [disabled] [size=1M]
         Capabilities: [dc] Power Management version 2
                 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA 
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                 Status: D0 PME-Enable- DSel=0 DScale=2 PME-

00:0a.0 Ethernet controller: Intel Corporation 82557/8/9 [Ethernet Pro 
100] (rev 08)
         Subsystem: Intel Corporation EtherExpress PRO/100B (TX)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- 
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium 
 >TAbort- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 32 (2000ns min, 14000ns max), cache line size 08
         Interrupt: pin A routed to IRQ 10
         Region 0: Memory at e5400000 (32-bit, non-prefetchable) [size=4K]
         Region 1: I/O ports at e000 [size=64]
         Region 2: Memory at e5200000 (32-bit, non-prefetchable) [size=1M]
         Expansion ROM at 20200000 [disabled] [size=1M]
         Capabilities: [dc] Power Management version 2
                 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA 
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                 Status: D0 PME-Enable- DSel=0 DScale=2 PME-


^ permalink raw reply	[flat|nested] 27+ messages in thread

end of thread, other threads:[~2007-08-14 17:37 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <fa.FcMVUlqOXU3cAnxsPEN6d8T0wxU@ifi.uio.no>
     [not found] ` <fa.0FC8eT8GQaLxmNQTrsqyNFjRK4E@ifi.uio.no>
     [not found]   ` <fa.nds0CFkNbotWh4VNM05EixY68wE@ifi.uio.no>
     [not found]     ` <fa.K3Gpuu7oYQv+4q85Ziy3ljV6u+E@ifi.uio.no>
     [not found]       ` <fa./RNOPU0DwWMrnKJSqlMaY+Y16JM@ifi.uio.no>
     [not found]         ` <fa.yV32AYzot0OkvPVCY7VTCvd6rJw@ifi.uio.no>
2007-02-07 11:06           ` Intel 82559 NIC corrupted EEPROM John
2007-02-13 19:45             ` Brandeburg, Jesse
2007-08-14 16:35 Amin Azez
  -- strict thread matches above, loose matches on Subject: below --
2006-11-03 17:28 John
2006-11-04  1:46 ` H. Peter Anvin
2006-11-04  6:22   ` thockin
2006-11-04  6:28     ` thockin
2006-11-07 11:23   ` John
2006-11-07 17:17     ` H. Peter Anvin
2006-11-07 17:43       ` Auke Kok
2006-11-07 18:27         ` H. Peter Anvin
2006-11-07 18:34           ` Auke Kok
2006-11-07 18:38             ` H. Peter Anvin
2006-11-08 10:55     ` John
2006-11-08 16:17       ` Auke Kok
2006-11-09 12:17         ` John
2006-11-09 17:03           ` Auke Kok
2006-11-08 17:26       ` Jesse Brandeburg
2006-11-09 14:15         ` John
2006-11-10  0:19           ` Jesse Brandeburg
2006-11-10 12:03             ` John
2006-11-15  8:34               ` John
2006-11-27 14:17                 ` John
2006-11-27 20:34                   ` Jesse Brandeburg
2006-11-29 11:26                     ` John
2006-11-29 18:55                       ` Jesse Brandeburg
     [not found]                         ` <45704001.9040108@privacy.net>
2006-12-04 23:26                           ` Jesse Brandeburg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).