Commit Graph

1110 Commits

Author SHA1 Message Date
Joerg Wunsch
6044485346 More cleanup when detaching. Clone device entries will now be
destroyed properly (otherwise bad things would happen after a clone
dev had been created, and the module was kldunloaded).  Allocated
children that have not successfully probed are being deleted again
(otherwise fd0 and fd1 have always been allocated, even if only
fd0 was acutally present, and fd1 even survived kldunloading the
module).

Still, kldunloading leaves remnants of the previously existing devices
intact.  Why doesn't it destroy all the devices?  As a consequence,
since dev->descr now points into no longer allocated memory, the
system panics deep inside printf(9) when running devinfo(1) after
kldunloading the module.  Ideas sought...

Also, when kldloading the module on a hints-populated isab0, this bus
somehow has already created an fdc0 entry (a dummy) so the load
attempt fails and will register fdc1 instead.  What are those dummy
entries for?  Loading the module from the bootloader works, and it
can be unloaded an re-loaded then later.
2001-07-04 22:10:33 +00:00
Kazutaka YOKOTA
fa783074ac Remove the resume method. It is not necessary any more, because
keyboard drivers have it now...
MFC after:	4 weeks
2001-06-30 10:15:13 +00:00
Kazutaka YOKOTA
6c726162da Add the device resume method to keyboard drivers.
MFC after:	4 weeks
2001-06-30 10:02:32 +00:00
Joerg Wunsch
f664aeee49 Use the new-born BIO_CMD1 instead of fudging a bio_flag value for reading
the sector ID.

Based on numerous comments made by Bruce, rewrite a good part of the
old fdformat() function, and merge it with fdreadid() into a single
unified fdmisccmd() function.  Various style and a couple of more
serious bugs fixed there.

While i was at it, i also fixed the long-standing "TODO: don't
allocate buffer on stack." in fdcioctl(), fixed a number of style bugs
there, and finally implemented the FD_DEBUG ioctl command that has
been advertised in <sys/fdcio.h> (formerly <machine/ioctl_fd.h>) for
almost seven years now. ;-)

Submitted by:	bde (a lot of fixes for fdformat())
2001-06-29 15:30:48 +00:00
Joerg Wunsch
5f431174f3 This change slipped through hidden in a CVS conflict. Logically belongs
to the previous commit (fix resource deallocation).
2001-06-29 07:53:45 +00:00
Joerg Wunsch
e219897a2a First stab at fixing resource deallocation, and implementing fdc(4) as
a KLD.  Still doesn't work well except in the PCMCIA case (now if only
pccardd(8) could load and unload drivers dynamically...).  Mainly, it
tries to find fdc0 on the PCI bus for whatever obscure reasons, but i
need someone who understands driver(9) to fix this.  However, it's at least
already better than before, and i'm tired of maintaining too many private
changes in my tree, given the large patches bde submitted. :)

Idea of a KLD triggered by:	Michael Reifenberger <root@nihil.plaut.de>
2001-06-29 07:36:29 +00:00
Joerg Wunsch
64860614a4 Merge in parts of a larger patchset i received from Bruce. Untested
by now (except of a compile test), but i believe this to contain no
actual functional changes.

. Fix the copyright of the Regents i accidentally broke in rev 1.197
  (although only a very small part of the original driver survived
  at all...).

. Bump MAX_CYLINDER since some obscure formats really use more than 80
  cylinders.

. Correctly handle BIO_FORMAT which used to be a bitmask but is now a BIO
  command of its own.

. Numerous stylistic fixes.

Submitted by:	bde
2001-06-28 12:35:28 +00:00
Joerg Wunsch
250300ebb0 Implement a new ioctl command for floppies: FD_READID
Reads one sector ID field from a given track.  Useful for analyzing
floppies.
2001-06-26 22:16:30 +00:00
Joerg Wunsch
4c34deeecf Some more cosmetics: kill another couple of K&R function definitions
that survived from old days, fix style of return type in fdcpio(),
kill old Emacs hints that are no longer working that way anyway.
2001-06-26 22:07:25 +00:00
Nicolas Souchu
3ae3f8b0be Convert inb/outb to bus_space.
Submitted by:	jcm@FreeBSD-uk.eu.org
2001-06-23 06:52:54 +00:00
Joerg Wunsch
80909a7db8 Cosmetics:
. staticize out_fdc(), there's no longer an ft(4) driver sharing its use
. remove in_fdc(), has been used by ft(4) last time, long since obsoleted
  by fd_in()
. move the declaration of fd_clone() to where most of the other function
  declarations are
. de-__P()ify fd_clone(), it's been the only _P()ed function in the
  entire file
2001-06-20 20:21:55 +00:00
Ian Dowse
11fbe665c0 The serial console break-to-debugger support only functioned while
the console device was open. At other times, the interrupts that
are used to detect the break signal or ~^B sequence were disabled,
so these events would not be noticed until the next open (e.g. the
next kernel printf). This was mainly a problem while there was no
getty running on the console, such as during bootup or shutdown.

For serial consoles with break-to-debugger support, we now enable
the generation of interrupts at attach time, and we leave them
enabled while the device is closed.

Reviewed by:	bde (I've since made chages as per his suggestions)
2001-06-20 16:47:23 +00:00
Peter Wemm
c864c67bad Fix warning:
163: passing arg 4 of `resource_string_value' from incompatible pointer type
2001-06-15 08:01:21 +00:00
Peter Wemm
2398f0cd1d Hints overhaul:
- Replace some very poorly thought out API hacks that should have been
  fixed a long while ago.
- Provide some much more flexible search functions (resource_find_*())
- Use strings for storage instead of an outgrowth of the rather
  inconvenient temporary ioconf table from config().  We already had a
  fallback to using strings before malloc/vm was running anyway.
2001-06-12 09:40:04 +00:00
Joerg Wunsch
f8ce7dd521 Cosmetics:
. remove stale comments and a stale #define (from the old days of ft(4))
. make MAX_SEC_SIZE (used in isa_dmainit()) a #define

. fix a typo in a string
. use 0 as the blocksize in devstat_add_entry(), since the actual blocksize
  is unknown (devstat(9) suggests to use 0 in that case)
2001-06-11 10:48:10 +00:00
Joerg Wunsch
e774b25111 Nuke the various poorly maintained copies of ioctl_fd.h. The file is
not machine-dependant, thus it has been moved out (repo-copied) into
<sys/fdcio.h>.
2001-06-06 06:15:03 +00:00
Joerg Wunsch
7998b1245d Make the FDC (state machine) state an enum, as opposed to an int
abusing a bunch of #defines, for clarity and better debugging support.
2001-06-05 21:01:46 +00:00
Warner Losh
53e4eaaeba Close the line displine on detach. Lots of folks have submittd this, and
I think bde even reviewed it once.

Also, change the name of ActionTEC pat to more generic Lucent Kermit
chip.  Add stub for Xircom card.  Add cardbus attachment too.
2001-06-05 05:58:57 +00:00
Joerg Wunsch
b794010414 Move out the files from src/sys/isa/ic/ to src/sys/dev/ic/, so they
can be made userland-visible as <dev/ic/...>.  Also, those files are
not supposed to contain any bus-specific details at all, so placing
them under .../isa/ has been a misnomer from the beginning.

The files in src/sys/dev/ic/ have been repo-copied from their old
location (this commit is a forced null commit there to record this
message).
2001-06-04 21:04:14 +00:00
Joerg Wunsch
06740f7b41 Fix my email address. I accidentally cut'npasted the wrong (old)
hostname laste time.
2001-06-03 20:41:21 +00:00
Warner Losh
3a4f29da1e The orm device. This device gobbles up the Option ROMs in the ISA
memory I/O space.  Otherwise, our resource allocation system might
mistakenly assign pccard, plug and play devices or other things
addresses that conflict with ROMs.

I cleaned up his code a little from the submited driver: style(9)
issues, commentary on why something that looks incorrect really is
correct.  Also noted that while a checksum field is defined for the
ROMs, enough common hardware neglects it to make it not worthwhile
checking.

Submitted by: Nikolai Saoukh <nms@otdel-1.org>
PR: 22078
2001-06-01 20:58:32 +00:00
MIHIRA Sanpei Yoshiro
882f2b2b40 add Dualmode Zoom/FaxModem 56K (internal) Model 2919
PR:		kern/27476
Submitted by:	Eric Beyer <lnxfrk@earthlink.net>
2001-05-26 11:17:57 +00:00
Poul-Henning Kamp
48c35f87be Don't lie to diskerr() now that it listens to us. 2001-05-25 09:07:23 +00:00
MIHIRA Sanpei Yoshiro
1a92411c80 Add SmartLink 5634PCV SurfRider
PR:		kern/26952
Submitted by:	Simon Dick <simond@irrelevant.org>
2001-05-20 03:12:55 +00:00
John Baldwin
8bd57f8fc2 Remove unneeded includes of sys/ipl.h and machine/ipl.h. 2001-05-15 23:22:29 +00:00
Joerg Wunsch
2995d1100c Implement a few more floppy ioctl commands and IO options, namely:
. FD_CLRERR clears the error counter, thus re-enables kernel error
  printf()s,

. FD_GSTAT obtains the last FDC operation state, if any,

. FDOPT_NOERRLOG (temporarily) turns off kernel printf() floppy
  error logging,

. FDOPT_NOERROR makes the kernel ignore an FDC error, thus can
  enable the transfer of an erroneous sector to the user application

All options are being cleared on (last) close.

Prime consumer of the last features will be fdread(1), to be committed
shortly.

(FD_CLRERR should be wired into fdcontrol(8), but then fdcontrol(8)
needs a major rewrite anyway.)
2001-05-14 20:20:11 +00:00
Poul-Henning Kamp
a468031ce8 Actually biofinish(struct bio *, struct devstat *, int error) is more general
than the bioerror().

Most of this patch is generated by scripts.
2001-05-06 20:00:03 +00:00
Mark Murray
fb919e4d5a Undo part of the tangle of having sys/lock.h and sys/mutex.h included in
other "system" header files.

Also help the deprecation of lockmgr.h by making it a sub-include of
sys/lock.h and removing sys/lockmgr.h form kernel .c files.

Sort sys/*.h includes where possible in affected files.

OK'ed by:	bde (with reservations)
2001-05-01 08:13:21 +00:00
John Baldwin
4d4bc9acc6 Add in a missing call to forward_hardclock() in the SMP case.
Submitted by:	bde
2001-04-28 01:37:44 +00:00
John Baldwin
6caa8a1501 Overhaul of the SMP code. Several portions of the SMP kernel support have
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
2001-04-27 19:28:25 +00:00
John Baldwin
f34fa851e0 Catch up to header include changes:
- <sys/mutex.h> now requires <sys/systm.h>
- <sys/mutex.h> and <sys/sx.h> now require <sys/lock.h>
2001-03-28 09:17:56 +00:00
Poul-Henning Kamp
f83880518b Send the remains (such as I have located) of "block major numbers" to
the bit-bucket.
2001-03-26 12:41:29 +00:00
Yoshihiro Takahashi
0197892d6a Always call resource_int_value function for getting portsize and msize.
It was not set resource size (portsize/msize) if resource address was set.

This is MFC candidate.
2001-03-17 04:23:12 +00:00
MIHIRA Sanpei Yoshiro
6573bc0b37 Add GVC1601 - Rockwell V.34 Plug & Play Modem
PR:		kern/25204
Submitted by:	Victor Ivanov <v0rbiz@icon.bg>
2001-03-07 14:27:56 +00:00
MIHIRA Sanpei Yoshiro
ab410acc0a Add IOD0081 - I-O DATA DEVICE,INC. IFML-560
PR:		kern/25173
Submitted by:	Yohsuke Fujikawa <yohsuke@mx2.nisiq.net>
2001-03-07 14:19:55 +00:00
Mark Murray
3c36743e2d Harvest interrupt entropy off the floppy disk controller. 2001-03-03 14:53:50 +00:00
Bruce Evans
12a586bbda Fixed style bugs in clock.c rev.1.164 and cpu.h rev.1.52-1.53 -- declare
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.
2001-02-19 03:00:34 +00:00
Jonathan Lemon
608a3ce62a Extend kqueue down to the device layer.
Backwards compatible approach suggested by: peter
2001-02-15 16:34:11 +00:00
Mark Murray
d888fc4e73 RIP <machine/lock.h>.
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
2001-02-11 10:44:09 +00:00
John Baldwin
5781f5419e Catch up to changes to inthand_add(). 2001-02-09 17:48:33 +00:00
John Baldwin
062d8ff5a0 - Catch up to the new swi API changes:
- 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).
2001-02-09 17:46:35 +00:00
Bosko Milekic
9ed346bab0 Change and clean the mutex lock interface.
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)
2001-02-09 06:11:45 +00:00
Peter Wemm
8ab109d131 Remove count for NSIO. The only places it was used it were incorrect.
(alpha-gdbstub.c got sync'ed up a bit with the i386 version)
2001-01-31 10:54:45 +00:00
Peter Wemm
f444a0efe9 Convert mca (microchannel bus support) from something that we count
(bogus) to something that we test for the presence of.
2001-01-29 11:57:27 +00:00
Nicolas Souchu
c264e80fb7 Consider that the chipset may be in ECP mode (from BIOS settings)
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.
2001-01-25 10:51:41 +00:00
Jason Evans
d1c1b8413e Remove MUTEX_DECLARE() and MTX_COLD. Instead, postpone full mutex
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.
2001-01-21 07:52:20 +00:00
Peter Wemm
1467a651ab Convert apm from a bogus 'count' into a plain option. Clean out some
other cruft from the files.alpha and files.ia64 that were related to this.
2001-01-19 14:09:54 +00:00
Garrett Wollman
0a2c3d48c6 select() DKI is now in <sys/selinfo.h>. 2001-01-09 04:33:49 +00:00
Seigo Tanimura
307afaf3c6 Add OZO8008 - Zoom (33.6k Modem).
PR:		kern/23336
Submitted by:	Paulo Menezes <root@samurai.dee.uc.pt>
2000-12-26 06:52:57 +00:00
Nicolas Souchu
1afd1f9956 Fix the PR. Getting a dma channel equal to 0 remains a problem though.
PR:		i386/22568
2000-12-19 21:28:17 +00:00