Simon Schubert [Thu, 9 Jun 2005 23:38:00 +0000 (23:38 +0000)]
Fix ctype::is() by using the right array
Sascha Wildner [Thu, 9 Jun 2005 20:55:05 +0000 (20:55 +0000)]
Remove spl*() in dev/raid/{aac,amr,asr,ciss} and replace them
with critical sections.
Sascha Wildner [Thu, 9 Jun 2005 20:47:37 +0000 (20:47 +0000)]
Unbreak LINT by including <sys/thread2.h> where proper and remove some
unused s variables.
Jeffrey Hsu [Thu, 9 Jun 2005 20:17:53 +0000 (20:17 +0000)]
Fix typo that turns out to be harmless by accident, as MT_HEADER and
M_PKTHDR have the same value, 2.
Joerg Sonnenberger [Thu, 9 Jun 2005 20:04:44 +0000 (20:04 +0000)]
Convert to critical sections. No need to protect the interupt from racing
against itself.
Joerg Sonnenberger [Thu, 9 Jun 2005 19:45:12 +0000 (19:45 +0000)]
Convert to critical sections, move timer reset into the protection.
Joerg Sonnenberger [Thu, 9 Jun 2005 19:39:18 +0000 (19:39 +0000)]
Explicitly note that updating from pre-1.2 to PREVIEW or HEAD is not
supported, the intermediate step to 1.2 is required.
Joerg Sonnenberger [Thu, 9 Jun 2005 19:29:00 +0000 (19:29 +0000)]
Use M_WAITOK for contigmalloc now that the attach path is interrupt-save.
Joerg Sonnenberger [Thu, 9 Jun 2005 19:26:55 +0000 (19:26 +0000)]
Don't bzero the softc, it is already zero.
Use ste_detach for cleanup if attach fails.
Setup interrupt last to prevent possible races.
Submitted-by: Sepherosa Ziehau <sepherosa@gmail.com>
Inspired-by: related changes to wb(4)
Eirik Nygaard [Thu, 9 Jun 2005 19:14:12 +0000 (19:14 +0000)]
Replace the hand rolled linked list with a SLIST.
Joerg Sonnenberger [Thu, 9 Jun 2005 19:13:34 +0000 (19:13 +0000)]
Use ether_crc32_be.
Obtained-from: FreeBSD
Submitted-by: Sepherosa Ziehau <sepherosa@gmail.com>
Joerg Sonnenberger [Thu, 9 Jun 2005 19:10:04 +0000 (19:10 +0000)]
Use PCI helper functions instead of hand-rolling them. Remove now
unused macros.
Submitted-by: Sepherosa Ziehau <sepherosa@gmail.com>
Joerg Sonnenberger [Thu, 9 Jun 2005 19:05:16 +0000 (19:05 +0000)]
device_printf / if_printf and some minor nits.
Submitted-by: Sepherosa Ziehau <sepherosa@gmail.com>
Jeffrey Hsu [Thu, 9 Jun 2005 18:39:05 +0000 (18:39 +0000)]
Deprecate MCLGET() in favor of m_getl() in order to take advantage
of cluster caching.
Matthew Dillon [Thu, 9 Jun 2005 18:26:22 +0000 (18:26 +0000)]
Fix a bug in the mbstats accounting. m_mbufs was being decremented for
normal mbufs converted to clustered mbufs, but in fact it should not be
because we decrement it properly when the normal-mbuf-with-cluster is
freed.
Change most of the m_getl()'s back to m_get()'s or m_gethdr()'s in order
to guarentee that the mbuf does NOT have a cluster associated with it
since we are going to try to share the old mbuf's cluster later on
(in m_copym()). This bug was causing the system to run out of mbuf
clusters.
Add a number of assertions for correct operation.
Jeffrey Hsu [Thu, 9 Jun 2005 17:14:13 +0000 (17:14 +0000)]
Also preserve all the non-copied flags in the target mbuf when duplicating a
packet header.
Requested by: Matt Dillon
Joerg Sonnenberger [Thu, 9 Jun 2005 17:09:34 +0000 (17:09 +0000)]
Fix some bugs in the last commit. We have to call ether_ifdetach if we
couldn't setup the interrupt. We should always try to detach the children.
Noticed-by: Sepherosa Ziehau <sepherosa@gmail.com>
Jeffrey Hsu [Thu, 9 Jun 2005 16:53:11 +0000 (16:53 +0000)]
Preserve the target M_EXT_CLUSTER flag when duplicating a packet header.
Matthew Dillon [Thu, 9 Jun 2005 16:53:10 +0000 (16:53 +0000)]
Add a missing lwkt_reltoken() in the NULL return path. Do not count NULL
returns in the gets_cumulative statistic.
Simon Schubert [Thu, 9 Jun 2005 14:35:29 +0000 (14:35 +0000)]
Add directories for gcc40
Jeffrey Hsu [Thu, 9 Jun 2005 02:03:39 +0000 (02:03 +0000)]
The header type of a mbuf doesn't change when appended onto a chain.
Jeffrey Hsu [Thu, 9 Jun 2005 01:55:12 +0000 (01:55 +0000)]
A packet header without any packet tags is still a packet header.
Jeffrey Hsu [Wed, 8 Jun 2005 23:50:35 +0000 (23:50 +0000)]
Only duplicate packet headers into mbuf packet headers.
Jeffrey Hsu [Wed, 8 Jun 2005 23:45:00 +0000 (23:45 +0000)]
Get an mbuf packet header to begin with instead of getting an mbuf and then
immediately changing it into an mbuf packet header.
Jeffrey Hsu [Wed, 8 Jun 2005 23:39:08 +0000 (23:39 +0000)]
Only allow packet headers to be copied into a packet header mbuf.
Jeffrey Hsu [Wed, 8 Jun 2005 23:29:29 +0000 (23:29 +0000)]
Should have allocated a mbuf packet header to begin with.
Jeffrey Hsu [Wed, 8 Jun 2005 23:14:29 +0000 (23:14 +0000)]
Allocate the right type of mbuf to begin with rather than switching types
afterwards.
Jeffrey Hsu [Wed, 8 Jun 2005 23:10:27 +0000 (23:10 +0000)]
Convert to use m_getl() in order to take advantage of cluster caching and
to avoid switching the mbuf type from non-packet header to packet header.
Matthew Dillon [Wed, 8 Jun 2005 22:22:59 +0000 (22:22 +0000)]
Rollup mbuf/objcache fixes.
* Completely replace the blocking algorithm that is used to stall when the
depot has insufficient resources.
* Use __offsetof() to calculate variable length structural sizes.
* #if 0 out balancing code for now. There isn't actually much of a need for
it since each cpu can hold no more then two magazines anyway. The depot
will have the rest.
* Increase the magazine capacity from 5 to 256 elements to improve
performance.
* The mbufs were being returned to a different objcache then they had been
allocated from, due to a dependance on M_PKTHDR and M_EXT. But these
flags can change unexpectedly and this led to lockups in the objcache
code and other issues. Also the share count on the cluster may mean
that it is not possible to release an mbuf+cluster back to its original
mbuf+cluster cache... it may have to be DTORed instead.
* Change the way ref counts are handled in the mclmeta_cache. The cache
returns and expects a ref count of 0 now, and the link code deals with
bumping it.
Matthew Dillon [Wed, 8 Jun 2005 22:14:37 +0000 (22:14 +0000)]
Handle the case where the version file might be empty, which can occur
if a machine crashes while building the kernel.
Matthew Dillon [Wed, 8 Jun 2005 19:29:32 +0000 (19:29 +0000)]
Temporary hack to fix interrupt race when decrementing a shared
mbuf cluster count.
Joerg Sonnenberger [Wed, 8 Jun 2005 19:20:09 +0000 (19:20 +0000)]
Reorder initialisation to make protection unnecessary.
Use device_printf in wb_attach. Leave critical section ASAP in wb_detach.
Use M_WAITOK for contigmalloc.
Partly-obtained-from: FreeBSD (first part).
Joerg Sonnenberger [Wed, 8 Jun 2005 19:03:10 +0000 (19:03 +0000)]
Fix detach order: We have to unhook the interrupt first and leave the
critical section afterwards.
Matthew Dillon [Wed, 8 Jun 2005 16:30:47 +0000 (16:30 +0000)]
Reorder code in m_chtype() to properly decrement the mbtype stats. Before
it was assigning the new type before (attempting to) decrement the old, and
decrementing the new instead.
Max Okumoto [Wed, 8 Jun 2005 08:25:50 +0000 (08:25 +0000)]
Remove spl*() in src/sys/dev/serial/{cy,rc,rp,si,sio,stl,stli}
and replace them with critical sections.
Sascha Wildner [Tue, 7 Jun 2005 20:21:23 +0000 (20:21 +0000)]
Clean up some of the worst style issues:
o Remove whitespace (around parentheses, at the end of lines, etc.).
Why do people waste so much whitespace??
o Use tabs where possible.
o Put function return types on a single line.
o Remove empty lines after {.
o Remove argument names from prototypes.
Jeffrey Hsu [Tue, 7 Jun 2005 19:08:55 +0000 (19:08 +0000)]
Re-implement the mbuf allocator using the object cache.
Jeffrey Hsu [Tue, 7 Jun 2005 19:07:11 +0000 (19:07 +0000)]
Generic cache of pre-initialized objects. It uses per-cpu caches
for MP-safety, was designed to be NUMA-aware, and works on top of
any storage allocator. The object cache is largely inspired by the
object cache portion of Sun's slab allocator.
Jeffrey Hsu [Tue, 7 Jun 2005 19:06:08 +0000 (19:06 +0000)]
Prefer the clearer m_getc() API over m_getm().
YONETANI Tomokazu [Tue, 7 Jun 2005 00:52:34 +0000 (00:52 +0000)]
remove an unused struct
YONETANI Tomokazu [Tue, 7 Jun 2005 00:51:13 +0000 (00:51 +0000)]
Replace spl*() with critical sections.
Max Okumoto [Mon, 6 Jun 2005 23:13:26 +0000 (23:13 +0000)]
Remove spl*() in src/sys/dev/netif/wi
and replace them with critical sections.
Max Okumoto [Mon, 6 Jun 2005 23:12:07 +0000 (23:12 +0000)]
Remove spl*() in src/sys/dev/netif/{ste,ti,tl,tx,txp,vr,vx,wb,wl,xe}
and replace them with critical sections.
Simon Schubert [Mon, 6 Jun 2005 22:51:54 +0000 (22:51 +0000)]
convert spl* to critical sections
Simon Schubert [Mon, 6 Jun 2005 22:45:39 +0000 (22:45 +0000)]
Add entry for disk/mpt, "LSI '909 FC adapters"
Simon Schubert [Mon, 6 Jun 2005 22:18:13 +0000 (22:18 +0000)]
remove bs, a pc98-only driver
Simon Schubert [Mon, 6 Jun 2005 22:03:20 +0000 (22:03 +0000)]
remove ct, a pc98-only driver
Jeffrey Hsu [Mon, 6 Jun 2005 21:50:28 +0000 (21:50 +0000)]
Deprecate MCLGET() in favor of m_getcl() or m_getl() in order to
take advantage of cluster caching.
Eirik Nygaard [Mon, 6 Jun 2005 21:48:16 +0000 (21:48 +0000)]
More spl_* removal from dev/disk/, replacing them with critical sections.
Liam J. Foy [Mon, 6 Jun 2005 18:17:09 +0000 (18:17 +0000)]
- We should use inet_ntoa which returns an ASCII string of representing the
address in '.' notation.
Joerg Sonnenberger [Mon, 6 Jun 2005 16:32:28 +0000 (16:32 +0000)]
Convert splimp to criticial sections for now. Cleanup the critical
sections a bit.
Joerg Sonnenberger [Mon, 6 Jun 2005 16:16:13 +0000 (16:16 +0000)]
Let the system deal with device shutdown, don't do it yourself.
Joerg Sonnenberger [Mon, 6 Jun 2005 15:59:06 +0000 (15:59 +0000)]
Use WAITOK allocation, fix some arguments and remove a now unused
variable.
Joerg Sonnenberger [Mon, 6 Jun 2005 15:53:17 +0000 (15:53 +0000)]
Always hook the interrupt up last, we don't have to worry about
ISR access that way.
Joerg Sonnenberger [Mon, 6 Jun 2005 15:42:18 +0000 (15:42 +0000)]
Replace splimp with critical sections for now. Fix a bug in xl_init,
when the TX ring couldn't be initialized, we must not continue.
Matthew Dillon [Mon, 6 Jun 2005 15:35:28 +0000 (15:35 +0000)]
Get rid of an unused variable due to the last commit.
Matthew Dillon [Mon, 6 Jun 2005 15:35:09 +0000 (15:35 +0000)]
Add some missing #include's from the last commit.
Joerg Sonnenberger [Mon, 6 Jun 2005 15:27:28 +0000 (15:27 +0000)]
Remove splimp in xl_attach, the interrupt is created last and
therefore protection needed.
David Rhodus [Mon, 6 Jun 2005 15:09:38 +0000 (15:09 +0000)]
Replace spl with critical sections.
Matthew Dillon [Mon, 6 Jun 2005 15:02:28 +0000 (15:02 +0000)]
Remove spl*() calls from kern, replacing them with critical sections.
Change the meaning of safepri from a cpl mask to a thread priority.
Make a minor adjustment to tests within one of the buffer cache's
critical sections.
Gregory Neil Shapiro [Mon, 6 Jun 2005 04:25:51 +0000 (04:25 +0000)]
Merge from vendor branch SENDMAIL:
Import sendmail 8.13.4 into a new contrib directory as the first step
towards upgrading sendmail in DragonFly. The build infrastructure will
follow over the next couple of days.
Gregory Neil Shapiro [Mon, 6 Jun 2005 04:25:51 +0000 (04:25 +0000)]
Import sendmail 8.13.4 into a new contrib directory as the first step
towards upgrading sendmail in DragonFly. The build infrastructure will
follow over the next couple of days.
Simon Schubert [Sun, 5 Jun 2005 22:43:21 +0000 (22:43 +0000)]
Add gcc40 infrastructure, but don't tie it to the build yet.
Simon Schubert [Sun, 5 Jun 2005 19:23:10 +0000 (19:23 +0000)]
Add infrastructure to build (static) libs for the host system
Simon Schubert [Sun, 5 Jun 2005 18:26:15 +0000 (18:26 +0000)]
Merge from vendor branch GCC:
Import of virgin gcc 4.0.0 distribution.
Unneccessary files and dirs have been deleted and recorded in
README.DELETED.
Simon Schubert [Sun, 5 Jun 2005 18:26:15 +0000 (18:26 +0000)]
Import of virgin gcc 4.0.0 distribution.
Unneccessary files and dirs have been deleted and recorded in
README.DELETED.
Joerg Sonnenberger [Sun, 5 Jun 2005 16:05:33 +0000 (16:05 +0000)]
Make call to arc_ioctl the default case.
Joerg Sonnenberger [Sun, 5 Jun 2005 12:35:24 +0000 (12:35 +0000)]
Merge the pointer to the link-layer address into ifnet and remove
ifnet_addrs. Change the rest of the code accordingly.
Simon Schubert [Sun, 5 Jun 2005 12:17:46 +0000 (12:17 +0000)]
unbreak world: only include sys/thread2.h in kernel, not in userland
Joerg Sonnenberger [Sun, 5 Jun 2005 12:16:53 +0000 (12:16 +0000)]
Add f_owner (user who mounted the filesystem), f_type (filesystem type ID),
f_(a)sync(reads,writes) (counters for sync and async read / writes).
Also add some spare fields for latter additions.
Jeroen Ruigrok/asmodai [Sun, 5 Jun 2005 09:40:46 +0000 (09:40 +0000)]
Add include file protection wrapper.
Wrap function definition in #if 0/#endif until they are added.
Joerg Sonnenberger [Sun, 5 Jun 2005 00:25:10 +0000 (00:25 +0000)]
Instead of using ifnet_addrs and following ifa_ifp, use ifindex2ifnet
directly.
Liam J. Foy [Sat, 4 Jun 2005 20:35:06 +0000 (20:35 +0000)]
- int -> pid_t for pid
Joerg Sonnenberger [Sat, 4 Jun 2005 14:41:57 +0000 (14:41 +0000)]
Instead of checking for ifnet_addrs[ifp->index - 1] == NULL to detect
running from if_detach, introduce in_ifdetach and call that after the
address list has been processed. This reduces the differences between
IPv4 and IPv6 stack.
Simon Schubert [Sat, 4 Jun 2005 14:25:45 +0000 (14:25 +0000)]
convert spl*() to critical sections.
Eirik Nygaard [Sat, 4 Jun 2005 13:42:28 +0000 (13:42 +0000)]
* Include string.h to get strlen() prototype.
* Shut up gcc warning.
Matthew Dillon [Sat, 4 Jun 2005 03:22:08 +0000 (03:22 +0000)]
The acpi module was failing to load due to exposed crit_*() functions. Add
a missing #include to get the crit_*() inlines.
Found by: Matt Dillon when his power button stopped working, click click click!
Matthew Dillon [Fri, 3 Jun 2005 23:57:34 +0000 (23:57 +0000)]
Replace cpu_mb1() and cpu_mb2() with cpu_mfence(), cpu_lfence(), cpu_sfence(),
and cpu_ccfence(). These provide memory and compiler fences to guarentee
read/write ordering of memory and to prevent the compiler itself from
generating reordered code in particular cases.
Most of the cases where care must be taken are tail-chasing FIFO cases,
especially in the IPI messaging code.
At the moment on SMP boxes we use a locked bus cycle on (%%esp) for the
lfence and mfence. The only other choices are to use a cpuid instruction
or one of the {S,L,M}FENCE instructions. cpuid is usually horrible, and
the *FENCE instructions do not exist on older cpus.
Linux seems to use the locked bus cycle or *FENCE instruction method.
Although I have no conclusive evidence, a number of crash dumps provided
by David Rhodus has led me to believe that speculative reads by modern cpus,
in particular in HTT situations with Intel cpus, can survive many more
instructions then previously believed. The only safe solution is to use
an instruction sequence which guarentees proper operation.
I would prefer to avoid the use of a locked bus cycle but at least in the
IPIQ case (the most common case we have to worry about), only one locked
bus cycle is required and then the entire IPIQ can be processed without
further locked cycles.
Joerg Sonnenberger [Fri, 3 Jun 2005 23:31:36 +0000 (23:31 +0000)]
Another instance of IF_LLSOCKADDR.
Joerg Sonnenberger [Fri, 3 Jun 2005 23:23:03 +0000 (23:23 +0000)]
Add a new macro IF_LLSOCKADDR which maps a ifnet pointer to the
associated link layer sockaddr. Use it to implement IF_LLADDR.
Replace most references of ifnet_addrs with one of those macros.
This makes the sometimes explicitly encoded assumption of each
interface having a link-layer address implicit and is the
preparation for removing ifnet_addrs.
Joerg Sonnenberger [Fri, 3 Jun 2005 23:14:26 +0000 (23:14 +0000)]
Expand itjc_bus_setup, it declares variables.
Joerg Sonnenberger [Fri, 3 Jun 2005 23:10:23 +0000 (23:10 +0000)]
Rename label to not collidate with local variable. Conditionalize error,
it's not yet used. Use #ifdef instead of depending on 0 for undefined
macros.
Joerg Sonnenberger [Fri, 3 Jun 2005 23:06:31 +0000 (23:06 +0000)]
Include sys/thread2.h to unbreak build.
Joerg Sonnenberger [Fri, 3 Jun 2005 23:05:22 +0000 (23:05 +0000)]
Add missing parameter.
Matthew Dillon [Fri, 3 Jun 2005 22:58:09 +0000 (22:58 +0000)]
vm_contig_pg_free() must busy the page before freeing it in the case
of a contigmalloc failure.
Joerg Sonnenberger [Fri, 3 Jun 2005 22:57:56 +0000 (22:57 +0000)]
reorder declarations
Matthew Dillon [Fri, 3 Jun 2005 22:57:27 +0000 (22:57 +0000)]
Augment the panic when attempting to switch from a FAST interrupt to include
the thread address, since it may not be readily apparent from the kernel
dump.
Joerg Sonnenberger [Fri, 3 Jun 2005 22:56:26 +0000 (22:56 +0000)]
Use IF_DRAIN.
Matthew Dillon [Fri, 3 Jun 2005 22:55:58 +0000 (22:55 +0000)]
Add a sysctl, debug.use_malloc_pattern, that explicitly initializes data
buffers allocated WITHOUT M_ZERO to -1 rather then leaving prior garbage
intact. Works with INVARIANTS builds only.
Sascha Wildner [Fri, 3 Jun 2005 21:56:23 +0000 (21:56 +0000)]
Remove spl*() in disk/{ata,buslogic,ccd} and replace them with
critical sections.
Jeroen Ruigrok/asmodai [Fri, 3 Jun 2005 21:28:49 +0000 (21:28 +0000)]
Document thread-safety.
Joerg Sonnenberger [Fri, 3 Jun 2005 21:19:09 +0000 (21:19 +0000)]
Don't commit half of a change. Prefix parameter names and local arguments
with _ in inline functions.
Matthew Dillon [Fri, 3 Jun 2005 20:20:44 +0000 (20:20 +0000)]
cpu_mb2() needs to load %eax with $0 before running cpuid.
Joerg Sonnenberger [Fri, 3 Jun 2005 20:16:28 +0000 (20:16 +0000)]
Don't name arguments in prototypes. Nuke __STDC__ conditional.
Eirik Nygaard [Fri, 3 Jun 2005 19:56:08 +0000 (19:56 +0000)]
Remove *spl() from netinet6 replacing them with critical sections.
Sascha Wildner [Fri, 3 Jun 2005 18:20:37 +0000 (18:20 +0000)]
Remove spl*() in net/{altq,bpf.c,bridge,dummynet,ef,gif,gre,hostcache.c}
and replace them with critical sections.
[forced commit to correct message]
Sascha Wildner [Fri, 3 Jun 2005 18:04:14 +0000 (18:04 +0000)]
Remove spl*() in net/{altq,bpf.c,bridge,dummynet,ef,gif,gre,hostcache.c}
netgraph and replace them with critical sections.
Matthew Dillon [Fri, 3 Jun 2005 17:14:51 +0000 (17:14 +0000)]
Remove spl*() calls from i386, replacing them with critical sections.
Leave spl support intact for the moment (it will be removed soon). Adjust
the interrupt mux to use a critical section for 'old' interrupt handlers
not using the new serialization API (which is nearly all of them at the
moment).
Eirik Nygaard [Fri, 3 Jun 2005 16:57:13 +0000 (16:57 +0000)]
Remove *spl() from dev/disk/{advansys,aha,ahb,aic7xxx,amd} replacing them with
critical sections.
Matthew Dillon [Fri, 3 Jun 2005 16:50:13 +0000 (16:50 +0000)]
Remove spl*() calls from net/i4b, replacing them with critical sections.