Subject: Re: UVM for sun3?
To: None <port-sun3@NetBSD.ORG>
From: Greg A. Woods <woods@kuma.web.net>
List: port-sun3
Date: 02/15/1998 22:18:24
[ On Sun, February 15, 1998 at 13:55:16 (-0800), Jason Thorpe wrote: ]
> Subject: Re: UVM for sun3? 
>
> So, FWIW, I just committed the m68k bits... should appear in tomorrow's
> SUP .. if you want help getting the sun3 up w/ UVM, feel free to send
> me mail, and I'll answer whatever questions you might have to the best
> of my ability :-)

Wonderbar!  Thanks!

> Hint: The first thing you'll have to do is implement MACHINE_NEW_NONCONTIG,
> which can be done using the old VM system.

Yeah, I thought so.  I think there are already the beginnings of hints
as to how to do this in sun3/pmap.c too, at least in what needs
replacing....

However first off I need to get the current kernel running as-is.  It's
dying because of a test that results in a panic() that's only there when
DIAGNOSTIC is set.  At the moment because of my unfamiliarity with the
BSD kernel autoconf code I'm not even sure where this state that fails
the test is getting set.

The test is at the opening of bus_scan() in sun3/autoconf.c:

#ifdef  DIAGNOSTIC
        if (cf->cf_fstate == FSTATE_STAR)
                panic("bus_scan: FSTATE_STAR");
#endif

The panic occurs just after it utters "obmem0 at mainbus0"

The backtrace (manually copied and thus missing parameters):

	Debugger()
	panic()
	bus_scan()
	mapply()
	config_search()
	obmem_attach()
	config_attach()
	config_found_sm()
	main_attach()
	config_attach()
	config_rootfound()
	configure()
	cpu_startup()
	main()

The system in question is a diskless 3/60C (i.e. w/CG4).  The kernel
config file I used follows:

# $NetBSD: GENERIC,v 1.50 1998/02/08 05:10:49 gwr Exp $

# GENERIC Sun3 (3/50, 3/60, 3/110, 3/160, 3/260, 3/E)
# Supports root on: ie0, le0, sd*, ...

include "arch/sun3/conf/std.sun3"

# Machines to be supported by this kernel
options         FPU_EMULATE
options         HAVECACHE               # Sun3/260 VAC

# Needs to be set per system.  i.e change these as you see fit
maxusers        64
options         MAXUPRC=120     # defaults to CHILD_MAX (80)
#options        NVNODE=integer  # namei cache

# Standard system options
options         KTRACE          # system call tracing
options         SYSVMSG         # System V message queues
options         SYSVSEM         # System V semaphores
options         SYSVSHM         # System V shared memory
#options        SHMMAXPGS=1024  # 1024 pages is the default
#options        LKM             # loadable kernel modules
#options        INSECURE        # disable kernel security level
#options        UCONSOLE        # Allow non-root TIOCCONS

# Which kernel debugger?  Uncomment either this:
options         DDB
# ... or these for KGDB (gdb remote target)
#makeoptions DEBUG="-g"         # debugging symbols for gdb
#options        KGDB
#options        KGDBDEV=0x0C01  # ttya=0C00 ttyb=0C01

# Other debugging options
options         DDB_HISTORY_SIZE=100    # enable history editing in DDB
options         DEBUG           # kernel debugging code
options         DIAGNOSTIC      # extra kernel sanity checking
options         KMEMSTATS       # kernel memory statistics (vmstat -m)
options         PMAP_DEBUG
options         SWAPDEBUG
options         SCSIDEBUG
options         SCSIVERBOSE             # Verbose SCSI errors

# kernel printf message buffer size...
#options        MSGBUFSIZE=integer

# Compatability options
options         COMPAT_SUNOS    # can run SunOS 4.1.1 executables
#options        COMPAT_43       # and 4.3BSD and ...
#options        COMPAT_10       # NetBSD 1.0
#options        COMPAT_11       # NetBSD 1.1
#options        COMPAT_12       # NetBSD 1.2
options         COMPAT_13       # NetBSD 1.3

# Filesystem options
file-system     FFS             # Berkeley Fast Filesystem
file-system     NFS             # Sun NFS client support
file-system     CD9660          # ISO 9660 + Rock Ridge file system
file-system     FDESC           # /dev/fd/*
file-system     KERNFS          # /kern
#file-system    NULLFS          # loopback file system
file-system     PROCFS          # /proc
#file-system    UNION           # union file system
#file-system    MFS             # memory-based filesystem

options         FIFO            # FIFOs; RECOMMENDED
options         NFSSERVER       # nfs server support
options         QUOTA           # FFS quotas

# Networking options
options         INET            # IP prototol stack support
#options        TCP_COMPAT_42   # compatibility with 4.2BSD TCP/IP
options         GATEWAY         # IP packet forwarding
#options        ISO,TPIP        # OSI networking
#options        EON             # OSI tunneling over IP
#options        CCITT,LLC,HDLC  # X.25
options         PFIL_HOOKS      # pfil(9) packet filter hooks.

# Other networking options
#options        IPFORWSRCRT=0   # IP forwarding of source routed packets
#options        MROUTING        # multicast routing support (req INET)
#options        NETATALKA       # Appletalk stack
#options        PPP_FILTER      # pcap(3) PPP filter hooks.
options         NTP             # kernel NTP support

# options for pseudo-device ipfilter
options         IPFILTER_LOG    # ipfilter logging
#options        IPFILTER_DEFAULT_BLOCK  # ipfilter starts blocked

# Work-around for root on slow servers (insurance...)
options         NFS_BOOT_RWSIZE=1024
options         NFS_BOOT_BOOTPARAM

config          netbsd root on ? type ?

# On-board I/O space (required)
include "arch/sun3/conf/obio.sun3"

# On-board memory (optional)
# See frame-buffers
obmem0 at mainbus?

# VME bus support (optional)
# One unit for each address space
vme0 at mainbus? # A16/D16
vme1 at mainbus? # A16/D32
vme2 at mainbus? # A24/D16
vme3 at mainbus? # A24/D32
vme4 at mainbus? # A32/D16
vme5 at mainbus? # A32/D32

#
# Serial ports
#
zstty0  at zsc1 channel 0       # ttya
zstty1  at zsc1 channel 1       # ttyb

kbd0    at zsc0 channel 0       # keyboard
ms0     at zsc0 channel 1       # mouse

#
# Network devices
#

# Intel Ethernet (onboard, or VME)
ie0 at obio0 addr 0x0C0000 ipl 3
ie1 at vme2  addr 0xe88000 ipl 3 vect 0x75

# Lance Ethernet (only onboard)
le0 at obio0 addr 0x120000 ipl 3

# All Sun3 machines with an "le" (3/50, 3/60) should be
# presumed to have the old, buggy LANCE chip. (Rev. C)
#options        LANCE_REVC_BUG

#
# Disk and tape devices
#

# Sun3 "si" SCSI controller (NCR 5380)
# This driver has several flags which may be enabled using
# the "flags" directive.  Valid flags are:
#
# 0x000ff       Set (1<<target) to disable disconnect/reselect
# 0x0ff00       Set (1<<(target+8)) to disable parity checking
# 0x10000       Set this bit to disable DMA interrupts (poll)
# 0x20000       Set this bit to disable DMA entirely (use PIO)
#
# For example: "flags 0x1000f" would disable DMA interrupts,
# and disable disconnect/reselect for targets 0-3
si0 at obio0 addr 0x140000 ipl 2           flags 0x0
si0 at vme2  addr 0x200000 ipl 2 vect 0x40 flags 0x0
si1 at vme2  addr 0x204000 ipl 2 vect 0x41 flags 0x0

# Xylogics 450/451 controllers (VME A16/D16)
#xyc0 at vme0 addr 0xee40 ipl 2 vect 0x48
#xyc1 at vme0 addr 0xee48 ipl 2 vect 0x49
#xy* at xyc? drive ?

# Xylogics 7053 controllers (VME A16/D32)
#xdc0 at vme1 addr 0xee80 ipl 2 vect 0x44
#xdc1 at vme1 addr 0xee90 ipl 2 vect 0x45
#xd* at xdc? drive ?

# Xylogics 472 tape controllers?

# Sun3/E SCSI+Ethernet board (VME A24/D16)
# Note: the board uses vect and vect+1
#sebuf0 at vme2 addr 0x300000 ipl 2 vect 0x74 # and 0x75
#sebuf1 at vme2 addr 0x340000 ipl 2 vect 0x76 # and 0x77
#si* at sebuf?
#ie* at sebuf?

#
# Frame buffer devices
#

include "arch/sun3/conf/bw2.sun3"
include "arch/sun3/conf/cg4.sun3"

# 3/60 P4 accelerated 8-bit color frame buffer
#cgsix0 at obmem0 addr 0xff000000

# 3/60 P4 24-bit color frame buffer
#cgeight0 at obmem0 addr 0xff300000

# Sun-3 color board, or CG5 8-bit frame buffer (VME A24/D16).
cgtwo0 at vme2 addr 0x400000 ipl 4 vect 0xA8

# Support for the CG9 24-bit frame buffer (VME A32/D32).
#cgnine0 at vme5 addr 0x08000000 ipl 4 vect 0xAA

#
# SCSI infrastructure
#
scsibus* at scsi?

sd* at scsibus? target ? lun ?          # SCSI disks
st* at scsibus? target ? lun ?          # SCSI tapes
cd* at scsibus? target ? lun ?          # SCSI CD-ROMs
ch* at scsibus? target ? lun ?          # SCSI changer devices
ss* at scsibus? target ? lun ?          # SCSI scanners
uk* at scsibus? target ? lun ?          # unknown SCSI devices

# Memory-disk drivers
pseudo-device   md              2

# Misc.
pseudo-device   loop            1       # network loopback
pseudo-device   bpfilter        8       # packet filter
#pseudo-device  sl              2       # CSLIP
#pseudo-device  ppp             2       # PPP
pseudo-device   tun             2       # network tunneling over tty
pseudo-device   ipfilter                # ip filter
# rnd is EXPERIMENTAL
pseudo-device   rnd                     # /dev/random and in-kernel generator

pseudo-device   pty             128     # pseudo-terminals
pseudo-device   vnd             4       # paging to files
#pseudo-device  ccd             4       # concatenated disks

-- 
							Greg A. Woods

+1 416 443-1734			VE3TCP			robohack!woods
Planix, Inc. <woods@planix.com>; Secrets Of The Weird <woods@weird.com>