[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [5706] Implement LSI53C895A quirks exposed by OpenServe
From: |
Ryan Harper |
Subject: |
Re: [Qemu-devel] [5706] Implement LSI53C895A quirks exposed by OpenServer (Justin Chevrier). |
Date: |
Mon, 24 Nov 2008 17:18:57 -0600 |
User-agent: |
Mutt/1.5.6+20040907i |
* Ryan Harper <address@hidden> [2008-11-24 17:12]:
> * Andrzej Zaborowski <address@hidden> [2008-11-12 10:50]:
> > Revision: 5706
> > http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=5706
> > Author: balrog
> > Date: 2008-11-12 16:41:32 +0000 (Wed, 12 Nov 2008)
> >
> > Log Message:
> > -----------
> > Implement LSI53C895A quirks exposed by OpenServer (Justin Chevrier).
> >
> > After going through the debug log and scratching my head for quite some
> > time. I found the following:
> >
> > The problem was with this block move:
> >
> > lsi_scsi: SCRIPTS dsp=0fae8e50 opcode 01000028 arg 00f63c40
> > lsi_scsi: DMA addr=0x00f63c40 len=36
> >
> > The number of bytes to be transferred (len) should be 40 which corresponds
> > to the block transfer of length 0x28 (from opcode 01000028). Instead we
> > have a length of 36 (0x24). The code responsible for this is (in
> > 'lsi_do_dma'):
> >
> > if (count > s->current_dma_len)
> > count = s->current_dma_len;
> >
> > Basically we're overwriting the length 40 with the value 36 which I
> > think we just left over in that variable from an earlier transfer. In my
> > patch below I initialize s->current_dma_len to s->dbc before we begin
> > the DMA transfer during Data In phase.
> >
> > The attached patch gets Openserver 5.0.5 past the hardware detection
> > (and it lists the hard drive to boot, woohoo). It appears to stop a
> > little while later (doesn't seem SCSI related), but it's been so long since
> > I've booted Openserver I'm not sure what's supposted to happen after the HW
> > detection using the boot/root disks.
> >
> > Props go to Craig Ringer for the initial post and the code that he posted
> > some of which is in this patch.
>
> This patch breaks WinXP SP3 32-bit install to scsi device. After
> attempting to format a partition on the scsi device, Windows says there
> is an error formating the partition. If I revert the patch, formating
> and installation to a scsi disk works ok.
>
> I haven't dug into what part of the patch is breaking it just yet, but
> plan to do so.
Looks like dropping this line gets the install working again:
diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c
index 8f8ffd7..fa31e7c 100644
--- a/hw/lsi53c895a.c
+++ b/hw/lsi53c895a.c
@@ -1310,7 +1310,7 @@ static uint8_t lsi_reg_readb(LSIState *s, int offset)
case 0x19: /* CTEST1 */
return 0;
case 0x1a: /* CTEST2 */
- tmp = s->ctest2 | LSI_CTEST2_DACK | LSI_CTEST2_CM;
+ tmp = LSI_CTEST2_DACK | LSI_CTEST2_CM;
if (s->istat0 & LSI_ISTAT0_SIGP) {
s->istat0 &= ~LSI_ISTAT0_SIGP;
tmp |= LSI_CTEST2_SIGP;
--
Ryan Harper
Software Engineer; Linux Technology Center
IBM Corp., Austin, Tx
address@hidden