summaryrefslogtreecommitdiffstats
path: root/sys/isa
Commit message (Collapse)AuthorAgeFilesLines
...
* Add in a missing call to forward_hardclock() in the SMP case.jhb2001-04-281-0/+3
| | | | Submitted by: bde
* Overhaul of the SMP code. Several portions of the SMP kernel support havejhb2001-04-271-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | been made machine independent and various other adjustments have been made to support Alpha SMP. - It splits the per-process portions of hardclock() and statclock() off into hardclock_process() and statclock_process() respectively. hardclock() and statclock() call the *_process() functions for the current process so that UP systems will run as before. For SMP systems, it is simply necessary to ensure that all other processors execute the *_process() functions when the main clock functions are triggered on one CPU by an interrupt. For the alpha 4100, clock interrupts are delievered in a staggered broadcast fashion, so we simply call hardclock/statclock on the boot CPU and call the *_process() functions on the secondaries. For x86, we call statclock and hardclock as usual and then call forward_hardclock/statclock in the MD code to send an IPI to cause the AP's to execute forwared_hardclock/statclock which then call the *_process() functions. - forward_signal() and forward_roundrobin() have been reworked to be MI and to involve less hackery. Now the cpu doing the forward sets any flags, etc. and sends a very simple IPI_AST to the other cpu(s). AST IPIs now just basically return so that they can execute ast() and don't bother with setting the astpending or needresched flags themselves. This also removes the loop in forward_signal() as sched_lock closes the race condition that the loop worked around. - need_resched(), resched_wanted() and clear_resched() have been changed to take a process to act on rather than assuming curproc so that they can be used to implement forward_roundrobin() as described above. - Various other SMP variables have been moved to a MI subr_smp.c and a new header sys/smp.h declares MI SMP variables and API's. The IPI API's from machine/ipl.h have moved to machine/smp.h which is included by sys/smp.h. - The globaldata_register() and globaldata_find() functions as well as the SLIST of globaldata structures has become MI and moved into subr_smp.c. Also, the globaldata list is only available if SMP support is compiled in. Reviewed by: jake, peter Looked over by: eivind
* Catch up to header include changes:jhb2001-03-281-3/+1
| | | | | - <sys/mutex.h> now requires <sys/systm.h> - <sys/mutex.h> and <sys/sx.h> now require <sys/lock.h>
* Send the remains (such as I have located) of "block major numbers" tophk2001-03-265-6/+0
| | | | the bit-bucket.
* Always call resource_int_value function for getting portsize and msize.nyan2001-03-171-4/+6
| | | | | | It was not set resource size (portsize/msize) if resource address was set. This is MFC candidate.
* Add GVC1601 - Rockwell V.34 Plug & Play Modemsanpei2001-03-071-0/+1
| | | | | PR: kern/25204 Submitted by: Victor Ivanov <v0rbiz@icon.bg>
* Add IOD0081 - I-O DATA DEVICE,INC. IFML-560sanpei2001-03-071-0/+1
| | | | | PR: kern/25173 Submitted by: Yohsuke Fujikawa <yohsuke@mx2.nisiq.net>
* Harvest interrupt entropy off the floppy disk controller.markm2001-03-031-1/+2
|
* Fixed style bugs in clock.c rev.1.164 and cpu.h rev.1.52-1.53 -- declarebde2001-02-191-6/+1
| | | | | | tsc_present in the right places (together with other variables of the same linkage), and don't use messy ifdefs just to avoid exporting it in some cases.
* Extend kqueue down to the device layer.jlemon2001-02-151-2/+3
| | | | Backwards compatible approach suggested by: peter
* RIP <machine/lock.h>.markm2001-02-111-4/+0
| | | | | | | Some things needed bits of <i386/include/lock.h> - cy.c now has its own (only) copy of the COM_(UN)LOCK() macros, and IMASK_(UN)LOCK() has been moved to <i386/include/apic.h> (AKA <machine/apic.h>). Reviewed by: jhb
* Catch up to changes to inthand_add().jhb2001-02-091-8/+8
|
* - Catch up to the new swi API changes:jhb2001-02-091-12/+12
| | | | | | | - Use swi_* function names. - Use void * to hold cookies to handlers instead of struct intrhand *. - In sio.c, use 'driver_name' instead of "sio" as the name of the driver lock to minimize diffs with cy(4).
* Change and clean the mutex lock interface.bmilekic2001-02-092-59/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | mtx_enter(lock, type) becomes: mtx_lock(lock) for sleep locks (MTX_DEF-initialized locks) mtx_lock_spin(lock) for spin locks (MTX_SPIN-initialized) similarily, for releasing a lock, we now have: mtx_unlock(lock) for MTX_DEF and mtx_unlock_spin(lock) for MTX_SPIN. We change the caller interface for the two different types of locks because the semantics are entirely different for each case, and this makes it explicitly clear and, at the same time, it rids us of the extra `type' argument. The enter->lock and exit->unlock change has been made with the idea that we're "locking data" and not "entering locked code" in mind. Further, remove all additional "flags" previously passed to the lock acquire/release routines with the exception of two: MTX_QUIET and MTX_NOSWITCH The functionality of these flags is preserved and they can be passed to the lock/unlock routines by calling the corresponding wrappers: mtx_{lock, unlock}_flags(lock, flag(s)) and mtx_{lock, unlock}_spin_flags(lock, flag(s)) for MTX_DEF and MTX_SPIN locks, respectively. Re-inline some lock acq/rel code; in the sleep lock case, we only inline the _obtain_lock()s in order to ensure that the inlined code fits into a cache line. In the spin lock case, we inline recursion and actually only perform a function call if we need to spin. This change has been made with the idea that we generally tend to avoid spin locks and that also the spin locks that we do have and are heavily used (i.e. sched_lock) do recurse, and therefore in an effort to reduce function call overhead for some architectures (such as alpha), we inline recursion for this case. Create a new malloc type for the witness code and retire from using the M_DEV type. The new type is called M_WITNESS and is only declared if WITNESS is enabled. Begin cleaning up some machdep/mutex.h code - specifically updated the "optimized" inlined code in alpha/mutex.h and wrote MTX_LOCK_SPIN and MTX_UNLOCK_SPIN asm macros for the i386/mutex.h as we presently need those. Finally, caught up to the interface changes in all sys code. Contributors: jake, jhb, jasone (in no particular order)
* Remove count for NSIO. The only places it was used it were incorrect.peter2001-01-311-1/+0
| | | | (alpha-gdbstub.c got sync'ed up a bit with the i386 version)
* Convert mca (microchannel bus support) from something that we countpeter2001-01-291-3/+3
| | | | (bogus) to something that we test for the presence of.
* Consider that the chipset may be in ECP mode (from BIOS settings)nsouch2001-01-252-36/+37
| | | | | | | even if mode PS/2 is forced with bootflags. As a matter of fact, chipsets needs some extra configuration for accessing PS/2 mode from ECP. The current patch is only relevant for generic chipsets since specific code is supposed to deal with this during detection.
* Remove MUTEX_DECLARE() and MTX_COLD. Instead, postpone full mutexjasone2001-01-211-1/+1
| | | | | | | | initialization until after malloc() is safe to call, then iterate through all mutexes and complete their initialization. This change is necessary in order to avoid some circular bootstrapping dependencies.
* Convert apm from a bogus 'count' into a plain option. Clean out somepeter2001-01-191-3/+3
| | | | other cruft from the files.alpha and files.ia64 that were related to this.
* select() DKI is now in <sys/selinfo.h>.wollman2001-01-091-1/+1
|
* Add OZO8008 - Zoom (33.6k Modem).tanimura2000-12-261-0/+1
| | | | | PR: kern/23336 Submitted by: Paulo Menezes <root@samurai.dee.uc.pt>
* Fix the PR. Getting a dma channel equal to 0 remains a problem though.nsouch2000-12-191-1/+1
| | | | PR: i386/22568
* Convert the sio driver to use a spin mutex instead of a s_lock. This isjhb2000-12-181-123/+58
| | | | | | going to hurt sio(4) performance for the time being. As we get closer to release and have more of the kernel unlocked we can come back to doing arcane optimizations to workaround the limitations of the sio hardware.
* It's possible for an ISA bus to be hung off an EISA bridge, so we need tomsmith2000-12-121-0/+1
| | | | reflect that here.
* Convert more malloc+bzero to malloc+M_ZERO.dwmalone2000-12-084-8/+5
| | | | | Submitted by: josh@zipperup.org Submitted by: Robert Drehmel <robd@gmx.net>
* Staticize some malloc M_ instances.phk2000-12-082-2/+2
|
* Namespace cleanup. Remove some #includes in favour of an explicitmarkm2000-12-021-0/+5
| | | | | | declaration. Asked for by: bde
* - Add a hack for "psmintr: out of sync.." This is NOT a fix,yokota2000-12-011-0/+11
| | | | | | | | | | | but a hack! Add `flags 0x8000' to the psm driver to enable it. The psm driver will try to get out of out-of-sync situation by disabling the mouse and immediately enable it again. If you are seeing this out-of-sync problem because of an incompetent(?!) KVM switch, this hack will NOT be good for you. However, if you are occasionally seeing the problem because of lost mouse interrupt, this might help.
* - Slightly rearrnage IntelliMouse Explorer and Logitechyokota2000-12-011-30/+39
| | | | | MouseMan+ identification routines for efficiency. No functional change.
* Reduce code duplication by using the GET_RESOURCE_LIST bus method and relatedmdodd2000-11-281-26/+12
| | | | | | | | generic resource_list management functions. I'll deal with the EISA bits later. Not objected to by: new-bus
* Make diskerr() always log with printf.phk2000-11-261-2/+1
|
* GC some defunct prototypespeter2000-11-251-4/+0
|
* Ignore resources with a size of 0, as these are disabled (and we don'tmsmith2000-11-071-0/+7
| | | | | | deal with them properly elsewhere). Submitted by: Masayuki FUKUI <fukui@sonic.nm.fujitsu.co.jp>
* Revert two experimental changes which escaped from my devel machine.phk2000-10-281-1/+1
|
* Convert all users of fldoff() to offsetof(). fldoff() is badphk2000-10-271-1/+1
| | | | | | | | | | | | | | | | | | | | | | | because it only takes a struct tag which makes it impossible to use unions, typedefs etc. Define __offsetof() in <machine/ansi.h> Define offsetof() in terms of __offsetof() in <stddef.h> and <sys/types.h> Remove myriad of local offsetof() definitions. Remove includes of <stddef.h> in kernel code. NB: Kernelcode should *never* include from /usr/include ! Make <sys/queue.h> include <machine/ansi.h> to avoid polluting the API. Deprecate <struct.h> with a warning. The warning turns into an error on 01-12-2000 and the file gets removed entirely on 01-01-2001. Paritials reviews by: various. Significant brucifications by: bde
* - Overhaul the software interrupt code to use interrupt threads for eachjhb2000-10-252-16/+16
| | | | | | | | | | | | | | | | | | | type of software interrupt. Roughly, what used to be a bit in spending now maps to a swi thread. Each thread can have multiple handlers, just like a hardware interrupt thread. - Instead of using a bitmask of pending interrupts, we schedule the specific software interrupt thread to run, so spending, NSWI, and the shandlers array are no longer needed. We can now have an arbitrary number of software interrupt threads. When you register a software interrupt thread via sinthand_add(), you get back a struct intrhand that you pass to sched_swi() when you wish to schedule your swi thread to run. - Convert the name of 'struct intrec' to 'struct intrhand' as it is a bit more intuitive. Also, prefix all the members of struct intrhand with 'ih_'. - Make swi_net() a MI function since there is now no point in it being MD. Submitted by: cp
* Moved prototypes of isa_alloc_resourcev() and isa_load_resourcev() tonyan2000-10-221-0/+13
| | | | isa/isavar.h, and added needed includes.
* - machine/mutex.h -> sys/mutex.hjhb2000-10-201-3/+3
| | | | | - machine/ipl.h -> sys/ipl.h - Use MUTEX_DECLARE() for clock_lock
* Remove unneeded #include <machine/clock.h>phk2000-10-152-2/+0
|
* Repeat after me: I will test *before* commit, not after.... *blush*peter2000-10-151-1/+1
|
* Untangle some resource matching loops that were getting on my nervespeter2000-10-153-17/+15
| | | | and seemed to be getting cut/pasted to places they shouldn't be.
* Add MAE0021 - Jetstream Int V.90 56k Voice Series 2.tanimura2000-10-101-0/+1
| | | | | PR: i386/19920 Submitted by: Peter Ortner <port@iname.com>
* Initiate deorbit burn sequence for <machine/mouse.h>.phk2000-10-091-1/+1
| | | | | | | | | | Replace all in-tree uses with <sys/mouse.h> which repo-copied a few moments ago from src/sys/i386/include/mouse.h by peter. This is also the appropriate fix for exo-tree sources. Put warnings in <machine/mouse.h> to discourage use. November 15th 2000 the warnings will be converted to errors. January 15th 2001 the <machine/mouse.h> files will be removed.
* Resolve the inconsistency between "the number of resources of a particularmsmith2000-10-092-7/+38
| | | | | | | | kind we can manage in a set of configurations" and "the number of resources of a particular kind that can be programmed into an ISA PnP adapter". Submitted by: Motomichi Matsuzaki <mzaki@e-mail.ne.jp> Submitted by: Hirokazu WATANABE <gwna@geocities.co.jp>
* Initiate deorbit burn sequence for <machine/console.h>.phk2000-10-081-1/+2
| | | | | | | | | Replace all in-tree uses with necessary subset of <sys/{fb,kb,cons}io.h>. This is also the appropriate fix for exo-tree sources. Put warnings in <machine/console.h> to discourage use. November 15th 2000 the warnings will be converted to errors. January 15th 2001 the <machine/console.h> files will be removed.
* Use schedsofttty() again so that siopoll() gets scheduled as designedbde2000-10-081-5/+0
| | | | (SMPng casualty in rev.1.308 with wrong fix in rev.1.310).
* - Change fast interrupts on x86 to push a full interrupt frame and tojhb2000-10-061-106/+51
| | | | | | | | | | | | | | | | | | | | | | | | | | | | return through doreti to handle ast's. This is necessary for the clock interrupts to work properly. - Change the clock interrupts on the x86 to be fast instead of threaded. This is needed because both hardclock() and statclock() need to run in the context of the current process, not in a separate thread context. - Kill the prevproc hack as it is no longer needed. - We really need Giant when we call psignal(), but we don't want to block during the clock interrupt. Instead, use two p_flag's in the proc struct to mark the current process as having a pending SIGVTALRM or a SIGPROF and let them be delivered during ast() when hardclock() has finished running. - Remove CLKF_BASEPRI, which was #ifdef'd out on the x86 anyways. It was broken on the x86 if it was turned on since cpl is gone. It's only use was to bogusly run softclock() directly during hardclock() rather than scheduling an SWI. - Remove the COM_LOCK simplelock and replace it with a clock_lock spin mutex. Since the spin mutex already handles disabling/restoring interrupts appropriately, this also lets us axe all the *_intr() fu. - Back out the hacks in the APIC_IO x86 cpu_initclocks() code to use temporary fast interrupts for the APIC trial. - Add two new process flags P_ALRMPEND and P_PROFPEND to mark the pending signals in hardclock() that are to be delivered in ast(). Submitted by: jakeb (making statclock safe in a fast interrupt) Submitted by: cp (concept of delaying signals until ast())
* - Heavyweight interrupt threads on the alpha for device I/O interrupts.jhb2000-10-052-7/+1
| | | | | | | | | | | - Make softinterrupts (SWI's) almost completely MI, and divorce them completely from the x86 hardware interrupt code. - The ihandlers array is now gone. Instead, there is a MI shandlers array that just contains SWI handlers. - Most of the former machine/ipl.h files have moved to a new sys/ipl.h. - Stub out all the spl*() functions on all architectures. Submitted by: dfr
* - Wrap functions and variables that aren't used in the alpha console probejhb2000-09-221-7/+26
| | | | | | with #ifndef __alpha__/#endif - Add function prototypes for functions used during the alpha console probe and gdb port setup inside of #ifdef __alpha__/#endif.
* Fix several 64-bit-ism warnings due to sizeof(int) != sizeof(void *) onjhb2000-09-221-6/+6
| | | | the alpha.
OpenPOWER on IntegriCloud