Commit Graph

146464 Commits

Author SHA1 Message Date
Marko Zec
bfe1aba468 Introduce vnet module registration / initialization framework with
dependency tracking and ordering enforcement.

With this change, per-vnet initialization functions introduced with
r190787 are no longer directly called from traditional initialization
functions (which cc in most cases inlined to pre-r190787 code), but are
instead registered via the vnet framework first, and are invoked only
after all prerequisite modules have been initialized.  In the long run,
this framework should allow us to both initialize and dismantle
multiple vnet instances in a correct order.

The problem this change aims to solve is how to replay the
initialization sequence of various network stack components, which
have been traditionally triggered via different mechanisms (SYSINIT,
protosw).  Note that this initialization sequence was and still can be
subtly different depending on whether certain pieces of code have been
statically compiled into the kernel, loaded as modules by boot
loader, or kldloaded at run time.

The approach is simple - we record the initialization sequence
established by the traditional mechanisms whenever vnet_mod_register()
is called for a particular vnet module.  The vnet_mod_register_multi()
variant allows a single initializer function to be registered multiple
times but with different arguments - currently this is only used in
kern/uipc_domain.c by net_add_domain() with different struct domain *
as arguments, which allows for protosw-registered initialization
routines to be invoked in a correct order by the new vnet
initialization framework.

For the purpose of identifying vnet modules, each vnet module has to
have a unique ID, which is statically assigned in sys/vimage.h.
Dynamic assignment of vnet module IDs is not supported yet.

A vnet module may specify a single prerequisite module at registration
time by filling in the vmi_dependson field of its vnet_modinfo struct
with the ID of the module it depends on.  Unless specified otherwise,
all vnet modules depend on VNET_MOD_NET (container for ifnet list head,
rt_tables etc.), which thus has to and will always be initialized
first.  The framework will panic if it detects any unresolved
dependencies before completing system initialization.  Detection of
unresolved dependencies for vnet modules registered after boot
(kldloaded modules) is not provided.

Note that the fact that each module can specify only a single
prerequisite may become problematic in the long run.  In particular,
INET6 depends on INET being already instantiated, due to TCP / UDP
structures residing in INET container.  IPSEC also depends on INET,
which will in turn additionally complicate making INET6-only kernel
configs a reality.

The entire registration framework can be compiled out by turning on the
VIMAGE_GLOBALS kernel config option.

Reviewed by:	bz
Approved by:	julian (mentor)
2009-04-11 05:58:58 +00:00
Warner Losh
e89da24b3d Two refinements to the 3c1 support:
1) Flag it and only access that command on the 3c1
2) The TX PLL appears to power down when not in use, so we have to power
   it back up when we've been idle.  Do this at the start of ifstart.
   Otherwise we fall off the net.
2009-04-11 04:30:38 +00:00
Warner Losh
52fcedff50 o Report ethernet status for at least 10BaseT media. Since I don't
have other media to test against, I've left that media reporting
  unchanged.
o Enable the TX_PLL when we enable TX.  This is harmless on most
  cards, but required to get the 3c1 CF card working.  Power savings
  could be had by managing this better, but for now it gets my card
  working.
2009-04-11 02:47:03 +00:00
Daniel Gerzo
88fd9cff39 - fix my previous commit (added missing .gz)
Submitted by:	brueffer
2009-04-10 22:15:01 +00:00
Kai Wang
a08bed8c7b Added DT_GNU_HASH entry for GNU-style hash table. 2009-04-10 21:24:18 +00:00
Max Laier
8623f9fd7a Follow up for r190895 It's not only the "all" group that is affected, but
all groups on the given interface.

PR:		kern/130977, kern/131310
MFC after:	3 days (%vnet)
2009-04-10 19:16:14 +00:00
Warner Losh
f20765ea29 Don't specify a hint, since it isn't needed. 2009-04-10 18:46:46 +00:00
Warner Losh
56d67d7d37 Fix comment
Submitted by:	danfe@
2009-04-10 17:34:30 +00:00
Warner Losh
0203f7164f Improvements for TC5299J MII support. 2009-04-10 16:12:00 +00:00
Warner Losh
84db505873 The D-Link DE-650 isn't tagged as a network card, so allow it to
attach anyway.
Add a comment about a 'common' mfg/prod pair that's used in a very
large array of different cards.
2009-04-10 15:33:47 +00:00
Warner Losh
613dabd54f Fix some comments. 2009-04-10 15:30:19 +00:00
Warner Losh
f5456b5d2c No need to check for chip type here. 2009-04-10 15:18:03 +00:00
Warner Losh
a2910806e5 Updates based on my testing of the cards. 2009-04-10 15:01:48 +00:00
Max Laier
876d5c038f Remove interfaces from IFG_ALL on detach. This cures a couple of pf panics
when using the "self" keyword in tables or as ()-style host address and
fixes "ifconfig -g all" output.

PR:		kern/130977, kern/131310
Submitted by:	Mikolaj Golub
MFC after:	3 days
2009-04-10 14:41:51 +00:00
Daniel Gerzo
def925c574 - VOP_LEASE.9 has been removed
Approved by:	rwatson
2009-04-10 14:24:12 +00:00
Ulf Lilleengen
caace688f7 - Better wording in comment.
Suggested by:	Christoph Mallon <christoph.mallon - at - gmx.de>
2009-04-10 11:15:34 +00:00
Robert Watson
cd5213b94b Remove VOP_LEASE(9) man page, as we no longer have a VOP_LEASE() in the
kernel.
2009-04-10 10:59:48 +00:00
Robert Watson
885868cd8f Remove VOP_LEASE and supporting functions. This hasn't been used since
the removal of NQNFS, but was left in in case it was required for NFSv4.
Since our new NFSv4 client and server can't use it for their
requirements, GC the old mechanism, as well as other unused lease-
related code and interfaces.

Due to its impact on kernel programming and binary interfaces, this
change should not be MFC'd.

Proposed by:    jeff
Reviewed by:    jeff
Discussed with: rmacklem, zach loafman @ isilon
2009-04-10 10:52:19 +00:00
Konstantin Belousov
3f54086eba Cache_lookup() for DOTDOT drops dvp vnode lock, allowing dvp to be reclaimed.
Check the condition and return ENOENT then.

In nfs_lookup(), respect ENOENT return from cache_lookup() when it is caused
by dvp reclaim.

Reported and tested by:	pho
2009-04-10 10:22:44 +00:00
Konstantin Belousov
6d7e809123 When vm_map_wire(9) is allowed to skip holes in the wired region, skip
the mappings without any of read and execution rights, in particular,
the PROT_NONE entries. This makes mlockall(2) work for the process
address space that has such mappings.

Since protection mode of the entry may change between setting
MAP_ENTRY_IN_TRANSITION and final pass over the region that records
the wire status of the entries, allocate new map entry flag
MAP_ENTRY_WIRE_SKIPPED to mark the skipped PROT_NONE entries.

Reported and tested by:	Hans Ottevanger <fbsdhackers beasties demon nl>
Reviewed by:	alc
MFC after:	3 weeks
2009-04-10 10:16:03 +00:00
Konstantin Belousov
a3c8e04ef7 Currently, when mapping an object, rtld reserves the whole address space
for the mapping by the object' file with the protection and mode of
the first loadable segment over the whole region. Then, it maps other
segments at the appropriate addresses inside the region.

On amd64, due to default alignment of the segments being 1Gb, the
subsequent segment mappings leave the holes in the region, that usually
contain mapping of the object' file past eof. Such mappings prevent
wiring of the address space, because the pages cannot be faulted in.

Change the way the mapping of the ELF objects is constructed, by first
mapping PROT_NONE anonymous memory over the whole range, and then
mapping the segments of the object over it. Take advantage of this new
order and allocate .bss by changing the protection of the range instead
of remapping.

Note that we cannot simply keep the holes between segments, because
other mappings may be made there. Among other issues, when the dso is
unloaded, rtld unmaps the whole region, deleting unrelated mappings.

The kernel ELF image activator does put the holes between segments, but
this is not critical for now because kernel loads only executable image
and interpreter, both cannot be unloaded. This will be fixed later, if
needed.

Reported and tested by:	Hans Ottevanger <fbsdhackers beasties demon nl>
Suggested and reviewed by:	kan, alc
2009-04-10 10:14:04 +00:00
Ulf Lilleengen
8d4311eacb - Implement the grow command to make it easier for users to extend plexes
without having to understand all gvinum internals.
- Document the grow command in the manpage and update examples to use the
  command where possible.
2009-04-10 10:12:09 +00:00
Konstantin Belousov
11e0093f28 Update comment to the reality, rtld supports any number of loadable segments.
Fix spacing.

Reviewed by:	kan
2009-04-10 09:52:42 +00:00
Ulf Lilleengen
deded9ccf4 - Move logic for finding a unique drive name into its own routine for future
code reuse.
2009-04-10 09:13:58 +00:00
Ulf Lilleengen
1de45ea74d - Move out allocation part of different gvinum objects into its own routine and
make use of it in the gvinum userland code.
2009-04-10 08:50:14 +00:00
Kip Macy
80cb9f211a Import "flowid" support for serializing flows across transmit queues
Reviewed by:	rwatson and jeli
2009-04-10 06:16:14 +00:00
Jack F Vogel
529f22baa8 Fix build problem with data format. 2009-04-10 05:26:14 +00:00
Andrew Thompson
853a10a581 Revert r190676,190677
The geom and CAM changes for root_hold are the wrong solution for USB design
quirks.

Requested by:	scottl
2009-04-10 04:08:34 +00:00
Jack F Vogel
770e416bb1 Add missing file, sorry bout that :) 2009-04-10 02:45:00 +00:00
Jack F Vogel
b698ab40c8 Add ixgbe to the GENERIC amd64 kernel in place of the
older ixgb driver. I will add to other architectures
after this one proves trouble free.

MFC after:	2 weeks
2009-04-10 00:40:48 +00:00
Jack F Vogel
800422dc86 Add additional file to ixgbe files list, and uncomment NOTES entry
MFC after: 2 weeks
2009-04-10 00:34:55 +00:00
Jack F Vogel
b8ee200357 Add support file for 82599 in Makefile
MFC after:	2 weeks
2009-04-10 00:31:54 +00:00
Jack F Vogel
0ac6dfec68 Update the ixgbe driver to 1.7.4, this includes support
for the new 82599 adapter family, adds header split, and
many small fixes. The driver should now be added to the
GENERIC kernel.

MFC after: 2 weeks
2009-04-10 00:22:48 +00:00
Jack F Vogel
d035aa2db2 This delta syncs the em and igb drivers with Intel,
adds header split and SCTP support into the igb driver.
Various small improvements and fixes.

MFC after: 2 weeks
2009-04-10 00:05:46 +00:00
Ed Maste
14846f9b49 Include a space between "send" and "broadcast". 2009-04-09 20:57:35 +00:00
Maksim Yevmenkin
b7f32062d1 Whitespace nitpicking
MFC after:	1 week
2009-04-09 19:11:08 +00:00
Maksim Yevmenkin
a449b18a5b Introduce KB_POLLED flag to struct keyboard's kb_flags field.
Reviewed by:	freebsd-current@, freebsd-hackers@
MFC after:	1 week
2009-04-09 18:31:33 +00:00
Maksim Yevmenkin
af60af2dc0 Remove obsolete/bogus layering.
Reviewed by:	freebsd-current@, freebsd-hackers@
MFC after:	1 week
2009-04-09 18:22:51 +00:00
Sam Leffler
dd015656a7 check the method pointer before invoking ah_eepromDetach as it can
be null if attach work fails before hooking up the eeprom support

Obtained from:	madwifi
2009-04-09 16:53:59 +00:00
Luigi Rizzo
ae190bc089 Bump version after changes in the userland/kernel ABI for dummynet
(plain ipfw rules unchanged)
2009-04-09 13:02:55 +00:00
Luigi Rizzo
4bb7ae9deb Add emulation of delay profiles, which lets you model various
types of MAC overheads such as preambles, link level retransmissions
and more.

Note- this commit changes the userland/kernel ABI for pipes
(but not for ordinary firewall rules) so you need to rebuild
kernel and /sbin/ipfw to use dummynet features.

Please check the manpage for details on the new feature.

The MFC would be trivial but it breaks the ABI, so it will
be postponed until after 7.2 is released.

Interested users are welcome to apply the patch manually
to their RELENG_7 tree.

Work supported by the European Commission, Projects Onelab and
Onelab2 (contract 224263).
2009-04-09 12:46:00 +00:00
Ruslan Ermilov
9596b6dea8 Removed more vestiges of if_sl(4). 2009-04-09 12:20:37 +00:00
Xin LI
cd3ef66680 Use DEVICE_SHUTDOWN(9) mechanism for shutdown handler.
Suggested by:	jhb
2009-04-09 07:45:23 +00:00
Marcel Moolenaar
39bc3bff94 Don't use pmap_kextact() when comparing bus handles for Book-E.
We typically wire translation to devices with TLB1 entries and
pmap_kextract() does not know about those and returns 0.  This
causes false positives (read: all serial ports suddenly become
the console).
2009-04-08 22:19:39 +00:00
Maksim Yevmenkin
ed382753a7 Undo SVN rev 183283
Do not use Giant for kbdmux(4) locking. This is wrong and apparently
causing more problems than it solves. This will re-open the issue
where interrupt handlers may race with kbdmux(4) in polling mode.
Typical symptoms include (but not limited to) duplicated and/or
missing characters when low level console functions (such as gets)
are used while interrupts are enabled (for example geli password
prompt, mountroot prompt etc.)

MFC after:	3 days
2009-04-08 20:52:30 +00:00
Ed Schouten
11c39fb4a3 Add C++ operators to operator(7) manual page.
Submitted by:	Christoph Mallon <christoph.mallon@gmx.de>
2009-04-08 20:20:19 +00:00
Ed Schouten
2c97d32a81 Also remove the unused __word_swap_int*() macros.
Submitted by:	Christoph Mallon <christoph.mallon@gmx.de>
2009-04-08 19:10:20 +00:00
Ed Schouten
17cfde3df4 Implement __bswap16() without using inline assembly.
Most compilers nowadays (including GCC) are smart enough to know what's
going on and generate more efficient code anyway.

Submitted by:	Christoph Mallon <christoph.mallon@gmx.de>
2009-04-08 19:06:47 +00:00
Marko Zec
2f6a18582c A belated note on layout change of certain V_ containers.
Approved by:	julian (mentor)
2009-04-08 18:30:42 +00:00
Maxim Konovalov
d8ec4cdefb o Grammar. 2009-04-08 17:46:45 +00:00