Subject: Re: NetBSD *inside* VMware on NetBSD?
To: None <port-i386@netbsd.org>
From: Rob <rmanches@vmware.com>
List: port-i386
Date: 07/11/2001 01:07:50
On Fri, 6 Jul 2001 18:56:32 -0400, Thor Lancelot Simon wrote:
> I need to have both 1.5.1 and -current on one of my machines.  I'd like
> to do it by running -current inside VMware.
> 
> Unfortunately, I can't get the -current install disks to get through
> autoconfiguration.  With IDE "disks", I get to the probe of pciide0,
> and then I get a hard hang.

This is could be due to the fact that VMware workstation doesn't
implement a flush cache command which is fine, but we didn't set the
drive to ready after the error.  If you can compile your kernel here is
a patch which will fix the problem of the cacheflush timing out but I'm
not sure if it will help at all with the hard hang.

-rob


Index: sys/dev/ata/wd.c
===================================================================
RCS file: /cvsroot/syssrc/sys/dev/ata/wd.c,v
retrieving revision 1.214
diff -u -r1.214 wd.c
--- wd.c	2001/06/13 18:17:40	1.214
+++ wd.c	2001/07/11 01:00:13
@@ -1358,33 +1358,6 @@
 	struct wd_softc *wd;
 	int flags;
 {
-	struct wdc_command wdc_c;
-
-	if (wd->drvp->ata_vers < 4) /* WDCC_FLUSHCACHE is here since ATA-4 */
-		return;
-	memset(&wdc_c, 0, sizeof(struct wdc_command));
-	wdc_c.r_command = WDCC_FLUSHCACHE;
-	wdc_c.r_st_bmask = WDCS_DRDY;
-	wdc_c.r_st_pmask = WDCS_DRDY;
-	wdc_c.flags = flags;
-	wdc_c.timeout = 30000; /* 30s timeout */
-	if (wdc_exec_command(wd->drvp, &wdc_c) != WDC_COMPLETE) {
-		printf("%s: flush cache command didn't complete\n",
-		    wd->sc_dev.dv_xname);
-	}
-	if (wdc_c.flags & AT_TIMEOU) {
-		printf("%s: flush cache command timeout\n",
-		    wd->sc_dev.dv_xname);
-	}
-	if (wdc_c.flags & AT_DF) {
-		printf("%s: flush cache command: drive fault\n",
-		    wd->sc_dev.dv_xname);
-	}
-	/*
-	 * Ignore error register, it shouldn't report anything else
-	 * than COMMAND ABORTED, which means the device doesn't support
-	 * flush cache
-	 */
 }
 
 void