Hi Iain,
your Intel 82540EM which hangs on a flashrom run should spew "Timeout!" messages with this patch. It would be nice if you could tell us how long it waits for each chip probe so I can adjust the timeout value. Please note that this patch will _not_ fix the underlying issue, but I believe that an endless loop on possibly broken hardware is worse than aborting.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-bitbang_timeout/flash.h =================================================================== --- flashrom-bitbang_timeout/flash.h (Revision 1185) +++ flashrom-bitbang_timeout/flash.h (Arbeitskopie) @@ -35,6 +35,9 @@
#define ERROR_PTR ((void*)-1)
+/* Error codes */ +#define TIMEOUT_ERROR -101 + typedef unsigned long chipaddr;
int register_shutdown(void (*function) (void *data), void *data); Index: flashrom-bitbang_timeout/bitbang_spi.c =================================================================== --- flashrom-bitbang_timeout/bitbang_spi.c (Revision 1185) +++ flashrom-bitbang_timeout/bitbang_spi.c (Arbeitskopie) @@ -53,10 +53,11 @@ return bitbang_spi_master->get_miso(); }
-static void bitbang_spi_request_bus(void) +static int bitbang_spi_request_bus(void) { if (bitbang_spi_master->request_bus) - bitbang_spi_master->request_bus(); + return bitbang_spi_master->request_bus(); + return 0; }
static void bitbang_spi_release_bus(void) @@ -86,7 +87,7 @@ bitbang_spi_master = master; bitbang_spi_half_period = halfperiod;
- /* FIXME: Run bitbang_spi_request_bus here or in programmer init? */ + /* FIXME: Run bitbang_spi_request_bus here or per command? */ bitbang_spi_set_cs(1); bitbang_spi_set_sck(0); bitbang_spi_set_mosi(0); @@ -131,13 +132,15 @@ int bitbang_spi_send_command(unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr) { - int i; + int i, ret;
/* FIXME: Run bitbang_spi_request_bus here or in programmer init? * Requesting and releasing the SPI bus is handled in here to allow the * programmer to use its own SPI engine for native accesses. */ - bitbang_spi_request_bus(); + ret = bitbang_spi_request_bus(); + if (ret) + return ret; bitbang_spi_set_cs(0); for (i = 0; i < writecnt; i++) bitbang_spi_readwrite_byte(writearr[i]); Index: flashrom-bitbang_timeout/nicintel_spi.c =================================================================== --- flashrom-bitbang_timeout/nicintel_spi.c (Revision 1185) +++ flashrom-bitbang_timeout/nicintel_spi.c (Arbeitskopie) @@ -58,6 +58,8 @@ // #define FL_BUSY 30 // #define FL_ER 31
+#define MAX_REQUEST_LOOPS 10000 + uint8_t *nicintel_spibar;
const struct pcidev_status nics_intel_spi[] = { @@ -68,16 +70,27 @@ {}, };
-static void nicintel_request_spibus(void) +static void nicintel_release_spibus(void); + +static int nicintel_request_spibus(void) { uint32_t tmp; + int i = 0;
tmp = pci_mmio_readl(nicintel_spibar + FLA); tmp |= 1 << FL_REQ; pci_mmio_writel(tmp, nicintel_spibar + FLA);
/* Wait until we are allowed to use the SPI bus. */ - while (!(pci_mmio_readl(nicintel_spibar + FLA) & (1 << FL_GNT))) ; + while (!(pci_mmio_readl(nicintel_spibar + FLA) & (1 << FL_GNT))) { + if (i++ > MAX_REQUEST_LOOPS) { + nicintel_release_spibus(); + msg_perr("%s: Timeout! Aborting.\n", __func__); + return TIMEOUT_ERROR; + } + } + + return 0; }
static void nicintel_release_spibus(void) Index: flashrom-bitbang_timeout/mcp6x_spi.c =================================================================== --- flashrom-bitbang_timeout/mcp6x_spi.c (Revision 1185) +++ flashrom-bitbang_timeout/mcp6x_spi.c (Arbeitskopie) @@ -40,22 +40,37 @@ #define MCP6X_SPI_REQUEST 0 #define MCP6X_SPI_GRANT 8
+#define MAX_REQUEST_LOOPS 10000 + void *mcp6x_spibar = NULL;
/* Cached value of last GPIO state. */ static uint8_t mcp_gpiostate;
-static void mcp6x_request_spibus(void) +static void mcp6x_release_spibus(void); + +static int mcp6x_request_spibus(void) { + int i = 0; + mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); mcp_gpiostate |= 1 << MCP6X_SPI_REQUEST; mmio_writeb(mcp_gpiostate, mcp6x_spibar + 0x530);
/* Wait until we are allowed to use the SPI bus. */ - while (!(mmio_readw(mcp6x_spibar + 0x530) & (1 << MCP6X_SPI_GRANT))) ; + while (!(mmio_readw(mcp6x_spibar + 0x530) & (1 << MCP6X_SPI_GRANT))) { + if (i++ > MAX_REQUEST_LOOPS) { + /* Update the cache. */ + mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); + mcp6x_release_spibus(); + msg_perr("%s: Timeout! Aborting.\n", __func__); + return TIMEOUT_ERROR; + } + }
/* Update the cache. */ mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); + return 0; }
static void mcp6x_release_spibus(void) Index: flashrom-bitbang_timeout/programmer.h =================================================================== --- flashrom-bitbang_timeout/programmer.h (Revision 1185) +++ flashrom-bitbang_timeout/programmer.h (Arbeitskopie) @@ -131,7 +131,7 @@ void (*set_sck) (int val); void (*set_mosi) (int val); int (*get_miso) (void); - void (*request_bus) (void); + int (*request_bus) (void); void (*release_bus) (void); };
Carl-Daniel Hailfinger wrote:
Hi Iain,
your Intel 82540EM which hangs on a flashrom run should spew "Timeout!" messages with this patch. It would be nice if you could tell us how long it waits for each chip probe so I can adjust the timeout value. Please note that this patch will _not_ fix the underlying issue, but I believe that an endless loop on possibly broken hardware is worse than aborting.
Ok, but it's pretty much instant. Just running "time ./flashrom -p nicintel_spi -V" gets me the following time for the whole thing:
real 0m2.109s user 0m2.106s sys 0m0.012s
full log at the end of the mail..
Not really sure what's the best way to get more accurate data if you need it, I'm certainly not getting it with a stopwatch :)
I think you're right in thinking there's some other tweaking needed for this card, after running the probe a couple of times I started getting this:
root@p7fe-64:~/flashrom# ./flashrom -p nicintel_spi -V flashrom v0.9.2-r1186 on Linux 2.6.35-dt (x86_64), built with libpci 3.1.4, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1785M loops per second, 10 myus = 10 us, 100 myus = 100 us, 1000 myus = 1020 us, 10000 myus = 10023 us, 4 myus = 4 us, OK. Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 06:02.0). Requested BAR is IO Mapping Intel Gigabit NIC w/ SPI flash, 0x1000 bytes at unaligned 0xfffffffc. Error accessing Intel Gigabit NIC w/ SPI flash, 0x1000 bytes at 0xfffffffc /dev/mem mmap failed: Invalid argument In Linux this error can be caused by the CONFIG_NONPROMISC_DEVMEM (<2.6.27), CONFIG_STRICT_DEVMEM (>=2.6.27) and CONFIG_X86_PAT kernel options. Please check if either is enabled in your kernel before reporting a failure. You can override CONFIG_X86_PAT at boot with the nopat kernel parameter but disabling the other option unfortunately requires a kernel recompile. Sorry!
and after a reboot the card vanished from lspci too :) hard power cycle to get it back which is a bit interesting
Rgds, Iain
flashrom v0.9.2-r1186 on Linux 2.6.35-dt (x86_64), built with libpci 3.1.4, GCC 4.4.3, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1785M loops per second, 10 myus = 10 us, 100 myus = 105 us, 1000 myus = 1012 us, 10000 myus = 10022 us, 4 myus = 4 us, OK. Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 06:02.0). Requested BAR is MEM, 32bit, not prefetchable Probing for AMD Am29F010A/B, 128 KB: skipped. Probing for AMD Am29F002(N)BB, 256 KB: skipped. Probing for AMD Am29F002(N)BT, 256 KB: skipped. Probing for AMD Am29F016D, 2048 KB: skipped. Probing for AMD Am29F040B, 512 KB: skipped. Probing for AMD Am29F080B, 1024 KB: skipped. Probing for AMD Am29LV040B, 512 KB: skipped. Probing for AMD Am29LV081B, 1024 KB: skipped. Probing for AMIC A25L05PT, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L05PU, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L10PT, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L10PU, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L20PT, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L20PU, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L40PT, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L40PU, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L80P, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L16PT, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L16PU, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L512, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L010, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L020, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L040, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L080, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L016, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25L032, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A25LQ032, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for AMIC A29002B, 256 KB: skipped. Probing for AMIC A29002T, 256 KB: skipped. Probing for AMIC A29040B, 512 KB: skipped. Probing for AMIC A49LF040A, 512 KB: skipped. Probing for Atmel AT25DF021, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DF041A, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DF081, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DF081A, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DF161, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DF321, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DF321A, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DF641, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25DQ161, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25F512B, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25FS010, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT25FS040, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT26DF041, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT26DF081A, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT26DF161, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT26DF161A, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT26F004, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT29C512, 64 KB: skipped. Probing for Atmel AT29C010A, 128 KB: skipped. Probing for Atmel AT29C020, 256 KB: skipped. Probing for Atmel AT29C040A, 512 KB: skipped. Probing for Atmel AT45CS1282, 16896 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB011D, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB021D, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB041D, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB081D, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB161D, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB321C, 4224 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB321D, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT45DB642D, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel AT49BV512, 64 KB: skipped. Probing for Atmel AT49F020, 256 KB: skipped. Probing for Atmel AT49F002(N), 256 KB: skipped. Probing for Atmel AT49F002(N)T, 256 KB: skipped. Probing for Bright BM29F040, 512 KB: skipped. Probing for EMST F49B002UA, 256 KB: skipped. Probing for EMST F25L008A, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B05, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B05T, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B10, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B10T, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B20, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B20T, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B40, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B40T, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B80, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B80T, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B16, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B16T, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B32, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B32T, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B64, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25B64T, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25D16, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25F05, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25F10, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25F20, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25F40, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25F80, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25F16, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN25F32, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon EN29F010, 128 KB: skipped. Probing for Eon EN29F002(A)(N)B, 256 KB: skipped. Probing for Eon EN29F002(A)(N)T, 256 KB: skipped. Probing for Fujitsu MBM29F004BC, 512 KB: skipped. Probing for Fujitsu MBM29F004TC, 512 KB: skipped. Probing for Fujitsu MBM29F400BC, 512 KB: skipped. Probing for Fujitsu MBM29F400TC, 512 KB: skipped. Probing for Hyundai HY29F002T, 256 KB: skipped. Probing for Hyundai HY29F002B, 256 KB: skipped. Probing for Hyundai HY29F040A, 512 KB: skipped. Probing for Intel 28F001BX-B, 128 KB: skipped. Probing for Intel 28F001BX-T, 128 KB: skipped. Probing for Intel 28F002BC-T, 256 KB: skipped. Probing for Intel 28F004S5, 512 KB: skipped. Probing for Intel 28F004BV/BE-B, 512 KB: skipped. Probing for Intel 28F004BV/BE-T, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-B, 512 KB: skipped. Probing for Intel 28F400BV/CV/CE-T, 512 KB: skipped. Probing for Intel 82802AB, 512 KB: skipped. Probing for Intel 82802AC, 1024 KB: skipped. Probing for Macronix MX25L512, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L1005, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L2005, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L4005, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L8005, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L1605, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L1635D, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L1635E, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L3205, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L3235D, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L6405, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX25L12805, 16384 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix MX29F001B, 128 KB: skipped. Probing for Macronix MX29F001T, 128 KB: skipped. Probing for Macronix MX29F002B, 256 KB: skipped. Probing for Macronix MX29F002T, 256 KB: skipped. Probing for Macronix MX29F040, 512 KB: skipped. Probing for Macronix MX29LV040, 512 KB: skipped. Probing for MoselVitelic V29C51000B, 64 KB: skipped. Probing for MoselVitelic V29C51000T, 64 KB: skipped. Probing for MoselVitelic V29C51400B, 512 KB: skipped. Probing for MoselVitelic V29C51400T, 512 KB: skipped. Probing for MoselVitelic V29LC51000, 64 KB: skipped. Probing for MoselVitelic V29LC51001, 128 KB: skipped. Probing for MoselVitelic V29LC51002, 256 KB: skipped. Probing for Numonyx M25PE10, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Numonyx M25PE20, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Numonyx M25PE40, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Numonyx M25PE80, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Numonyx M25PE16, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC Pm25LV010, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC Pm25LV016B, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC Pm25LV020, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC Pm25LV040, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC Pm25LV080B, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC Pm25LV512, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC Pm29F002T, 256 KB: skipped. Probing for PMC Pm29F002B, 256 KB: skipped. Probing for PMC Pm39LV010, 128 KB: skipped. Probing for PMC Pm39LV020, 256 KB: skipped. Probing for PMC Pm39LV040, 512 KB: skipped. Probing for PMC Pm49FL002, 256 KB: skipped. Probing for PMC Pm49FL004, 512 KB: skipped. Probing for Sanyo LF25FW203A, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Sharp LHF00L04, 1024 KB: skipped. Probing for Spansion S25FL008A, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Spansion S25FL016A, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25VF016B, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25VF032B, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25VF064C, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25VF040.REMS, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25VF040B, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25LF040A.RES, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25VF040B.REMS, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST25VF080B, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST SST28SF040A, 512 KB: skipped. Probing for SST SST29EE010, 128 KB: skipped. Probing for SST SST29LE010, 128 KB: skipped. Probing for SST SST29EE020A, 256 KB: skipped. Probing for SST SST29LE020, 256 KB: skipped. Probing for SST SST39SF512, 64 KB: skipped. Probing for SST SST39SF010A, 128 KB: skipped. Probing for SST SST39SF020A, 256 KB: skipped. Probing for SST SST39SF040, 512 KB: skipped. Probing for SST SST39VF512, 64 KB: skipped. Probing for SST SST39VF010, 128 KB: skipped. Probing for SST SST39VF020, 256 KB: skipped. Probing for SST SST39VF040, 512 KB: skipped. Probing for SST SST39VF080, 1024 KB: skipped. Probing for SST SST49LF002A/B, 256 KB: skipped. Probing for SST SST49LF003A/B, 384 KB: skipped. Probing for SST SST49LF004A/B, 512 KB: skipped. Probing for SST SST49LF004C, 512 KB: skipped. Probing for SST SST49LF008A, 1024 KB: skipped. Probing for SST SST49LF008C, 1024 KB: skipped. Probing for SST SST49LF016C, 2048 KB: skipped. Probing for SST SST49LF020, 256 KB: skipped. Probing for SST SST49LF020A, 256 KB: skipped. Probing for SST SST49LF040, 512 KB: skipped. Probing for SST SST49LF040B, 512 KB: skipped. Probing for SST SST49LF080A, 1024 KB: skipped. Probing for SST SST49LF160C, 2048 KB: skipped. Probing for ST M25P05-A, 64 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P05.RES, 64 KB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P10-A, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P10.RES, 128 KB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P20, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P40, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P40-old, 512 KB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P80, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P16, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P32, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P64, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25P128, 16384 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25PX32, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M25PX64, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST M29F002B, 256 KB: skipped. Probing for ST M29F002T/NT, 256 KB: skipped. Probing for ST M29F040B, 512 KB: skipped. Probing for ST M29F400BB, 512 KB: skipped. Probing for ST M29F400BT, 512 KB: skipped. Probing for ST M29W010B, 128 KB: skipped. Probing for ST M29W040B, 512 KB: skipped. Probing for ST M29W512B, 64 KB: skipped. Probing for ST M50FLW040A, 512 KB: skipped. Probing for ST M50FLW040B, 512 KB: skipped. Probing for ST M50FLW080A, 1024 KB: skipped. Probing for ST M50FLW080B, 1024 KB: skipped. Probing for ST M50FW002, 256 KB: skipped. Probing for ST M50FW016, 2048 KB: skipped. Probing for ST M50FW040, 512 KB: skipped. Probing for ST M50FW080, 1024 KB: skipped. Probing for ST M50LPW116, 2048 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51001B, 128 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51001T, 128 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51002B, 256 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51002T, 256 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51004B, 512 KB: skipped. Probing for SyncMOS/MoselVitelic {F,S,V}29C51004T, 512 KB: skipped. Probing for SyncMOS/MoselVitelic {S,V}29C31004B, 512 KB: skipped. Probing for SyncMOS/MoselVitelic {S,V}29C31004T, 512 KB: skipped. Probing for TI TMS29F002RB, 256 KB: skipped. Probing for TI TMS29F002RT, 256 KB: skipped. Probing for Winbond W25Q80, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25Q16, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25Q32, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25Q64, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25x10, 128 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25x20, 256 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25x40, 512 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25x80, 1024 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25x16, 2048 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25x32, 4096 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W25x64, 8192 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 KB: skipped. Probing for Winbond W29C020(C)/W29C022, 256 KB: skipped. Probing for Winbond W29C040/P, 512 KB: skipped. Probing for Winbond W29C010(M)/W29C011A/W29EE011/W29EE012, 128 KB: skipped. Probing for Winbond W39V040A, 512 KB: skipped. Probing for Winbond W39V040(F)B, 512 KB: skipped. Probing for Winbond W39V040(F)C, 512 KB: skipped. Probing for Winbond W39V040FA, 512 KB: skipped. Probing for Winbond W39V080A, 1024 KB: skipped. Probing for Winbond W49F002U/N, 256 KB: skipped. Probing for Winbond W49F020, 256 KB: skipped. Probing for Winbond W49V002A, 256 KB: skipped. Probing for Winbond W49V002FA, 256 KB: skipped. Probing for Winbond W39V080FA, 1024 KB: skipped. Probing for Winbond W39V080FA (dual mode), 512 KB: skipped. Probing for AMIC unknown AMIC SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Atmel unknown Atmel SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Eon unknown Eon SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Macronix unknown Macronix SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for PMC unknown PMC SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for SST unknown SST SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for ST unknown ST SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Sanyo unknown Sanyo SPI chip, 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Generic unknown SPI chip (RDID), 0 KB: nicintel_request_spibus: Timeout! Aborting. Probing for Generic unknown SPI chip (REMS), 0 KB: nicintel_request_spibus: Timeout! Aborting. No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically.
On 05.10.2010 18:31, Iain Paton wrote:
Carl-Daniel Hailfinger wrote:
Hi Iain,
your Intel 82540EM which hangs on a flashrom run should spew "Timeout!" messages with this patch. It would be nice if you could tell us how long it waits for each chip probe so I can adjust the timeout value. Please note that this patch will _not_ fix the underlying issue, but I believe that an endless loop on possibly broken hardware is worse than aborting.
Ok, but it's pretty much instant. Just running "time ./flashrom -p nicintel_spi -V" gets me the following time for the whole thing:
real 0m2.109s user 0m2.106s sys 0m0.012s
full log at the end of the mail..
Not really sure what's the best way to get more accurate data if you need it, I'm certainly not getting it with a stopwatch :)
Can you edit nicintel_spi.c and change #define MAX_REQUEST_LOOPS 10000 to #define MAX_REQUEST_LOOPS 1000000 One million loops should be slow enough.
I think you're right in thinking there's some other tweaking needed for this card, after running the probe a couple of times I started getting this:
root@p7fe-64:~/flashrom# ./flashrom -p nicintel_spi -V flashrom v0.9.2-r1186 on Linux 2.6.35-dt (x86_64), built with libpci 3.1.4, GCC 4.4.3, little endian Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 06:02.0). Requested BAR is IO Mapping Intel Gigabit NIC w/ SPI flash, 0x1000 bytes at unaligned 0xfffffffc.
WTF? Looks like the PCI device stopped responding to config space accesses, and thus we read 0xffffffff which is then masked to 0xfffffffc which is not a valid base address for 4 kB mapping.
Error accessing Intel Gigabit NIC w/ SPI flash, 0x1000 bytes at 0xfffffffc /dev/mem mmap failed: Invalid argument In Linux this error can be caused by the CONFIG_NONPROMISC_DEVMEM (<2.6.27), CONFIG_STRICT_DEVMEM (>=2.6.27) and CONFIG_X86_PAT kernel options. Please check if either is enabled in your kernel before reporting a failure. You can override CONFIG_X86_PAT at boot with the nopat kernel parameter but disabling the other option unfortunately requires a kernel recompile. Sorry!
and after a reboot the card vanished from lspci too :) hard power cycle to get it back which is a bit interesting
This was sort of obvious from the point where the card returned 0xffffffff from a config space access. The really interesting question is why the card died in the first place.
Regards, Carl-Daniel
Carl-Daniel Hailfinger wrote:
Can you edit nicintel_spi.c and change #define MAX_REQUEST_LOOPS 10000 to #define MAX_REQUEST_LOOPS 1000000 One million loops should be slow enough.
Ok, so that makes it approx 1 second per device, total run time of 2m29s
root@p7fe-64:~/flashrom# ./flashrom -p nicintel_spi -V flashrom v0.9.2-r1186 on Linux 2.6.35-dt (x86_64), built with libpci 3.1.4, GCC 4.4.3, little endian Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 06:02.0). Requested BAR is IO Mapping Intel Gigabit NIC w/ SPI flash, 0x1000 bytes at unaligned 0xfffffffc.
WTF?
that's not quite what I said, but along the right lines :)
The really interesting question is why the card died in the first place.
yep, however it's not done it again, so maybe just a fluke... I have a few of these cards, so maybe I'll try a different one just to be sure there's nothing odd going on with this one.
Rgds, Iain
Am 05.10.2010 22:42 schrieb Iain Paton:
root@p7fe-64:~/flashrom# ./flashrom -p nicintel_spi -V flashrom v0.9.2-r1186 on Linux 2.6.35-dt (x86_64), built with libpci 3.1.4, GCC 4.4.3, little endian Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 06:02.0).
I have a few of these cards, so maybe I'll try a different one just to be sure there's nothing odd going on with this one.
Here is an updated timeout patch (no functional changes for nicintel_spi). A year has passed, and I'm still trying to find someone who can test and ack it.
GatoLoko: This new patch also addresses the SB600 timeout issue you were seeing.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-bitbang_timeout/ogp_spi.c =================================================================== --- flashrom-bitbang_timeout/ogp_spi.c (Revision 1450) +++ flashrom-bitbang_timeout/ogp_spi.c (Arbeitskopie) @@ -50,9 +50,13 @@ {}, };
-static void ogp_request_spibus(void) +static int ogp_request_spibus(void) { + /* FIXME: Do we have to check if any other SPI accesses are running + * right now? Can the request fail? + */ pci_mmio_writel(1, ogp_spibar + ogp_reg_sel); + return 0; }
static void ogp_release_spibus(void) Index: flashrom-bitbang_timeout/bitbang_spi.c =================================================================== --- flashrom-bitbang_timeout/bitbang_spi.c (Revision 1450) +++ flashrom-bitbang_timeout/bitbang_spi.c (Arbeitskopie) @@ -51,10 +51,11 @@ return bitbang_spi_master->get_miso(); }
-static void bitbang_spi_request_bus(void) +static int bitbang_spi_request_bus(void) { if (bitbang_spi_master->request_bus) - bitbang_spi_master->request_bus(); + return bitbang_spi_master->request_bus(); + return 0; }
static void bitbang_spi_release_bus(void) @@ -99,7 +100,7 @@
register_spi_programmer(&spi_programmer_bitbang);
- /* FIXME: Run bitbang_spi_request_bus here or in programmer init? */ + /* FIXME: Run bitbang_spi_request_bus here or per command? */ bitbang_spi_set_cs(1); bitbang_spi_set_sck(0); bitbang_spi_set_mosi(0); @@ -144,13 +145,15 @@ static int bitbang_spi_send_command(unsigned int writecnt, unsigned int readcnt, const unsigned char *writearr, unsigned char *readarr) { - int i; + int i, ret;
/* FIXME: Run bitbang_spi_request_bus here or in programmer init? * Requesting and releasing the SPI bus is handled in here to allow the * programmer to use its own SPI engine for native accesses. */ - bitbang_spi_request_bus(); + ret = bitbang_spi_request_bus(); + if (ret) + return ret; bitbang_spi_set_cs(0); for (i = 0; i < writecnt; i++) bitbang_spi_readwrite_byte(writearr[i]); Index: flashrom-bitbang_timeout/nicintel_spi.c =================================================================== --- flashrom-bitbang_timeout/nicintel_spi.c (Revision 1450) +++ flashrom-bitbang_timeout/nicintel_spi.c (Arbeitskopie) @@ -58,6 +58,9 @@ // #define FL_BUSY 30 // #define FL_ER 31
+/* 1000000 loops are roughly 1 s. */ +#define MAX_REQUEST_LOOPS 1000000 + uint8_t *nicintel_spibar;
const struct pcidev_status nics_intel_spi[] = { @@ -69,16 +72,27 @@ {}, };
-static void nicintel_request_spibus(void) +static void nicintel_release_spibus(void); + +static int nicintel_request_spibus(void) { uint32_t tmp; + int i = 0;
tmp = pci_mmio_readl(nicintel_spibar + FLA); tmp |= 1 << FL_REQ; pci_mmio_writel(tmp, nicintel_spibar + FLA);
/* Wait until we are allowed to use the SPI bus. */ - while (!(pci_mmio_readl(nicintel_spibar + FLA) & (1 << FL_GNT))) ; + while (!(pci_mmio_readl(nicintel_spibar + FLA) & (1 << FL_GNT))) { + if (i++ > MAX_REQUEST_LOOPS) { + nicintel_release_spibus(); + msg_perr("%s: Timeout! Aborting.\n", __func__); + return TIMEOUT_ERROR; + } + } + + return 0; }
static void nicintel_release_spibus(void) Index: flashrom-bitbang_timeout/sb600spi.c =================================================================== --- flashrom-bitbang_timeout/sb600spi.c (Revision 1450) +++ flashrom-bitbang_timeout/sb600spi.c (Arbeitskopie) @@ -80,12 +80,19 @@ return ret; }
-static void execute_command(void) +static int execute_command(void) { + int timeout = 10000000; + mmio_writeb(mmio_readb(sb600_spibar + 2) | 1, sb600_spibar + 2);
- while (mmio_readb(sb600_spibar + 2) & 1) + while ((mmio_readb(sb600_spibar + 2) & 1) && --timeout) ; + if (!timeout) { + msg_perr("SB600: execute_command timeout!\n"); + return TIMEOUT_ERROR; + } + return 0; }
static int sb600_spi_send_command(unsigned int writecnt, unsigned int readcnt, @@ -96,6 +103,7 @@ unsigned char cmd = *writearr++; unsigned int readoffby1; unsigned char readwrite; + int ret;
writecnt--;
@@ -144,7 +152,9 @@ return SPI_PROGRAMMER_ERROR;
msg_pspew("Executing: \n"); - execute_command(); + ret = execute_command(); + if (ret) + return ret;
/* * After the command executed, we should find out the index of the Index: flashrom-bitbang_timeout/mcp6x_spi.c =================================================================== --- flashrom-bitbang_timeout/mcp6x_spi.c (Revision 1450) +++ flashrom-bitbang_timeout/mcp6x_spi.c (Arbeitskopie) @@ -39,22 +39,38 @@ #define MCP6X_SPI_REQUEST 0 #define MCP6X_SPI_GRANT 8
+/* 1000000 loops are roughly 1 s. */ +#define MAX_REQUEST_LOOPS 1000000 + void *mcp6x_spibar = NULL;
/* Cached value of last GPIO state. */ static uint8_t mcp_gpiostate;
-static void mcp6x_request_spibus(void) +static void mcp6x_release_spibus(void); + +static int mcp6x_request_spibus(void) { + int i = 0; + mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); mcp_gpiostate |= 1 << MCP6X_SPI_REQUEST; mmio_writeb(mcp_gpiostate, mcp6x_spibar + 0x530);
/* Wait until we are allowed to use the SPI bus. */ - while (!(mmio_readw(mcp6x_spibar + 0x530) & (1 << MCP6X_SPI_GRANT))) ; + while (!(mmio_readw(mcp6x_spibar + 0x530) & (1 << MCP6X_SPI_GRANT))) { + if (i++ > MAX_REQUEST_LOOPS) { + /* Update the cache. */ + mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); + mcp6x_release_spibus(); + msg_perr("%s: Timeout! Aborting.\n", __func__); + return TIMEOUT_ERROR; + } + }
/* Update the cache. */ mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); + return 0; }
static void mcp6x_release_spibus(void) Index: flashrom-bitbang_timeout/programmer.h =================================================================== --- flashrom-bitbang_timeout/programmer.h (Revision 1450) +++ flashrom-bitbang_timeout/programmer.h (Arbeitskopie) @@ -137,7 +137,7 @@ void (*set_sck) (int val); void (*set_mosi) (int val); int (*get_miso) (void); - void (*request_bus) (void); + int (*request_bus) (void); void (*release_bus) (void); };
Carl-Daniel Hailfinger wrote:
Am 05.10.2010 22:42 schrieb Iain Paton:
root@p7fe-64:~/flashrom# ./flashrom -p nicintel_spi -V flashrom v0.9.2-r1186 on Linux 2.6.35-dt (x86_64), built with libpci 3.1.4, GCC 4.4.3, little endian Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 06:02.0).
I have a few of these cards, so maybe I'll try a different one just to be sure there's nothing odd going on with this one.
Here is an updated timeout patch (no functional changes for nicintel_spi). A year has passed, and I'm still trying to find someone who can test and ack it.
Apologies if I missed this previously. Anyway, card is as follows:
30:00.0 Ethernet controller: Intel Corporation 82540EM Gigabit Ethernet Controller (rev 02) Subsystem: Intel Corporation PRO/1000 MT Desktop Adapter Flags: bus master, 66MHz, medium devsel, latency 52, IRQ 17 Memory at dfa20000 (32-bit, non-prefetchable) [size=128K] Memory at dfa00000 (32-bit, non-prefetchable) [size=128K] I/O ports at 3000 [size=64] [virtual] Expansion ROM at c0100000 [disabled] [size=128K] Capabilities: [dc] Power Management version 2 Capabilities: [e4] PCI-X non-bridge device Capabilities: [f0] MSI: Enable- Count=1/1 Maskable- 64bit+ Kernel driver in use: e1000 Kernel modules: e1000
the spi device on the card is an AT25F1024N which doesn't appear to be supported anyway..
tried it on a couple of these cards with the same results
So, r1450 plus your patch, plus this:
--- nicintel_spi.c~ 2011-10-16 06:45:52.000000000 +0100 +++ nicintel_spi.c 2011-10-16 06:47:15.737992625 +0100 @@ -68,6 +68,7 @@ {PCI_VENDOR_ID_INTEL, 0x1076, OK, "Intel", "82541GI Gigabit Ethernet Controller"}, {PCI_VENDOR_ID_INTEL, 0x107c, OK, "Intel", "82541PI Gigabit Ethernet Controller"}, {PCI_VENDOR_ID_INTEL, 0x10b9, OK, "Intel", "82572EI Gigabit Ethernet Controller"}, + {PCI_VENDOR_ID_INTEL, 0x100e, OK, "Intel", "82540EM Gigabit Ethernet Controller"},
{}, };
gives:
root@newinstall:~/flashrom# ./flashrom -p nicintel_spi -V -r rom.bin flashrom v0.9.4-r1450 on Linux 3.0.0-dt (i686), built with libpci 3.1.8, GCC 4.5.2, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1791M loops per second, 10 myus = 11 us, 100 myus = 225 us, 1000 myus = 1053 us, 10000 myus = 10150 us, 4 myus = 6 us, OK. Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 30:00.0). Requested BAR is MEM, 32bit, not prefetchable Probing for AMIC A25L05PT, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L05PU, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L10PT, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L10PU, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L20PT, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L20PU, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L40PT, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L40PU, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L80P, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L16PT, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L16PU, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L512, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L020, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L080, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L016, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L032, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25LQ032, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF021, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF041A, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF081, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF081A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF161, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF321, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF321A, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF641, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DQ161, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25F512B, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25FS010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25FS040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF041, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF081A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF161, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF161A, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26F004, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45CS1282, 16896 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB011D, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB021D, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB041D, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB081D, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB161D, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB321C, 4224 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB321D, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB642D, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for EMST F25L008A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B05, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B05T, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B10T, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B20T, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B40T, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B80T, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B16T, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B32T, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B64T, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F05, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q80(A), 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q32(A/B), 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q128, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25QH16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L512, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1005, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L2005, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L4005, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L8005, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1605, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1635D, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1635E, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L3205, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L3235D, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L6405, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L12805, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV016B, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV020, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV080B, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV512, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Sanyo LF25FW203A, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL004A, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL008A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL016A, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL032A, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL064A, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25LF040A, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25LF080A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF016B, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF032B, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF064C, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF040B, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF040B.REMS, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF080B, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P05-A, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P05, 64 kB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P10-A, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P10, 128 kB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P40-old, 512 kB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P128, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25PX16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25PX32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25PX64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q128, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC unknown AMIC SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel unknown Atmel SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon unknown Eon SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix unknown Macronix SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC unknown PMC SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST unknown SST SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST unknown ST SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Generic unknown SPI chip (RDID), 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Generic unknown SPI chip (REMS), 0 kB: nicintel_request_spibus: Timeout! Aborting.
No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically. root@newinstall:~/flashrom#
On Fri, 14 Oct 2011 11:19:04 +0100 Iain Paton selsinork@gmail.com wrote:
the spi device on the card is an AT25F1024N which doesn't appear to be supported anyway..
http://www.flashrom.org/pipermail/flashrom/2011-July/007449.html
Stefan Tauner wrote:
On Fri, 14 Oct 2011 11:19:04 +0100 Iain Paton selsinork@gmail.com wrote:
the spi device on the card is an AT25F1024N which doesn't appear to be supported anyway..
http://www.flashrom.org/pipermail/flashrom/2011-July/007449.html
Thanks for those.. Obvious that I've not been paying enough attention to the ML :)
Anyway, having applied your four on top of what I have the result is much the same. I do at least see it probing for the AT25F1024(A) now.
Seems that this timeout is causing it not to even get that far. I've tried tweaking MAX_REQUEST_LOOPS to no avail, even x100 has the same result.
Other suggestions welcome !
Iain.
./flashrom -p nicintel_spi -V flashrom v0.9.4-r1450 on Linux 3.0.0-dt (i686), built with libpci 3.1.8, GCC 4.5.2, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1793M loops per second, 10 myus = 10 us, 100 myus = 225 us, 1000 myus = 1188 us, 10000 myus = 10461 us, 4 myus = 5 us, OK. Initializing nicintel_spi programmer Found "Intel 82540EM Gigabit Ethernet Controller" (8086:100e, BDF 30:00.0). Requested BAR is MEM, 32bit, not prefetchable Probing for AMIC A25L05PT, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L05PU, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L10PT, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L10PU, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L20PT, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L20PU, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L40PT, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L40PU, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L80P, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L16PT, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L16PU, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L512, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L020, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L080, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L016, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25L032, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC A25LQ032, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF021, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF041A, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF081, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF081A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF161, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF321, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF321A, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DF641, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25DQ161, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25F512, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25F512A, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25F512B, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25F1024(A), 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25FS010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT25FS040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF041, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF081A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF161, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26DF161A, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT26F004, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45CS1282, 16896 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB011D, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB021D, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB041D, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB081D, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB161D, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB321C, 4224 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB321D, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel AT45DB642D, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for EMST F25L008A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B05, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B05T, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B10T, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B20T, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B40T, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B80T, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B16T, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B32T, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25B64T, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F05, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25F32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q80(A), 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q32(A/B), 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25Q128, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon EN25QH16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L512, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1005, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L2005, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L4005, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L8005, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1605, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1635D, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L1635E, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L3205, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L3235D, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L6405, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix MX25L12805, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Numonyx M25PE16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV016B, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV020, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV080B, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC Pm25LV512, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Sanyo LF25FW203A, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL004A, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL008A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL016A, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL032A, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Spansion S25FL064A, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25LF040A, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25LF080A, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF010, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF016B, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF032B, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF064C, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF040, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF040B, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF040B.REMS, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST SST25VF080B, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P05-A, 64 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P05, 64 kB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P10-A, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P10, 128 kB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P40-old, 512 kB: nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting. nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25P128, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25PX16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25PX32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST M25PX64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25Q128, 16384 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X10, 128 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X20, 256 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X40, 512 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X80, 1024 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X16, 2048 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X32, 4096 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Winbond W25X64, 8192 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for AMIC unknown AMIC SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Atmel unknown Atmel SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Eon unknown Eon SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Macronix unknown Macronix SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for PMC unknown PMC SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for SST unknown SST SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for ST unknown ST SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Sanyo unknown Sanyo SPI chip, 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Generic unknown SPI chip (RDID), 0 kB: nicintel_request_spibus: Timeout! Aborting.
Probing for Generic unknown SPI chip (REMS), 0 kB: nicintel_request_spibus: Timeout! Aborting.
No EEPROM/flash device found. Note: flashrom can never write if the flash chip isn't found automatically.
On Fri, 14 Oct 2011 17:48:27 +0100 Iain Paton selsinork@gmail.com wrote:
Stefan Tauner wrote:
On Fri, 14 Oct 2011 11:19:04 +0100 Iain Paton selsinork@gmail.com wrote:
the spi device on the card is an AT25F1024N which doesn't appear to be supported anyway..
http://www.flashrom.org/pipermail/flashrom/2011-July/007449.html
Thanks for those.. Obvious that I've not been paying enough attention to the ML :)
Anyway, having applied your four on top of what I have the result is much the same. I do at least see it probing for the AT25F1024(A) now.
Seems that this timeout is causing it not to even get that far. I've tried tweaking MAX_REQUEST_LOOPS to no avail, even x100 has the same result.
Other suggestions welcome !
Iain.
i have played with an unsupported intel nic too, see http://www.flashrom.org/pipermail/flashrom/2011-August/007475.html especially the second mail. your problem sounds similar. maybe you need an enable procedure too (different from the one in nicintel_spi_init), or you dont really have the at25f spi chip? i have not looked at the data sheet of (your) 82540EM (yet), but it might help if one does... ;)
please keep us updated and thanks for the at25f testing! no idea atm why the registers are pretty printed two times, but i will look in to it later.
Stefan Tauner wrote:
i have played with an unsupported intel nic too, see http://www.flashrom.org/pipermail/flashrom/2011-August/007475.html especially the second mail.
lol.. I've just been reading those since I have in my other hand a 82546EB based dual port PCI-X card with parallel rom on it. Of course the rom on that isn't supported either :) It's another Atmel, this time a AT49BV002AN.. trivially adding it to flashchips.c isn't getting me anywhere, so I was just investigating the board enable stuff.
your problem sounds similar. maybe you need an enable procedure too (different from the one in nicintel_spi_init),
could be..
or you dont really have
the at25f spi chip?
while I'll admit that's possible, have a look and tell me what you think http://imagebin.org/179023
i have not looked at the data sheet of (your) 82540EM (yet), but it might help if one does... ;)
That very datasheet appears to be what was used to write the driver, the link to it is in the top of nicintel_spi.c and that's where I got the hope that it could maybe work :)
please keep us updated and thanks for the at25f testing!
np, I'm happy to test stuff.
Iain
On Fri, 14 Oct 2011 19:55:10 +0100 Iain Paton selsinork@gmail.com wrote:
Stefan Tauner wrote:
i have played with an unsupported intel nic too, see http://www.flashrom.org/pipermail/flashrom/2011-August/007475.html especially the second mail.
lol.. I've just been reading those since I have in my other hand a 82546EB based dual port PCI-X card with parallel rom on it. Of course the rom on that isn't supported either :) It's another Atmel, this time a .. trivially adding it to flashchips.c isn't getting me anywhere, so I was just investigating the board enable stuff.
AT49BV002A(N)'s ID is 0x07 afaics and that's equal to AT49F002(N)... hm. what did you try? does probing with the nicintel_spi code help?
your problem sounds similar. maybe you need an enable procedure too (different from the one in nicintel_spi_init),
could be..
or you dont really have
the at25f spi chip?
while I'll admit that's possible, have a look and tell me what you think http://imagebin.org/179023
the upload/site seems broken to me, but i guess you are able to read, so... (i was thinking of a possible misunderstanding on my side previously). :)
i have not looked at the data sheet of (your) 82540EM (yet), but it might help if one does... ;)
That very datasheet appears to be what was used to write the driver, the link to it is in the top of nicintel_spi.c and that's where I got the hope that it could maybe work :)
that data sheet contains much more than that... and also parallel flash interface descriptions. but... appendix paragraph B.2 says: The 82540EP/EM does not support a parallel FLASH interface.
so it is certainly not exactly the same problem i had; and i cant help you further right now, sorry.
Stefan Tauner wrote:
AT49BV002A(N)'s ID is 0x07 afaics and that's equal to AT49F002(N)... hm.
tried 7 & 8, 8 for the T version according to the datasheet, but nothing to lose trying both
what did you try? does probing with the nicintel_spi code help?
didn't appear to, but I'm assuming that when you did it you left it stuck in the loop while you tried the nicintel code ? Carl-Daniel's patch means it doesn't get stuck anymore, so I need to either revert that or try something else.
so it is certainly not exactly the same problem i had; and i cant help you further right now, sorry.
np, with these being pci cards their usefulness is limited to me nowadays, in fact I think they've sat in a box since last time :) so it's mostly curiosity on my part, no burning need for me to solve it.
Iain
On Fri, 14 Oct 2011 23:15:09 +0100 Iain Paton selsinork@gmail.com wrote:
Stefan Tauner wrote:
AT49BV002A(N)'s ID is 0x07 afaics and that's equal to AT49F002(N)... hm.
tried 7 & 8, 8 for the T version according to the datasheet, but nothing to lose trying both
does the log show any other result than 0xff/0x00 (for any chip, if you probe for all of them)? i think you have not posted a log for that one, have you?
what did you try? does probing with the nicintel_spi code help?
didn't appear to, but I'm assuming that when you did it you left it stuck in the loop while you tried the nicintel code ? Carl-Daniel's patch means it doesn't get stuck anymore, so I need to either revert that or try something else.
no, i aborted after entering the loop. the enable method is executed at startup of the programmer... hm. maybe it gets reversed since then. carldani added some kind of roll-back mechanism where the code registers certain actions in init functions etc. that are reversed on shutdown. but i think ctrl+c just aborts anyway... after looking at the code... the comments in nicintel_spic.c explain that the roll-back thingy is not possible, but it does it manually in the shutdown function, but i am quite sure that this is not called at all when you abort while probing... so it should be ok. *shrug*
so it is certainly not exactly the same problem i had; and i cant help you further right now, sorry.
np, with these being pci cards their usefulness is limited to me nowadays, in fact I think they've sat in a box since last time :) so it's mostly curiosity on my part, no burning need for me to solve it.
that was my motivation too... and that's not a very strong one ;)
Hi everyone,
sorry for resurrecting this patch from the dead.
Ian: No need to test again, I believe something in your hardware may have been fundamentally broken. I have no idea how to debug it, but failing/aborting is better than hanging, so I think I'll merge this patch.
GatoLoko: This patch will probably change the hang into a really slow abort. Still, aborting is better than hanging.
Am 15.10.2011 09:32 schrieb Stefan Tauner:
On Fri, 14 Oct 2011 23:15:09 +0100 Iain Paton selsinork@gmail.com wrote:
Stefan Tauner wrote:
AT49BV002A(N)'s ID is 0x07 afaics and that's equal to AT49F002(N)... hm.
tried 7 & 8, 8 for the T version according to the datasheet, but nothing to lose trying both
does the log show any other result than 0xff/0x00 (for any chip, if you probe for all of them)? i think you have not posted a log for that one, have you?
what did you try? does probing with the nicintel_spi code help?
didn't appear to, but I'm assuming that when you did it you left it stuck in the loop while you tried the nicintel code ? Carl-Daniel's patch means it doesn't get stuck anymore, so I need to either revert that or try something else.
no, i aborted after entering the loop. the enable method is executed at startup of the programmer... hm. maybe it gets reversed since then. carldani added some kind of roll-back mechanism where the code registers certain actions in init functions etc. that are reversed on shutdown. but i think ctrl+c just aborts anyway... after looking at the code... the comments in nicintel_spic.c explain that the roll-back thingy is not possible, but it does it manually in the shutdown function, but i am quite sure that this is not called at all when you abort while probing... so it should be ok. *shrug*
so it is certainly not exactly the same problem i had; and i cant help you further right now, sorry.
np, with these being pci cards their usefulness is limited to me nowadays, in fact I think they've sat in a box since last time :) so it's mostly curiosity on my part, no burning need for me to solve it.
that was my motivation too... and that's not a very strong one ;)
Updated version of the timeout patch.
Abort controller accesses which take too long instead of hanging indefinitely.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-bitbang_timeout/ogp_spi.c =================================================================== --- flashrom-bitbang_timeout/ogp_spi.c (Revision 1781) +++ flashrom-bitbang_timeout/ogp_spi.c (Arbeitskopie) @@ -53,9 +53,13 @@ {0}, };
-static void ogp_request_spibus(void) +static int ogp_request_spibus(void) { + /* FIXME: Do we have to check if any other SPI accesses are running + * right now? Can the request fail? + */ pci_mmio_writel(1, ogp_spibar + ogp_reg_sel); + return 0; }
static void ogp_release_spibus(void) Index: flashrom-bitbang_timeout/bitbang_spi.c =================================================================== --- flashrom-bitbang_timeout/bitbang_spi.c (Revision 1781) +++ flashrom-bitbang_timeout/bitbang_spi.c (Arbeitskopie) @@ -46,10 +46,11 @@ return master->get_miso(); }
-static void bitbang_spi_request_bus(const struct bitbang_spi_master * const master) +static int bitbang_spi_request_bus(const struct bitbang_spi_master * const master) { if (master->request_bus) - master->request_bus(); + return master->request_bus(); + return 0; }
static void bitbang_spi_release_bus(const struct bitbang_spi_master * const master) @@ -136,14 +137,16 @@ const unsigned char *writearr, unsigned char *readarr) { - int i; + int i, ret; const struct bitbang_spi_master *master = flash->pgm->spi.data;
/* FIXME: Run bitbang_spi_request_bus here or in programmer init? * Requesting and releasing the SPI bus is handled in here to allow the * programmer to use its own SPI engine for native accesses. */ - bitbang_spi_request_bus(master); + ret = bitbang_spi_request_bus(master); + if (ret) + return ret; bitbang_spi_set_cs(master, 0); for (i = 0; i < writecnt; i++) bitbang_spi_rw_byte(master, writearr[i]); Index: flashrom-bitbang_timeout/nicintel_spi.c =================================================================== --- flashrom-bitbang_timeout/nicintel_spi.c (Revision 1781) +++ flashrom-bitbang_timeout/nicintel_spi.c (Arbeitskopie) @@ -71,6 +71,9 @@ // #define FL_BUSY 30 // #define FL_ER 31
+/* 1000000 loops are roughly 1 s. */ +#define MAX_REQUEST_LOOPS 1000000 + uint8_t *nicintel_spibar;
const struct dev_entry nics_intel_spi[] = { @@ -83,16 +86,27 @@ {0}, };
-static void nicintel_request_spibus(void) +static void nicintel_release_spibus(void); + +static int nicintel_request_spibus(void) { uint32_t tmp; + int i = 0;
tmp = pci_mmio_readl(nicintel_spibar + FLA); tmp |= 1 << FL_REQ; pci_mmio_writel(tmp, nicintel_spibar + FLA);
/* Wait until we are allowed to use the SPI bus. */ - while (!(pci_mmio_readl(nicintel_spibar + FLA) & (1 << FL_GNT))) ; + while (!(pci_mmio_readl(nicintel_spibar + FLA) & (1 << FL_GNT))) { + if (i++ > MAX_REQUEST_LOOPS) { + nicintel_release_spibus(); + msg_perr("%s: Timeout! Aborting.\n", __func__); + return TIMEOUT_ERROR; + } + } + + return 0; }
static void nicintel_release_spibus(void) Index: flashrom-bitbang_timeout/sb600spi.c =================================================================== --- flashrom-bitbang_timeout/sb600spi.c (Revision 1781) +++ flashrom-bitbang_timeout/sb600spi.c (Arbeitskopie) @@ -159,12 +159,19 @@ return ret; }
-static void execute_command(void) +static int execute_command(void) { + int timeout = 1000000; + mmio_writeb(mmio_readb(sb600_spibar + 2) | 1, sb600_spibar + 2);
- while (mmio_readb(sb600_spibar + 2) & 1) + while ((mmio_readb(sb600_spibar + 2) & 1) && --timeout) ; + if (!timeout) { + msg_perr("SB600: execute_command timeout!\n"); + return TIMEOUT_ERROR; + } + return 0; }
static int sb600_spi_send_command(struct flashctx *flash, unsigned int writecnt, @@ -177,6 +184,7 @@ unsigned char cmd = *writearr++; unsigned int readoffby1; unsigned char readwrite; + int ret;
writecnt--;
@@ -225,7 +233,9 @@ return SPI_PROGRAMMER_ERROR;
msg_pspew("Executing: \n"); - execute_command(); + ret = execute_command(); + if (ret) + return ret;
/* * After the command executed, we should find out the index of the Index: flashrom-bitbang_timeout/mcp6x_spi.c =================================================================== --- flashrom-bitbang_timeout/mcp6x_spi.c (Revision 1781) +++ flashrom-bitbang_timeout/mcp6x_spi.c (Arbeitskopie) @@ -40,22 +40,38 @@ #define MCP6X_SPI_REQUEST 0 #define MCP6X_SPI_GRANT 8
+/* 1000000 loops are roughly 1 s. */ +#define MAX_REQUEST_LOOPS 1000000 + void *mcp6x_spibar = NULL;
/* Cached value of last GPIO state. */ static uint8_t mcp_gpiostate;
-static void mcp6x_request_spibus(void) +static void mcp6x_release_spibus(void); + +static int mcp6x_request_spibus(void) { + int i = 0; + mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); mcp_gpiostate |= 1 << MCP6X_SPI_REQUEST; mmio_writeb(mcp_gpiostate, mcp6x_spibar + 0x530);
/* Wait until we are allowed to use the SPI bus. */ - while (!(mmio_readw(mcp6x_spibar + 0x530) & (1 << MCP6X_SPI_GRANT))) ; + while (!(mmio_readw(mcp6x_spibar + 0x530) & (1 << MCP6X_SPI_GRANT))) { + if (i++ > MAX_REQUEST_LOOPS) { + /* Update the cache. */ + mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); + mcp6x_release_spibus(); + msg_perr("%s: Timeout! Aborting.\n", __func__); + return TIMEOUT_ERROR; + } + }
/* Update the cache. */ mcp_gpiostate = mmio_readb(mcp6x_spibar + 0x530); + return 0; }
static void mcp6x_release_spibus(void) Index: flashrom-bitbang_timeout/programmer.h =================================================================== --- flashrom-bitbang_timeout/programmer.h (Revision 1781) +++ flashrom-bitbang_timeout/programmer.h (Arbeitskopie) @@ -157,7 +157,7 @@ void (*set_sck) (int val); void (*set_mosi) (int val); int (*get_miso) (void); - void (*request_bus) (void); + int (*request_bus) (void); void (*release_bus) (void); /* Length of half a clock period in usecs. */ unsigned int half_period;
El 29/04/14 08:32, Carl-Daniel Hailfinger escribió:
Hi everyone,
sorry for resurrecting this patch from the dead.
Ian: No need to test again, I believe something in your hardware may have been fundamentally broken. I have no idea how to debug it, but failing/aborting is better than hanging, so I think I'll merge this patch.
GatoLoko: This patch will probably change the hang into a really slow abort. Still, aborting is better than hanging.
This definitely works a lot faster than my attempt to adapt the old patch to the new tree. It takes under 5 minutes for a full run with this version while the old one takes over half an hour. I'd say each chip probes for under 2 seconds.
Still, I see three problem:
1.- If you run flashrom without verbose parameters all you get in the terminal is a lot of "SB600: execute_command timeout!", without context, without telling it's probing for chips, but then the log (with -o file) shows the probing before the timeout failing as "Probing for AMIC A25L05PT, 64 kB: SB600: execute_command timeout!".
2.- I got a lot of "FIFO pointer corruption! Pointer is 0, wanted 3 Something else is accessing the flash chip and causes random corruption. Please stop all applications and drivers and IPMI which access the flash chip." but as far as I know there is no other application or driver accessing the chip. May it be attempting to probe the next chip before fully closing/stopping/timeuoting the previous attempt?
3.- My chip isn't detected and I'm unsure whether that's the correct behavior or not (shouldn't the Macronix MX25L4005APC-12G be suported as a MX25L4005(A/C)?)
Attached are two log, one with -VVV and other without.
Stefan Tauner wrote:
On Fri, 14 Oct 2011 11:19:04 +0100 Iain Paton selsinork@gmail.com wrote:
the spi device on the card is an AT25F1024N which doesn't appear to be supported anyway..
http://www.flashrom.org/pipermail/flashrom/2011-July/007449.html
on a slightly different note, I have a different card with an AT25F1024AN on it, this one is a dual port 82571EB that we already know works ok with nicintel_spi
20:00.0 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06) Subsystem: Hewlett-Packard Company NC360T PCI Express Dual Port Gigabit Server Adapter Flags: bus master, fast devsel, latency 0, IRQ 47 Memory at dfa20000 (32-bit, non-prefetchable) [size=128K] Memory at dfa00000 (32-bit, non-prefetchable) [size=128K] I/O ports at 3000 [size=32] [virtual] Expansion ROM at c0100000 [disabled] [size=128K] Capabilities: [c8] Power Management version 2 Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [e0] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [140] Device Serial Number 00-1b-78-ff-ff-57-0c-14 Kernel driver in use: e1000e Kernel modules: e1000e
20:00.1 Ethernet controller: Intel Corporation 82571EB Gigabit Ethernet Controller (rev 06) Subsystem: Hewlett-Packard Company NC360T PCI Express Dual Port Gigabit Server Adapter Flags: bus master, fast devsel, latency 0, IRQ 48 Memory at dfa60000 (32-bit, non-prefetchable) [size=128K] Memory at dfa40000 (32-bit, non-prefetchable) [size=128K] I/O ports at 3020 [size=32] [virtual] Expansion ROM at c0120000 [disabled] [size=128K] Capabilities: [c8] Power Management version 2 Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+ Capabilities: [e0] Express Endpoint, MSI 00 Capabilities: [100] Advanced Error Reporting Capabilities: [140] Device Serial Number 00-1b-78-ff-ff-57-0c-14 Kernel driver in use: e1000e Kernel modules: e1000e
The log of a read/erase/write/verify is attached, which hopefully helps validate your 25f* changes !
Iain
./flashrom -p nicintel_spi:pci=20:00.0 -V -r rom.bin
flashrom v0.9.4-r1450 on Linux 3.0.0-dt (i686), built with libpci 3.1.8, GCC 4.5.2, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1794M loops per second, 10 myus = 10 us, 100 myus = 185 us, 1000 myus = 1058 us, 10000 myus = 10144 us, 4 myus = 5 us, OK. Initializing nicintel_spi programmer Found "Intel 82571EB Gigabit Ethernet Controller" (8086:105e, BDF 20:00.0). Requested BAR is MEM, 32bit, not prefetchable Probing for AMIC A25L05PT, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L05PU, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PT, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PU, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PT, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PU, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PT, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PU, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L80P, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PT, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PU, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L080, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L016, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25LQ032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF021, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF041A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF641, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DQ161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F512, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512A, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512B, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F1024(A), 128 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI) on nicintel_spi. Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Probing for Atmel AT25FS010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25FS040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF041, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26F004, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45CS1282, 16896 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB011D, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB021D, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB041D, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB081D, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB161D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321C, 4224 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB642D, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for EMST F25L008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05T, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10T, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20T, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40T, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80T, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16T, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32T, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64T, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q80(A), 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q32(A/B), 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25QH16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1005, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L2005, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L4005, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L8005, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1605, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635E, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3205, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3235D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L6405, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L12805, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo LF25FW203A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL004A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL016A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL032A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL064A, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF032B, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF064C, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05-A, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05, 64 kB: probe_spi_res1: id 0xff Probing for ST M25P10-A, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P10, 128 kB: probe_spi_res1: id 0xff Probing for ST M25P20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40-old, 512 kB: probe_spi_res1: id 0xff Probing for ST M25P80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon unknown Eon SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC unknown PMC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST unknown SST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST unknown ST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (RDID), 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI). Reading flash... done.
root@newinstall:~/flashrom# ./flashrom -p nicintel_spi:pci=20:00.0 -V -E
flashrom v0.9.4-r1450 on Linux 3.0.0-dt (i686), built with libpci 3.1.8, GCC 4.5.2, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1794M loops per second, 10 myus = 10 us, 100 myus = 139 us, 1000 myus = 1048 us, 10000 myus = 10126 us, 4 myus = 12 us, OK. Initializing nicintel_spi programmer Found "Intel 82571EB Gigabit Ethernet Controller" (8086:105e, BDF 20:00.0). Requested BAR is MEM, 32bit, not prefetchable Probing for AMIC A25L05PT, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L05PU, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PT, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PU, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PT, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PU, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PT, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PU, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L80P, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PT, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PU, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L080, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L016, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25LQ032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF021, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF041A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF641, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DQ161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F512, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512A, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512B, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F1024(A), 128 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI) on nicintel_spi. Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Probing for Atmel AT25FS010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25FS040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF041, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26F004, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45CS1282, 16896 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB011D, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB021D, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB041D, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB081D, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB161D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321C, 4224 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB642D, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for EMST F25L008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05T, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10T, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20T, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40T, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80T, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16T, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32T, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64T, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q80(A), 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q32(A/B), 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25QH16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1005, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L2005, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L4005, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L8005, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1605, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635E, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3205, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3235D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L6405, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L12805, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo LF25FW203A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL004A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL016A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL032A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL064A, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF032B, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF064C, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05-A, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05, 64 kB: probe_spi_res1: id 0xff Probing for ST M25P10-A, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P10, 128 kB: probe_spi_res1: id 0xff Probing for ST M25P20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40-old, 512 kB: probe_spi_res1: id 0xff Probing for ST M25P80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon unknown Eon SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC unknown PMC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST unknown SST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST unknown ST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (RDID), 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI). Erasing and writing flash chip... Trying erase function 0... 0x000000-0x007fff:E, 0x008000-0x00ffff:E, 0x010000-0x017fff:E, 0x018000-0x01ffff:E Erase/write done.
root@newinstall:~/flashrom# ./flashrom -p nicintel_spi:pci=20:00.0 -V -w rom.bin
flashrom v0.9.4-r1450 on Linux 3.0.0-dt (i686), built with libpci 3.1.8, GCC 4.5.2, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1794M loops per second, 10 myus = 10 us, 100 myus = 144 us, 1000 myus = 1230 us, 10000 myus = 10129 us, 4 myus = 12 us, OK. Initializing nicintel_spi programmer Found "Intel 82571EB Gigabit Ethernet Controller" (8086:105e, BDF 20:00.0). Requested BAR is MEM, 32bit, not prefetchable Probing for AMIC A25L05PT, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L05PU, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PT, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PU, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PT, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PU, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PT, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PU, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L80P, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PT, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PU, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L080, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L016, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25LQ032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF021, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF041A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF641, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DQ161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F512, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512A, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512B, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F1024(A), 128 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI) on nicintel_spi. Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Probing for Atmel AT25FS010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25FS040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF041, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26F004, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45CS1282, 16896 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB011D, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB021D, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB041D, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB081D, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB161D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321C, 4224 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB642D, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for EMST F25L008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05T, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10T, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20T, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40T, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80T, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16T, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32T, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64T, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q80(A), 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q32(A/B), 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25QH16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1005, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L2005, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L4005, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L8005, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1605, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635E, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3205, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3235D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L6405, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L12805, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo LF25FW203A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL004A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL016A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL032A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL064A, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF032B, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF064C, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05-A, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05, 64 kB: probe_spi_res1: id 0xff Probing for ST M25P10-A, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P10, 128 kB: probe_spi_res1: id 0xff Probing for ST M25P20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40-old, 512 kB: probe_spi_res1: id 0xff Probing for ST M25P80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon unknown Eon SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC unknown PMC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST unknown SST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST unknown ST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (RDID), 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI). Reading old flash chip contents... done. Erasing and writing flash chip... Trying erase function 0... 0x000000-0x007fff:W, 0x008000-0x00ffff:W, 0x010000-0x017fff:W, 0x018000-0x01ffff:S Erase/write done. Verifying flash... VERIFIED.
root@newinstall:~/flashrom# ./flashrom -p nicintel_spi:pci=20:00.0 -V -v rom.bin
flashrom v0.9.4-r1450 on Linux 3.0.0-dt (i686), built with libpci 3.1.8, GCC 4.5.2, little endian flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OS timer resolution is 1 usecs, 1794M loops per second, 10 myus = 10 us, 100 myus = 113 us, 1000 myus = 1120 us, 10000 myus = 10127 us, 4 myus = 12 us, OK. Initializing nicintel_spi programmer Found "Intel 82571EB Gigabit Ethernet Controller" (8086:105e, BDF 20:00.0). Requested BAR is MEM, 32bit, not prefetchable Probing for AMIC A25L05PT, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L05PU, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PT, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L10PU, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PT, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L20PU, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PT, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L40PU, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L80P, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PT, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L16PU, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L080, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L016, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25L032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC A25LQ032, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF021, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF041A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF321A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DF641, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25DQ161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F512, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512A, 64 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Probing for Atmel AT25F512B, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25F1024(A), 128 kB: probe_spi_at25f: id1 0x1f, id2 0x60 Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI) on nicintel_spi. Chip status register is 00 Chip status register: Write Protect Enable (WPEN) is not set Chip status register: Bit 6 is not set Chip status register: Bit 5 is not set Chip status register: Bit 4 is not set Chip status register: Block Protect 1 (BP1) is not set Chip status register: Block Protect 0 (BP0) is not set Chip status register: Write Enable Latch (WEL) is not set Chip status register: Write In Progress (WIP/BUSY) is not set Probing for Atmel AT25FS010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT25FS040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF041, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF081A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26DF161A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT26F004, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45CS1282, 16896 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB011D, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB021D, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB041D, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB081D, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB161D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321C, 4224 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB321D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel AT45DB642D, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for EMST F25L008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B05T, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B10T, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B20T, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B40T, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B80T, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B16T, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B32T, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25B64T, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F05, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25F32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q80(A), 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q32(A/B), 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon EN25QH16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1005, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L2005, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L4005, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L8005, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1605, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635D, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L1635E, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3205, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L3235D, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L6405, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix MX25L12805, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Numonyx M25PE16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV010, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV020, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV040, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC Pm25LV512, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo LF25FW203A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL004A, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL008A, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL016A, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL032A, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Spansion S25FL064A, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25LF040A, 512 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25LF080A, 1024 kB: probe_spi_res2: id1 0xff, id2 0xff Probing for SST SST25VF010, 128 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF016B, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF032B, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF064C, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF040B, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST SST25VF040B.REMS, 512 kB: probe_spi_rems: id1 0xff, id2 0xff Probing for SST SST25VF080B, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05-A, 64 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P05, 64 kB: probe_spi_res1: id 0xff Probing for ST M25P10-A, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P10, 128 kB: probe_spi_res1: id 0xff Probing for ST M25P20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P40-old, 512 kB: probe_spi_res1: id 0xff Probing for ST M25P80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25P128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST M25PX64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25Q128, 16384 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X10, 128 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X20, 256 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X40, 512 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X80, 1024 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X16, 2048 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X32, 4096 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Winbond W25X64, 8192 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for AMIC unknown AMIC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Atmel unknown Atmel SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Eon unknown Eon SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Macronix unknown Macronix SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for PMC unknown PMC SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for SST unknown SST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for ST unknown ST SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Sanyo unknown Sanyo SPI chip, 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (RDID), 0 kB: RDID byte 0 parity violation. probe_spi_rdid_generic: id1 0xff, id2 0xffff Probing for Generic unknown SPI chip (REMS), 0 kB: probe_spi_rems: id1 0xff, id2 0xff Found Atmel flash chip "AT25F1024(A)" (128 kB, SPI). Reading old flash chip contents... done. Verifying flash... VERIFIED.