Index: twa_cam.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/twa/twa_cam.c,v
retrieving revision 1.3.2.1
diff -u -r1.3.2.1 twa_cam.c
--- twa_cam.c	11 Jan 2005 03:00:48 -0000	1.3.2.1
+++ twa_cam.c	20 Jan 2005 03:26:35 -0000
@@ -409,9 +409,9 @@
 		twa_dbg_dprint(3, sc, "XPT_PATH_INQ request");
 
 		path_inq->version_num = 1;
-		path_inq->hba_inquiry = PI_WIDE_16;
+		path_inq->hba_inquiry = 0;
 		path_inq->target_sprt = 0;
-		path_inq->hba_misc |= PIM_NOBUSRESET;
+		path_inq->hba_misc = 0;
 		path_inq->hba_eng_cnt = 0;
 		path_inq->max_target = TWA_MAX_UNITS;
 		path_inq->max_lun = 0;
Index: twa_freebsd.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/twa/twa_freebsd.c,v
retrieving revision 1.7.2.2
diff -u -r1.7.2.2 twa_freebsd.c
--- twa_freebsd.c	11 Jan 2005 03:00:48 -0000	1.7.2.2
+++ twa_freebsd.c	20 Jan 2005 03:26:35 -0000
@@ -261,15 +261,6 @@
 	sc->twa_bus_tag = rman_get_bustag(sc->twa_io_res);
 	sc->twa_bus_handle = rman_get_bushandle(sc->twa_io_res);
 
-	/* Initialize the driver for this controller. */
-	if ((error = twa_setup(sc))) {
-		twa_free(sc);
-		return(error);
-	}
-
-	/* Print some information about the controller and configuration. */
-	twa_describe_controller(sc);
-
 	/* Allocate and connect our interrupt. */
 	res_id = 0;
 	if ((sc->twa_irq_res = bus_alloc_resource(sc->twa_bus_dev, SYS_RES_IRQ,
@@ -286,6 +277,15 @@
 		return(ENXIO);
 	}
 
+	/* Initialize the driver for this controller. */
+	if ((error = twa_setup(sc))) {
+		twa_free(sc);
+		return(error);
+	}
+
+	/* Print some information about the controller and configuration. */
+	twa_describe_controller(sc);
+
 	/* Create the control device. */
 	sc->twa_ctrl_dev = make_dev(&twa_cdevsw, device_get_unit(sc->twa_bus_dev),
 					UID_ROOT, GID_OPERATOR, S_IRUSR | S_IWUSR,
@@ -543,6 +543,7 @@
 {
 	struct twa_request	*tr;
 	int			i;
+	int			error;
 
 	if ((sc->twa_req_buf = malloc(num_reqs * sizeof(struct twa_request),
 					TWA_MALLOC_CLASS, M_NOWAIT)) == NULL)
@@ -595,10 +596,12 @@
 		return(ENOMEM);
 	}
 
-	bus_dmamap_load(sc->twa_cmd_tag, sc->twa_cmd_map,
+	if ((error = bus_dmamap_load(sc->twa_cmd_tag, sc->twa_cmd_map,
 				sc->twa_cmd_pkt_buf,
 				num_reqs * sizeof(struct twa_command_packet),
-				twa_setup_request_dmamap, sc, 0);
+				twa_setup_request_dmamap, sc, BUS_DMA_NOWAIT))) {
+		twa_printf(sc, "bus_dmamap_load returned %d\n", error);
+	}
 	bzero(sc->twa_req_buf, num_reqs * sizeof(struct twa_request));
 	bzero(sc->twa_cmd_pkt_buf,
 			num_reqs * sizeof(struct twa_command_packet));
@@ -770,6 +773,8 @@
 	struct twa_softc	*sc = (struct twa_softc *)arg;
 
 	twa_dbg_dprint_enter(10, sc);
+	twa_dbg_dprint(3, sc, "error = %d, segs[0].addr = %lx, len = %lx",
+		error, segs[0].ds_addr, segs[0].ds_len);
 
 	sc->twa_cmd_pkt_phys = segs[0].ds_addr;
 }
