qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] LSI53C895A: Do not update current_dma_len with


From: Ryan Harper
Subject: Re: [Qemu-devel] [PATCH] LSI53C895A: Do not update current_dma_len with dbc in TIA mode
Date: Wed, 26 Nov 2008 11:07:09 -0600
User-agent: Mutt/1.5.6+20040907i

* Justin Chevrier <address@hidden> [2008-11-26 09:37]:
> Continued testing has shown that even with the update to handle
> variable length Inquiry commands in scsi-disk.c Openserver still
> relies on DMA length being updated with the dbc later on. The below
> patch modifies the current behaviour to update the DMA length with the
> dbc only when in Direct and Indirect mode. In Table Indirect Access
> mode the dma length does not come from the dbc, so we don't update it
> there.

Even in Table indirect access, we update dbc after fetching the transfer
count (TC) from the table.  The tech manual is unclear about whether or
not dbc is updated:

    "For a MOVE instruction, the 24-bit byte count is fetched
    from system memory. Then the 32-bit physical address is
    brought into the LSI53C895A. Execution of the move
    begins at this point" - LSI53C895A Tech manual, page 230.

However, I think in practice, it would have to do so.

> 
> This fixes the Debian Arm target, still works in Openserver and should
> correct the Windows install issue reported.
> 
> Justin
> 
> Changelog:
> 
> Do not update current_dma_len with the dbc if we are in Table Indirect Access 
> mode.
> 
> Signed-off-by: Justin Chevrier <address@hidden>
>
> --- hw/lsi53c895a.c     (revision 5799)
> +++ hw/lsi53c895a.c     (working copy)
> @@ -920,7 +920,9 @@
>              break;
>          case PHASE_DI:
>              s->waiting = 2;
> -            s->current_dma_len = s->dbc;
> +           /* Update DMA length in Direct and Indirect modes only */
> +           if (!(insn & (1 << 28)))
> +                s->current_dma_len = s->dbc;
>              lsi_do_dma(s, 0);
>              if (s->waiting)
>                  s->waiting = 3;
> 

Nack.  With the variable length Inquiry changes you posted and this
patch, sp3 32-bit fails to install same as before.


-- 
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]