Hi Finn, On Sun, Oct 14, 2018 at 8:36 AM Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx> wrote: > If a target disconnects during a PIO data transfer the command may > fail when the target reconnects: > > scsi host1: DMA length is zero! > scsi host1: cur adr[04380000] len[00000000] > > The scsi bus is then reset. This happens because the residual reached > zero before the transfer was completed. > > The usual residual calculation relies on the Transfer Count registers > which works for DMA transfers but not for PIO transfers. Fix the problem > by storing the PIO transfer residual and using that to correctly > calculate bytes_sent. Thanks for yur patch! > Fixes: 6fe07aaffbf0 Fixes: 6fe07aaffbf0 ("[SCSI] m68k: new mac_esp scsi driver") > Tested-by: Stan Johnson <userm57@xxxxxxxxx> > Signed-off-by: Finn Thain <fthain@xxxxxxxxxxxxxxxxxxx> > Tested-by: Michael Schmitz <schmitzmic@xxxxxxxxx> > --- a/drivers/scsi/esp_scsi.h > +++ b/drivers/scsi/esp_scsi.h > @@ -540,6 +540,8 @@ struct esp { > > void *dma; > int dmarev; > + > + int send_cmd_residual; unsigned int? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds