alc [Wed, 17 Nov 2010 17:29:22 +0000 (17:29 +0000)]
MFC r209407, r209648, r209650
Introduce and use vm_page_next() and vm_page_prev(). They provide both
a simpler and faster interface for iterating over the pages of an object.
markm [Wed, 17 Nov 2010 17:12:41 +0000 (17:12 +0000)]
MFC: Add /bin/rmail symlink to mailwrapper if sendmail is not being built
and mailwrapper is being built. Ensure that it is not removed by
"make delete-old". Add Exim example to man page.
yongari [Tue, 16 Nov 2010 20:32:09 +0000 (20:32 +0000)]
MFC r215017,215025:
Follow the lead of vendor's interrupt moderation mechanism.
It seems RTL8169/RTL8168/RTL810xE has a kind of interrupt
moderation mechanism but it is not documented at all. The magic
value dramatically reduced number of interrupts without noticeable
performance drops so apply it to all RTL8169/RTL8169 controllers.
Vendor's FreeBSD driver also applies it to RTL810xE controllers but
their Linux driver explicitly cleared the register, so do not
enable interrupt moderation for RTL810xE controllers.
While I'm here sort 8169 specific registers.
Obtained from: RealTek FreeBSD driver
MFC r215025:
Only moderate TX completion interrupts. Relying on taskqueue to
suppress RX interrupts seems to give better RX performance than
RX interrupt moderation.
yongari [Tue, 16 Nov 2010 20:21:53 +0000 (20:21 +0000)]
MFC r214992:
Reduce spin wait time consumed in GMII register access routine.
There were a couple of attempts in the past to reduce it since it
took more than 1ms. Because mii_tick() periodically polls link
status, waiting more than 1ms for each GMII register access was
overkill. Unfortunately all previous attempts were failed with
various ways on different controllers.
This time, add additional 20us dealy at the end of GMII register
access which seems to requirement of all RealTek controllers to
issue next GMII register access request. This is the same way what
Linux does.
alc [Tue, 16 Nov 2010 04:40:27 +0000 (04:40 +0000)]
MFC r214953
In case the stack size reaches its limit and its growth must be
restricted, ensure that grow_amount is a multiple of the page size.
Otherwise, the kernel may crash in swap_reserve_by_uid() on HEAD and
FreeBSD 8.x, and produce a core file with a missing stack on FreeBSD
7.x.
yongari [Tue, 16 Nov 2010 00:32:17 +0000 (00:32 +0000)]
MFC r214968:
Use shorten model name instead of showing all controller model
numbers. bge(4) supports too many models such that it's
unreasonable to list all these controllers in one line description
of name. While I'm here mention that BCM590x/BCM5779x is Fast
Ethernet controller.
bge(4) still lacks support for some controllers but supporting
these controllers should be easy now and adding new controllers
do not require touching .Nd any more.
lstewart [Tue, 16 Nov 2010 00:01:44 +0000 (00:01 +0000)]
MFC r215153:
Standardise all Swinburne related copyright/licence statements throughout the
tree in preparation for another large code import. Swinburne University is the
legal entity that owns copyright and the 2-clause BSD licence is acceptable.
sobomax [Mon, 15 Nov 2010 17:48:13 +0000 (17:48 +0000)]
MFC r207554:
Add new tunable 'net.link.ifqmaxlen' to set default send interface
queue length. The default value for this parameter is 50, which is
quite low for many of today's uses and the only way to modify this
parameter right now is to edit if_var.h file. Also add read-only
sysctl with the same name, so that it's possible to retrieve the
current value.
jilles [Sun, 14 Nov 2010 19:36:55 +0000 (19:36 +0000)]
MFC r213775: sh: Make DEBUG traces 64-bit clean:
- Use %t to print ptrdiff_t values.
- Cast a ptrdiff_t value explicitly to int for a field width specifier.
kientzle [Sat, 13 Nov 2010 06:00:27 +0000 (06:00 +0000)]
MFC r203568: Refactor and simplify the SIGINFO/SIGUSR1
handling. Switch to a custom function to format 64-bit
ints to avoid the headache of trying to guess printf
modifiers on different platforms.
kientzle [Sat, 13 Nov 2010 05:52:45 +0000 (05:52 +0000)]
MFC: Allow -b up to 8192. Folks working with
modern high-speed tape drives are routinely using
block sizes of 1MB (-b 2048), allowing up to 8192
should allow a little room for future growth.
yongari [Sat, 13 Nov 2010 01:09:44 +0000 (01:09 +0000)]
MFC r214844:
Add simple MAC statistics counter reading support. Unfortunately
useful counters like rl_missed_pkts is 16 bits quantity which is
too small to hold meaningful information happened in a second. This
means driver should frequently read these counters in order not to
lose accuracy and that approach is too inefficient in driver's
view. Moreover it seems there is no way to trigger an interrupt to
detect counter near-full or wraparound event as well as lacking
clearing the MAC counters. Another limitation of reading the
counters from RealTek controllers is lack of interrupt firing at
the end of DMA cycle of MAC counter read request such that driver
have to poll the end of the DMA which is a time consuming process
as well as inefficient. The more severe issue of the MAC counter
read request is it takes too long to complete the DMA. All these
limitation made maintaining MAC counters in driver impractical. For
now, just provide simple sysctl interface to trigger reading the
MAC counters. These counters could be used to track down driver
issues. Users can read MAC counters maintained in controller with
the following command.
#sysctl dev.re.0.stats=1
While I'm here add check for validity of dma map and allocated
memory before unloading/freeing them.
yongari [Sat, 13 Nov 2010 01:02:09 +0000 (01:02 +0000)]
MFC r214840:
Enable 64bit DMA addressing for RTL810xE/RTL8168/RTL8111 PCIe
controllers. Some old PCI controllers may work with DAC but it was
known to be buggy so 64bit DMA addressing is used only on PCIe
controllers.
yongari [Sat, 13 Nov 2010 00:58:34 +0000 (00:58 +0000)]
MFC r214899:
Fix a long standing bug in programming station address for Yukon
controllers. sk(4) never reprogrammed station address for Yukon
controllers so overriding station address with ifconfig(8) was not
possible.
Fix the bug by reprogramming all registers that control station
address, flow-control and virtual station address. Virtual station
address has no use at this moment since driver does not make use of
fail over feature.
mdf [Fri, 12 Nov 2010 18:09:06 +0000 (18:09 +0000)]
MFC r213813. This is a direct commit because the diff is against
several non-MFC'd changes.
Use a safer mechanism for determining if a task is currently running,
that does not rely on the lifetime of pointers being the same. This
also restores the task KBI.
brucec [Fri, 12 Nov 2010 11:22:59 +0000 (11:22 +0000)]
MFC r214279:
Mostly revert r203420, and add similar functionality into ada(4) since the
existing code caused problems with some SCSI controllers.
A new sysctl kern.cam.ada.spindown_shutdown has been added that controls
whether or not to spin-down disks when shutting down.
Spinning down the disks unloads/parks the heads - this is much better than
removing power when the disk is still spinning because otherwise an
Emergency Unload occurs which may cause damage to the actuator.
The FLUSH_CACHE + STANDBY_IMMEDIATE commands are issued following the
procedure documented in Fujitsu's MHW series product documentation under
section 1.10.1, "Recommended power-off sequence".
delphij [Fri, 12 Nov 2010 01:45:29 +0000 (01:45 +0000)]
MFC r214854:
Validate whether the zfs_cmd_t submitted from userland is not smaller than
what we have. Without the check the kernel could accessing memory that
does not belong to the request struct.
Note that we do not test if the struct equals in size at this time, which
may faciliate forward compatibility with newer binaries.
jhb [Thu, 11 Nov 2010 19:39:38 +0000 (19:39 +0000)]
MFC 211149,211151,211197,211518,215128:
Update various places that store or manipulate CPU masks to use cpumask_t
instead of int or u_int. Since cpumask_t is currently u_int on all
platforms this should just be a cosmetic change.
attilio [Wed, 10 Nov 2010 14:59:13 +0000 (14:59 +0000)]
Fix-up MFC r214446, r214516:
Use the appropriate SYSINIT() ordering between the arches.
This is intended as a fixup for r215059, so no further notes are merged.
kib [Wed, 10 Nov 2010 08:46:29 +0000 (08:46 +0000)]
MFC r214728:
If dlopen() is called for the dso that has been already loaded as a
dependency, then the dso never has its DAG initialized. Empty DAG
makes ref_dag() call in dlopen() a nop, and the dso refcount is off
by one.
Initialize the DAG on the first dlopen() call, using a boolean flag
to prevent double initialization.
MFC r214776:
Fix style.
MFC r214777:
Change init_dag() to not increment DAG refcount. Unconditionally call
both init_dag() and ref_dag() in dlopen() for the case when the object
was already loaded.
nork [Wed, 10 Nov 2010 05:22:12 +0000 (05:22 +0000)]
MFC 211249
This depends on ACPI, so only build on i386:i386, amd64:amd64 and
ia64:ia64. It can't possibly work on pc98, or any of the embedded
platforms, since they lack ACPI.
jilles [Tue, 9 Nov 2010 22:32:11 +0000 (22:32 +0000)]
MFC r198454: sh: Exempt $@ and $* from set -u
This seems more useful and will likely be in the next POSIX standard.
Also document more precisely in the man page what set -u does (note that
$@, $* and $! are the only special parameters that can ever be unset, all
the others are always set, although they may be empty).
marius [Tue, 9 Nov 2010 21:00:24 +0000 (21:00 +0000)]
MFC: r214873
- Move Sun Fire V240 to the list of known working machines.
- For the parallel stable/7 and stable/8 branches mention both releases that
first supported a particular sparc64 machine and update the sparc64 hardware
list regarding machines that will be supported beginning with 7.4-RELEASE.
jhb [Tue, 9 Nov 2010 20:00:23 +0000 (20:00 +0000)]
MFC 210939:
Add a new ipi_cpu() function to the MI IPI API that can be used to send an
IPI to a specific CPU by its cpuid. Replace calls to ipi_selected() that
constructed a mask for a single CPU with calls to ipi_cpu() instead.
OpenSolaris onnv-revision: 10209:91f47f0e7728 6830541 zfs_get_data_trips on a verify 6696242 multiple zfs_fillpage() zfs: accessing past end of object panics 6785914 zfs fails to drop dn_struct_rwlock in recovery code path
jhb [Tue, 9 Nov 2010 18:46:09 +0000 (18:46 +0000)]
MFC 214682:
Tweak the waitchannel messages for the dead lock detection kthread. Use
a shorter message (userland generally only sees the first 6 to 8
characters) when waiting for the allproc lock. Use "-" when idle to match
the behavior of other kthreads.
mav [Tue, 9 Nov 2010 15:14:10 +0000 (15:14 +0000)]
MFC r208436, r208438:
Make table-based HPET identification more clever. Before creating fake
device, make sure we have no real HPET device entry with same ID.
As side effect, it potentially allows several HPETs to be attached.
Use first of them for timecounting, rest (if ever present) could later
be used as event sources.
nork [Tue, 9 Nov 2010 13:39:17 +0000 (13:39 +0000)]
MFC 211201
Add tpm(4) driver for Trusted Platform Module.
You may want to look at http://bsssd.sourceforge.net/ .
Submitted by: Hans-Joerg Hoexer <Hans-Joerg_Hoexer@genua.de>
MFC 211204
Fix copyright information.
MFC 211270
Cosmetic change for splitting bus frontend file and core file.
MFC 211271
Hook tpm.4 manual to hook.
MFC 212861
Add support 'device tpm' for amd64.
Add tpm(4)'s default setting to /boot/defaults/loader.conf.
Add 'device tpm' to NOTES for amd64 and i386.
attilio [Tue, 9 Nov 2010 01:57:56 +0000 (01:57 +0000)]
MFC r204309, r204313 and r204319 by nyan:
Introduce the x86 subtree for code shared between amd64, i386 and pc98.
Differently from the HEAD version, the headers are not moved around,
in order to avoid breaking the KPI but it can be eventually done once the
core mechanism of r214629 is MFCed.
MFCing this patch does allow for simpler MFCs handling on i386/amd64
specific code.
jkim [Mon, 8 Nov 2010 20:25:19 +0000 (20:25 +0000)]
MFC: r213755
Use AcpiReset() from ACPICA instead of rolling our own, which is actually
incomplete. If FADT says the register is available, enable the capability
by default. Remove the previous default value from acpi(4).
yongari [Mon, 8 Nov 2010 20:14:38 +0000 (20:14 +0000)]
MFC r214542:
Don't bother to enable ASPM L1 to save more power. Even though I am
not able to trigger the issue with sample boards, some users seems
to suffer from freeze/lockup when system is booted without UTP cable
plugged in. I'm not sure whether this is BIOS issue or controller
bug. This change fixes AR8132 lockup issue seen on EEE PC.
yongari [Mon, 8 Nov 2010 19:36:00 +0000 (19:36 +0000)]
MFC r214428:
Add initial BCM5718 family support. The BCM5718 family includes
the dual port BCM5717 and BCM5718 devices which are intended for
mainstream workstation and entry-level server designs and
represents the twelfth generation of NetXtreme Ethernet controllers.
This family is the successor to the BCM5714/BCM5715 family and
supports IPv4/IPv6 checksum offloading, TSO, VLAN hardware tagging,
jumbo frames, MSI/MSIX, IOV, RSS and TSS.
This change set supports all hardware features except IOV and
RSS/TSS. Unlike its predecessors, only extended RX buffer
descriptors can be posted to the jumbo producer ring. Single RX
buffer descriptors for jumbo frame are not supported. RSS requires
a more substantial set of changes and will apply to a larger set
of NetXtreme devices so RSS/TSS multi-queue support will be
implemented in a future releases.
Special thanks to Broadcom who kindly sent a sample board to me
and to davidch who gave provided the initial support code.
rpaulo [Mon, 8 Nov 2010 11:22:55 +0000 (11:22 +0000)]
MFC r210682, r210683, r210690:
Build librtld_db.
Simplify the Makefile. The i386 and amd64 sections are equal.
libproc is going to be i386/amd64 only with the next update.
kib [Mon, 8 Nov 2010 10:23:39 +0000 (10:23 +0000)]
MFC r214026:
Do not synchronously start the nfsiod threads at all. The r212506
fixed the issues with file descriptor locks, but the same problems are
present for vnode lock/user map lock.
kib [Mon, 8 Nov 2010 10:18:01 +0000 (10:18 +0000)]
MFC r214851:
Fix a bug in r214049. The nvp == vp case shall be handled specially
only for !usevget case. If VFS_VGET is working, the vnode shared lock
is obtained recursively and vput() shall be done, not vunref().
MFC r214352 adapted to stable/8:
Reimplemented "gpart destroy -F". Now it does all work in kernel.
This was needed for recover implementation.
Implement the recover command for GPT. Now GPT will marked as
corrupt when any of three types of corruption will be detected:
1. Damaged primary GPT header or table
2. Damaged secondary GPT header or table
3. Secondary header is not located in the last LBA
Marked GPT becomes read-only. Any changes with corrupt table
are prohibited. Only "destroy" and "recover" commands are allowed.
marius [Sun, 7 Nov 2010 17:50:54 +0000 (17:50 +0000)]
MFC: r214528
- When resetting pm_active and pm_context of a pmap in pmap_pinit() we
need locking as otherwise we may race against the other parts of the
MD code which expects a consistent state of these. While at it move
the resetting of the pmap before entering it in the TSB.
- Spell a 0 as TLB_CTX_KERNEL.