Apply by doing:
       cd /usr/src
       patch -p0 < 004_scsi.patch

Rebuild your kernel.

Index: sys/dev/ic/siop.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/siop.c,v
retrieving revision 1.31
retrieving revision 1.31.2.1
diff -u -p -r1.31 -r1.31.2.1
--- sys/dev/ic/siop.c   21 Oct 2003 18:58:49 -0000      1.31
+++ sys/dev/ic/siop.c   30 Apr 2004 22:07:37 -0000      1.31.2.1
@@ -769,6 +769,15 @@ scintr:
                                       /* no table to flush here */
                                       CALL_SCRIPT(Ent_msgin_ack);
                                       return 1;
+                               } else if (msg == MSG_EXTENDED &&
+                                   extmsg == MSG_EXT_PPR) {
+                                       /* PPR negotiation rejected */
+                                       siop_target->target_c.offset = 0;
+                                       siop_target->target_c.period = 0;
+                                       siop_target->target_c.status = TARST_ASYNC;
+                                       siop_target->target_c.flags &= ~(TARF_DT | TARF_ISDT);
+                                       CALL_SCRIPT(Ent_msgin_ack);
+                                       return 1;
                               } else if (msg == MSG_SIMPLE_Q_TAG ||
                                   msg == MSG_HEAD_OF_Q_TAG ||
                                   msg == MSG_ORDERED_Q_TAG) {
@@ -1417,7 +1426,6 @@ siop_scsicmd(xs)

                                               /* Set TARF_DT here because if it is turned off during PPR, it must STAY off! */
                                               if ((lun == 0) &&
-                                                   (((struct scsi_inquiry_data *)xs->data)->flags2 & SID_CLOCKING) &&
                                                   (sc->sc_c.features & SF_BUS_ULTRA3))
                                                       sc->sc_c.targets[target]->flags |= TARF_DT;
                                               /* Can't do lun 0 here, because flags not set yet */
Index: sys/dev/ieee1394/fwscsi.c
===================================================================
RCS file: /cvs/src/sys/dev/ieee1394/fwscsi.c,v
retrieving revision 1.14
retrieving revision 1.14.2.1
diff -u -p -r1.14 -r1.14.2.1
--- sys/dev/ieee1394/fwscsi.c   14 Jan 2004 02:00:41 -0000      1.14
+++ sys/dev/ieee1394/fwscsi.c   30 Apr 2004 22:07:37 -0000      1.14.2.1
@@ -301,7 +301,6 @@ fwscsi_attach(struct device *parent, str
       sc->sc_adapter_link.adapter_softc = sc;
       sc->sc_adapter_link.flags = 0;
       sc->sc_adapter_link.inquiry_flags = 0;
-       sc->sc_adapter_link.inquiry_flags2 = 0;
       sc->sc_adapter_link.quirks |= SDEV_NOTAGS | SDEV_ONLYBIG;

       sc->sc_speed = fwsc->sc_sc1394.sc1394_link_speed;
Index: sys/scsi/scsi_base.c
===================================================================
RCS file: /cvs/src/sys/scsi/scsi_base.c,v
retrieving revision 1.55
retrieving revision 1.55.2.1
diff -u -p -r1.55 -r1.55.2.1
--- sys/scsi/scsi_base.c        14 Mar 2004 22:46:47 -0000      1.55
+++ sys/scsi/scsi_base.c        30 Apr 2004 22:07:37 -0000      1.55.2.1
@@ -311,38 +311,13 @@ scsi_inquire(sc_link, inqbuf, flags)
       memset(&inqbuf->extra, ' ', sizeof inqbuf->extra);

       /*
-        * First try for the basic 36 bytes of SCSI2 inquiry information. This
+        * Ask for only the basic 36 bytes of SCSI2 inquiry information. This
        * avoids problems with devices that choke trying to supply more.
        */
       scsi_cmd.length = SID_INQUIRY_HDR + SID_SCSI2_ALEN;
       error = scsi_scsi_cmd(sc_link, (struct scsi_generic *)&scsi_cmd,
           sizeof(scsi_cmd), (u_char *)inqbuf, scsi_cmd.length, 2, 10000, NULL,
           SCSI_DATA_IN | flags);
-
-       /*
-        * If the device can supply more information, ask for as much
-        * as we can handle or as much as it has, whichever is less.
-        */
-       if (!error && inqbuf->additional_length > SID_SCSI2_ALEN) {
-               switch (inqbuf->device & SID_QUAL) {
-               case SID_QUAL_RSVD:
-               case SID_QUAL_BAD_LU:
-               case SID_QUAL_LU_OFFLINE:
-                       return (0);
-               case SID_QUAL_LU_OK:
-                       if ((inqbuf->device & SID_TYPE) == T_NODEVICE)
-                               return (0);
-                       break;
-               default:
-                       break;
-               }
-
-               scsi_cmd.length = min(sizeof(struct scsi_inquiry_data),
-                   SID_INQUIRY_HDR + inqbuf->additional_length);
-               error = scsi_scsi_cmd(sc_link, (struct scsi_generic *)&scsi_cmd,
-                   sizeof(scsi_cmd), (u_char *)inqbuf, scsi_cmd.length, 2,
-                   10000, NULL, SCSI_DATA_IN | flags);
-       }

       return (error);
}
Index: sys/scsi/scsiconf.c
===================================================================
RCS file: /cvs/src/sys/scsi/scsiconf.c,v
retrieving revision 1.87
retrieving revision 1.87.2.1
diff -u -p -r1.87 -r1.87.2.1
--- sys/scsi/scsiconf.c 10 Mar 2004 01:37:40 -0000      1.87
+++ sys/scsi/scsiconf.c 30 Apr 2004 22:07:37 -0000      1.87.2.1
@@ -634,7 +634,6 @@ scsi_probedev(scsi, inqbuflun0, target,
       sc_link->lun = lun;
       sc_link->device = &probe_switch;
       sc_link->inquiry_flags = 0;
-       sc_link->inquiry_flags2 = 0;

       SC_DEBUG(sc_link, SDEV_DB2, ("scsi_link created.\n"));

@@ -739,7 +738,6 @@ scsi_probedev(scsi, inqbuflun0, target,
        * Save INQUIRY "flags" (SID_Linked, etc.) for low-level drivers.
        */
       sc_link->inquiry_flags = inqbuf.flags;
-       sc_link->inquiry_flags2 = inqbuf.flags2;

       /*
        * note what BASIC type of device it is
Index: sys/scsi/scsiconf.h
===================================================================
RCS file: /cvs/src/sys/scsi/scsiconf.h,v
retrieving revision 1.42
retrieving revision 1.42.2.1
diff -u -p -r1.42 -r1.42.2.1
--- sys/scsi/scsiconf.h 10 Mar 2004 01:37:40 -0000      1.42
+++ sys/scsi/scsiconf.h 30 Apr 2004 22:07:37 -0000      1.42.2.1
@@ -199,7 +199,6 @@ struct scsi_link {
#define        ADEV_NODOORLOCK         0x2000  /* can't lock door */
#define SDEV_ONLYBIG           0x4000  /* always use READ_BIG and WRITE_BIG */
       u_int8_t inquiry_flags;         /* copy of flags from probe INQUIRY */
-       u_int8_t inquiry_flags2;        /* copy of flags2 from probe INQUIRY */
       struct  scsi_device *device;    /* device entry points etc. */
       void    *device_softc;          /* needed for call to foo_start */
       struct  scsi_adapter *adapter;  /* adapter entry points etc. */