Hi Stefan,

I think I found the issue.  In the function serialice.c:76
serialice_write(), if writing a character fails, the program will be
stuck in the readback while loop:

write(fd, buffer + i, 1);
while (read(fd, &c, 1) != 1) ;

I changed the write to keep trying until the write succeeds, which
fixed the issue for now.

static int serialice_write(int fd, const void *buf, size_t nbyte)
{
        char *buffer = (char *) buf;
        char c;
        int i;


        for (i = 0; i < (int)nbyte; i++) {
                while (write(fd, buffer + i, 1) != 1) ;
                while (read(fd, &c, 1) != 1) ;
                if (c != buffer[i]) {
                        printf("Readback error! %x/%x\n", c, buffer[i]);
                }
        }

        return nbyte;
}

-Daniel Liu

-- 
coreboot mailing list: coreboot@coreboot.org
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to