Subject: Re: problems installing NetBSD 2.1 on ultra 60
To: Manuel Bouyer <bouyer@antioche.eu.org>
From: edwin <edwin@spacebugs.nl>
List: port-sparc64
Date: 11/10/2005 09:18:21
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


First of all, thank you for the quick reply.
Last night , I migrated the services of the Ultra 60 to an ultra 1.
The ultra 60 can now be used as a test machine.
I'll try this patch tonight. After testing will post the results as
well the output of dmesg.

Manuel Bouyer wrote:

> On Tue, Nov 08, 2005 at 07:50:27PM +0100, Manuel Bouyer wrote:
>
>> On Tue, Nov 08, 2005 at 09:45:44AM +0100, edwin wrote:
>>
>>> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
>>>
>>> Hi,
>>>
>>> After installing NetBSD 2.1 on an Ultra 60, some strange things
>>> happend. When I do an ls -al /etc , no files seems to exist in
>>> this dir. However, when I do an vi /etc/rc.conf There's no
>>> problem in edditing the file.
>>>
>>> If I boot into single user mode, and do again an ls -al /etc/
>>> all the files get listed.
>>>
>>> So I tried to make a tar file of /etc in single user mode, and
>>> untarred this in multi usermode. Next thing I know, all files
>>> and dir in / are not listed with ls -al / But cd /usr works.
>>> and an ls -al /usr also.
>>>
>>> This machine is running NetBSD 2.0 for more then 4 months now
>>> without any problem. So I figured, maybe its just my disk ,
>>> this seems a filesystem problem. Instead of an upgrade, I tried
>>> a fresh install of NetBSD 2.1. Hopefully I recieve errors when
>>> the filesystem are created, and to go from there. So I
>>> downloaded the NetBSD 2.1 iso, and checked the MD5SUM which is
>>> ok. The install starts without any problem, and after saying
>>> yes to the partition scheme, I entered a name for the disk. But
>>> by writing the disklabel to disk , I recieved the error:
>>> disklabel command not found.
>>>
>>> After this advanture, I switched back to NetBSD 2.0. dmesg and
>>> other information is lost with the reinstall. But when needed,
>>> I can reproduce the errors and willing to do tests.
>>>
>>> Hopefully someone could help, or give me a direction.
>>
>> You have a scsi drive connected to a esiop adapter ? There seems
>> to be changes between 2.0 and 2.1 in the esiop driver which cause
>> issues with some disks. I still need to setup a box to try to
>> reproduce this (the model of drive you're using would help me).
>
>
> Ok, I think I've found the problem, but I don't have a drive which
> behaves this way so I can't reproduce it. Can you try the attached
> patch against 2.1 ?
>
>
> ----------------------------------------------------------------------
>
>
> Index: ic/esiop.c
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/ic/esiop.c,v retrieving revision
> 1.27.4.5 diff -u -r1.27.4.5 esiop.c --- ic/esiop.c 16 May 2005
> 05:15:48 -0000 1.27.4.5 +++ ic/esiop.c 9 Nov 2005 18:51:53 -0000 @@
> -1126,6 +1126,16 @@ esiop_lun->active = NULL; offset =
> bus_space_read_1(sc->sc_c.sc_rt, sc->sc_c.sc_rh, SIOP_SCRATCHA +
> 1); + /* + * if we got a disconnect between the last data phase +
> * and the status phase, offset will be 0. In this + * case,
> cmd_tables->offset will have the proper value + * if it got
> updated by the controller + */ + if (offset == 0 && +
> esiop_cmd->cmd_tables->offset != htole32(SIOP_NOOFFSET)) + offset
> = le32toh(esiop_cmd->cmd_tables->offset); +
> esiop_scsicmd_end(esiop_cmd, offset); if (freetarget &&
> esiop_target->target_c.status == TARST_PROBING) esiop_del_dev(sc,
> target, lun); @@ -1954,15 +1964,20 @@
> xfer->siop_tables.t_status.count= htole32(1);
> xfer->siop_tables.t_status.addr = htole32(dsa + offsetof(struct
> siop_common_xfer, status)); + xfer->siop_tables.t_offset.count=
> htole32(1); + xfer->siop_tables.t_offset.addr = htole32(dsa + +
> offsetof(struct siop_common_xfer, offset));
>
> s = splbio(); TAILQ_INSERT_TAIL(&sc->free_list, &newcbd->cmds[i],
> next); splx(s); #ifdef SIOP_DEBUG - printf("tables[%d]: in=0x%x
> out=0x%x status=0x%x\n", i, + printf("tables[%d]: in=0x%x out=0x%x
> status=0x%x " + "offset=0x%x\n", i,
> le32toh(newcbd->cmds[i].cmd_tables->t_msgin.addr),
> le32toh(newcbd->cmds[i].cmd_tables->t_msgout.addr), -
> le32toh(newcbd->cmds[i].cmd_tables->t_status.addr)); +
> le32toh(newcbd->cmds[i].cmd_tables->t_status.addr, +
> le32toh(newcbd->cmds[i].cmd_tables->t_offset.addr)); #endif } s =
> splbio(); Index: ic/siop.c
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/ic/siop.c,v retrieving revision
> 1.72.4.4 diff -u -r1.72.4.4 siop.c --- ic/siop.c 11 May 2005
> 04:06:08 -0000 1.72.4.4 +++ ic/siop.c 9 Nov 2005 18:51:53 -0000 @@
> -103,6 +103,7 @@ static int siop_stat_intr = 0; static int
> siop_stat_intr_shortxfer = 0; static int siop_stat_intr_sdp = 0;
> +static int siop_stat_intr_saveoffset = 0; static int
> siop_stat_intr_done = 0; static int siop_stat_intr_xferdisc = 0;
> static int siop_stat_intr_lunresel = 0; @@ -915,6 +916,16 @@
> BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE);
> CALL_SCRIPT(Ent_script_sched); return 1; + case A_int_saveoffset:
> + INCSTAT(siop_stat_intr_saveoffset); + offset =
> bus_space_read_1(sc->sc_c.sc_rt, + sc->sc_c.sc_rh,
> SIOP_SCRATCHA + 1); +#ifdef SIOP_DEBUG_DR + printf("saveoffset
> offset %d\n", offset); +#endif + siop_cmd->cmd_tables->status =
> htole32(offset); + CALL_SCRIPT(Ent_script_sched); + return 1;
> case A_int_resfail: printf("reselect failed\n");
> CALL_SCRIPT(Ent_script_sched); @@ -939,6 +950,16 @@ /* update
> resid. */ offset = bus_space_read_1(sc->sc_c.sc_rt,
> sc->sc_c.sc_rh, SIOP_SCRATCHA + 1); + /* + * if we got a
> disconnect between the last data phase + * and the status phase,
> offset will be 0. In this + * case, cmd_tables->offset will have
> the proper value + * if it got updated by the controller + */
> + if (offset == 0 && + siop_cmd->cmd_tables->offset != +
> htole32(SIOP_NOOFFSET)) + offset =
> le32toh(siop_cmd->cmd_tables->offset);
> siop_update_resid(&siop_cmd->cmd_c, offset); siop_cmd->cmd_c.status
> = CMDST_DONE; goto end; @@ -1686,6 +1707,9 @@
> xfer->siop_tables.t_status.count= htole32(1);
> xfer->siop_tables.t_status.addr = htole32(dsa + offsetof(struct
> siop_common_xfer, status)); + xfer->siop_tables.t_offset.count=
> htole32(1); + xfer->siop_tables.t_offset.addr = htole32(dsa + +
> offsetof(struct siop_common_xfer, offset)); /* The select/reselect
> script */ scr = &xfer->resel[0]; for (j = 0; j < sizeof(load_dsa) /
> sizeof(load_dsa[0]); j++) @@ -1717,10 +1741,12 @@
> TAILQ_INSERT_TAIL(&sc->free_list, &newcbd->cmds[i], next); splx(s);
> #ifdef SIOP_DEBUG - printf("tables[%d]: in=0x%x out=0x%x
> status=0x%x\n", i, + printf("tables[%d]: in=0x%x out=0x%x
> status=0x%x " + "offset=0x%x\n", i,
> le32toh(newcbd->cmds[i].cmd_tables->t_msgin.addr),
> le32toh(newcbd->cmds[i].cmd_tables->t_msgout.addr), -
> le32toh(newcbd->cmds[i].cmd_tables->t_status.addr)); +
> le32toh(newcbd->cmds[i].cmd_tables->t_status.addr), +
> le32toh(newcbd->cmds[i].cmd_tables->t_offset.addr)); #endif } s =
> splbio(); @@ -2002,6 +2028,7 @@ printf("siop_stat_intr_shortxfer
> %d\n", siop_stat_intr_shortxfer); printf("siop_stat_intr_xferdisc
> %d\n", siop_stat_intr_xferdisc); printf("siop_stat_intr_sdp %d\n",
> siop_stat_intr_sdp); + printf("siop_stat_intr_saveoffset %d\n",
> siop_stat_intr_saveoffset); printf("siop_stat_intr_done %d\n",
> siop_stat_intr_done); printf("siop_stat_intr_lunresel %d\n",
> siop_stat_intr_lunresel); printf("siop_stat_intr_qfull %d\n",
> siop_stat_intr_qfull); Index: ic/siop_common.c
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/ic/siop_common.c,v retrieving
> revision 1.33.4.3 diff -u -r1.33.4.3 siop_common.c ---
> ic/siop_common.c 11 May 2005 03:59:10 -0000 1.33.4.3 +++
> ic/siop_common.c 9 Nov 2005 18:51:53 -0000 @@ -315,6 +315,8 @@ }
> siop_cmd->siop_tables->status = htole32(SCSI_SIOP_NOSTATUS); /* set
> invalid status */ + siop_cmd->siop_tables->offset = +
> htole32(SIOP_NOOFFSET); /* set invalid offset */
>
> siop_cmd->siop_tables->cmd.count =
> htole32(siop_cmd->dmamap_cmd->dm_segs[0].ds_len); Index:
> ic/siopvar_common.h
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/ic/siopvar_common.h,v retrieving
> revision 1.27.4.2 diff -u -r1.27.4.2 siopvar_common.h ---
> ic/siopvar_common.h 11 May 2005 03:59:14 -0000 1.27.4.2 +++
> ic/siopvar_common.h 9 Nov 2005 18:51:53 -0000 @@ -56,7 +56,7 @@
> u_int8_t msg_out[16]; /* 0 */ u_int8_t msg_in[16]; /* 16 */
> u_int32_t status; /* 32 */ - u_int32_t pad1; /* 36 */ + u_int32_t
> offset; /* 36 */ u_int32_t id; /* 40 */ u_int32_t pad2; /* 44 */
> scr_table_t t_msgin; /* 48 */ @@ -65,13 +65,17 @@ scr_table_t
> t_msgout; /* 72 */ scr_table_t cmd; /* 80 */ scr_table_t t_status;
> /* 88 */ - scr_table_t data[SIOP_NSG]; /* 96 */ + scr_table_t
> t_offset; /* 96 */ + scr_table_t data[SIOP_NSG]; /* 104 */ }
> __attribute__((__packed__));
>
> /* status can hold the SCSI_* status values, and 2 additional
> values: */ #define SCSI_SIOP_NOCHECK 0xfe /* don't check the scsi
> status */ #define SCSI_SIOP_NOSTATUS 0xff /* device didn't report
> status */
>
> +/* offset is initialised to SIOP_NOOFFSET, used to check if it was
> updated */ +#define SIOP_NOOFFSET 0xff + /* * This describes a
> command handled by the SCSI controller */ Index:
> microcode/siop/esiop.out
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/microcode/siop/esiop.out,v
> retrieving revision 1.11.4.2 diff -u -r1.11.4.2 esiop.out ---
> microcode/siop/esiop.out 11 May 2005 03:50:26 -0000 1.11.4.2 +++
> microcode/siop/esiop.out 9 Nov 2005 18:51:54 -0000 @@ -1,7 +1,7 @@
> -/* $NetBSD: esiop.out,v 1.11.4.2 2005/05/11 03:50:26 snj Exp $ */
> +/* $NetBSD: ncr53cxxx.c,v 1.12.2.1 2004/05/20 09:41:26 tron Exp $
> */ /* * DO NOT EDIT - this file is automatically generated. - *
> created from esiop.ss on Tue May 10 12:49:57 2005 + * created from
> esiop.ss on Wed Nov 9 19:51:03 2005 */ const u_int32_t
> esiop_script[] = { 0xe15c0004, 0x00000000, /* 000 - 0 */ @@
> -51,7 +51,7 @@ 0x6a360000, 0x00000000, /* 160 - 352 */
> 0x6a630000, 0x00000000, /* 168 - 360 */ 0x7a600400, 0x00000000,
> /* 170 - 368 */ - 0x88880000, 0x00000500, /* 178 - 376 */ +
> 0x88880000, 0x00000518, /* 178 - 376 */ 0x78370000, 0x00000000,
> /* 180 - 384 */ 0x60000400, 0x00000000, /* 188 - 392 */
> 0x79360000, 0x00000000, /* 190 - 400 */ @@ -71,12 +71,12 @@
> 0x60000040, 0x00000000, /* 200 - 512 */ 0x868b0000, 0x000002c8,
> /* 208 - 520 */ 0x878b0000, 0x000002e8, /* 210 - 528 */ -
> 0x808b0000, 0x000003b8, /* 218 - 536 */ - 0x818b0000, 0x00000350,
> /* 220 - 544 */ - 0x828b0000, 0x00000320, /* 228 - 552 */ -
> 0x838b0000, 0x00000328, /* 230 - 560 */ + 0x808b0000, 0x000003d0,
> /* 218 - 536 */ + 0x818b0000, 0x00000368, /* 220 - 544 */ +
> 0x828b0000, 0x00000338, /* 228 - 552 */ + 0x838b0000, 0x00000340,
> /* 230 - 560 */ 0x98080000, 0x0000ffff, /* 238 - 568 */ -
> 0x88880000, 0x00000480, /* 240 - 576 */ + 0x88880000, 0x00000498,
> /* 240 - 576 */ 0xf2340004, 0x00000000, /* 248 - 584 */
> 0x72690000, 0x00000000, /* 250 - 592 */ 0x98040000, 0x0000ff00,
> /* 258 - 600 */ @@ -150,7 +150,7 @@ 0x745c0200, 0x00000000, /*
> 478 - 1144 */ 0x80840000, 0xfffffeb8, /* 480 - 1152 */
> 0x7c5cfc00, 0x00000000, /* 488 - 1160 */ - 0x88880000,
> 0x000001e8, /* 490 - 1168 */ + 0x88880000, 0x00000200, /* 490 -
> 1168 */ 0xe15c0004, 0x00000000, /* 498 - 1176 */ 0x7a5c0200,
> 0x00000000, /* 4a0 - 1184 */ 0xe25c0004, 0x00000000, /* 4a8 -
> 1192 */ @@ -168,70 +168,73 @@ 0x1f000030, 0x00000030, /* 508 -
> 1288 */ 0x808c0000, 0xfffffd28, /* 510 - 1296 */ 0x808c0002,
> 0xffffffd0, /* 518 - 1304 */ - 0x808c0001, 0x000001c8, /* 520 -
> 1312 */ + 0x808c0001, 0x000001e0, /* 520 - 1312 */ 0x98040004,
> 0x0000ff01, /* 528 - 1320 */ - 0x88880000, 0x00000190, /* 530 -
> 1328 */ + 0x88880000, 0x000001a8, /* 530 - 1328 */ 0x74601000,
> 0x00000000, /* 538 - 1336 */ - 0x808c0000, 0xfffffdf8, /* 540 -
> 1344 */ - 0x98080000, 0x0000ff04, /* 548 - 1352 */ - 0x1a000050,
> 0x00000050, /* 550 - 1360 */ - 0x80880000, 0xfffffca8, /* 558 -
> 1368 */ - 0x1b000058, 0x00000058, /* 560 - 1376 */ - 0x6a690000,
> 0x00000000, /* 568 - 1384 */ + 0x98040000, 0x0000ff04, /* 540 -
> 1344 */ + 0x72350000, 0x00000000, /* 548 - 1352 */ + 0x808c0000,
> 0xfffffde8, /* 550 - 1360 */ + 0xf2350001, 0x00000060, /* 558 -
> 1368 */ + 0x80880000, 0xfffffdd8, /* 560 - 1376 */ + 0x1a000050,
> 0x00000050, /* 568 - 1384 */ 0x80880000, 0xfffffc90, /* 570 -
> 1392 */ - 0x88880000, 0x000000b8, /* 578 - 1400 */ - 0x7a600800,
> 0x00000000, /* 580 - 1408 */ - 0x19000060, 0x00000060, /* 588 -
> 1416 */ - 0x7e350100, 0x00000000, /* 590 - 1424 */ - 0x7e100800,
> 0x00000000, /* 598 - 1432 */ - 0x7f110000, 0x00000000, /* 5a0 -
> 1440 */ - 0x7f120000, 0x00000000, /* 5a8 - 1448 */ - 0x7f130000,
> 0x00000000, /* 5b0 - 1456 */ - 0x818b0000, 0xffffffc8, /* 5b8 -
> 1464 */ - 0x88880000, 0x000000b8, /* 5c0 - 1472 */ - 0x7c60f700,
> 0x00000000, /* 5c8 - 1480 */ - 0x80880000, 0xfffffc30, /* 5d0 -
> 1488 */ - 0x88880000, 0x00000058, /* 5d8 - 1496 */ - 0x7a600800,
> 0x00000000, /* 5e0 - 1504 */ - 0x18000060, 0x00000060, /* 5e8 -
> 1512 */ - 0x7e350100, 0x00000000, /* 5f0 - 1520 */ - 0x7e100800,
> 0x00000000, /* 5f8 - 1528 */ - 0x7f110000, 0x00000000, /* 600 -
> 1536 */ - 0x7f120000, 0x00000000, /* 608 - 1544 */ - 0x7f130000,
> 0x00000000, /* 610 - 1552 */ - 0x808b0000, 0xffffffc8, /* 618 -
> 1560 */ - 0x88880000, 0x00000058, /* 620 - 1568 */ - 0x7c60f700,
> 0x00000000, /* 628 - 1576 */ - 0x80880000, 0xfffffbd0, /* 630 -
> 1584 */ - 0x72100000, 0x00000000, /* 638 - 1592 */ - 0x6a5c0000,
> 0x00000000, /* 640 - 1600 */ - 0x72110000, 0x00000000, /* 648 -
> 1608 */ - 0x6a5d0000, 0x00000000, /* 650 - 1616 */ - 0x72120000,
> 0x00000000, /* 658 - 1624 */ - 0x6a5e0000, 0x00000000, /* 660 -
> 1632 */ - 0x72130000, 0x00000000, /* 668 - 1640 */ - 0x6a5f0000,
> 0x00000000, /* 670 - 1648 */ - 0x90080000, 0x00000000, /* 678 -
> 1656 */ - 0x725c0000, 0x00000000, /* 680 - 1664 */ - 0x6a100000,
> 0x00000000, /* 688 - 1672 */ - 0x725d0000, 0x00000000, /* 690 -
> 1680 */ - 0x6a110000, 0x00000000, /* 698 - 1688 */ - 0x725e0000,
> 0x00000000, /* 6a0 - 1696 */ - 0x6a120000, 0x00000000, /* 6a8 -
> 1704 */ - 0x725f0000, 0x00000000, /* 6b0 - 1712 */ - 0x6a130000,
> 0x00000000, /* 6b8 - 1720 */ - 0x90080000, 0x00000000, /* 6c0 -
> 1728 */ - 0x7c027f00, 0x00000000, /* 6c8 - 1736 */ - 0x60000008,
> 0x00000000, /* 6d0 - 1744 */ - 0x60000040, 0x00000000, /* 6d8 -
> 1752 */ - 0x48000000, 0x00000000, /* 6e0 - 1760 */ - 0x90080000,
> 0x00000000, /* 6e8 - 1768 */ + 0x1b000058, 0x00000058, /* 578 -
> 1400 */ + 0x6a690000, 0x00000000, /* 580 - 1408 */ + 0x80880000,
> 0xfffffc78, /* 588 - 1416 */ + 0x88880000, 0x000000b8, /* 590 -
> 1424 */ + 0x7a600800, 0x00000000, /* 598 - 1432 */ + 0x19000068,
> 0x00000068, /* 5a0 - 1440 */ + 0x7e350100, 0x00000000, /* 5a8 -
> 1448 */ + 0x7e100800, 0x00000000, /* 5b0 - 1456 */ + 0x7f110000,
> 0x00000000, /* 5b8 - 1464 */ + 0x7f120000, 0x00000000, /* 5c0 -
> 1472 */ + 0x7f130000, 0x00000000, /* 5c8 - 1480 */ + 0x818b0000,
> 0xffffffc8, /* 5d0 - 1488 */ + 0x88880000, 0x000000b8, /* 5d8 -
> 1496 */ + 0x7c60f700, 0x00000000, /* 5e0 - 1504 */ + 0x80880000,
> 0xfffffc18, /* 5e8 - 1512 */ + 0x88880000, 0x00000058, /* 5f0 -
> 1520 */ + 0x7a600800, 0x00000000, /* 5f8 - 1528 */ + 0x18000068,
> 0x00000068, /* 600 - 1536 */ + 0x7e350100, 0x00000000, /* 608 -
> 1544 */ + 0x7e100800, 0x00000000, /* 610 - 1552 */ + 0x7f110000,
> 0x00000000, /* 618 - 1560 */ + 0x7f120000, 0x00000000, /* 620 -
> 1568 */ + 0x7f130000, 0x00000000, /* 628 - 1576 */ + 0x808b0000,
> 0xffffffc8, /* 630 - 1584 */ + 0x88880000, 0x00000058, /* 638 -
> 1592 */ + 0x7c60f700, 0x00000000, /* 640 - 1600 */ + 0x80880000,
> 0xfffffbb8, /* 648 - 1608 */ + 0x72100000, 0x00000000, /* 650 -
> 1616 */ + 0x6a5c0000, 0x00000000, /* 658 - 1624 */ + 0x72110000,
> 0x00000000, /* 660 - 1632 */ + 0x6a5d0000, 0x00000000, /* 668 -
> 1640 */ + 0x72120000, 0x00000000, /* 670 - 1648 */ + 0x6a5e0000,
> 0x00000000, /* 678 - 1656 */ + 0x72130000, 0x00000000, /* 680 -
> 1664 */ + 0x6a5f0000, 0x00000000, /* 688 - 1672 */ + 0x90080000,
> 0x00000000, /* 690 - 1680 */ + 0x725c0000, 0x00000000, /* 698 -
> 1688 */ + 0x6a100000, 0x00000000, /* 6a0 - 1696 */ + 0x725d0000,
> 0x00000000, /* 6a8 - 1704 */ + 0x6a110000, 0x00000000, /* 6b0 -
> 1712 */ + 0x725e0000, 0x00000000, /* 6b8 - 1720 */ + 0x6a120000,
> 0x00000000, /* 6c0 - 1728 */ + 0x725f0000, 0x00000000, /* 6c8 -
> 1736 */ + 0x6a130000, 0x00000000, /* 6d0 - 1744 */ + 0x90080000,
> 0x00000000, /* 6d8 - 1752 */ + 0x7c027f00, 0x00000000, /* 6e0 -
> 1760 */ + 0x60000008, 0x00000000, /* 6e8 - 1768 */ 0x60000040,
> 0x00000000, /* 6f0 - 1776 */ - 0x1f000038, 0x00000038, /* 6f8 -
> 1784 */ - 0x98080000, 0x0000ff02, /* 700 - 1792 */ + 0x48000000,
> 0x00000000, /* 6f8 - 1784 */ + 0x90080000, 0x00000000, /* 700 -
> 1792 */ 0x60000040, 0x00000000, /* 708 - 1800 */ - 0x1f000040,
> 0x00000040, /* 710 - 1808 */ - 0x98080000, 0x0000ff03, /* 718 -
> 1816 */ + 0x1f000038, 0x00000038, /* 710 - 1808 */ + 0x98080000,
> 0x0000ff02, /* 718 - 1816 */ + 0x60000040, 0x00000000, /* 720 -
> 1824 */ + 0x1f000040, 0x00000040, /* 728 - 1832 */ + 0x98080000,
> 0x0000ff03, /* 730 - 1840 */ };
>
> const u_int32_t esiop_led_on[] = { @@ -249,7 +252,8 @@ #define
> A_t_msg_out 0x00000048 #define A_t_cmd 0x00000050 #define
> A_t_status 0x00000058 -#define A_t_data 0x00000060 +#define
> A_t_offset 0x00000060 +#define A_t_data 0x00000068 #define
> A_target_id 0x00000000 #define A_target_luntbl 0x00000008 #define
> A_target_luntbl_tag 0x0000000c @@ -286,10 +290,10 @@ #define
> Ent_led_on1 0x000004b0 #define Ent_led_on2 0x00000050 #define
> Ent_led_off 0x00000040 -#define Ent_status 0x00000560 +#define
> Ent_status 0x00000578 #define Ent_msgin 0x00000500 #define
> Ent_msgin_ack 0x00000200 -#define Ent_get_extmsgdata 0x00000708
> +#define Ent_get_extmsgdata 0x00000720 #define Ent_send_msgout
> 0x000004c8 #define Ent_script_sched 0x00000340 #define
> Ent_load_targtable 0x000000a0 Index: microcode/siop/esiop.ss
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/microcode/siop/esiop.ss,v
> retrieving revision 1.16.4.2 diff -u -r1.16.4.2 esiop.ss ---
> microcode/siop/esiop.ss 11 May 2005 03:48:47 -0000 1.16.4.2 +++
> microcode/siop/esiop.ss 9 Nov 2005 18:51:54 -0000 @@ -40,7 +40,8 @@
> ABSOLUTE t_msg_out = 72; ABSOLUTE t_cmd = 80; ABSOLUTE t_status =
> 88; -ABSOLUTE t_data = 96; +ABSOLUTE t_offset = 96; +ABSOLUTE
> t_data = 104;
>
> ; offsets in the per-target lun table ABSOLUTE target_id = 0x0; @@
> -344,9 +345,12 @@ CALL REL(disconnect) ; disconnect message ; if
> we didn't get sdp, no need to interrupt MOVE SCRATCHC0 & f_c_sdp TO
> SFBR; + INT int_disc, IF not 0x00; +; update offset if we did some
> data transfer + MOVE SCRATCHA1 TO SFBR; JUMP REL(script_sched), if
> 0x00; -; Ok, we need to save data pointers - INT int_disc; + STORE
> NOFLUSH SCRATCHA1, 1, FROM t_offset; + JUMP REL(script_sched);
>
> cmdout: MOVE FROM t_cmd, WHEN CMD; Index: microcode/siop/siop.out
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/microcode/siop/siop.out,v
> retrieving revision 1.14.14.1 diff -u -r1.14.14.1 siop.out ---
> microcode/siop/siop.out 11 May 2005 03:50:26 -0000 1.14.14.1 +++
> microcode/siop/siop.out 9 Nov 2005 18:51:54 -0000 @@ -1,19 +1,19 @@
> -/* $NetBSD: siop.out,v 1.14.14.1 2005/05/11 03:50:26 snj Exp $ */
> +/* $NetBSD: ncr53cxxx.c,v 1.12.2.1 2004/05/20 09:41:26 tron Exp $
> */ /* * DO NOT EDIT - this file is automatically generated. - *
> created from siop.ss on Tue May 10 12:46:01 2005 + * created from
> siop.ss on Wed Nov 9 19:51:03 2005 */ const u_int32_t
> siop_script[] = { 0x78340000, 0x00000000, /* 000 - 0 */
> 0x78350000, 0x00000000, /* 008 - 8 */ 0x72370000, 0x00000000,
> /* 010 - 16 */ 0x80840020, 0x00000318, /* 018 - 24 */ -
> 0x868b0000, 0x00000370, /* 020 - 32 */ + 0x868b0000, 0x00000380,
> /* 020 - 32 */ 0x878b0000, 0x000002f8, /* 028 - 40 */ -
> 0x808b0000, 0x000003f8, /* 030 - 48 */ - 0x818b0000, 0x00000390,
> /* 038 - 56 */ - 0x828b0000, 0x00000368, /* 040 - 64 */ -
> 0x838b0000, 0x00000370, /* 048 - 72 */ + 0x808b0000, 0x00000408,
> /* 030 - 48 */ + 0x818b0000, 0x000003a0, /* 038 - 56 */ +
> 0x828b0000, 0x00000378, /* 040 - 64 */ + 0x838b0000, 0x00000380,
> /* 048 - 72 */ 0x98080000, 0x0000ffff, /* 050 - 80 */
> 0x741a4000, 0x00000000, /* 058 - 88 */ 0x980c0000, 0x0000ff83,
> /* 060 - 96 */ @@ -107,81 +107,83 @@ 0x7a340100, 0x00000000, /*
> 320 - 800 */ 0x60000008, 0x00000000, /* 328 - 808 */ 0x1f000030,
> 0x00000030, /* 330 - 816 */ - 0x808c0000, 0x00000208, /* 338 -
> 824 */ + 0x808c0000, 0x00000218, /* 338 - 824 */ 0x808c0002,
> 0xffffffd0, /* 340 - 832 */ - 0x808c0001, 0x00000208, /* 348 -
> 840 */ + 0x808c0001, 0x00000218, /* 348 - 840 */ 0x98040004,
> 0x0000ff01, /* 350 - 848 */ - 0x88880000, 0x000001c0, /* 358 -
> 856 */ + 0x88880000, 0x000001d0, /* 358 - 856 */ 0x74340100,
> 0x00000000, /* 360 - 864 */ - 0x808c0000, 0xfffffd00, /* 368 -
> 872 */ - 0x98080000, 0x0000ff04, /* 370 - 880 */ - 0x60000040,
> 0x00000000, /* 378 - 888 */ - 0x80880000, 0xfffffc98, /* 380 -
> 896 */ - 0x58000008, 0x00000000, /* 388 - 904 */ - 0x60000040,
> 0x00000000, /* 390 - 912 */ - 0x1e000048, 0x00000048, /* 398 -
> 920 */ - 0x60000008, 0x00000000, /* 3a0 - 928 */ - 0x80880000,
> 0xfffffc70, /* 3a8 - 936 */ - 0x1a000050, 0x00000050, /* 3b0 -
> 944 */ + 0x98040000, 0x0000ff04, /* 368 - 872 */ + 0x72350000,
> 0x00000000, /* 370 - 880 */ + 0x808c0000, 0xfffffcf0, /* 378 -
> 888 */ + 0x98080000, 0x0000ff05, /* 380 - 896 */ + 0x60000040,
> 0x00000000, /* 388 - 904 */ + 0x80880000, 0xfffffc88, /* 390 -
> 912 */ + 0x58000008, 0x00000000, /* 398 - 920 */ + 0x60000040,
> 0x00000000, /* 3a0 - 928 */ + 0x1e000048, 0x00000048, /* 3a8 -
> 936 */ + 0x60000008, 0x00000000, /* 3b0 - 944 */ 0x80880000,
> 0xfffffc60, /* 3b8 - 952 */ - 0x1b000058, 0x00000058, /* 3c0 -
> 960 */ + 0x1a000050, 0x00000050, /* 3c0 - 960 */ 0x80880000,
> 0xfffffc50, /* 3c8 - 968 */ - 0x88880000, 0x000000b8, /* 3d0 -
> 976 */ - 0x7a340200, 0x00000000, /* 3d8 - 984 */ - 0x19000060,
> 0x00000060, /* 3e0 - 992 */ - 0x7e350100, 0x00000000, /* 3e8 -
> 1000 */ - 0x7e100800, 0x00000000, /* 3f0 - 1008 */ - 0x7f110000,
> 0x00000000, /* 3f8 - 1016 */ - 0x7f120000, 0x00000000, /* 400 -
> 1024 */ - 0x7f130000, 0x00000000, /* 408 - 1032 */ - 0x818b0000,
> 0xffffffc8, /* 410 - 1040 */ - 0x88880000, 0x000000b8, /* 418 -
> 1048 */ - 0x7c34fd00, 0x00000000, /* 420 - 1056 */ - 0x80880000,
> 0xfffffbf0, /* 428 - 1064 */ - 0x88880000, 0x00000058, /* 430 -
> 1072 */ - 0x7a340200, 0x00000000, /* 438 - 1080 */ - 0x18000060,
> 0x00000060, /* 440 - 1088 */ - 0x7e350100, 0x00000000, /* 448 -
> 1096 */ - 0x7e100800, 0x00000000, /* 450 - 1104 */ - 0x7f110000,
> 0x00000000, /* 458 - 1112 */ - 0x7f120000, 0x00000000, /* 460 -
> 1120 */ - 0x7f130000, 0x00000000, /* 468 - 1128 */ - 0x808b0000,
> 0xffffffc8, /* 470 - 1136 */ - 0x88880000, 0x00000058, /* 478 -
> 1144 */ - 0x7c34fd00, 0x00000000, /* 480 - 1152 */ - 0x80880000,
> 0xfffffb90, /* 488 - 1160 */ - 0x72100000, 0x00000000, /* 490 -
> 1168 */ - 0x6a5c0000, 0x00000000, /* 498 - 1176 */ - 0x72110000,
> 0x00000000, /* 4a0 - 1184 */ - 0x6a5d0000, 0x00000000, /* 4a8 -
> 1192 */ - 0x72120000, 0x00000000, /* 4b0 - 1200 */ - 0x6a5e0000,
> 0x00000000, /* 4b8 - 1208 */ - 0x72130000, 0x00000000, /* 4c0 -
> 1216 */ - 0x6a5f0000, 0x00000000, /* 4c8 - 1224 */ - 0x90080000,
> 0x00000000, /* 4d0 - 1232 */ - 0x725c0000, 0x00000000, /* 4d8 -
> 1240 */ - 0x6a100000, 0x00000000, /* 4e0 - 1248 */ - 0x725d0000,
> 0x00000000, /* 4e8 - 1256 */ - 0x6a110000, 0x00000000, /* 4f0 -
> 1264 */ - 0x725e0000, 0x00000000, /* 4f8 - 1272 */ - 0x6a120000,
> 0x00000000, /* 500 - 1280 */ - 0x725f0000, 0x00000000, /* 508 -
> 1288 */ - 0x6a130000, 0x00000000, /* 510 - 1296 */ - 0x90080000,
> 0x00000000, /* 518 - 1304 */ - 0x7c027f00, 0x00000000, /* 520 -
> 1312 */ - 0x60000008, 0x00000000, /* 528 - 1320 */ - 0x60000040,
> 0x00000000, /* 530 - 1328 */ - 0x48000000, 0x00000000, /* 538 -
> 1336 */ - 0x90080000, 0x00000000, /* 540 - 1344 */ - 0x88880000,
> 0xffffffd0, /* 548 - 1352 */ - 0x98080000, 0x0000ff00, /* 550 -
> 1360 */ - 0x60000040, 0x00000000, /* 558 - 1368 */ - 0x1f000038,
> 0x00000038, /* 560 - 1376 */ - 0x98080000, 0x0000ff02, /* 568 -
> 1384 */ - 0x60000040, 0x00000000, /* 570 - 1392 */ - 0x1f000040,
> 0x00000040, /* 578 - 1400 */ - 0x98080000, 0x0000ff03, /* 580 -
> 1408 */ - 0x80000000, 0x00000000, /* 588 - 1416 */ + 0x1b000058,
> 0x00000058, /* 3d0 - 976 */ + 0x80880000, 0xfffffc40, /* 3d8 -
> 984 */ + 0x88880000, 0x000000b8, /* 3e0 - 992 */ + 0x7a340200,
> 0x00000000, /* 3e8 - 1000 */ + 0x19000068, 0x00000068, /* 3f0 -
> 1008 */ + 0x7e350100, 0x00000000, /* 3f8 - 1016 */ + 0x7e100800,
> 0x00000000, /* 400 - 1024 */ + 0x7f110000, 0x00000000, /* 408 -
> 1032 */ + 0x7f120000, 0x00000000, /* 410 - 1040 */ + 0x7f130000,
> 0x00000000, /* 418 - 1048 */ + 0x818b0000, 0xffffffc8, /* 420 -
> 1056 */ + 0x88880000, 0x000000b8, /* 428 - 1064 */ + 0x7c34fd00,
> 0x00000000, /* 430 - 1072 */ + 0x80880000, 0xfffffbe0, /* 438 -
> 1080 */ + 0x88880000, 0x00000058, /* 440 - 1088 */ + 0x7a340200,
> 0x00000000, /* 448 - 1096 */ + 0x18000068, 0x00000068, /* 450 -
> 1104 */ + 0x7e350100, 0x00000000, /* 458 - 1112 */ + 0x7e100800,
> 0x00000000, /* 460 - 1120 */ + 0x7f110000, 0x00000000, /* 468 -
> 1128 */ + 0x7f120000, 0x00000000, /* 470 - 1136 */ + 0x7f130000,
> 0x00000000, /* 478 - 1144 */ + 0x808b0000, 0xffffffc8, /* 480 -
> 1152 */ + 0x88880000, 0x00000058, /* 488 - 1160 */ + 0x7c34fd00,
> 0x00000000, /* 490 - 1168 */ + 0x80880000, 0xfffffb80, /* 498 -
> 1176 */ + 0x72100000, 0x00000000, /* 4a0 - 1184 */ + 0x6a5c0000,
> 0x00000000, /* 4a8 - 1192 */ + 0x72110000, 0x00000000, /* 4b0 -
> 1200 */ + 0x6a5d0000, 0x00000000, /* 4b8 - 1208 */ + 0x72120000,
> 0x00000000, /* 4c0 - 1216 */ + 0x6a5e0000, 0x00000000, /* 4c8 -
> 1224 */ + 0x72130000, 0x00000000, /* 4d0 - 1232 */ + 0x6a5f0000,
> 0x00000000, /* 4d8 - 1240 */ + 0x90080000, 0x00000000, /* 4e0 -
> 1248 */ + 0x725c0000, 0x00000000, /* 4e8 - 1256 */ + 0x6a100000,
> 0x00000000, /* 4f0 - 1264 */ + 0x725d0000, 0x00000000, /* 4f8 -
> 1272 */ + 0x6a110000, 0x00000000, /* 500 - 1280 */ + 0x725e0000,
> 0x00000000, /* 508 - 1288 */ + 0x6a120000, 0x00000000, /* 510 -
> 1296 */ + 0x725f0000, 0x00000000, /* 518 - 1304 */ + 0x6a130000,
> 0x00000000, /* 520 - 1312 */ + 0x90080000, 0x00000000, /* 528 -
> 1320 */ + 0x7c027f00, 0x00000000, /* 530 - 1328 */ + 0x60000008,
> 0x00000000, /* 538 - 1336 */ + 0x60000040, 0x00000000, /* 540 -
> 1344 */ + 0x48000000, 0x00000000, /* 548 - 1352 */ + 0x90080000,
> 0x00000000, /* 550 - 1360 */ + 0x88880000, 0xffffffd0, /* 558 -
> 1368 */ + 0x98080000, 0x0000ff00, /* 560 - 1376 */ + 0x60000040,
> 0x00000000, /* 568 - 1384 */ + 0x1f000038, 0x00000038, /* 570 -
> 1392 */ + 0x98080000, 0x0000ff02, /* 578 - 1400 */ + 0x60000040,
> 0x00000000, /* 580 - 1408 */ + 0x1f000040, 0x00000040, /* 588 -
> 1416 */ + 0x98080000, 0x0000ff03, /* 590 - 1424 */ + 0x80000000,
> 0x00000000, /* 598 - 1432 */ };
>
> const u_int32_t lun_switch[] = { @@ -244,12 +246,14 @@ #define
> A_t_msg_out 0x00000048 #define A_t_cmd 0x00000050 #define
> A_t_status 0x00000058 -#define A_t_data 0x00000060 +#define
> A_t_offset 0x00000060 +#define A_t_data 0x00000068 #define
> A_int_done 0x0000ff00 #define A_int_msgin 0x0000ff01 #define
> A_int_extmsgin 0x0000ff02 #define A_int_extmsgdata 0x0000ff03
> #define A_int_disc 0x0000ff04 +#define A_int_saveoffset 0x0000ff05
> #define A_int_reseltarg 0x0000ff80 #define A_int_resellun
> 0x0000ff81 #define A_int_reseltag 0x0000ff82 @@ -259,24 +263,24 @@
> #define A_flag_data 0x00000002 #define A_flag_data_mask 0x000000fd
> #define Ent_waitphase 0x00000020 -#define Ent_send_msgout
> 0x00000388 -#define Ent_msgout 0x00000398 +#define Ent_send_msgout
> 0x00000398 +#define Ent_msgout 0x000003a8 #define Ent_msgin
> 0x00000328 #define Ent_handle_msgin 0x00000338 -#define
> Ent_msgin_ack 0x00000378 -#define Ent_dataout 0x00000430 -#define
> Ent_datain 0x000003d0 -#define Ent_cmdout 0x000003b0 -#define
> Ent_status 0x000003c0 -#define Ent_disconnect 0x00000520 +#define
> Ent_msgin_ack 0x00000388 +#define Ent_dataout 0x00000440 +#define
> Ent_datain 0x000003e0 +#define Ent_cmdout 0x000003c0 +#define
> Ent_status 0x000003d0 +#define Ent_disconnect 0x00000530 #define
> Ent_reselect 0x000001e0 #define Ent_reselected 0x00000000 -#define
> Ent_selected 0x00000378 +#define Ent_selected 0x00000388 #define
> Ent_script_sched 0x00000070 #define Ent_script_sched_slot0
> 0x000000a0 -#define Ent_get_extmsgdata 0x00000570 +#define
> Ent_get_extmsgdata 0x00000580 #define Ent_resel_targ0 0x00000238
> -#define Ent_msgin_space 0x00000588 +#define Ent_msgin_space
> 0x00000598 #define Ent_lunsw_return 0x000002b8 #define Ent_led_on1
> 0x00000068 #define Ent_led_on2 0x00000220 Index:
> microcode/siop/siop.ss
> ===================================================================
> RCS file: /cvsroot/src/sys/dev/microcode/siop/siop.ss,v retrieving
> revision 1.17.10.1 diff -u -r1.17.10.1 siop.ss ---
> microcode/siop/siop.ss 11 May 2005 03:48:47 -0000 1.17.10.1 +++
> microcode/siop/siop.ss 9 Nov 2005 18:51:54 -0000 @@ -38,7 +38,8 @@
> ABSOLUTE t_msg_out = 72; ABSOLUTE t_cmd = 80; ABSOLUTE t_status =
> 88; -ABSOLUTE t_data = 96; +ABSOLUTE t_offset = 96; +ABSOLUTE
> t_data = 104;
>
> ;; interrupt codes ; interrupts that need a valid DSA @@ -47,6
> +48,7 @@ ABSOLUTE int_extmsgin = 0xff02; ABSOLUTE int_extmsgdata =
> 0xff03; ABSOLUTE int_disc = 0xff04; +ABSOLUTE int_saveoffset =
> 0xff05; ; interrupts that don't have a valid DSA ABSOLUTE
> int_reseltarg = 0xff80; ABSOLUTE int_resellun = 0xff81; @@ -262,9
> +264,12 @@ CALL REL(disconnect) ; disconnect
> message; ; if we didn't get sdp, no need to interrupt MOVE
> SCRATCHA0 & flag_sdp TO SFBR; + INT int_disc, IF not 0x00; +;
> update offset if we did some data transfer + MOVE SCRATCHA1 TO
> SFBR; JUMP REL(script_sched), if 0x00; -; Ok, we need to save data
> pointers - INT int_disc; + INT int_saveoffset; + msgin_ack:
> selected: CLEAR ACK;
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQFDcwJNzFQu7sVnWh8RArYyAJ90wocwhCqByTLDEL49GKlYNU1fBQCgslpk
QUyAUqYbZKBa/96sIdP/RWI=
=bWyt
-----END PGP SIGNATURE-----