[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openbsd-tech
Subject:    MPI driver causing vmware to crash on boot
From:       "Jason Crawford" <jasonrcrawford () gmail ! com>
Date:       2006-06-30 15:17:59
Message-ID: 5d6838280606300817s31c6a95aob56ce5b1159ce7f () mail ! gmail ! com
[Download RAW message or body]

Recent changes to the MPI driver are now causing vmware to crash on
boot, and the virtual shuts down. I haven't been able to get any debug
information because the virtual instantly shuts down, and I'm not sure
how to get it to just drop me to a ddb. However, I have found the
exact changes to mpi.c and mpireg.h that make the difference between
vmware booting properly and vmware crashing on boot. A working dmesg
of current sources with last working mpi.c and mpireg.h versions
follows, as well as a diff between the working mpi.c and mpireg.h and
the crashing mpi.c and mpireg.h files.

OpenBSD 3.9-current (GENERIC.RT) #6: Fri Jun 30 11:06:59 EDT 2006
    jason@tweak.hcpnet.org:/usr/src/sys/arch/i386/compile/GENERIC.RT
cpu0: Intel(R) Pentium(R) 4 CPU 3.20GHz ("GenuineIntel" 686-class) 3.20 GHz
cpu0: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,SSE3,DS-CPL
 real mem  = 267939840 (261660K)
avail mem = 237871104 (232296K)
using 3296 buffers containing 13500416 bytes (13184K) of memory
mainbus0 (root)
bios0 at mainbus0: AT/286+(6f) BIOS, date 04/21/04, BIOS32 rev. 0 @
0xfd880, SMBIOS rev. 2.31 @ 0xe4010 (45 entries)
bios0: VMware, Inc. VMware Virtual Platform
apm0 at bios0: Power Management spec V1.2
apm0: AC on, battery charge unknown
apm0: flags 30102 dobusy 0 doidle 1
pcibios0 at bios0: rev 2.1 @ 0xfd880/0x780
pcibios0: PCI IRQ Routing Table rev 1.0 @ 0xfdf30/176 (9 entries)
pcibios0: PCI Interrupt Router at 000:07:0 ("Intel 82371FB ISA" rev 0x00)
pcibios0: PCI bus #1 is the last bus
bios0: ROM list: 0xc0000/0x8000 0xc8000/0x1a00! 0xca000/0x1000
0xdc000/0x4000! 0xe4000/0x4000!
cpu0 at mainbus0
pci0 at mainbus0 bus 0: configuration mode 1 (no bios)
pchb0 at pci0 dev 0 function 0 "Intel 82443BX AGP" rev 0x01
ppb0 at pci0 dev 1 function 0 "Intel 82443BX AGP" rev 0x01
pci1 at ppb0 bus 1
pcib0 at pci0 dev 7 function 0 "Intel 82371AB PIIX4 ISA" rev 0x08
pciide0 at pci0 dev 7 function 1 "Intel 82371AB IDE" rev 0x01: DMA,
channel 0 configured to compatibility, channel 1 configured to
compatibility
pciide0: channel 0 ignored (disabled)
atapiscsi0 at pciide0 channel 1 drive 0
scsibus0 at atapiscsi0: 2 targets
cd0 at scsibus0 targ 0 lun 0: <NECVMWar, VMware IDE CDR10, 1.00> SCSI0
5/cdrom removable
cd0(pciide0:1:0): using PIO mode 4, Ultra-DMA mode 2
piixpm0 at pci0 dev 7 function 3 "Intel 82371AB Power" rev 0x08: SMBus disabled
vga1 at pci0 dev 15 function 0 "VMware Virtual SVGA II" rev 0x00
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
mpi0 at pci0 dev 16 function 0 "Symbios Logic 53c1030" rev 0x01: irq 9
scsibus1 at mpi0: 16 targets
sd0 at scsibus1 targ 0 lun 0: <VMware,, VMware Virtual S, 1.0> SCSI2
0/direct fixed
sd0: 6144MB, 6144 cyl, 64 head, 32 sec, 512 bytes/sec, 12582912 sec total
mpi0: target 0 Sync at 160MHz width 16bit offset 127 QAS 1 DT 1 IU 1
pcn0 at pci0 dev 17 function 0 "AMD 79c970 PCnet-PCI" rev 0x10,
Am79c970A, rev 0: irq 10, address 00:0c:29:da:7a:ac
isa0 at pcib0
isadma0 at isa0
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pmsi0 at pckbc0 (aux slot)
pckbc0: using irq 12 for aux slot
wsmouse0 at pmsi0 mux 0
pcppi0 at isa0 port 0x61
midi0 at pcppi0: <PC speaker>
spkr0 at pcppi0
lpt0 at isa0 port 0x378/4 irq 7
npx0 at isa0 port 0xf0/16: using exception 16
pccom0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pccom1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo
fdc0 at isa0 port 0x3f0/6 irq 6 drq 2
fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
biomask eb65 netmask ef65 ttymask ffe7
pctr: user-level cycle counter enabled
mpi0:  xs cmd: 0x1b len: 0 error: 0x01 flags 0x1a8
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x0000000f
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x1a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x00000013
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x5a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 10 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x00000014
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
dkcsum: sd0 matches BIOS drive 0x80
root on sd0a
mpi0:  xs cmd: 0x1b len: 0 error: 0x01 flags 0x188
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x00000018
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x1a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x0000001c
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x5a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 10 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x0000001d
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
rootdev=0x400 rrootdev=0xd00 rawdev=0xd02
mpi0:  xs cmd: 0x1b len: 0 error: 0x01 flags 0x1a8
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x00000020
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x1a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x00000024
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x5a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 10 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x00000025
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x1b len: 0 error: 0x01 flags 0x188
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x00000028
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x1a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 6 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x0000002c
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2
mpi0:  xs cmd: 0x5a len: 255 error: 0x01 flags 0x828
mpi0:  target_id: 0 bus: 0 msg_length: 8 function: 0x00
mpi0:  cdb_length: 10 sense_buf_length: 0 msg_flags: 0x00
mpi0:  msg_context: 0x0000002d
mpi0:  scsi_status: 0x02 scsi_state: 0x01 ioc_status: 0x0000
mpi0:  ioc_loginfo: 0x00000000
mpi0:  transfer_count: 0
mpi0:  sense_count: 18
mpi0:  response_info: 0x00000000
mpi0:  tag: 0x0000
mpi0:  xs error: 0x01 xs status: 2

Index: mpi.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/mpi.c,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- mpi.c	19 Jun 2006 21:06:22 -0000	1.48
+++ mpi.c	29 Jun 2006 08:35:08 -0000	1.49
@@ -1,4 +1,4 @@
-/*	$OpenBSD: mpi.c,v 1.48 2006/06/19 21:06:22 miod Exp $ */
+/*	$OpenBSD: mpi.c,v 1.49 2006/06/29 08:35:08 dlg Exp $ */

 /*
  * Copyright (c) 2005, 2006 David Gwynne <dlg@openbsd.org>
@@ -976,13 +976,13 @@

 	switch (xs->flags & (SCSI_DATA_IN | SCSI_DATA_OUT)) {
 	case SCSI_DATA_IN:
-		io->control = htole32(MPI_SCSIIO_DATA_DIR_READ);
+		io->direction = MPI_SCSIIO_DIR_READ;
 		break;
 	case SCSI_DATA_OUT:
-		io->control = htole32(MPI_SCSIIO_DATA_DIR_WRITE);
+		io->direction = MPI_SCSIIO_DIR_WRITE;
 		break;
 	default:
-		io->control = htole32(MPI_SCSIIO_DATA_DIR_NONE);
+		io->direction = MPI_SCSIIO_DIR_NONE;
 		break;
 	}

Index: mpireg.h
===================================================================
RCS file: /cvs/src/sys/dev/ic/mpireg.h,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- mpireg.h	29 Jun 2006 08:23:26 -0000	1.18
+++ mpireg.h	29 Jun 2006 08:35:08 -0000	1.19
@@ -1,4 +1,4 @@
-/*	$OpenBSD: mpireg.h,v 1.18 2006/06/29 08:23:26 dlg Exp $ */
+/*	$OpenBSD: mpireg.h,v 1.19 2006/06/29 08:35:08 dlg Exp $ */

 /*
  * Copyright (c) 2005 David Gwynne <dlg@openbsd.org>
@@ -619,7 +619,7 @@

 	u_int8_t		cdb_length;
 	u_int8_t		sense_buf_len;
-	u_int8_t		reserved;
+	u_int8_t		reserved1;
 	u_int8_t		msg_flags;
 #define MPI_SCSIIO_EEDP					0xf0
 #define MPI_SCSIIO_CMD_DATA_DIR				(1<<2)
@@ -632,19 +632,19 @@

 	u_int16_t		lun[4];

-	u_int32_t		control;
-#define MPI_SCSIIO_ADDITIONAL_CDB_LEN			(0xf<<26)
-#define MPI_SCSIIO_DATA_DIR				(0x3<<24)
-#define MPI_SCSIIO_DATA_DIR_NONE			(0x0<<24)
-#define MPI_SCSIIO_DATA_DIR_WRITE			(0x1<<24)
-#define MPI_SCSIIO_DATA_DIR_READ			(0x2<<24)
-#define MPI_SCSIIO_TASK_ATTR				(0x7<<8)
-#define MPI_SCSIIO_TASK_ATTR_SIMPLE_Q			(0x0<<8)
-#define MPI_SCSIIO_TASK_ATTR_HEAD_OF_Q			(0x1<<8)
-#define MPI_SCSIIO_TASK_ATTR_ORDERED_Q			(0x2<<8)
-#define MPI_SCSIIO_TASK_ATTR_ACA_Q			(0x4<<8)
-#define MPI_SCSIIO_TASK_ATTR_UNTAGGED			(0x5<<8)
-#define MPI_SCSIIO_TASK_ATTR_NO_DISCONNECT		(0x7<<8)
+	u_int8_t		reserved2;
+	u_int8_t		tagging;
+#define MPI_SCSIIO_ATTR_SIMPLE_Q			(0x0)
+#define MPI_SCSIIO_ATTR_HEAD_OF_Q			(0x1)
+#define MPI_SCSIIO_ATTR_ORDERED_Q			(0x2)
+#define MPI_SCSIIO_ATTR_ACA_Q				(0x4)
+#define MPI_SCSIIO_ATTR_UNTAGGED			(0x5)
+#define MPI_SCSIIO_ATTR_NO_DISCONNECT			(0x7)
+	u_int8_t		direction;
+#define MPI_SCSIIO_DIR_NONE				(0x0)
+#define MPI_SCSIIO_DIR_WRITE				(0x1)
+#define MPI_SCSIIO_DIR_READ				(0x2)
+	u_int8_t		extra_cdb_len;

 #define MPI_CDB_LEN					16
 	u_int8_t		cdb[MPI_CDB_LEN];


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic