I am sorry. The new attached file is created by (cvs diff -up).
2007/4/22, Hetz Ben Hamo <[EMAIL PROTECTED]>:
The "standard" way to submitting patches is unified diff's (diff -u) Could you re-post your patch in unified format please? Thanks, Hetz On 4/22/07, Wang Cheng Yeh < [EMAIL PROTECTED]> wrote: > The number of responded bytes from scsi device do not match the expected > value of lsi53c895a driver. > hence, the mismatch interrupt happen, but the driver does not always handle > it correctly. > My patch make the responded bytes as expected and the interrupt will not > happen. > > Index: hw/scsi-disk.c > =================================================================== > RCS file: /sources/qemu/qemu/hw/scsi-disk.c,v > retrieving revision 1.13 > diff -r1.13 scsi-disk.c > 359c359 > < memset(outbuf, 0, 36); > --- > > memset(outbuf, 0, len); > 377c377 > < r->buf_len = 36; > --- > > r->buf_len = len; > 442a443,446 > > for(;r->buf_len<len;r->buf_len++) > > { > > *p++=0; > > } > > -- Skepticism is the lazy person's default position. Visit my blog (hebrew) for things that (sometimes) matter: http://wp.dad-answers.com
Index: hw/scsi-disk.c =================================================================== RCS file: /sources/qemu/qemu/hw/scsi-disk.c,v retrieving revision 1.13 diff -u -p -r1.13 scsi-disk.c --- hw/scsi-disk.c 29 Aug 2006 04:52:16 -0000 1.13 +++ hw/scsi-disk.c 22 Apr 2007 13:11:49 -0000 @@ -356,7 +356,7 @@ int32_t scsi_send_command(SCSIDevice *s, if (len < 36) { BADF("Inquiry buffer too small (%d)\n", len); } - memset(outbuf, 0, 36); + memset(outbuf, 0, len); if (bdrv_get_type_hint(s->bdrv) == BDRV_TYPE_CDROM) { outbuf[0] = 5; outbuf[1] = 0x80; @@ -374,7 +374,7 @@ int32_t scsi_send_command(SCSIDevice *s, outbuf[4] = 32; /* Sync data transfer and TCQ. */ outbuf[7] = 0x10 | (s->tcq ? 0x02 : 0); - r->buf_len = 36; + r->buf_len = len; break; case 0x16: DPRINTF("Reserve(6)\n"); @@ -440,6 +440,10 @@ int32_t scsi_send_command(SCSIDevice *s, p += 21; } r->buf_len = p - outbuf; + for(;r->buf_len<len;r->buf_len++) + { + *p++=0; + } outbuf[0] = r->buf_len - 4; if (r->buf_len > len) r->buf_len = len;