matic media detection on Sun4m machines which support multiple media
(UTP and AUI). New function lenocarrier() switches media type when called
if no link? flags are set.
Redefine link flags for Lance ethernet (le):
<none>: switch between media as needed to find carrier (autodetect)
Preference to whatever the PROM is using (AUI if not booted
from the network)
link0: use UTP port only
link1: use AUI port only
This allows Sun4m machines with dual media Lance ethernet adapters to
boot from the network on the UTP port.
we managed to kill the following SCSI-driver bugs for the Falcon:
- The Byte_Count_zero bit of the falcon DMA controller does not always
tell the truth! This caused the SCSI-driver to choke on devices that
disconnected in the middle of a DMA-transfer (mostly removables).
- Printing debug info about the 5380 on the Falcon is *only* permitted
when DMA is not active.
- Some functions forgot to remove possibly pending sofware interrupts
- Some debug options didn't allow debugging a single target while they
could easily be made to do so. This is fixed.
from the mach3 versions only as much as necessary to allow the old
NetBSD/Alpha pmap code to compile. THESE WILL NOT WORK AS-IS, and at
minimum will require code to implement reference- and modified-bit
emulation.
All Unibus dependencies are removed.
Can support different controllers on different buses.
Allows cloning of devices.
TODO:
Write support for MSCP tapes.
old config anymore, all devices should use new config by now.
Add structures to handle DMA devices using new config.
Fixed bug that caused unwanted ubareset's on 11/780.
Use new ldda() and stda() to make MultiCache initialization work on
SuperSparc-II machines (these machines require 64-bit access, even
to a 32-bit register).
existence of the SCSI hardware in the boards adress region.
Thanks to Oster Nerhus for the detailed bug report and to Ralph Schmidt for
the recommended probing method.
- Good bye SYS_PBOOT and SYS_NBOOT, hello SYS_UBOOT (unified boot)
Currently supports booting from SCSI and HP-IB disk and network
from a single boot block. Infrastructure for booting from
HP-IB tape is there, but it doesn't quite work yet.
- Add a slightly modified version of Gordon Ross's "rawfs",
which provides a filesystem-like interface to tape devices.
Still needs debugging (see above).
- Rename sys_inst.c to inst.c, so that the LIF directory entry
turns out right (used to look like SYS_SYS_I if loaded from
tape).
- Add a "netio_ask" hint to netio.c, so that a special instnetio.o
doesn't have to be compiled for SYS_INST. Defaults to using
bootparams, but if set, will prompt user for information
usually obtained from bootparams.
- General cleanup.
in a more elegant way, but it works as is, and we need it now.
- Add a README and Makefile for the above. Note that this directory should
NOT be added to ../Makefile's SUBDIRS.
- Use an extent map to manage the ISA memory "hole", much like
how i/o port space is manged with an extent map. Do the actual
accounting in bus_mem_{,un}map().
- When creating the ioport and iomem extent maps, pass the
EX_NOBLOB flag, which tells the extent map code to disallow
fragmenting of regions. This will make it easier to catch
simple i/o and memory mapping bugs (like the if_ed.c bug I just
fixed) in the future.
- In bus_mem_map(), a chunk of code was indented using spaces.
Make the indentation use tabs.
- In bus_io_unmap(), fix the format passed to printf().
physical memory is sized by a loop that writes data to the first
word in a page, (writes something else to settle the bus) and then reads
back the word it wrote. If the read succeeds, the amount of physical
memory is increased by one page.
This fails on a 5000/1xx with a memory subsystem filled with 8 low-density
(4Mbyte) SIMMs. The memory-decoding hardware aliases the 32Mbytes of
physical memory at physical addresses 0, and at 32M (and presumably
at 64 and 96Mbytes.) The contiguous aliasing causes the memory-sizing
loop to continue at 32 MBytes, testing the memory that's really
at address 0, overwriting and crashing the kernel.
Fixed (for 1.2) by reading the SIMM-decoder stride size from the
motherboard, and reducing the loop bound to 32Mbytes on a 5000/1xx
with low-density SIMMs. (Other models have a non-power-of-2 maximum
memory and so are not subject to _contigous_ aliasing of physical memory).
The physical memory-sizer claims to preserve memory contents
(specifically the contents of msgbuf). The loop writes different
values into two adjacent locations and reads the contents of the
first, to ensure that whatever is read back from the first location is
from memory and isn't just the first write persisting on the bus.
The loop preserved the value of the first location, but not the second,
resulting in the second test value ('ZZZZ') over-writing a word in msgbuf.