- Rework ibus device configuration and interrupt handler assignment.
- Remove TC device exposure in 'mainbus.c'
- Squash 'ibus_{3100,5100}.c' into a file; it can not cope with 3max.
- 'struct confargs' -> 'struct mainbus_attach_args'
Now about to remove tc_slot_info[] and tc_enable_interrupt inherited from
4.4BSD.
initialization appears to have enabled IOASIC interrupts, and then used
a separate mask in the interrupt routine to decide which ones to process.
New initialization doesn't enable all the required interrupts, and the
device interrupt enable/disable routine wasn't changing the IOASIC mask).
Also fix a printf() format type.
HZ using high resolution timer circuit if available. Merge os_init
into the primary hardware initialization in sysinit[].init.
- Nuke an irrelevant attempt to disable RTC under splhigh condition.
- Make sure IOASIC DECstations accumulate device interrupt mask bits into
certain global variables.
- Have witchcrafts to issue ACK to RTC interrupt.
- Add a missing \n and a minor rearrangement in cpu.c
X server may have done with the keyboard state. X11R6 was changing the
keyboard modes, which were not compatible with the lk201 keyboard handling
in NetBSD.
stand Makefiles already set up the compile environment so that
machine/loadfile_machdep.h can be found.
XXX: Not done for i386, mmeye or sparc - I can't test these at the
moment. It should be as simple as making a machine symlink
pointing to .<some number of ../'s>./include in the objdir...
includes the STIC poll registers.
- Don't bother enabling ISR driven packet queueing on device open. It doesn't
work for the PXG due to severe dainbramage on the part of DEC and doesn't
work properly on the 3min due to the spl stuff being a mess.
+ Add a quirk table.
+ Assume all else is a modern drive that can do variable block
lengths (this is the main reason for this work - the old driver
only ever seemed to write 512 byte blocks!).
+ Keep track of values for mtget's mt_fileno, mt_blkno.
+ Handle a few extra MTIOCTOP commands.
Ideas gleaned from our MI scsi tape driver and the FreeBSD CAM tape
driver. Tested on a TKZ09 (DEC badged Exabyte 8500), a TLZ06 (DEC
DAT) and TK50.
Many thanks to Pierre Bergdolt for helping with testing.
that is priority is rasied. Add a new spllowersoftclock() to provide the
atomic drop-to-softclock semantics that the old splsoftclock() provided,
and update calls accordingly.
This fixes a problem with using the "rnd" pseudo-device from within
interrupt context to extract random data (e.g. from within the softnet
interrupt) where doing so would incorrectly unblock interrupts (causing
all sorts of lossage).
XXX 4 platforms do not have priority-raising capability: newsmips, sparc,
XXX sparc64, and VAX. This platforms still have this bug until their
XXX spl*() functions are fixed.
- 'struct fbsoftc' created, which points to a 'struct fbinfo'
- 'struct fbinfo' for each device is allocated with fballoc()
This means:
- Console device doesn't get different 'struct fbinfo' at attach
- Console device doesn't get initialized twice
- Color rcons now works
- The current Xserver MUST BE REBUILT.
- fix emitrules() like emitfiles() to deal with the prefix (otherwise it
would attempt to find the file in the normal base for the NORMAL_C rule).
- add emitincludes() which adds include directives for each prefix to the
$INCLUDES variable in the makefile.
- add %INCLUDES to each Makefile.arch to deal with the above.
this makes "prefix" actually work in a usable manner, and now i can move
on to fixing compiler warnings (errors) in the ESP code. :)
these and pass as the first parameter of ddb_init(). We used to pass
the contents of the start of the symbol table cast to an int, which for
an ELF kernel is "0x7f ELF" - not quite the symbol table size! How this
used to ever work I dunno...
be instead of hardcoding values.
+ Print the host SCSI ID in siiattach().
XXX - probably should do the same to the ASC driver?? The manuals for
the 5000 series machines don't mention the scsiidN env variable, but it
is present on all the models I've looked at...
+ Add prom_scsiid() to read and decode the prom scsiidN environment
variable that says what the host SCSI id should be.
+ Include <pmax/pmax/machdep.h> instead of declaring our own
prom_*() prototypes.
has PAGEABLE and INTRSAFE flags. PAGEABLE now really means "pageable",
not "allocate vm_map_entry's from non-static pool", so update all map
creations to reflect that. INTRSAFE maps are maps that are used in
interrupt context (e.g. kmem_map, mb_map), and thus use the static
map entry pool (XXX as does kernel_map, for now). This will eventually
change now these maps are locked, as well.
managed pages, into KVA space. Since the pages are managed, we should
use pmap_enter(), not pmap_kenter_pa().
Also, when entering the mappings, enter with an access_type of
VM_PROT_READ | VM_PROT_WRITE. We do this for a couple of reasons:
(1) On systems that have H/W mod/ref attributes, the hardware
may not be able to track mod/ref done by a bus master.
(2) On systems that have to do mod/ref emulation, this prevents
a mod/ref page fault from potentially happening while in an
interrupt context, which can be problematic.
This latter change is fairly important if we ever want to be able to
transfer DMA-safe memory pages to anonymous memory objects; we will need
to know that the pages are modified, or else data could be lost!
Note that while the pages are unowned (i.e. "just DMA-safe memory pages"),
they won't consume any swap resources, as the mappings are wired, and
the pages aren't on the active or inactive queues.
routines now reside in locore.S. No functional difference is expected.
- Replace abused splx() abuse with _splset() to change MIPS processor
interrupt mask bit. 'mips/trap.c' side will be fixed soon.
initialization code.
- Abandon mips_init_proc0() and do the 4 lines straightly in MD mach_init().
- Restore a block of code accidentally lost in prevous commit.
- Change the term 'tlbpid' to a MIPS3 nomenclature 'asid'.
- Hide PTE size exposures by symbolic names in locore.S
netbooting on machines that can't netboot a fullsize kernel.
This is only a stop-gap solution until the pmax gets a working two stage
netboot, and is not enabled by default.
so that devices which must allocate DMA memory in this range (e.g.
PixelStamp graphics boards) have a better chance of doing so, without
an awful hack.
exposure of TC device any more. Correct comments which are no longer
feasible. Reorder declarations and definitions. Introduce 'clkread'
pointer to pull up model dependent high resolution timer value. Have
prom_systype() call.
- Place routines for model dependent high resolution timer.
- Program IOASIC registers inside os_init() call and nuke ioasic_init().
totally broken for the PXG and will remain so until more documentation is
available. This destroys the queueing, hardware clipping, and VDAC update
mechanisms on the PXG.
bootinfo record to 1kB (we are using less than 200 bytes now) so that it
doesn't run into addition PROM memory.
At 0x8001f00 the bootinfo record was stomping on some memory used by the
SFB cards for font information.
+ Initialise minaddr to the start of the file I/O buffers.
+ Check for overallocation of RAM for these buffers.
+ Change function name in panic message to match reality.
Code taken from almost every other port, and fixes the:
uvm_km_suballoc: unable to allocate space in parent map
panic that some people have been experiencing.
DEC disk boot block header, but it's only 64 bytes long. Gives us
another 32 bytes in the first stage.
Don't use a roll-your-own START_FRAME size and offsets for the stack
and ra - use the <mips/asm.h> provided CALLFRAME_SIZ, CALLFRAME_RA and
CALLFRAME_SP
define a flag UVM_PGA_USERESERVE to allow non-kernel object
allocations to use pages from the reserve.
use the new flag for allocations in pmap modules.
picking the bits we wanted explicitly, taking advantage of some of the
recent code-size trimming from cgd. There's now no duplication if libsa
code in sys/arch/pmax/stand.
As a bonus, we now have 416 bytes free in stage one (up from 80), and
will all of Chris' space saving options enabled (these are commented out
in scsiboot/Makefile), theres over a 1kB free.