From: Ryan Harper <ryanh@us.ibm.com>
To: Justin Chevrier <theburner1@yahoo.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 2/2] LSI53C895A: Handle empty SCRIPTS opcode
Date: Tue, 2 Dec 2008 10:28:56 -0600 [thread overview]
Message-ID: <20081202162856.GC13481@us.ibm.com> (raw)
In-Reply-To: <555360.18887.qm@web51105.mail.re2.yahoo.com>
* Justin Chevrier <theburner1@yahoo.com> [2008-12-02 10:00]:
> Well I've finally sorted out what Openserver is doing. Basically after
> each DMA transfer the Openserver driver would issue an empty (0)
> SCRIPTS opcode. As the opcode is essentially a NOP it has no second
> DWORD and therefore the DSP should only be incremented by 4 bytes
> instead of the 8 bytes we currently do.
Nice catch!
>
> Here's a snippet of the log:
>
> lsi_scsi: Data ready tag=0x100d9 len=16384
> ...
> lsi_scsi: SCRIPTS dsp=068c5e50 opcode 01000400 arg 07a09000
> lsi_scsi: DMA addr=0x07a09000 len=1024
> lsi_scsi: SCRIPTS dsp=068c5e58 opcode 00000000 arg 01000400
> lsi_scsi: Wrong phase got 1 expected 0
>
> Note the 2nd DWORD after the empty opcode; the next opcode in the DMA
> transfer sequence. As can be expected the address after that has the
> next DMA address to use.
>
> After the attached patch the DMA transfer is able to complete successfully:
>
> lsi_scsi: SCRIPTS dsp=068c5e50 opcode 01000400 arg 07a0d000
> lsi_scsi: DMA addr=0x07a0d000 len=1024
> lsi_scsi: SCRIPTS dsp=068c5e5c opcode 01000400 arg 07a0d400
> lsi_scsi: DMA addr=0x07a0d400 len=1024
> ...
>
> Tested againsted Openserver 5.0.5 and Debian ARM.
>
> Changelog:
>
> Handle empty SCRIPTS opcode
>
> Signed-off-by: Justin Chevrier <address@hidden>
Tested XP 32-bit, Linux 2.6.27 in 40-bit DMA mode. I don't seen any
issues with the patch applied.
Acked-by: Ryan Harper <ryanh@us.ibm.com>
>
>
>
> Index: hw/lsi53c895a.c
> ===================================================================
> --- hw/lsi53c895a.c (revision 5852)
> +++ hw/lsi53c895a.c (working copy)
> @@ -867,6 +867,12 @@
> again:
> insn_processed++;
> insn = read_dword(s, s->dsp);
> + if(!insn) {
> + /* If we receive an empty opcode increment the DSP by 4 bytes
> + instead of 8 and execute the next opcode at that location */
> + s->dsp += 4;
> + goto again;
> + }
> addr = read_dword(s, s->dsp + 4);
> addr_high = 0;
> DPRINTF("SCRIPTS dsp=%08x opcode %08x arg %08x\n", s->dsp, insn, addr);
--
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
ryanh@us.ibm.com
prev parent reply other threads:[~2008-12-02 16:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-02 15:53 [Qemu-devel] [PATCH 2/2] LSI53C895A: Handle empty SCRIPTS opcode Justin Chevrier
2008-12-02 16:28 ` Ryan Harper [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20081202162856.GC13481@us.ibm.com \
--to=ryanh@us.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=theburner1@yahoo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.