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;

Reply via email to