Matthew Dillon [Wed, 7 Dec 2005 04:27:50 +0000 (04:27 +0000)]
Add KTR_TESTLOG and debug.ktr.testlogcnt, which issues three ktrlog() calls
in a row and allows one to measure the overhead of the KTR logging facility.
Simon Schubert [Wed, 7 Dec 2005 02:28:15 +0000 (02:28 +0000)]
Add the globbing flag GLOB_PERIOD.
This allows matching of filenames that starts with a dot.
Simon Schubert [Wed, 7 Dec 2005 01:16:30 +0000 (01:16 +0000)]
Switch to cvs-1.12.13
Simon Schubert [Wed, 7 Dec 2005 00:39:02 +0000 (00:39 +0000)]
Add our READMEs to the new cvs import
Simon Schubert [Wed, 7 Dec 2005 00:15:30 +0000 (00:15 +0000)]
Merge from vendor branch CVS:
Import a stripped down cvs-1.12.13
Simon Schubert [Wed, 7 Dec 2005 00:15:30 +0000 (00:15 +0000)]
Import a stripped down cvs-1.12.13
Matthew Dillon [Tue, 6 Dec 2005 23:41:56 +0000 (23:41 +0000)]
Enhance ktrdump to generate relative timestamps in fractional microseconds,
add an option to merge all cpus into one log (-s), and locate the starting
point in the FIFO when dumping output.
Matthew Dillon [Tue, 6 Dec 2005 23:37:55 +0000 (23:37 +0000)]
Synchronize the TSC between all cpus on startup and provide a sysctl,
debug.ktr.resynchronize, which will (very expensively) resynchronize the
TSCs 10 times a second to reduce drift errors to manageable numbers.
The TSC on all the cpus for the purposes of ktrdump's ought to be
synchronizated within ~200ns of each other, assuming all cpus are running
at the same frequency.
This needs more work. What we really need to do is calculate the drift
for each cpu and apply it dynamically.
Joerg Sonnenberger [Tue, 6 Dec 2005 17:49:22 +0000 (17:49 +0000)]
Revert last change and add toascii.c to the right variable.
Joerg Sonnenberger [Tue, 6 Dec 2005 17:36:20 +0000 (17:36 +0000)]
toascii(3) got lost during ctype conversion.
Sepherosa Ziehau [Tue, 6 Dec 2005 13:51:01 +0000 (13:51 +0000)]
minor style change
Sepherosa Ziehau [Tue, 6 Dec 2005 13:48:49 +0000 (13:48 +0000)]
remove duplicated `use'
Matthew Dillon [Tue, 6 Dec 2005 04:03:56 +0000 (04:03 +0000)]
The new lockmgr() function requires spinlocks, not tokens. Take this
opportunity to convert all use of tokens in SMB to spinlocks since they
are only used to wrap very low level operations.
Reported-by: "Adrian M. Nida" <nida@musc.edu>
Simon Schubert [Tue, 6 Dec 2005 02:22:23 +0000 (02:22 +0000)]
Use sh to run scripts instead of relying on their +x bit
Matthew Dillon [Tue, 6 Dec 2005 02:02:24 +0000 (02:02 +0000)]
doreti and splz were improperly requiring that the MP lock be held in order
to process delayed FAST interrupts. This could result in clock interrupts
getting delayed indefinitely when the MP lock was held by another cpu.
The delayed clock interrupts further resulted in clock-related issues such
as the system time running slow, and other problems.
Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
Matthew Dillon [Mon, 5 Dec 2005 17:01:53 +0000 (17:01 +0000)]
Document the nfs dirent conversion code. No functional changes.
Matthew Dillon [Mon, 5 Dec 2005 16:52:02 +0000 (16:52 +0000)]
Add an option -b which dumps the clean/dirty buffer cache RB trees for
each vnode.
Matthew Dillon [Mon, 5 Dec 2005 16:48:22 +0000 (16:48 +0000)]
Sync up misc work on the currently inactive syscall mapping library.
Matthew Dillon [Mon, 5 Dec 2005 06:13:16 +0000 (06:13 +0000)]
Fix a bug in our RB_SCAN calls. A critical section is required to
protect the RB tree against I/O completions. Also do not abort a scan
if an I/O completion moves a buffer off the dirty list and onto the clean
list while we are trying to lock it.
There is a small chance that this bug could have resulted in dirty buffers
being left intact after being freed from the filesystem bitmap, which in
turn can cause filesystem corruption (dirbad and other panics).
Note that this was a DragonFly-only bug.
Sascha Wildner [Mon, 5 Dec 2005 03:42:31 +0000 (03:42 +0000)]
Ansify function definitions.
Submitted-by: Alexey Slynko <slynko@tronet.ru>
Sascha Wildner [Mon, 5 Dec 2005 02:40:28 +0000 (02:40 +0000)]
- Ansify function definitions.
- Move function type on a line of its own.
- Minor style cleanup.
Sascha Wildner [Mon, 5 Dec 2005 02:22:51 +0000 (02:22 +0000)]
Silence troff warning.
Sascha Wildner [Mon, 5 Dec 2005 02:22:08 +0000 (02:22 +0000)]
Add DragonFly 1.2, 1.3.6 and 1.3.7. Remove 1.2.* (those have bug fixes only).
Sascha Wildner [Mon, 5 Dec 2005 01:23:23 +0000 (01:23 +0000)]
- Ansify function definitions.
- Move function type on a line of its own.
- Remove __P().
- Minor style cleanup.
Sascha Wildner [Mon, 5 Dec 2005 01:16:47 +0000 (01:16 +0000)]
Use DOSMAGIC from <sys/diskmbr.h>.
Sascha Wildner [Mon, 5 Dec 2005 01:04:01 +0000 (01:04 +0000)]
- Ansify function definitions.
- Move function type on a line of its own.
- Remove __P().
- Minor style cleanup.
- Remove (void) casts for unused return values.
Sascha Wildner [Mon, 5 Dec 2005 00:58:50 +0000 (00:58 +0000)]
Ansify function definitions.
Sascha Wildner [Mon, 5 Dec 2005 00:47:57 +0000 (00:47 +0000)]
- Ansify function definitions.
- Remove (void) casts for unused return values.
- Add prototypes.
- Fix some warnings.
- Fix some minor style(9) issues.
In-collaboration-with: Alexey Slynko <slynko@tronet.ru>
Sascha Wildner [Sun, 4 Dec 2005 23:41:06 +0000 (23:41 +0000)]
Include <time.h> to silence some warnings.
Sascha Wildner [Sun, 4 Dec 2005 23:25:40 +0000 (23:25 +0000)]
- Ansify function definitions.
- Remove (void) casts for unused return values.
- Remove P().
- Fix some warnings.
In-collaboration-with: Alexey Slynko <slynko@tronet.ru>
Matthew Dillon [Sun, 4 Dec 2005 22:29:30 +0000 (22:29 +0000)]
Update more default cshrc/profiles with new paths.
Matthew Dillon [Sun, 4 Dec 2005 21:24:13 +0000 (21:24 +0000)]
Require pkgsrc to be installed, include pkgsrc bootstrap binaries and mk.conf
on the ISO, and provide make targets to install pkgsrc, mk.conf, and the
bootstrap binaries on the local machine.
Matthew Dillon [Sun, 4 Dec 2005 20:32:51 +0000 (20:32 +0000)]
Add /usr/pkg/[s]bin to /bin/sh's default path and login.conf's default path.
Matthew Dillon [Sun, 4 Dec 2005 18:07:49 +0000 (18:07 +0000)]
Add support for DLink 528(T) Gigabit cards.
Submitted-by: Gary Allan <dragonfly@gallan.plus.com>
Taken-from: FreeBSD
Matthew Dillon [Sat, 3 Dec 2005 21:01:03 +0000 (21:01 +0000)]
Fix a bogus proc0 test that is no longer accurate. This should allow the
smb module to be loaded.
Reported-by: Adrian Nida <nida@musc.edu>
Matthew Dillon [Sat, 3 Dec 2005 18:32:32 +0000 (18:32 +0000)]
Reduce SCSI_DELAY in GENERIC from 15 seconds to 5 seconds.
Requested-by: many
Simon Schubert [Sat, 3 Dec 2005 14:06:17 +0000 (14:06 +0000)]
Update to openssl-0.9.8a and regen man pages
Simon Schubert [Sat, 3 Dec 2005 14:00:43 +0000 (14:00 +0000)]
Update our READMEs for OpenSSL
Simon Schubert [Sat, 3 Dec 2005 13:48:16 +0000 (13:48 +0000)]
Merge from vendor branch OPENSSL:
Import OpenSSL 0.9.8a
Simon Schubert [Sat, 3 Dec 2005 13:48:16 +0000 (13:48 +0000)]
Import OpenSSL 0.9.8a
Simon Schubert [Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)]
Remove some files we don't need from CVS's sources
Simon Schubert [Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)]
Merge from vendor branch CVS:
Remove some files we don't need from CVS's sources
Simon Schubert [Sat, 3 Dec 2005 12:11:44 +0000 (12:11 +0000)]
Remove some files we don't need from CVS's sources
Joerg Sonnenberger [Sat, 3 Dec 2005 02:19:52 +0000 (02:19 +0000)]
Set POSIX feature test macros to the correct value as mendated by SUS.
Matthew Dillon [Fri, 2 Dec 2005 22:02:20 +0000 (22:02 +0000)]
Fix a process exit/wait race. The wait*() code was making a faulty test
to determine that the exiting process had completely exited and was no
longer running. Testing the TDF_RUNNING flag is insufficient because an
exiting process may block at various points after becoming a Zombie, but
before it deschedules itself for the last time.
Add a new flag, TDF_EXITING, which is set just prior to a thread descheduling
itself for the last time. The reaper then checks that TDF_EXITING is set
and TDF_RUNNING is clear.
Fix a second faulty test in both the exit and the thread cpu migration
code. If a thread gets preempted, TDF_RUNNING will be temporarily cleared,
so testing TDF_RUNNING is not sufficient by itself. We must also test
the TDF_PREEMPT_LOCK flag to be sure that it is also clear.
So the grand result is that to really be sure the zombie process has been
completely descheduled and is no longer running or will ever run again,
the TDF_EXITING, TDF_RUNNING, *and* TDF_PREEMPT_LOCK flags must be tested
and all must be clear except for TDF_EXITING.
It should be noted that TDF_RUNNING on the previously scheduled process
is always cleared AFTER we have context-switched into the next scheduled
thread or the idle thread, so seeing a cleared TDF_RUNNING along with the
appropriate state for the other flags does in fact guarentee that the thread
in question is no longer using its stack in any way.
Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
Matthew Dillon [Fri, 2 Dec 2005 19:31:49 +0000 (19:31 +0000)]
Fix a bug in the big tsleep/wakeup cleanup commit. When stopping a
sleeping process in psignal, we must wakeup() the parent process that
might be waiting in a wait4().
Reported-by: YONETANI Tomokazu <qhwt+dfly@les.ath.cx>
Matthew Dillon [Fri, 2 Dec 2005 17:29:45 +0000 (17:29 +0000)]
cred may be NULL due to a prior error code. crhold() handles NULL creds,
but crfree() does not. Check for NULL.
Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
Matthew Dillon [Fri, 2 Dec 2005 17:16:10 +0000 (17:16 +0000)]
Change the initial path from /bin:/usr/bin to /bin:/usr/bin:/sbin:/usr/sbin
when no PATH environment variable is present. This only really effects
boot -s, and not having [/usr]/sbin has always been an annoyance.
Requested-by: many
Matthew Dillon [Thu, 1 Dec 2005 21:15:54 +0000 (21:15 +0000)]
Do not hold the ifnet serializer when entering tsleep() in the PPP TUN
interface code. This can deadlock the network protocol threads.
Reported-by: Stefan Krueger
Matthew Dillon [Thu, 1 Dec 2005 18:54:20 +0000 (18:54 +0000)]
For MPSAFE syscall operation, CURSIG->__cursig->issignal() may be called
without the MP lock held. At the moment issignal() needs to be MP locked
so wrap the function in the lock. Note that issignal() is only called if
there is a signal pending so this will not disrupt kern.syscall_mpsafe
operation.
Matthew Dillon [Thu, 1 Dec 2005 18:40:56 +0000 (18:40 +0000)]
The primary mbuf cluster management code needs to be made MPSAFE since
m_free() is now MPSAFE. This involves using atomic_*() increment and
decrement for the mbuf cluster ref count and using a serializer if there
is a potential for a double-free (if the ref count is 2 or greater). The
common code path will tend not to need the serializer unless the interface
is being tapped.
Reported-by: Peter Avalos <pavalos@theshell.com>
Matthew Dillon [Thu, 1 Dec 2005 18:34:09 +0000 (18:34 +0000)]
tsleep_interlock() must be called prior to testing the serializer lock
state, otherwise a serializer wakeup on another cpu may race our tsleep().
Reported-by: Emiel Kollof <coolvibe@hackerheaven.org>
Matthew Dillon [Thu, 1 Dec 2005 18:30:13 +0000 (18:30 +0000)]
Get rid of the p_stat SZOMB state. p_stat can now only be SIDL, SSLEEP, or
SRUN. Instead mark zombie processes with a new flag, P_ZOMBIE. The eproc
code will convert P_ZOMBIE into SZOMB for /bin/ps.
This further isolates the tsleep code from the process status and fixes
a panic when a process in SZOMB tried to tsleep().
Reported-by: Stefan Krueger <skrueger@meinberlikomm.de>
Sascha Wildner [Wed, 30 Nov 2005 14:48:54 +0000 (14:48 +0000)]
Fix comment.
Sepherosa Ziehau [Wed, 30 Nov 2005 13:35:24 +0000 (13:35 +0000)]
unbreak LINT building
Sascha Wildner [Wed, 30 Nov 2005 08:25:07 +0000 (08:25 +0000)]
- Fix wrong table size (which resulted in the descriptions being off by
one in the menu).
- Change description of sysid #165 from 'FreeBSD' to 'DF/FBSD' since we
share it with FreeBSD.
YONETANI Tomokazu [Wed, 30 Nov 2005 06:23:52 +0000 (06:23 +0000)]
upgrade_etc: remove altqd and network scripts too, which have been around
for a while but removed in CVS HEAD.
Matthew Dillon [Tue, 29 Nov 2005 19:56:56 +0000 (19:56 +0000)]
Jumbo mbuf mangement's extbuf callbacks must be MPSAFE. Use a serializer
to accomplish the task. This is a workaround until we create a generic
mbuf management API for jumbo frames.
Matthew Dillon [Tue, 29 Nov 2005 19:55:02 +0000 (19:55 +0000)]
ipw (is the only driver that) needs a working interrupt to perform
initialization. This means we have to release the serializer across
the tsleep. The code must additionally be MP Safe.
Reported-by: Johannes Hofmann <Johannes.Hofmann@gmx.de>
Matthew Dillon [Tue, 29 Nov 2005 17:15:56 +0000 (17:15 +0000)]
Properly serialize IPW.
Reported-by: Johannes Hofmann <Johannes.Hofmann@gmx.de>
With-help-from: Hiten Pandya <hmp@backplane.com>
Sascha Wildner [Tue, 29 Nov 2005 08:54:32 +0000 (08:54 +0000)]
Sync zoneinfo database with tzdata2005o from elsie.
asia: 7.86 -> 7.88
northamerica: 7.80 -> 7.82
southamerica: 7.62 -> 7.63
From the announcement:
"These incorporate the Georgia, Cuba, Nicaragua, and Jordan changes
circulated over the past two weeks by Paul Eggert on the time zone
mailing list."
Simon Schubert [Mon, 28 Nov 2005 17:43:46 +0000 (17:43 +0000)]
Fix mdoc errors exising at least since the beginning of time (1991 import).
Spotted-by: corecode
mdoc-clue: swildner
Matthew Dillon [Mon, 28 Nov 2005 17:13:47 +0000 (17:13 +0000)]
Make all network interrupt service routines MPSAFE part 1/3.
Replace the critical section that was previously used to serialize access
with the LWKT serializer. Integrate the serializer into the IFNET structure.
Note that kern.intr_mpsafe must be set to 1 for network interrupts to actually
run MPSAFE. Also note that any interrupts shared with othre non-MP drivers
will cause all drivers on that interrupt to run with the Big Giant Lock.
Network interrupt - Each network driver then simply passes that serializer
to bus_setup_intr() so only a single serializer is required to process the
entire interrupt path. LWKT serialization support is already 100% integrated
into the interrupt subsystem so it will already be held as of when the
registered interrupt procedure is called.
Ioctl and if_* functions - All callers of if_* functions (such as if_start,
if_ioctl, etc) now obtain the IFNET serializer before making the call. Thus
all of these entry points into the driver will now be serialized.
if_input - All code that calls if_input now ensures that the serializer
is held. It will either already be held (when called from a driver), or
the serializer will be wrapped around the call. When packets are forwarded
or bridged between interfaces, the target interface serializer will be
dropped temporarily to avoid a deadlock.
Device Driver access - dev_* entry points into certain pseudo-network
devices now obtain and release the serializer. This had to be done on
a device-by-device basis (but there are only a few such devices).
Thanks to several people for helping test the patch, in particular
Sepherosa Ziehau.
Matthew Dillon [Sat, 26 Nov 2005 20:54:34 +0000 (20:54 +0000)]
tcp_syncache.cache_limit is a per-cpu limit, reserve enough space for all
cpus using it to hit the limit.
Reported-by: Peter Avalos <pavalos@theshell.com>
Sepherosa Ziehau [Sat, 26 Nov 2005 14:36:21 +0000 (14:36 +0000)]
In unregister_int():
- Don't update i_mplock_required, if the unregistering intr record is not found
- Use a local variable `rec0' to test whether after the unregistering there
are still intr records which require MP lock. `rec' can't be reused here,
since `rec' is the intr record to free, if it is reused in this test, *wrong*
intr record will be freed
Matthew Dillon [Fri, 25 Nov 2005 17:52:53 +0000 (17:52 +0000)]
Fix a mbuf statistics bug.
Reported-by: Tomaz Borstnar and numerous others
Matthew Dillon [Fri, 25 Nov 2005 17:16:23 +0000 (17:16 +0000)]
Assert that he mbuf type is correct rather then blinding setting m_type.
Sascha Wildner [Fri, 25 Nov 2005 00:58:52 +0000 (00:58 +0000)]
- Ansify function definitions.
- Move function type on a separate line.
Sascha Wildner [Fri, 25 Nov 2005 00:32:49 +0000 (00:32 +0000)]
- Ansify function definitions.
- Move function type on a separate line.
Sascha Wildner [Thu, 24 Nov 2005 23:42:54 +0000 (23:42 +0000)]
- Ansify function definitions.
- Move function type on a separate line.
- Minor style(9) cleanup.
Matthew Dillon [Thu, 24 Nov 2005 23:01:58 +0000 (23:01 +0000)]
Add the ips driver to GENERIC.
Requested-by: Tomaz Borstnar <tomaz.borstnar@over.net>
Sascha Wildner [Thu, 24 Nov 2005 22:23:03 +0000 (22:23 +0000)]
- Ansify function definitions.
- Move function type on a separate line.
Sascha Wildner [Thu, 24 Nov 2005 17:18:30 +0000 (17:18 +0000)]
Move individual parameter comments into the general comment.
Submitted-by: Alexey Slynko <slynko@tronet.ru>
Sascha Wildner [Thu, 24 Nov 2005 16:33:03 +0000 (16:33 +0000)]
- Note that 'make upgrade' not only upgrades /etc but the whole system.
- Add some words of warning about running 'make upgrade' before
'make installworld'.
YONETANI Tomokazu [Thu, 24 Nov 2005 02:16:17 +0000 (02:16 +0000)]
Fix LINT kernel; spin_lock function definitions have been split into
<sys/spinlock2.h>, so one has to explicitly #include it to use these
functions now.
Matthew Dillon [Wed, 23 Nov 2005 22:54:22 +0000 (22:54 +0000)]
Fix some minor bugs in lwkt_serialize_handler*() which upcoming code will
depend on.
Sascha Wildner [Wed, 23 Nov 2005 08:55:59 +0000 (08:55 +0000)]
Remove forgotten K&R parameter declaration.
Submitted-by: Alexey Slynko <slynko@tronet.ru>
Sascha Wildner [Wed, 23 Nov 2005 08:51:56 +0000 (08:51 +0000)]
Add an XXX comment to document that the initializations are for silencing
GCC warnings.
Requested-by: joerg
Submitted-by: Alexey Slynko <slynko@tronet.ru>
Sascha Wildner [Wed, 23 Nov 2005 08:50:34 +0000 (08:50 +0000)]
Remove prototypes for hidden functions. We'll deal with that later
appropriately.
Requested-by: joerg
Submitted-by: Alexey Slynko <slynko@tronet.ru>
Matthew Dillon [Wed, 23 Nov 2005 01:27:55 +0000 (01:27 +0000)]
Add a lwkt_serialize_try() API function.
Sascha Wildner [Tue, 22 Nov 2005 09:36:58 +0000 (09:36 +0000)]
Move ef.4 from sys/net/ef to share/man/man4.
Matthew Dillon [Tue, 22 Nov 2005 08:41:06 +0000 (08:41 +0000)]
Consolidate the initialization of td_mpcount into lwkt_init_thread().
Fix a bug in kern.trap_mpsafe, the mplock was not being properly released
when operating in vm86 mode (when kern.trap_mpsafe was set to 1).
Matthew Dillon [Tue, 22 Nov 2005 06:13:42 +0000 (06:13 +0000)]
Do not try to set up hardware vectors for software interrupts.
Matthew Dillon [Tue, 22 Nov 2005 04:09:38 +0000 (04:09 +0000)]
Document the fact that the vm86 instruction emulator is MPSAFE.
Matthew Dillon [Tue, 22 Nov 2005 03:58:34 +0000 (03:58 +0000)]
Remove unused label.
Matthew Dillon [Tue, 22 Nov 2005 01:52:25 +0000 (01:52 +0000)]
Add a sysctl and tunable kern.trap_mpsafe which allows some traps to run
without having to hold the MP lock. The more sophisticated traps, such as
a VM fault, will still obtain the MP lock. The sysctl is disabled (0)
by default.
The main thing effected by turning this on is T_ASTFLT, which is used to
switch away from a user process to either a kernel thread (non preemptively)
or another user process. When enabled, switching from a user process to
a kernel thread and back again will not require the MP lock. However, the
real benefit will not be realized until more kernel threads run without the
MP lock.
Matthew Dillon [Tue, 22 Nov 2005 00:49:18 +0000 (00:49 +0000)]
Wrap psignal() and a few other places that require the MP lock when
events occur while returning from a system call.
Matthew Dillon [Tue, 22 Nov 2005 00:24:35 +0000 (00:24 +0000)]
Fix the design of ifq_dequeue/altq_dequeue by adding an mbuf pointer and
requiring that a polled mbuf be passed as an argument to the dequeue
function. Assert that the passed argument matches the mbuf that is actually
dequeued. Also remove assignments of the return value from ifq_dequeue()
in such cases which implied that the mbuf might be different when, in fact,
it had better not be.
Matthew Dillon [Mon, 21 Nov 2005 22:54:16 +0000 (22:54 +0000)]
Followup to last commit, cleanup some SMP/UP conditionals.
Matthew Dillon [Mon, 21 Nov 2005 21:59:52 +0000 (21:59 +0000)]
Add a sysctl and tunable kern.syscall_mpsafe which allows system calls
marked MPSAFE in syscalls.master to run without the MP lock. This sysctl
is disabled (0) by default.
To make this work the userland scheduler's passive release / acquire code
had to be made MPSAFE. The release code accomplishes this by using
atomic_*() ops to manipulate curprocmask and rdyprocmask. The acquisition
code currently obtains the MP lock unconditionally. The userland scheduler
really need to be rewritten to be cpu-localized.
Only a few system calls, such as getuid(), are currently marked MPSAFE.
No matter how a system call is marked, the MP lock is obtained
unconditionally when ktracing or signaling.
Matthew Dillon [Mon, 21 Nov 2005 21:56:14 +0000 (21:56 +0000)]
Start working on making the printf() path MPSAFE, because it isn't at the
moment. Ensure that index computations on the message buffer cannot cause
a crash if multiple cpus are writing to the message buffer at the same time.
Matthew Dillon [Mon, 21 Nov 2005 21:50:26 +0000 (21:50 +0000)]
Add a sysctl and tunable kern.intr_mpsafe which allows threaded interrupts
marked INTR_MPSAFE to run without the MP lock. This sysctl is disabled (0)
by default.
Matthew Dillon [Mon, 21 Nov 2005 18:49:27 +0000 (18:49 +0000)]
Add a thread flag, TDF_MPSAFE, which is used during thread creation to
determine whether the thread should initially be holding the MP lock or not.
Matthew Dillon [Mon, 21 Nov 2005 18:02:46 +0000 (18:02 +0000)]
Remove inthand_add() and inthand_remove(). Instead, register_int() and
unregister_int() are called directly and the machine level vector setup and
teardown ABI calls are made from register_int() and unregister_int().
Sepherosa Ziehau [Mon, 21 Nov 2005 13:20:29 +0000 (13:20 +0000)]
There are two possible causes which will make vr(4) stall:
in vr_start(), if vr_encap() fails:
1) vr_start() will set IFF_OACTIVE. If the packet causing vr_encap() to fail
is the only packet pending to be downloaded to device, vr(4) will stall,
since:
* No more packets can be transfered, because IFF_OACTIVE is turned on
* Except for vr_{init, stop}(), vr_txeoc() is the only function that can
turn off IFF_OACTIVE. It is triggered by "frame download completing"
interrupt. But this kind of interrupt will not be generated here, since
there are no other packets pending to be downloaded.
2) vr_start() will skip TX head and tail pointer updating, which leaks all
previous successfully encapsulated TX chains.
Following fixes are applied:
- Allocate chunk of memory in vr_attch() to reduce the failure chance of
vr_encap(). This will also reduce the load of mbuf allocation system
- Use indexes instead of pointers for TX chain processing. This can save us
some spaces in every vr_chain
- Update Tx head and tail indexes when there are successfully encapsultaed
packets pending to be downloaded to device, even if vr_encap() fails for
some packets
- Cache TX buffer and next TX descriptor's physical address in vr_chain, since
these addresses are fixed during the life time of vr(4)
Other stuffs:
- Use M_ZERO flag in memory allocation instead of calling bzero() later
- Remove (char *) cast in bzero()
- Minor style changes
Reported-by: corecode
With-helps-form: joerg
Reviewed-by: joerg, submit@
Sascha Wildner [Sun, 20 Nov 2005 14:58:40 +0000 (14:58 +0000)]
Add XXX comments to document dubious random number acquisition technique.
Sascha Wildner [Sun, 20 Nov 2005 13:24:36 +0000 (13:24 +0000)]
- Ansify function definitions.
- Add prototypes.
- Fix some warnings.
In-collaboration-with: Alexey Slynko <slynko@tronet.ru>
Sepherosa Ziehau [Sun, 20 Nov 2005 13:08:35 +0000 (13:08 +0000)]
Prefer m_getcl() to EPIC_MGETCLUSTER() which uses MGETHDR()+MCLGET()
Sascha Wildner [Sun, 20 Nov 2005 12:37:49 +0000 (12:37 +0000)]
- Ansify function definitions.
- Fix some warnings.
- In function definitions, move the type on a line of its own.
- Perform some style(9) cleanup.
- Remove (void) casts for discarded return values.
- Remove parameter names from function prototypes.
In-collaboration-with: Alexey Slynko <slynko@tronet.ru>
Sepherosa Ziehau [Sun, 20 Nov 2005 11:59:54 +0000 (11:59 +0000)]
- Remove unnecessary ETHER_* macros
- Utilize pcidevs.h for PCI device id and vendor id
- Prefer PCIR_BAR() macro to PCIR_MAPS
- Use common device probing style, epic_devtype() is merged
- Nuke epic_softc_t.cardvend, since it is only used in epic_common_attach().
Move epic_softc_t.cardid to the end of the struct
- Minor style changes