[Simh] NetBSD related issues

Felix Deichmann m4j0rd0m0 at gmail.com
Fri Apr 12 03:03:00 EDT 2013


Hi.

I'm running a NetBSD 6.0.1 amd64 host with SIMH VAX 3.9-0 (and "4.0
Beta" later), built it myself and not from pkgsrc.
The guest is NetBSD 6.0.1 vax (please do not ask why I do this...).

host# uname -a
NetBSD host.blabla 6.0.1 NetBSD 6.0.1 (GENERIC) amd64

host# gmake vax
ldconfig: not found
lib paths are: /usr/lib
using libm: /usr/lib/libm.so
using librt: /usr/lib/librt.so
using libpthread: /usr/lib/libpthread.so /usr/include/pthread.h
using libdl: /usr/include/dlfcn.h
using libpcap: /usr/include/pcap.h
***
*** vax Simulator being built with:
*** - compiler optimizations and no debugging support. GCC Version: 4.5.3.
*** - dynamic networking support using NetBSD provided libpcap components.
***
if test ! -e BIN; then mkdir BIN; fi
gcc -std=c99 -U__STRICT_ANSI__  -O2 -finline-functions
-fgcse-after-reload -fpredictive-commoning -fipa-cp-clone
-fno-unsafe-loop-optimizations -fno-strict-overflow -flto
-fwhole-program -Wno-unused-result -I . -D_GNU_SOURCE
-DUSE_READER_THREAD -DHAVE_DLOPEN=so  VAX/vax_cpu.c VAX/vax_cpu1.c
VAX/vax_fpa.c VAX/vax_io.c VAX/vax_cis.c VAX/vax_octa.c
VAX/vax_cmode.c VAX/vax_mmu.c VAX/vax_stddev.c VAX/vax_sysdev.c
VAX/vax_sys.c  VAX/vax_syscm.c VAX/vax_syslist.c PDP11/pdp11_rl.c
PDP11/pdp11_rq.c PDP11/pdp11_ts.c PDP11/pdp11_dz.c PDP11/pdp11_lp.c
PDP11/pdp11_tq.c PDP11/pdp11_xq.c PDP11/pdp11_ry.c PDP11/pdp11_vh.c
PDP11/pdp11_cr.c PDP11/pdp11_io_lib.c scp.c sim_console.c sim_fio.c
sim_timer.c sim_sock.c sim_tmxr.c sim_ether.c sim_tape.c -DVM_VAX
-DUSE_INT64 -DUSE_ADDR64 -I VAX -I PDP11 -DUSE_SHARED -I/usr/include/
-DUSE_TAP_NETWORK -DUSE_BSDTUNTAP -o BIN/vax -lm -lrt -lpthread
-flto -fwhole-program


I also increased HZ in the host kernel to HZ=1000 to get SIMH's CPU
idle support (couldn't be enabled for stock HZ=100):

host# sysctl kern.clockrate
kern.clockrate: tick = 1000, tickadj = 4, hz = 1000, profhz = 1000,
stathz = 1000


First issue is that a RAUSER disk cannot be set to more than 2047 MiB (why?):

sim> set rq0 rauser=2047
sim> set rq0 rauser=2048
Invalid argument


Second issue is that CPU idle detection (with mode set to ALL, NETBSD,
...) does not work for the NetBSD vax guest.
I get a constant 100% load on the host when the NetBSD guest is idling
along (0%).
But everything works perfectly (host load goes down to 0%) when at the
>>> prompt, e. g. after guest shutdown.

sim> set cpu idle=ALL


Now I also tried current SIMH "4.0 Beta" from GitHub, CPU idle
detection for the NetBSD guest DOES work now *yay*.

host# gmake vax
ldconfig: not found
*** Warning ***
*** Warning *** The library search path on your NetBSD platform can't be
*** Warning *** determined.  This should be resolved before you can expect
*** Warning *** to have fully working simulators.
*** Warning ***
lib paths are: /usr/lib
using libm: /usr/lib/libm.so
using librt: /usr/lib/librt.so
using libpthread: /usr/lib/libpthread.so /usr/include/pthread.h
using libdl: /usr/include/dlfcn.h
using libpcap: /usr/include/pcap.h
***
*** vax Simulator being built with:
*** - compiler optimizations and no debugging support. GCC Version: 4.5.3.
*** - dynamic networking support using NetBSD provided libpcap components.
***
mkdir -p BIN
gcc -std=c99 -U__STRICT_ANSI__  -O2 -finline-functions
-fgcse-after-reload -fpredictive-commoning -fipa-cp-clone
-fno-unsafe-loop-optimizations -fno-strict-overflow -Wno-unused-result
 -I . -D_GNU_SOURCE -DUSE_READER_THREAD -DSIM_ASYNCH_IO
-DHAVE_DLOPEN=so  sim_BuildROMs.c -o BIN/BuildROMs
BIN/BuildROMs
rm -f BIN/BuildROMs
mkdir -p BIN
gcc -std=c99 -U__STRICT_ANSI__  -O2 -finline-functions
-fgcse-after-reload -fpredictive-commoning -fipa-cp-clone
-fno-unsafe-loop-optimizations -fno-strict-overflow -Wno-unused-result
 -I . -D_GNU_SOURCE -DUSE_READER_THREAD -DSIM_ASYNCH_IO
-DHAVE_DLOPEN=so  VAX/vax_cpu.c VAX/vax_cpu1.c VAX/vax_fpa.c
VAX/vax_io.c VAX/vax_cis.c VAX/vax_octa.c  VAX/vax_cmode.c
VAX/vax_mmu.c VAX/vax_stddev.c VAX/vax_sysdev.c VAX/vax_sys.c
VAX/vax_syscm.c VAX/vax_syslist.c PDP11/pdp11_rl.c PDP11/pdp11_rq.c
PDP11/pdp11_ts.c PDP11/pdp11_dz.c PDP11/pdp11_lp.c PDP11/pdp11_tq.c
PDP11/pdp11_xq.c PDP11/pdp11_vh.c PDP11/pdp11_cr.c
PDP11/pdp11_io_lib.c scp.c sim_console.c sim_fio.c sim_timer.c
sim_sock.c sim_tmxr.c sim_ether.c sim_tape.c sim_disk.c sim_serial.c
-DVM_VAX -DUSE_INT64 -DUSE_ADDR64 -I VAX -I PDP11 -DUSE_SHARED
-I/usr/include/ -DUSE_TAP_NETWORK -DUSE_BSDTUNTAP -o BIN/microvax3900
-lm -lrt -lpthread
cp BIN/microvax3900 BIN/vax


But disk images >=2 GiB still don't. (And this time, 1 MB really is
1000000 bytes and not 1 MiB as with 3.9-0 before :))

sim> set rq0 rauser=2146
sim> set rq0 rauser=2147
Invalid argument


The -L flag for RAUSER to set LBNs is also interesting:

sim> set -L rq0 rauser=4194304
Invalid argument
sim> set -L rq0 rauser=4194303
Invalid argument
sim> set -L rq0 rauser=4194302
[ok]

Shouldn't 4194303 still work, as it is (just) under 2 GiB?


So what am I doing wrong, as I would say that NetBSD (host) does have
"extended file support" to support large files?

Regards
Felix


More information about the Simh mailing list