Subject: port-i386/18159: problem running NetBSD inside NetBSD using VMWare 2.0.4
To: None <gnats-bugs@gnats.netbsd.org>
From: None <marcello.balduccini@ttu.edu>
List: netbsd-bugs
Date: 09/03/2002 16:39:12
>Number: 18159
>Category: port-i386
>Synopsis: problem running NetBSD inside NetBSD using VMWare 2.0.4
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: port-i386-maintainer
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Sep 03 14:40:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator: Marcello Balduccini
>Release: NetBSD 1.5.1
>Organization:
Knowledge Representation Lab
Dept. of Computer Science
Texas Tech University
Lubbock, TX
>Environment:
System: NetBSD cucciolo 1.5.3 NetBSD 1.5.3 (MAIL-floppy) #5: Tue Sep 3 11:40:43 CDT 2002 marcy@krlab.cs.ttu.edu:/usr/src-1.5.3/sys/arch/i386/compile/MAIL-floppy i386
also tested on:
NetBSD-GENERIC_TINY.gz from ftp://releng.netbsd.org/pub/NetBSD-daily/200209010000/i386/binary/kernel
and
NetBSD 1.5.1/i386
NetBSD 1.5.2/i386
>Description:
NetBSD is unusable when run as guest OS of VMWare 2.0.4. For my tests, I always had NetBSD as host OS.
The problem appeared when I moved to a new Pentium 4.4GHz, with ASUS 533 MotherBoard. Everything
worked fine with my old Dell Pentium 3, 933MHz. Also, the problem does not appear if the guest
OS is Windows 2000/NT (I didnt't try any other version).
With NetBSD 1.5.X, the boot sequence hangs for minutes after pciide0 has been detected, right before
the wd0 is shown on the screen. If the emulation is allowed to run for some minutes, it eventually
detects wd0, atapibus0, cd0, le0 and hangs again right after isa0 has been detected. Here is a
sample output. Notice that the clock frequency is completely wrong.
>How-To-Repeat:
The simplest way is to create a new virtual machine and let it boot off a NetBSD
boot disk image.
>Fix:
None known. My guess is that there is a problem in either delay() or rdtsc().
My VERY WILD workaround has been to add a statement
n/=300;
at the entry of delay(), in sys/arch/i386/isa/clock.c. This removes the problem
of NetBSD hanging. The emulated system was able to complete the boot sequence.
The scale factor was picked to match the difference between the actual clock
frequency and the one measured by the guest OS. The correct factor would be
about 200, but I preferred 300 because with 200 the system was still slower
than it should.
>Release-Note:
>Audit-Trail:
>Unformatted:
>> NetBSD/i386 BIOS Boot, Revision 2.7
>> (marcy@krlab.cs.ttu.edu, Tue Sep 3 11:19:53 CDT 2002)
>> Memory: 637/60416 k
Use hd1a:netbsd to boot sd0 when wd0 is also installed
Press return to boot now, any other key for boot menu
booting fd0a:netbsd - starting in 0
open netbsd: No such file or directory
boot: fd0a:netbsd: No such file or directory
booting fd0a:netbsd.gz
1330121+82460+174376 [65+108352+83183]=0x1b355c
[ preserving 192056 bytes of netbsd ELF symbol table ]
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001
The NetBSD Foundation, Inc. All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
The Regents of the University of California. All rights reserved.
NetBSD 1.5.3 (MAIL-floppy) #5: Tue Sep 3 11:40:43 CDT 2002
marcy@krlab.cs.ttu.edu:/usr/src-1.5.3/sys/arch/i386/compile/MAIL-floppy
cpu0: Intel (null) (686-class), 444154.66 MHz <================ WRONG CLOCK FREQUENCY
total memory = 61056 KB
avail memory = 54636 KB
using 788 buffers containing 3152 KB of memory
BIOS32 rev. 0 found at 0xfd8c0
mainbus0 (root)
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled
pchb0 at pci0 dev 0 function 0
pchb0: Intel 82439TX System Controller (MTXC) (rev. 0x01)
pcib0 at pci0 dev 7 function 0
pcib0: Intel 82371AB PCI-to-ISA Bridge (PIIX4) (rev. 0x08)
pciide0 at pci0 dev 7 function 1: Intel 82371AB IDE controller (PIIX4) (rev. 0x01)
pciide0: bus-master DMA support present
pciide0: primary channel wired to compatibility mode
==================================================================
===============> SYSTEM HANGS HERE FOR MINUTES <==================
==================================================================
wd0 at pciide0 channel 0 drive 0: <VMware Virtual IDE Hard Drive>
wd0: drive supports 64-sector pio transfers, lba addressing
wd0: 8000 MB, 16254 cyl, 16 head, 63 sec, 512 bytes/sect x 16384032 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2
pciide0: primary channel interrupting at irq 14
wd0(pciide0:0:0): using PIO mode 4, DMA mode 2 (using DMA data transfers)
pciide0: secondary channel wired to compatibility mode
atapibus0 at pciide0 channel 1
cd0 at atapibus0 drive 0: <VMware Virtual IDE CDROM Drive, 1000000000000000000, 0000000> type 5 cdrom removable
cd0: 32-bit data port
cd0: drive supports PIO mode 4
pciide0: secondary channel interrupting at irq 15
cd0(pciide0:1:0): using PIO mode 4
unknown vendor 0x15ad product 0x0710 (miscellaneous display) at pci0 dev 15 function 0 not configured
le0 at pci0 dev 16 function 0: PCnet-PCI Ethernet
le0: address 00:50:56:fb:91:65
le0: 8 receive buffers, 2 transmit buffers
le0: interrupting at irq 9
isa0 at pcib0
==================================================================
===============> SYSTEM HANGS HERE FOR MINUTES <==================
==================================================================
With NetBSD 1.6, the boot sequence is different, but the system still prints the
wrong clock frequency and hangs after a while.