NetBSD/sys/arch/sun3/STATUS

164 lines
6.0 KiB
Plaintext

<$Revision: 1.4 $>
This is to be a summary of the status of code, its problems,
and the directions it should and take in the future.
The major bugs:
the clock interrupts are coming at a rate 100 times greater than
they are programmed for. When the clock interrupts are going
at this rate, and the clock interrupt is calling hardclock(),
it makes no progress beyond enablertclock(). this bug is
priority one. Until this works, we won't be able to get
nfsdiskless operation to work at all.
trap code. the assembly part of the trap handling code is
not currently being used, because at until its time for the
fork(), it doesn't do much and the sun3 monitor diagnostics
are better than anything in the trap code. (note: buserr must
get special delay code for timeouts, and the memory error register
needs to be mapped (i think the mapping is commented out in
obio_internal_configure())
This code has been hosted under SunOs. Its not clear whether
the sun boot blocks can load kernels linked with our a.out, etc.
This is a question that *must* be answered.
I'm not running a current tree, because i can't afford a slip
connection at the moment.
there is an insane hack in 'swapnfs', and the
TIMESINK.nfsdiskless stuff because we don't have any way of
getting nfsdiskless information yet.
my tree doesn't have the non-contig phys memory changes. This port
needs them on the 3/50 or maybe its the 3/60 where the framebuffer
is plop at 1mb in phys mem. The only reason this hasn't been a problem
is that the kernel is still *relatively* small.
Note:
the only ok config file is 'TIMESINK'. the others need to be updated.
Core code: (i.e sun3/sun3, sun3/include)
----------
Random:
need to compute idprom checksum (was lazy)
need support for 'eeprom', including a non-sun copyrighted header
better integration with the eeprom on issues like consoles, and
generic boot support
all the FPUCOPROC support is untested and from the hp300 port.
It needs to be better integrated and triggered by something other
than this awful define. Also need FPU emulation code.
msgbuf should be allocated later, using the pmap stuff,
same with high_segment crud. see the dvma_alloc code for
an example of how much cleaner this is.
ddb support
kgdb support
kernel still isn't protected.
locore.s got split into many pieces, partially for organizational
purposes, partially because i hate 40k masses of assembly code. The
idea was to break the code up along machine
dependent/machine-independent lines. Any machine-independent code
could be shared with other 68k-based implementations as common code.
I haven't analyzed this breakdown yet. There were some surprises
in both directions. Don't consider this the final layout, but
also don't make it the first priority to fix. I'm interested
in getting this damn thing to work first :)
pmap:
the pmap module is the most complicated piece of code in the
port, and it has absolutely no debugging support. This was a goof.
pmap module should be 3-level cache, instead of 2.
fix code so that the early pmap clean stuff isn't necessary.
better support for running in bootstrap mode,
i.e before pv_ tables can be allocated.
Device driver support:
----------------------
Missing functionality:
OBIO probe support
match/probe re-computation of default parameters
OBIO space collision avoidance
Missing busses:
VME - absolute no support, i just don't know shit about it.
Missing drivers:
zs - for the Zilog 8530 that run the mouse, keyboard, and serial ports.
Sun3s have two 8530s with 2 channels apiece. Instead of hardwiring
the connection between particular chips/channels and function, I'd like
the zs driver to be implemented as a bus supporting n-clients. In this
model, the mouse, and keyboard drivers are just optional clients of the
zs driver, and can be torched if you want to hack up a quick cable
and use them as serial ports. This is also the right way to deal
with the complexities of a zs channels being used for things like
'kgdb', and synchronous operation. This design does make the
core zs driver more complicated, but i think it will be worth it.
scsi - I want to use torek's scsi system, if only to find out whether it is
any good. Or we could use Julien's lump of crud. Either way
we need:
support for the ncr 5380, possibly based on the mach3 5380 code.
support for the amd 9516 dma chip
kbd - needs to support sun's kbd interface including support for the
3 different keyboard modes, basically whatever is neccessary for X.
mouse - needs to support sun's mouse interface down to the letter so that
X works out of the box
bwtwo - this should be minimal, and is needed first
cg2, cg4, cg6, etc. - unknown complexity
fb - also minimal. Basically a virtual driver for reaching the frame buffers.
fpa - not the 68881, but sun's proprietary thing. I don't want to
support this thing as it requires downloaded microcode which
isn't freely available
Problems with existing drivers:
lance - current driver is based on the hp300 code. Torek's version
is also based on the hp300 code but possibly a later revision.
Should be analyzed further to determine its quality. Only known
problem with existing code so far is the non-configurable number of
receive/send buffers. This is a result of a hp300 hardware limitation,
that does not exist in the sun3 or sun4.
Boot code:
----------
Currently requires sun bootblks, secondary boot support, etc. Needs
to be replaced with attention paid to NetBSD's as yet un-developed
NFS diskless architecture.
Some code exists from Sprite for using PROM's exported drivers for
bootstrapping. This would have to be re-written and added to some
small NFS code perhaps from LBL's bootbootp stuff, etc. Lots of work
to be done here.
Compatibility:
--------------
Need to integrate Torek's sunos compatibility code in if possible, and
remove the HPUX crud.