198785 Commits

Author SHA1 Message Date
Garrett Wollman
3c42b5bf28 Fix overflow bugs in and remove obsolete limit from kernel RPC
implementation.

The kernel RPC code, which is responsible for the low-level scheduling
of incoming NFS requests, contains a throttling mechanism that
prevents too much kernel memory from being tied up by NFS requests
that are being serviced.  When the throttle is engaged, the RPC layer
stops servicing incoming NFS sockets, resulting ultimately in
backpressure on the clients (if they're using TCP).  However, this is
a very heavy-handed mechanism as it prevents all clients from making
any requests, regardless of how heavy or light they are.  (Thus, when
engaged, the throttle often prevents clients from even mounting the
filesystem.)  The throttle mechanism applies specifically to requests
that have been received by the RPC layer (from a TCP or UDP socket)
and are queued waiting to be serviced by one of the nfsd threads; it
does not limit the amount of backlog in the socket buffers.

The original implementation limited the total bytes of queued requests
to the minimum of a quarter of (nmbclusters * MCLBYTES) and 45 MiB.
The former limit seems reasonable, since requests queued in the socket
buffers and replies being constructed to the requests in progress will
all require some amount of network memory, but the 45 MiB limit is
plainly ridiculous for modern memory sizes: when running 256 service
threads on a busy server, 45 MiB would result in just a single
maximum-sized NFS3PROC_WRITE queued per thread before throttling.

Removing this limit exposed integer-overflow bugs in the original
computation, and related bugs in the routines that actually account
for the amount of traffic enqueued for service threads.  The old
implementation also attempted to reduce accounting overhead by
batching updates until each queue is fully drained, but this is prone
to livelock, resulting in repeated accumulate-throttle-drain cycles on
a busy server.  Various data types are changed to long or unsigned
long; explicit 64-bit types are not used due to the unavailability of
64-bit atomics on many 32-bit platforms, but those platforms also
cannot support nmbclusters large enough to cause overflow.

This code (in a 10.1 kernel) is presently running on production NFS
servers at CSAIL.

Summary of this revision:
* Removes 45 MiB limit on requests queued for nfsd service threads
* Fixes integer-overflow and signedness bugs
* Avoids unnecessary throttling by not deferring accounting for
  completed requests

Differential Revision:	https://reviews.freebsd.org/D2165
Reviewed by:	rmacklem, mav
MFC after:	30 days
Relnotes:	yes
Sponsored by:	MIT Computer Science & Artificial Intelligence Laboratory
2015-04-01 00:45:47 +00:00
Tycho Nightingale
ef7c2a82ed Fix "MOVS" instruction memory to MMIO emulation. Currently updates to
%rdi, %rsi, etc are inadvertently bypassed along with the check to
see if the instruction needs to be repeated per the 'rep' prefix.

Add "MOVS" instruction support for the 'MMIO to MMIO' case.

Reviewed by:	neel
2015-04-01 00:15:31 +00:00
Colin Percival
73d4ced07c Add code for creating an EC2 AMI. 2015-04-01 00:00:17 +00:00
Devin Teske
6f102967c4 Whitespace and cleanup. No functional change(s).
MFC after:	3 days
X-MFC-to:	stable/10
2015-03-31 23:09:54 +00:00
Devin Teske
4cfd485553 Optimize bootmsg to use fg/bg/me from screen.4th
NB: screen.4th is included by way of check-password.4th

MFC after:	3 days
X-MFC-to:	stable/10
2015-03-31 23:00:48 +00:00
Devin Teske
7453b9b598 Comments. No functional change(s).
MFC after:	3 days
X-MFC-to:	stable/10
2015-03-31 22:32:35 +00:00
Devin Teske
696516711b Whitespace. No functional change(s).
MFC after:	3 days
MFH:		stable/10
2015-03-31 22:10:40 +00:00
Devin Teske
12dc00e4ed Change contents of the exec variable in loader.conf to be friendly to both
Ficl/Forth and Lua. No visible change for Forth while enabling Lua support.

Submitted by:	rpaulo
2015-03-31 21:46:44 +00:00
Devin Teske
8f9bc4e2ba Fix typo in a comment.
MFC after:	3 days
X-MFC-to:	stable/10 stable/9
2015-03-31 21:34:42 +00:00
Jilles Tjoelker
739d568935 sh: Add more tests for exotic IFS splitting. 2015-03-31 20:59:37 +00:00
Jilles Tjoelker
2f61288c80 wordexp: Explicitly pass along IFS.
Per Austin group issue #884, sh should not import IFS from the environment
but always set it to $' \t\n'. For wordexp(), however, it is documented and
useful for it to use IFS from the environment.

Since sh currently imports IFS from the environment, this change has no
functional effect.

MFC after:	1 week
2015-03-31 20:51:01 +00:00
Xin LI
64957baacb Add limited to the default restrictions.
X-MFC-with:	r280849
2015-03-31 19:56:46 +00:00
Cy Schubert
8e4f77ede8 Fix build. 2015-03-31 19:35:32 +00:00
Xin LI
a2f9ce8a69 Constify.
Suggested by:	rdivacky
MFC after:	2 weeks
2015-03-31 19:12:13 +00:00
Andrew Turner
f734628543 Add the fe* symbols to libm for arm64.
Sponsored by:	The FreeBSD Foundation
2015-03-31 19:07:28 +00:00
Kevin Lo
18463c7749 Remove bogus cast. 2015-03-31 15:03:58 +00:00
Andrey V. Elsukov
bf55a0034d The offset variable has been cleared all bits except IP6F_OFF_MASK.
Use ip6f_mf variable instead of checking its bits.
2015-03-31 14:41:29 +00:00
Ed Maste
640cba97d8 unwind-d2 build workaround for arm64
The __builtin_init_dwarf_reg_size_table function is unimplemented in
clang 3.6 for AArch64. Comment it out for now and replace it with
a message and abort.

Tracked in upstream LLVM PR 22997
https://llvm.org/bugs/show_bug.cgi?id=22997

Submitted by:	andrew
2015-03-31 13:37:32 +00:00
Ed Maste
f5f299c30b Correct copyright typo 2015-03-31 12:53:07 +00:00
Ganbold Tsagaankhuu
90120cf6e6 Add kernel config files for Hardkernel Odroid-C1 and Visson ATV-102 devices.
Submitted by:	  John Wehle
Approved by:	  stas (mentor)
2015-03-31 11:59:57 +00:00
Ganbold Tsagaankhuu
edb96014a8 Add device tree files for Hardkernel Odroid-C1 and Visson ATV-102 devices.
Submitted by:	John Wehle
Approved by:	stas (mentor)
2015-03-31 11:55:56 +00:00
Ganbold Tsagaankhuu
562246dff8 Add necessary changes to support various Amlogic SoC devices
specially aml8726-m6 and aml8726-m8b SoC based devices.
aml8726-m6 SoC exist in devices such as Visson ATV-102.
Hardkernel ODROID-C1 board has aml8726-m8b SoC.

The following support is included:
  Basic machdep code
  SMP
  Interrupt controller
  Clock control driver (aka gate)
  Pinctrl
  Timer
  Real time clock
  UART
  GPIO
  I2C
  SD controller
  SDXC controller
  USB
  Watchdog
  Random number generator
  PLL / Clock frequency measurement
  Frame buffer

Submitted by:   John Wehle
Approved by:    stas (mentor)
2015-03-31 11:50:46 +00:00
Julien Charbon
18832f1fd1 Use appropriate timeout_t* instead of void* in tcp_timer_activate()
Suggested by:		imp
Differential Revision:	https://reviews.freebsd.org/D2154
Reviewed by:		imp, jhb
Approved by:		jhb
2015-03-31 10:17:13 +00:00
Andrew Turner
047c6e3ae6 Add the arm64 code to the runtime linker. It's not able to be built as we
still need libc_pic for a few things, but this is expected to be ready
soon.

Differential Revision:	https://reviews.freebsd.org/D2136
Reviewed by:	kib
Sponsored by:	The FreeBSD Foundation
2015-03-31 09:51:19 +00:00
Enji Cooper
b41853c8fe - Fix -Wsign issue
- Bump up to WARNS=6
2015-03-31 06:51:13 +00:00
Enji Cooper
b5d45f0794 Minor cleanup before converting to ATF testcases
- Remove blank (tab-only) lines.
- Fix -Wunused warnings.
- Bump up to WARNS= 6
2015-03-31 06:50:28 +00:00
Enji Cooper
76cbe329d6 Cleanup and do minor refactoring before converting testcases to ATF
- Convert errx(-1, ..) to errx(1, ..)
- Move the aio(4) checks to a single function (aio_available); use modfind(2)
  instead of depending on SIGSYS (doesn't work when aio(4) support is missing,
  not documented in the aio syscall manpages).
- Use aio_available liberally in the testcase functions
- Use mkstemp(3) + unlink(2) instead of mktemp(3)
- Fix some -Wunused warnings
- Bump WARNS to 6

MFC after: 1 week
Submitted by: mjohnston [*]
Sponsored by: EMC / Isilon Storage Division
2015-03-31 06:43:55 +00:00
Justin Hibbits
58cb9ed9e6 CCSRBAR_VA is mpc85xx-specific, so add guards, and include the proper header
file for it.

MFC after:	1 month
2015-03-31 05:29:44 +00:00
Justin Hibbits
1c5d2c3dbc machine/fdt.h no longer exists for powerpc.
MFC after:	1 month
2015-03-31 05:26:30 +00:00
Dmitry Marakasov
1382ef3d6e - Remove more files when MK_ZONEINFO == no
MFC after:	1 week
Reviewed by:	ngie
Approved by:	ngie
Differential Revision:	D1600
2015-03-31 04:44:46 +00:00
Dmitry Marakasov
587291d90e - Remove more files when MK_TESTS_SUPPORT == no
MFC after:	1 week
Reviewed by:	ngie
Approved by:	ngie
Differential Revision:	D1600
2015-03-31 04:43:25 +00:00
Dmitry Marakasov
a6d0a667a9 - Remove more files when MK_LEGACY_CONSOLE == no
MFC after:	1 week
Reviewed by:	ngie
Approved by:	ngie
Differential Revision:	D1600
2015-03-31 04:42:00 +00:00
Dmitry Marakasov
d6c957219b - Remove more files when MK_KERBEROS_SUPPORT == no
MFC after:	1 week
Reviewed by:	ngie
Approved by:	ngie
Differential Revision:	D1600
2015-03-31 04:39:59 +00:00
Dmitry Marakasov
eb6edb77b0 - Remove more files when MK_KDUMP == no
MFC after:	1 week
Reviewed by:	ngie
Approved by:	ngie
Differential Revision:	D1600
2015-03-31 04:37:57 +00:00
Dmitry Marakasov
659854cd3f - Remove more files when MK_JAIL == no
MFC after:	1 week
Reviewed by:	ngie
Approved by:	ngie
Differential Revision:	D1600
2015-03-31 04:36:51 +00:00
Colin Percival
450a69e70c It would help if I committed the right patch... 2015-03-31 04:35:35 +00:00
Dmitry Marakasov
992cc53e37 - Remove more files when MK_CASPER == no
MFC after:	1 week
Reviewed by:	ngie
Approved by:	ngie
Differential Revision:	D1600
2015-03-31 04:31:42 +00:00
Mark Johnston
28cb2a5f4b Fix a misparenthesization that could cause a crash if TERM is not set.
Reported by:	Coverity (internal)
MFC after:	3 days
Sponsored by:	EMC / Isilon Storage Division
2015-03-31 02:49:05 +00:00
Colin Percival
6e8e6c9951 Partially revert r278118 now that the required logic for deciding whether
freebsd-update can be useful has moved into the firstboot_freebsd_update
script.
2015-03-31 01:44:29 +00:00
Konstantin Belousov
333d295946 Provide workaround for a performance issue with the popcnt instruction
on Intel processors.  Clear spurious dependency by explicitely xoring
the destination register of popcnt.

Use bitcount64() instead of re-implementing SWAR locally, for
processors without popcnt instruction.

Reviewed by:	jhb
Discussed with:	jilles (previous version)
Sponsored by:	The FreeBSD Foundation
2015-03-31 01:44:07 +00:00
Colin Percival
f65557efc4 Add bits for building EC2 disk images. Make logic for uploading these
to create EC2 AMIs will come in a later commit.
2015-03-31 01:28:33 +00:00
Navdeep Parhar
7ef00d7884 cxgbe/tom: return rx credits promptly if the socket buffer's low water
mark cannot be reached because the window advertised to the peer isn't
wide enough.  While here, tweak the normal credit return too.

MFC after:	1 month
2015-03-31 01:22:20 +00:00
Randall Stewart
403df7a672 Adopt jhb's suggested changes, updated comments and callout_migration() moving
to kern/kern_timeout.c

This does *not* address his -1 -> NOCPU comment.

Sponsored by:	Netflix Inc.
2015-03-31 00:18:00 +00:00
Randall Stewart
90b887e0a4 Change the c_iflags and c_flags fields to short rather then int. This
allows us to keep the KPI the same.

Discussed and brain-stormed with imp (thanks for the help Warner!)
Sponsored by:	Netflix Inc.
2015-03-31 00:15:27 +00:00
Bryan Drewery
eb828e1bb5 Fix --one-file-system to include the directory encountered rather than
excluding it.  This was broken in 3.0.4 (r238856).

Obtained from:	https://github.com/libarchive/libarchive/commit/fa9e61
MFC after:	3 days
Sponsored by:	EMC / Isilon Storage Division
2015-03-31 00:00:47 +00:00
Gleb Smirnoff
f6d6b5e262 Catch up on r271387 and remove unused parameter from
VOP_GETPAGES_ASYNC().
2015-03-30 22:49:26 +00:00
Andrew Turner
0bf92a38d1 Restore setting cpufuncs on arm1176, it was removed by accident with the
arm1136 code.

Reviewed by:	ian
2015-03-30 20:44:08 +00:00
Dimitry Andric
830e9b84d8 Add llvm patch corresponding to r280865. 2015-03-30 20:23:06 +00:00
John Baldwin
2f22c84c31 Wait 100 microseconds for a local APIC to dispatch each startup-related IPI
rather than 20.  The MP 1.4 specification states in Appendix B.2:

  "A period of 20 microseconds should be sufficient for IPI dispatch to
   complete under normal operating conditions".

(Note that this appears to be separate from the 10 millisecond (INIT) and
200 microsecond (STARTUP) waits after the IPIs are dispatched.)  The
Intel SDM is silent on this issue as far as I can tell.

At least some hardware requires 60 microseconds as noted in the PR, so
bump this to 100 to be on the safe side.

PR:		197756
Reported by:	zaphod@berentweb.com
MFC after:	1 week
2015-03-30 20:13:22 +00:00
Ed Maste
e93a7dab19 llvm: Backport upstream r229195 to fix arm64 TLS relocations
As is described at http://llvm.org/bugs/show_bug.cgi?id=22408, the GNU
  linkers ld.bfd and ld.gold currently only support a subset of the
  whole range of AArch64 ELF TLS relocations. Furthermore, they assume
  that some of the code sequences to access thread-local variables are
  produced in a very specific sequence.  When the sequence is not as the
  linker expects, it can silently mis-relaxe/mis-optimize the
  instructions.
  Even if that wouldn't be the case, it's good to produce the exact
  sequence, as that ensures that linkers can perform optimizing
  relaxations.

  This patch:

  * implements support for 16MiB TLS area size instead of 4GiB TLS area
    size. Ideally clang would grow an -mtls-size option to allow support
    for both, but that's not part of this patch.
  * by default doesn't produce local dynamic access patterns, as even
    modern ld.bfd and ld.gold linkers do not support the associated
    relocations. An option (-aarch64-elf-ldtls-generation) is added to
    enable generation of local dynamic code sequence, but is off by
    default.
  * makes sure that the exact expected code sequence for local dynamic
    and general dynamic accesses is produced, by making use of a new
    pseudo instruction. The patch also removes two
    (AArch64ISD::TLSDESC_BLR, AArch64ISD::TLSDESC_CALL) pre-existing
    AArch64-specific pseudo SDNode instructions that are superseded by
    the new one (TLSDESC_CALLSEQ).

Submitted by:	Kristof Beyls
Differential Revision:	https://reviews.freebsd.org/D2175
2015-03-30 20:01:41 +00:00