[flashrom] [PATCH] FT2232 error checking

Jeremy Buseman naviathan at gmail.com
Tue Nov 10 17:09:32 CET 2009


Carl,
I downloaded a clean copy from SVN and patched it.  I pulled 4 reads without
verbose and 4 with, they are attached.  The reads came back different each
time just as before, but I did not get any error messages so this must be a
libftdi issue.  Let me know if there's more I can do.
Jeremy

On Mon, Nov 9, 2009 at 10:07 PM, Carl-Daniel Hailfinger <
c-d.hailfinger.devel.2006 at gmx.net> wrote:

> Pretty much everybody who used the FT2232 SPI driver in flashrom had
> problems with incorrect reads from time to time.
> One reason was that the hardware is pretty timing sensitive even for reads.
>
> The other reason was that the code silently ignored errors. This patch
> doesn't add any error recovery, but it will emit error messages if
> FT2232 communication goes wrong. That allows us to track down errors
> without investing hours in driver debugging.
>
> Jeremy, I'd be very interested in the results of an unmodified flashrom
> with only this patch applied (read is sufficient). In theory, you should
> either get a working read or loads of error messages about
> send_buf/read_buf. If you get no error messages and the image read is
> still wrong, libftdi doesn't tell us about the problem. Oh, and please
> try in verbose and normal mode. Maybe there's a difference.
>
> This patch will show up at
> http://patchwork.coreboot.org/project/flashrom/list/ in a few minutes.
>
> Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
>
> Index: flashrom-ft2232_errorcheck/ft2232_spi.c
> ===================================================================
> --- flashrom-ft2232_errorcheck/ft2232_spi.c     (Revision 756)
> +++ flashrom-ft2232_errorcheck/ft2232_spi.c     (Arbeitskopie)
> @@ -198,7 +198,8 @@
>  {
>        struct ftdi_context *ftdic = &ftdic_context;
>        static unsigned char *buf = NULL;
> -       int i = 0, ret = 0;
> +       /* failed is special. We use bitwise ops, but it is essentially
> bool. */
> +       int i = 0, ret = 0, failed = 0;
>
>        if (writecnt > 65536 || readcnt > 65536)
>                return SPI_INVALID_LENGTH;
> @@ -237,6 +238,11 @@
>                buf[i++] = (readcnt - 1) & 0xff;
>                buf[i++] = ((readcnt - 1) >> 8) & 0xff;
>                ret = send_buf(ftdic, buf, i);
> +               failed = ret;
> +               /* We can't abort here, we still have to deassert CS#. */
> +               if (ret)
> +                       fprintf(stderr, "send_buf failed before read:
> %i\n",
> +                               ret);
>                i = 0;
>                if (ret == 0) {
>                        /*
> @@ -245,6 +251,10 @@
>                         * command. We may be scheduled out etc.
>                         */
>                        ret = get_buf(ftdic, readarr, readcnt);
> +                       failed |= ret;
> +                       /* We can't abort here either. */
> +                       if (ret)
> +                               fprintf(stderr, "get_buf failed: %i\n",
> ret);
>                }
>        }
>
> @@ -252,10 +262,12 @@
>        buf[i++] = SET_BITS_LOW;
>        buf[i++] = CS_BIT;
>        buf[i++] = 0x0b;
> -       if (send_buf(ftdic, buf, i))
> -               return -1;
> +       ret = send_buf(ftdic, buf, i);
> +       failed |= ret;
> +       if (ret)
> +               fprintf(stderr, "send_buf failed at end: %i\n", ret);
>
> -       return ret;
> +       return failed ? -1 : 0;
>  }
>
>  int ft2232_spi_read(struct flashchip *flash, uint8_t *buf, int start, int
> len)
>
>
> --
> Developer quote of the week:
> "We are juggling too many chainsaws and flaming arrows and tigers."
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.flashrom.org/pipermail/flashrom/attachments/20091110/09c97492/attachment.html>
-------------- next part --------------
A binary attachment has been removed from this mail.
The name of the attachment was "Patched_Reads.tar.gz".


More information about the flashrom mailing list