peter [Wed, 21 Apr 1999 07:26:30 +0000 (07:26 +0000)]
Stage 1 of a cleanup of the i386 interrupt registration mechanism.
Interrupts under the new scheme are managed by the i386 nexus with the
awareness of the resource manager. There is further room for optimizing
the interfaces still. All the users of register_intr()/intr_create()
should be gone, with the exception of pcic and i386/isa/clock.c.
Add entry for newbus. It is rather long, but lots of nits can shoot
people with this upgrade. Lemme know what you think, or any
corrections that should be made to it.
Corrected a few typos based on submissions from various people.
Add note that make aout-to-elf is currently broken and what to do to
work around it. This is implied by make -DWANT_AOUT being broken, but
that isn't obvious to many people.
2. Fix one place where a comparison of uio_offset with -1
wasn't updated to use FOF_OFFSET.
3. Honor O_APPEND in the FOF_OFFSET case.
In addition, use the variable name "ioflag" in both vn_read and
vn_write to avoid possible confusion between the variable "flag"
and the parameter "flags".
Submitted by: Bruce Evans <bde@zeta.org.au> and me
After relocating the main program, but before calling any of the
_init() functions, initialize the global variables "__progname" and
"environ". This makes it possible for the _init() functions to call
things like getenv() and err().
1) Change printf's into DPRINTF.
2) rename variables to be more conclusive.
3) fix a problem in uhci_ii_done. Avoid collecting all the status's of the
TD's, we only need to one from the last inactive one.
4) Change the errorcount from 2 to 3 (see UHCI spec.).
Removed annoying messaged during boot,added some check
before mounting (should help to do not mount extended partitions:-).
Fixed problem with hanging while unmounting busy fs.
And (the most important) added some locks to prevent
simulaneous access to kernel structures!
peter [Tue, 20 Apr 1999 13:32:06 +0000 (13:32 +0000)]
Tidy up some stray / unused stuff in the IPFW package and friends.
- unifdef -DCOMPAT_IPFW (this was on by default already)
- remove traces of in-kernel ip_nat package, it was never committed.
- Make IPFW and DUMMYNET initialize themselves rather than depend on
compiled-in hooks in ip_init(). This means they initialize the same
way both in-kernel and as kld modules. (IPFW initializes now :-)
Recognize PC-98 16-bits bus (C-bus) as ISA bus. Because class number
of the C-bus is not assigned, PCI to C-bus bridges were recognized as
generic PCI bridges.
cam_periph.c:
Move handling of CAM_AUTOSENSE_FAIL into block dealing with
all other scsi status errors.
cam_queue.c:
cam_queue.h:
Fix 'off by one' heap bug in a more efficient manner. Since
heap algorithms like to deal with indexes started from 1,
offset our heap array pointer at allocation time to make this
so for a C environment. This makes the implementation of the
algorithm a bit more efficient.
cam_xpt.c:
Use macros for accessing the head of the heap so that code
is isolated from implementation details of the heap.
peter [Mon, 19 Apr 1999 20:31:53 +0000 (20:31 +0000)]
Always reset the isa hints after releasing the resources after probe,
because the act of doing the release kills the hints(!). A quirk of
the wrapper caused it to reset all the settings, except perhaps for the
memory address. I've tested this with a real SMC 8013EPC - which uses
shared memory addresses - it seems to work OK.
1) Add Rockfire vendor and gamepad product (MAEKAWA Masahide)
2) Sort the list again (Roger Hardiman)
3) Reinstate a piece of code to look for a name for a device
if none is found in the device itself.
_pmap_unwire_pte_hold and pmap_remove_page:
Use pmap_TLB_invalidate instead of invltlb_1pg to eliminate
unnecessary IPIs.
pmap_remove, pmap_protect and pmap_remove_pages:
Use pmap_TLB_invalidate_all instead of invltlb to eliminate
unnecessary IPIs.
pmap_copy:
Use cpu_invltlb instead of invltlb when updating APTDpde.
pmap_changebit:
Rather than deleting the unused "set bit" option (which may be
useful later), make pmap_changebit an inline that is used
by the new pmap_clearbit procedure.
Collectively, the first three changes reduce the number of TLB shootdown
IPIs by 1/3 for a kernel compile.
peter [Mon, 19 Apr 1999 11:53:36 +0000 (11:53 +0000)]
Drop the 'at nexus?' from the busses, it's not used.
Reactivate eisa0 and pnp0 in GENERIC, they work.. (eisa has been converted
but pnp still (for the most part) works the old way).
Clarify wording to indicate that the arguments to find(1) are path names
(and can be both files or directories). Show white space between
"(", ")", "!" and their corresponding `expression' arguments as
expected by the expression parser inside find(1).
Prompted by: David Honig <David.Honig@idt.com> on freebsd-doc
Message-Id: <199904132055.NAA09432@justinian.Eng.idt.com>
peter [Mon, 19 Apr 1999 08:04:19 +0000 (08:04 +0000)]
Always create attach points for the various child busses that can be
attached to the nexus. With one exception, this (for example) allows
you to do wierd things like kldload the eisa bus on the fly and then
drivers, and have it auto probe the eisa bus when the drivers come online.
The one exception being pci, it only adds the pcib after the presence of
the pci bus is detected and that's #if'ed code.
A side effect of this is that isa and eisa will be attached to the nexus
directly rather than the PCI->ISA or PCI->EISA bridges. I'm not sure if
this is good or bad at this point, but it seems to be closer to the way
things are for the i386 family... This is likely to be followed up.
This also fixes compilation without a PCI bus configured and will allow
eisa to work without PCI too.
Add :Q to quote variable expansion to all proper expansion of
variables for recursive makes. This makes it less painful to cross
build recent NetBSD kernels on FreeBSD.
peter [Sun, 18 Apr 1999 19:08:28 +0000 (19:08 +0000)]
Make the bt isa driver work..
- fix cut/paste problem. :-)
- don't forget to call isa_dmacascade()
- reset the port after we release resources.
That last one is a trap to watch out for.. The isa bus driver uses the
same port/irq/mem/etc variables for the initial probe hints as it does
for allocation/deallocation tracking. Releasing a resource clears the
variable and then you loose the hint during attach.. (ouch!)
peter [Sun, 18 Apr 1999 15:50:35 +0000 (15:50 +0000)]
Implement an EISA new-bus framework. The old driver probe mechanism
had a quirk that made a shim rather hard to implement properly and it was
just easier to convert the drivers in one go. The changes to the
buslogic driver go beyond just this - the whole driver was new-bus'ed
including pci and isa. I have only tested the EISA part of this so far.
peter [Sun, 18 Apr 1999 13:37:49 +0000 (13:37 +0000)]
Clean up the skeleton code a little. There was a #ifdef to avoid
stdlib.h unless on C++. However, we already included it above, so there
was no point using the redundant declarations instead.
peter [Sun, 18 Apr 1999 13:36:29 +0000 (13:36 +0000)]
Further cleanups. i386_ioconf.c and alpha_ioconf.c were essentially the
same and were merged into a single newbus_ioconf.c. CG'd some more unused
code.