Commit graph

17759 commits

Author SHA1 Message Date
Bryan Drewery
fe3c46927c Regenerate 2016-05-24 23:19:03 +00:00
Andrew Rybchenko
929c7feb83 sfxge(4): cleanup: update copyright to 2016
Sponsored by:   Solarflare Communications, Inc.
MFC after:      1 week
Differential Revision:  https://reviews.freebsd.org/D6509
2016-05-24 12:16:57 +00:00
Baptiste Daroussin
b821f297e0 Update pci_vendors to 2016.05.23 2016-05-23 22:01:06 +00:00
Bryan Drewery
f0c619b22f Be more clear about LOCKLEAF being exclusive and add LOCKSHARED. 2016-05-23 21:29:57 +00:00
Alan Somers
1b82e02f4d Add bit_count to the bitstring(3) api
Add a bit_count function, which efficiently counts the number of bits set in
a bitstring.

sys/sys/bitstring.h
tests/sys/sys/bitstring_test.c
share/man/man3/bitstring.3
	Add bit_alloc

sys/kern/subr_unit.c
	Use bit_count instead of a naive counting loop in check_unrhdr, used
	when INVARIANTS are enabled. The userland test runs about 6x faster
	in a generic build, or 8.5x faster when built for Nehalem, which has
	the POPCNT instruction.

sys/sys/param.h
	Bump __FreeBSD_version due to the addition of bit_alloc

UPDATING
	Add a note about the ABI incompatibility of the bitstring(3)
	changes, as suggested by lidl.

Suggested by:	gibbs
Reviewed by:	gibbs, ngie
MFC after:	9 days
X-MFC-With:	299090, 300538
Relnotes:	yes
Sponsored by:	Spectra Logic Corp
Differential Revision:	https://reviews.freebsd.org/D6255
2016-05-23 20:29:18 +00:00
Bryan Drewery
699f93b956 Properly allow META_MODE to be set from environment.
Sponsored by:	EMC / Isilon Storage Division
2016-05-23 17:27:42 +00:00
Bryan Drewery
62c63e31e1 Use sed(1) to determine cc version rather than tail(1) since it is already in ITOOLS.
This fixes 'tail: not found' warnings in installworld after r300351.

Sponsored by:	EMC / Isilon Storage Division
2016-05-23 17:11:32 +00:00
Ian Lepore
aa1434ec54 Restore the translation of armv6hf->arm when generating MACHINE_CPUARCH.
It turns out we need to leave this in place for a while so that people
running self-hosting armv6hf systems can do the builds necessary to update
to armv6 (which is now hardfloat by default).
2016-05-22 21:31:20 +00:00
Bryan Drewery
a9da9b86d0 Regenerate 2016-05-21 01:35:48 +00:00
Bryan Drewery
6120aabd32 Opportunistically skip building a cross-compiler with SYSTEM_COMPILER set.
This will still build the compiler for the target but will not build the
bootstrap cross-compiler in the cross-tools phase.  Other toolchain
bootstrapping, such as elftoolchan and binutils, currently still occurs.

This will utilize the default CC (cc, /usr/bin/cc) as an external compiler.

This is planned to be on-by-default eventually.

This will utilize the __FreeBSD_cc_version compiler macro defined in the
source tree and compare it to CC's version.  If they match then the
cross-compiler is skipped.  If [X]CC is an external compiler (absolute
path) or WITHOUT_CROSS_COMPILER is already set, then this logic is skipped.
If the expected bootstrap compiler type no longer matches the found CC
compiler type (clang vs gcc), then the logic is skipped.  As an extra
safety check the version number is also compared from the compiler to
the tree version.

Clang:
  The macro FREEBSD_CC_VERSION is defined in:
    lib/clang/include/clang/Basic/Version.inc
  For clang -target will be used if TARGET_ARCH != MACHINE_ARCH.  This
  is from the current external toolchain logic.  There is currently an
  assumption that the host compiler can build the TARGET_ARCH.  This
  will usually be the case since we don't conditionalize target arch
  support in clang, but it will break when introducing new
  architectures.  This problem is mitigated by incrementing the version
  when adding new architectures.

GCC:
  The macro FBSD_CC_VER is defined in:
    gnu/usr.bin/cc/cc_tools/freebsd-native.h
  For GCC there is no simple -target support when TARGET_ARCH !=
  MACHINE_ARCH.  In this case the opportunistic skip is not done.  If we
  add proper support for this case in external toolchain logic then it
  will be fine to enable.

This relies on the macros being incremented whenever any change occurs
to these compilers that warrant rebuilding files.  It also should never
repeat earlier values.

Reviewed by:	brooks, bapt, imp
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D6357
2016-05-21 01:32:23 +00:00
Bryan Drewery
95a83d05a3 Fetch the __FreeBSD_cc_version as COMPILER_FREEBSD_VERSION.
Reviewed by:	brooks, bapt, dim
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D6356
2016-05-21 01:32:13 +00:00
Bryan Drewery
67b0a15ac4 Auto determine X_COMPILER_TYPE/X_COMPILER_VERSION if XCC is set.
Reviewed by:	brooks, bapt
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D6355
2016-05-21 01:32:10 +00:00
Bryan Drewery
99dd498c18 WITH_META_MODE: Disable for 'make install' from top-level.
See r298220 for more explanation.  We don't want to prevent installing
if a cookie exists for the install target.

Sponsored by:	EMC / Isilon Storage Division
2016-05-21 01:31:54 +00:00
Bryan Drewery
3b828e4492 WITH_META_MODE: Fix suffix transformation rules with guessed dependencies.
This is the same problem as r290629.  With META_MODE we do not generate
.depend files, so there is no proper dependency to lookup.  Guessed
dependencies must be used.  If this proves to be a problem then we will
have to generate and use .depend files even with META_MODE.

Sponsored by:	EMC / Isilon Storage Division
2016-05-21 01:31:48 +00:00
Bryan Drewery
d0694f2738 WITH_DIRDEPS_BUILD: Fix forcing user to run bootstrap-tools.
This is a follow-up to r299289.  If the user did not run bootstrap-tools
for this directory then just build the tool as normal.  It assumes that
TARGET == MACHINE, but that was already the case before r299289.

Sponsored by:	EMC / Isilon Storage Division
2016-05-21 01:31:44 +00:00
John Baldwin
20fee1093e Add sglist functions for working with arrays of VM pages.
sglist_count_vmpages() determines the number of segments required for
a buffer described by an array of VM pages. sglist_append_vmpages()
adds the segments described by such a buffer to an sglist.  The latter
function is largely pulled from sglist_append_bio(), and
sglist_append_bio() now uses sglist_append_vmpages().

Reviewed by:	kib
Sponsored by:	Chelsio Communications
2016-05-20 23:28:43 +00:00
Bryan Drewery
8a7c8ae4e3 Regenerate 2016-05-20 19:25:57 +00:00
John Baldwin
cc981af204 Add new bus methods for mapping resources.
Add a pair of bus methods that can be used to "map" resources for direct
CPU access using bus_space(9).  bus_map_resource() creates a mapping and
bus_unmap_resource() releases a previously created mapping.  Mappings are
described by 'struct resource_map' object.  Pointers to these objects can
be passed as the first argument to the bus_space wrapper API used for bus
resources.

Drivers that wish to map all of a resource using default settings
(for example, using uncacheable memory attributes) do not need to change.
However, drivers that wish to use non-default settings can now do so
without jumping through hoops.

First, an RF_UNMAPPED flag is added to request that a resource is not
implicitly mapped with the default settings when it is activated.  This
permits other activation steps (such as enabling I/O or memory decoding
in a device's PCI command register) to be taken without creating a
mapping.  Right now the AGP drivers don't set RF_ACTIVE to avoid using
up a large amount of KVA to map the AGP aperture on 32-bit platforms.
Once RF_UNMAPPED is supported on all platforms that support AGP this
can be changed to using RF_UNMAPPED with RF_ACTIVE instead.

Second, bus_map_resource accepts an optional structure that defines
additional settings for a given mapping.

For example, a driver can now request to map only a subset of a resource
instead of the entire range.  The AGP driver could also use this to only
map the first page of the aperture (IIRC, it calls pmap_mapdev() directly
to map the first page currently).  I will also eventually change the
PCI-PCI bridge driver to request mappings of the subset of the I/O window
resource on its parent side to create mappings for child devices rather
than passing child resources directly up to nexus to be mapped.  This
also permits bridges that do address translation to request suitable
mappings from a resource on the "upper" side of the bus when mapping
resources on the "lower" side of the bus.

Another attribute that can be specified is an alternate memory attribute
for memory-mapped resources.  This can be used to request a
Write-Combining mapping of a PCI BAR in an MI fashion.  (Currently the
drivers that do this call pmap_change_attr() directly for x86 only.)

Note that this commit only adds the MI framework.  Each platform needs
to add support for handling RF_UNMAPPED and thew new
bus_map/unmap_resource methods.  Generally speaking, any drivers that
are calling rman_set_bustag() and rman_set_bushandle() need to be
updated.

Discussed on:	arch
Reviewed by:	cem
Differential Revision:	https://reviews.freebsd.org/D5237
2016-05-20 17:57:47 +00:00
John Baldwin
886b793d84 Remove dangling references to rman_await_resource().
This function was removed when RF_TIMESHARE was removed a couple of years
ago.

MFC after:	3 days
2016-05-20 01:17:38 +00:00
Don Lewis
c12cebd635 Document new net.inet.tcp.ecn.enable sysctl settings.
MFC after:	1 month (with r300240)
2016-05-19 23:03:07 +00:00
George V. Neville-Neil
18849b5da0 Remove the old version of the DTraceToolkit from the source tree.
The DTraceToolkit is part of the Open DTrace effort and is supported
on FreeBSD as a port (sysutils/DTraceToolkit) which has been updated
to properly track toolkit development upstream.

Sponsored by:	DARPA, AFRL
2016-05-19 19:51:39 +00:00
Maxim Konovalov
ccc1098ac7 o -f, -i, -K, -q, -v, -X flags documented. 2016-05-19 10:56:55 +00:00
Bjoern A. Zeeb
5fa0728b7d Split 'show vnets' into 'show vnet' and 'show all vnets'.
While here adjust some db_printf format string.

Document the two show commands in ddb.4.

Sponsored by:	The FreeBSD Foundation
2016-05-18 14:43:17 +00:00
Warner Losh
2c0e9e2a09 Make armv6 hard float abi by default. Kill armv6hf.
Allow CPUTYPE=soft to build the current soft-float abi libraries.
Add UPDATING entry to announce this.

Approved by: re@ (gjb)
2016-05-18 06:01:18 +00:00
Glen Barber
c42a9b6a73 Revert r300003, and use proper grammar.
While here, bump .Dd, which should have been done with
previous commit.
2016-05-18 06:00:32 +00:00
John Baldwin
23f765d0c8 Remove the reiserfs(5) manpage and an example of loading the kernel module. 2016-05-17 18:42:38 +00:00
Warner Losh
c6755605f6 Per Ravi Pokala's suggestion, rewrite the g_reset_bio description to
be clearer. It also describes it with more nuance. Add missing MLINKS
noticed by trasz@. Bump the date.
2016-05-17 17:08:13 +00:00
Eitan Adler
cef367e6a1 Don't repeat the the word 'the'
(one manual change to fix grammar)

Confirmed With: db
Approved by: secteam (not really, but this is a comment typo fix)
2016-05-17 12:52:31 +00:00
Konstantin Belousov
2a339d9e3d Add implementation of robust mutexes, hopefully close enough to the
intention of the POSIX IEEE Std 1003.1TM-2008/Cor 1-2013.

A robust mutex is guaranteed to be cleared by the system upon either
thread or process owner termination while the mutex is held.  The next
mutex locker is then notified about inconsistent mutex state and can
execute (or abandon) corrective actions.

The patch mostly consists of small changes here and there, adding
neccessary checks for the inconsistent and abandoned conditions into
existing paths.  Additionally, the thread exit handler was extended to
iterate over the userspace-maintained list of owned robust mutexes,
unlocking and marking as terminated each of them.

The list of owned robust mutexes cannot be maintained atomically
synchronous with the mutex lock state (it is possible in kernel, but
is too expensive).  Instead, for the duration of lock or unlock
operation, the current mutex is remembered in a special slot that is
also checked by the kernel at thread termination.

Kernel must be aware about the per-thread location of the heads of
robust mutex lists and the current active mutex slot.  When a thread
touches a robust mutex for the first time, a new umtx op syscall is
issued which informs about location of lists heads.

The umtx sleep queues for PP and PI mutexes are split between
non-robust and robust.

Somewhat unrelated changes in the patch:
1. Style.
2. The fix for proper tdfind() call use in umtxq_sleep_pi() for shared
   pi mutexes.
3. Removal of the userspace struct pthread_mutex m_owner field.
4. The sysctl kern.ipc.umtx_vnode_persistent is added, which controls
   the lifetime of the shared mutex associated with a vnode' page.

Reviewed by:	jilles (previous version, supposedly the objection was fixed)
Discussed with:	brooks, Martin Simmons <martin@lispworks.com> (some aspects)
Tested by:	pho
Sponsored by:	The FreeBSD Foundation
2016-05-17 09:56:22 +00:00
Greg Lehey
e5d4b0faa5 Correct use of incorrect grammar. 2016-05-17 04:40:00 +00:00
Andrew Turner
1e43b18c4b Add a pcib interface for use by interrupt controllers that need to
translate the pci rid to a controller ID. The translation could be based
on the 'msi-map' OFW property, a similar ACPI option, or hard-coded for
hardware lacking the above options.

Reviewed by:	wma
Obtained from:	ABT Systems Ltd
Sponsored by:	The FreeBSD Foundation
2016-05-16 09:31:44 +00:00
Andrew Turner
d7be980dbe Re-commit r299467 having fixed the build:
Add a new get_id interface to pci and pcib. This will allow us to both
detect failures, and get different PCI IDs.

For the former the interface returns an int to signal an error. The ID is
returned at a uintptr_t * argument.

For the latter there is a type argument that allows selecting the ID type.
This only specifies a single type, however a MSI type will be added
to handle the need to find the ID the hardware passes to the ARM GICv3
interrupt controller.

A follow up commit will be made to remove pci_get_rid.

Reviewed by:    jhb, rstone (previous version)
Obtained from:  ABT Systems Ltd
Sponsored by:   The FreeBSD Foundation
Differential Revision:  https://reviews.freebsd.org/D6239
2016-05-16 09:15:50 +00:00
Sepherosa Ziehau
dfdc9a05c6 atomic: Add testandclear on i386/amd64
Reviewed by:	kib
Sponsored by:	Microsoft OSTC
Differential Revision:	https://reviews.freebsd.org/D6381
2016-05-16 07:19:33 +00:00
Nick Hibma
3868814725 Add myself to the list of src committers. I've never been added it
seems.
2016-05-12 20:04:09 +00:00
Conrad Meyer
f41be0f076 Revert r299467 to fix the kernel build.
$ svn merge -c -299467 .

Approved by:	build being broken for six hours
2016-05-11 23:00:12 +00:00
Ed Maste
ce9d1e2acd Deorbit ALLOW_SHARED_TEXTREL
We want to avoid .text relocations in shared objects. libcrypto was the
only consumer and it is now fixed (as of r299389). Remove the now-unused
support for turning off the linker warning.

Reviewed by:	kib
Differential Revision:	https://reviews.freebsd.org/D6323
2016-05-11 17:55:09 +00:00
Bryan Drewery
73571281f5 DIRDEPS_BUILD: Exclude host tools for Makefile.depend.host as well.
Sponsored by:	EMC / Isilon Storage Division
2016-05-11 17:40:51 +00:00
Andrew Turner
9a36a337ff Add a new get_id interface to pci and pcib. This will allow us to both
detect failures, and get different PCI IDs.

For the former the interface returns an int to signal an error. The ID is
returned at a uintptr_t * argument.

For the latter there is a type argument that allows selecting the ID type.
This only specifies a single type, however a MSI type will be added
to handle the need to find the ID the hardware passes to the ARM GICv3
interrupt controller.

A follow up commit will be made to remove pci_get_rid.

Reviewed by:	jhb, rstone
Obtained from:	ABT Systems Ltd
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D6239
2016-05-11 17:07:29 +00:00
John Baldwin
5f0263c120 Change the default installation directory for modules to /boot/modules.
Kernel installs always override KMODDIR when installing modules, so
this default setting is only used for standalone module builds.  Many
out-of-tree modules manually override KMODDIR already to avoid placing
modules in /boot/kernel.  This now makes that behavior the default.

Discussed on:	arch@
Reviewed by:	imp
Relnotes:	yes
2016-05-10 22:32:23 +00:00
John Baldwin
a7b81566bc Add a missing section to a cross-reference.
While here, add bus_space(9) to the SEE ALSO section.
2016-05-10 16:13:54 +00:00
Warner Losh
1f1bf434c6 Bump date. Forgotten in r299312. 2016-05-10 04:01:04 +00:00
Warner Losh
7043b9898f Document g_reset_bio(). This is long overdue. g_reset_bio will reset
the bio to a pristine state should you wish to re-use it for another
I/O without freeing it. In the bast, a simple bzero was done to do
this, but that may not be sufficient in the future when the bio may
contain state that's not part of the documented API. Besides, it makes
the code clearer as to the intent...

Noticed by: smh@
2016-05-10 03:57:47 +00:00
Glen Barber
a5921bc365 Update share/examples/* to properly install /usr/share/examples.
As result of this, a new examples package is now created.

Note, this is only effective with 'SHARED=copies' (the default),
as the 'SHARED=symlinks' mechanism will create a symlink to the
source tree version of the file(s).

Sponsored by:	The FreeBSD Foundation
2016-05-10 00:51:50 +00:00
Bryan Drewery
29df9f6b75 DIRDEPS_BUILD: Run the staged bootstrap-tools version of build-tools.
This avoids running target binaries.

Sponsored by:	EMC / Isilon Storage Division
2016-05-09 22:21:09 +00:00
John Baldwin
8d791e5af1 Add a new bus method to fetch device-specific CPU sets.
bus_get_cpus() returns a specified set of CPUs for a device.  It accepts
an enum for the second parameter that indicates the type of cpuset to
request.  Currently two valus are supported:

 - LOCAL_CPUS (on x86 this returns all the CPUs in the package closest to
   the device when DEVICE_NUMA is enabled)
 - INTR_CPUS (like LOCAL_CPUS but only returns 1 SMT thread for each core)

For systems that do not support NUMA (or if it is not enabled in the kernel
config), LOCAL_CPUS fails with EINVAL.  INTR_CPUS is mapped to 'all_cpus'
by default.  The idea is that INTR_CPUS should always return a valid set.

Device drivers which want to use per-CPU interrupts should start using
INTR_CPUS instead of simply assigning interrupts to all available CPUs.
In the future we may wish to add tunables to control the policy of
INTR_CPUS (e.g. should it be local-only or global, should it ignore
SMT threads or not).

The x86 nexus driver exposes the internal set of interrupt CPUs from the
the x86 interrupt code via INTR_CPUS.

The ACPI bus driver and PCI bridge drivers use _PXM to return a suitable
LOCAL_CPUS set when _PXM exists and DEVICE_NUMA is enabled.  They also and
the global INTR_CPUS set from the nexus driver with the per-domain set from
_PXM to generate a local INTR_CPUS set for child devices.

Compared to the r298933, this version uses 'struct _cpuset' in
<sys/bus.h> instead of 'cpuset_t' to avoid requiring <sys/param.h>
(<sys/_cpuset.h> still requires <sys/param.h> for MAXCPU even though
<sys/_bitset.h> does not after recent changes).
2016-05-09 20:50:21 +00:00
Ben Woods
faef00a3e1 Add myself (woodsb02) as ports committer, and update mentor/mentee relationships
Approved by:	adamw (mentor)
Differential Revision:	https://reviews.freebsd.org/D6275
2016-05-09 20:01:18 +00:00
Stephen McConnell
a5b310716b Updates to mpr driver man page.
- Add 3216 and 3224 support.
- Add SSU, chain_alloc_fail, and spinup_wait_time information.
- Clear up some sentences.
- Correct some typos.

Reviewed by:    ken, scottl, ambrisko, asomers, wblock
Approved by:	ken, scottl, ambrisko
MFC after:      1 week
Differential Revision: https://reviews.freebsd.org/D6104
2016-05-09 16:42:46 +00:00
Maxim Konovalov
c34ed7382c o Stop to mention the slowstart_flightsize sysctl in the tuning(7).
The slowstart_flightsize and local_slowstart_flightsize sysctl's
were removed from the TCP code in 226447 several years ago.

PR:		209376
MFC after:	1 week
2016-05-09 11:48:09 +00:00
Enji Cooper
9c61377766 Fix r299162
share/man/man8/Makefile:
- Add src.opts.mk so MK_NIS can be tested
- Fix typo in MK_NIS conditional

tools/build/mk/OptionalObsoleteFiles.inc:
- Remove WIP diff from ^/user/ngie/detangle-rc

MFC after: 1 week
X-MFC with: r299162
Sponsored by: EMC / Isilon Storage Division
2016-05-06 08:53:24 +00:00
Enji Cooper
18128d28c1 Only install NIS section 8 manpages if MK_NIS != no
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2016-05-06 08:42:33 +00:00
Konstantin Belousov
9c671dbd0b Warn about consequences of suspending threads in arbitrary state of
execution.

While there, fix minor nits in markup.

Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
2016-05-05 10:22:19 +00:00
Adrian Chadd
148ed57165 [bwn] [bhnd] initial support for using bhnd for if_bwn devices.
This is an initial work in progress to use the replacement bhnd
bus code for devices which support it.

* Add manpage updates for bhnd, bhndb, siba
* Add kernel options for bhnd, bhndbus, etc
* Add initial support in if_bwn_pci / if_bwn_mac for using bhnd
  as the bus transport for suppoted NICs
* if_bwn_pci will eventually be the PCI bus glue to interface to bwn,
  which will use the right backend bus to attach to, versus direct
  nexus/bhnd attachments (as found in embedded broadcom devices.)

The PCI glue defaults to probing at a lower level than the bwn glue,
so bwn should still attach as per normal without a boot time tunable set.

It's also not fully fleshed out - the bwn probe/attach code needs to be
broken out into platform and bus specific things (just like ath, ath_pci,
ath_ahb) before we can shift the driver over to using this.

Tested:

* BCM4311, STA mode
* BCM4312, STA mode

Submitted by:	Landon Fuller <landonf@landonf.org>
Differential Revision:	https://reviews.freebsd.org/D6191
2016-05-04 23:38:27 +00:00
Enji Cooper
430f7286a5 Merge ^/user/ngie/release-pkg-fix-tests to unbreak how test files are installed
after r298107

Summary of changes:

- Replace all instances of FILES/TESTS with ${PACKAGE}FILES. This ensures that
  namespacing is kept with FILES appropriately, and that this shouldn't need
  to be repeated if the namespace changes -- only the definition of PACKAGE
  needs to be changed
- Allow PACKAGE to be overridden by callers instead of forcing it to always be
  `tests`. In the event we get to the point where things can be split up
  enough in the base system, it would make more sense to group the tests
  with the blocks they're a part of, e.g. byacc with byacc-tests, etc
- Remove PACKAGE definitions where possible, i.e. where FILES wasn't used
  previously.
- Remove unnecessary TESTSPACKAGE definitions; this has been elided into
  bsd.tests.mk
- Remove unnecessary BINDIRs used previously with ${PACKAGE}FILES;
  ${PACKAGE}FILESDIR is now automatically defined in bsd.test.mk.
- Fix installation of files under data/ subdirectories in lib/libc/tests/hash
  and lib/libc/tests/net/getaddrinfo
- Remove unnecessary .include <bsd.own.mk>s (some opportunistic cleanup)

Document the proposed changes in share/examples/tests/tests/... via examples
so it's clear that ${PACKAGES}FILES is the suggested way forward in terms of
replacing FILES. share/mk/bsd.README didn't seem like the appropriate method
of communicating that info.

MFC after: never probably
X-MFC with: r298107
PR: 209114
Relnotes: yes
Tested with: buildworld, installworld, checkworld; buildworld, packageworld
Sponsored by: EMC / Isilon Storage Division
2016-05-04 23:20:53 +00:00
Alan Somers
8907f744ff Improve performance and functionality of the bitstring(3) api
Two new functions are provided, bit_ffs_at() and bit_ffc_at(), which allow
for efficient searching of set or cleared bits starting from any bit offset
within the bit string.

Performance is improved by operating on longs instead of bytes and using
ffsl() for searches within a long. ffsl() is a compiler builtin in both
clang and gcc for most architectures, converting what was a brute force
while loop search into a couple of instructions.

All of the bitstring(3) API continues to be contained in the header file.
Some of the functions are large enough that perhaps they should be uninlined
and moved to a library, but that is beyond the scope of this commit.

sys/sys/bitstring.h:
        Convert the majority of the existing bit string implementation from
        macros to inline functions.

        Properly protect the implementation from inadvertant macro expansion
        when included in a user's program by prefixing all private
        macros/functions and local variables with '_'.

        Add bit_ffs_at() and bit_ffc_at(). Implement bit_ffs() and
        bit_ffc() in terms of their "at" counterparts.

        Provide a kernel implementation of bit_alloc(), making the full API
        usable in the kernel.

        Improve code documenation.

share/man/man3/bitstring.3:
        Add pre-exisiting API bit_ffc() to the synopsis.

        Document new APIs.

        Document the initialization state of the bit strings
        allocated/declared by bit_alloc() and bit_decl().

        Correct documentation for bitstr_size(). The original code comments
        indicate the size is in bytes, not "elements of bitstr_t". The new
        implementation follows this lead. Only hastd assumed "elements"
        rather than bytes and it has been corrected.

etc/mtree/BSD.tests.dist:
tests/sys/Makefile:
tests/sys/sys/Makefile:
tests/sys/sys/bitstring.c:
        Add tests for all existing and new functionality.

include/bitstring.h
	Include all headers needed by sys/bitstring.h

lib/libbluetooth/bluetooth.h:
usr.sbin/bluetooth/hccontrol/le.c:
        Include bitstring.h instead of sys/bitstring.h.

sbin/hastd/activemap.c:
        Correct usage of bitstr_size().

sys/dev/xen/blkback/blkback.c
        Use new bit_alloc.

sys/kern/subr_unit.c:
        Remove hard-coded assumption that sizeof(bitstr_t) is 1.  Get rid of
        unrb.busy, which caches the number of bits set in unrb.map.  When
        INVARIANTS are disabled, nothing needs to know that information.
        callapse_unr can be adapted to use bit_ffs and bit_ffc instead.
        Eliminating unrb.busy saves memory, simplifies the code, and
        provides a slight speedup when INVARIANTS are disabled.

sys/net/flowtable.c:
        Use the new kernel implementation of bit-alloc, instead of hacking
        the old libc-dependent macro.

sys/sys/param.h
        Update __FreeBSD_version to indicate availability of new API

Submitted by:   gibbs, asomers
Reviewed by:    gibbs, ngie
MFC after:      4 weeks
Sponsored by:   Spectra Logic Corp
Differential Revision:  https://reviews.freebsd.org/D6004
2016-05-04 22:34:11 +00:00
Bryan Drewery
a0c640c2a0 DIRDEPS_BUILD: Exclude secure/lib* libraries for host builds.
Sponsored by:	EMC / Isilon Storage Division
2016-05-04 03:13:48 +00:00
Conrad Meyer
bec7ff798a ioat(4): Implement CRC and MOVECRC APIs
And document them in ioat.4.

Sponsored by:	EMC / Isilon Storage Division
2016-05-03 17:07:18 +00:00
Sepherosa Ziehau
f8ce3dfaf1 kern: Add phashinit_flags(), which allows malloc(M_NOWAIT)
It will be used for the upcoming LRO hash table initialization.
And probably will be useful in other cases, when M_WAITOK can't
be used.

Reviewed by:	jhb, kib
Sponsored by:	Microsoft OSTC
Differential Revision:	https://reviews.freebsd.org/D6138
2016-05-03 07:17:13 +00:00
John Baldwin
8a08b7d36b Revert bus_get_cpus() for now.
I really thought I had run this through the tinderbox before committing,
but many places need <sys/types.h> -> <sys/param.h> for <sys/bus.h> now.
2016-05-03 01:17:40 +00:00
John Baldwin
bc153c692f Add a new bus method to fetch device-specific CPU sets.
bus_get_cpus() returns a specified set of CPUs for a device.  It accepts
an enum for the second parameter that indicates the type of cpuset to
request.  Currently two valus are supported:

 - LOCAL_CPUS (on x86 this returns all the CPUs in the package closest to
   the device when DEVICE_NUMA is enabled)
 - INTR_CPUS (like LOCAL_CPUS but only returns 1 SMT thread for each core)

For systems that do not support NUMA (or if it is not enabled in the kernel
config), LOCAL_CPUS fails with EINVAL.  INTR_CPUS is mapped to 'all_cpus'
by default.  The idea is that INTR_CPUS should always return a valid set.

Device drivers which want to use per-CPU interrupts should start using
INTR_CPUS instead of simply assigning interrupts to all available CPUs.
In the future we may wish to add tunables to control the policy of
INTR_CPUS (e.g. should it be local-only or global, should it ignore
SMT threads or not).

The x86 nexus driver exposes the internal set of interrupt CPUs from the
the x86 interrupt code via INTR_CPUS.

The ACPI bus driver and PCI bridge drivers use _PXM to return a suitable
LOCAL_CPUS set when _PXM exists and DEVICE_NUMA is enabled.  They also and
the global INTR_CPUS set from the nexus driver with the per-domain set from
_PXM to generate a local INTR_CPUS set for child devices.

Reviewed by:	wblock (manpage)
Differential Revision:	https://reviews.freebsd.org/D5519
2016-05-02 18:00:38 +00:00
Warren Block
7c64ddd5b0 Spelling fixes supplied by pfg@, detected with codespell, plus
additional misspellings detected by igor.

MFC after:	1 week
2016-05-01 22:00:41 +00:00
Pedro F. Giffuni
ca7f4027f7 share: minor spelling fixes.
Mostly comments but these tend to be user-visible.

MFC after:	2 weeks
2016-05-01 16:29:02 +00:00
Enji Cooper
f2a5d14c4a Allow FILESGROUPS to be specified more than once by pruning out duplicates
MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division
2016-04-30 21:32:29 +00:00
Jamie Gritton
ab9604e1bb Clarify when happens when there is a "depend" parameter in jail.conf,
and how this affects the "jail_list" option in rc.conf.
2016-04-30 21:27:41 +00:00
Baptiste Daroussin
7f5ddefe05 Add a savecore_enable variable support for the savecore rc script
By default set to 'YES' so it does not change the current behaviour for users,
this variable allows to decide to not extract crach dumps from the dump
device at boot time by setting it to "NO" in rc.conf.

Sponsored by:	Gandi.net
2016-04-29 12:23:56 +00:00
Glen Barber
49dae58b28 Fix including Kyuafile in packaged base system.
Fix a related typo while here.

Note, this change results in the Kyuafile inclusion in the runtime
package, which needs to be fixed, however addresses the PR as far
as I can tell in my tests.

PR:		209114
Submitted by:	ngie
Sponsored by:	The FreeBSD Foundation
2016-04-29 05:28:40 +00:00
Warren Block
d90f12e3c0 Clarify build(7) instructions for alternate object directory.
PR:		209062
Submitted by:	Shawn Debnath <sd@beastie.io>
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D6106
2016-04-28 22:14:09 +00:00
John Baldwin
9aa021d416 Add some notes about the implicit resource mapping for activated resources.
Specifically, mention that rman_get_bustag/handle/virtual are valid after
a resource is activated.  Also, mention the wrapper API that accepts a
struct resource instead of a bus tag and handle.
2016-04-28 18:23:18 +00:00
John Baldwin
9a1be350ea Document RF_PREFETCHABLE. 2016-04-28 18:01:25 +00:00
John Baldwin
55c661caad Document PCI_RES_BUS as a possible resource type. 2016-04-28 17:50:16 +00:00
John Baldwin
de70bf980b Remove a stale reference to the removed RF_TIMESHARE flag. 2016-04-28 17:48:52 +00:00
John Baldwin
a907c6914c Add a new rescan method to the bus interface.
The BUS_RESCAN() method rescans a single bus device checking for devices
that have been added or removed from the bus.  A new 'rescan' command is
added to devctl(8) to trigger a rescan.

Differential Revision:	https://reviews.freebsd.org/D6016
2016-04-27 16:29:03 +00:00
Conrad Meyer
aa90aec270 osd(9): Change array pointer to array pointer type from void*
This is a minor follow-up to r297422, prompted by a Coverity warning.  (It's
not a real defect, just a code smell.)  OSD slot array reservations are an
array of pointers (void **) but were cast to void* and back unnecessarily.
Keep the correct type from reservation to use.

osd.9 is updated to match, along with a few trivial igor fixes.

Reported by:	Coverity
CID:		1353811
Sponsored by:	EMC / Isilon Storage Division
2016-04-26 19:57:35 +00:00
Gordon Tetlow
a48214425f Add myself (finally) to the port committer's dot file.
Approved by:	mat (mentor)
Differential Revision:	https://reviews.freebsd.org/D6074
2016-04-24 21:19:00 +00:00
Emmanuel Vadot
6c65acb507 Add myself as src commiter.
Approved by:	cognet (mentor)
2016-04-24 14:49:01 +00:00
Christian Brueffer
ec8497e117 MLINK mfi.4 to mfi_linux.4 and mfip.4 to cover these kernel modules.
The mfi(4) manpage doesn't explain the modules yet, but at least we direct
users to the right place.

PR:		205925
Submitted by:	dvl
MFC after:	1 week
Sponsored by:	Essen Hackathon 2016
2016-04-24 11:41:36 +00:00
Christian Brueffer
f6c64174fe Correct types for g_example_start() and g_example_access().
PR:		203498
Submitted by:	chadf@triularity.org, ae
MFC after:	1 week
Sponsored by:	Essen Hackathon 2016
2016-04-24 08:31:32 +00:00
Benedict Reuschling
df0501a299 The default value of MINFREE is defined to be 8% in
ufs/ffs/fs.h and not 10%.  The newfs(8) and tunefs(8)
man pages had this change already, but fs(5) did not.
This change makes it consistent again.

Bump Dd.

PR:             204929
Submitted by:   amutu@amutu.com
MFC after:      3 days
Sponsored by:   Essen Linuxhotel Hackathon 2016
2016-04-23 20:45:52 +00:00
Baptiste Daroussin
027b468717 Bump the date of the manpage after r298515
Sponsored by:	Essen Hackathon 2016
2016-04-23 17:09:40 +00:00
Lars Engels
1980d11b5f - Add two new subcommands to rc.subr:
"describe" shows an rc script's description
  "extracommands" shows an rc script's non-standard commands like "reload", "configtest", "keygen", etc
- Update the rc(8) manpage and the tcsh(1) completion examples to reflect these changes

Approved by:	bapt
Sponsored by:	Essen Linuxhotel Hackathon 2016
Differential Revision:	D452
2016-04-23 16:19:34 +00:00
Christian Brueffer
ee9e0ce4cb Improve upon r296618 to keep lines < 80 characters.
Pointed out by:	jhb
Sponsored by:	Essen Hackathon 2016
2016-04-23 11:04:45 +00:00
Bryan Drewery
f19c33eed4 Fix error when SRCCONF is empty.
Sponsored by:	EMC / Isilon Storage Division
2016-04-22 20:31:29 +00:00
Bryan Drewery
4a70acf1dc Follow-up r298219: Don't error with 'make all install'.
Reported by:	kib
Sponsored by:	EMC / Isilon Storage Division
2016-04-21 16:12:55 +00:00
George V. Neville-Neil
a5ff72cb0e Add the address at which the routine returned.
MFC after:	1 week
Sponsored by:	Rubicon Communications (Netgate)
2016-04-21 03:17:53 +00:00
Simon J. Gerraty
30e2910007 Allow -f dirdeps.mk some/dir with no TARGET_MACHINE spec
Use $MACHINE if target does not specify.

Reviewed by:	bdrewery
2016-04-18 22:00:26 +00:00
Bryan Drewery
f31828ed9c META_MODE: Don't hide the .depend rm -f command.
Otherwise the build command changes every build.  META_MODE will
only remove it if something changes to warrant rebuilding
the file.

Sponsored by:	EMC / Isilon Storage Division
2016-04-18 21:11:55 +00:00
Bryan Drewery
e1dfa6572d Update meta2deps to fix crash when using -X with M2D_EXCLUDES. 2016-04-18 21:05:19 +00:00
Simon J. Gerraty
51c71d3e03 Update dirdeps.mk et al
dirdeps.mk: move logic to handle -f dirdeps.mk to inside check
for first read of dirdeps.mk

Also fix handling of WITHOUT_DIRDEPS_BELOW

gendirdeps.mk: pass M2D_EXCLUDES to meta2deps

meta.autodep.mk: if we build with nofilemon, leave a cookie to
prevent updating dependencies until cleaned.

Reviewed by:	bdrewery
2016-04-18 20:56:21 +00:00
Bryan Drewery
29fbb8071f Cause an error during 'make install' if trying to compile with CC.
This is limited to src-tree builds, meaning not extended to ports or other
out-of-tree builds.

This will help ensure that read-only OBJDIRS will be respected at install-time
by causing a more consistent failure for those who don't use a read-only
OBJDIR.  It also will cause Jenkins to yell.  This is a better solution than
trying to see CC=false as has been attempted and discussed before.

Of course this is only relevant for files generated by CC.

Disable this for META_MODE since it will detect the CFLAGS/command
change and force a rebuild.

Sponsored by:	EMC / Isilon Storage Division
2016-04-18 18:14:02 +00:00
Bryan Drewery
b964b94376 META_MODE: Clean .meta files with 'make cleandepend'.
Sponsored by:	EMC / Isilon Storage Division
2016-04-18 18:12:12 +00:00
Warren Block
5b3078c3bd Add the kern.vt.enable_bell sysctl, which was not documented previously.
Minor additional punctuation and wording changes.

PR:		208785
Submitted by:	david.marec@davenulle.org
MFC after:	1 week
2016-04-18 02:36:49 +00:00
Mark Johnston
0981cbd5fd Fix the description of the first two arguments to proc:::create.
Reported by:	Matt C <oholiab@grimmwa.re>
2016-04-17 23:10:09 +00:00
Baptiste Daroussin
d8fd68b648 Regenerate the Makefile so that actually the new generated collation are
properly installed
2016-04-16 19:39:51 +00:00
Baptiste Daroussin
110cf8a6f1 Regenerates locales Makefiles and locales 2016-04-16 17:55:11 +00:00
Glen Barber
0edd2576c0 MFH
Sponsored by:	The FreeBSD Foundation
2016-04-16 02:32:12 +00:00
Hiren Panchasara
2dbc593176 Fix the 'type' for a few variables from tcpcb.
Reviewed by:		markj
Sponsored by:		Limelight Networks
Differential Revision:	https://reviews.freebsd.org/D5973
2016-04-15 20:27:36 +00:00
Bryan Drewery
86abeac495 Document SHLIB/SHLIB_CXX/NO_PIC.
Sponsored by:	EMC / Isilon Storage Division
2016-04-15 18:49:26 +00:00
Bryan Drewery
21e2745698 Add SHLIB_CXX to allow building a C++ shared library without a static one.
Submitted by:	ngie
Sponsored by:	EMC / Isilon Storage Division
2016-04-15 18:43:54 +00:00
Enji Cooper
206c31c812 Regenerate the list of bsd.progs.mk supported variables
Prefix with dashes (unordered list) and put one variable on each
line (to avoid future conflicts)

Done via the following one-liner:

> sh -c 'for i in $(make -C tests/sys/aio PROG=foo -VPROG_VARS:O); do printf "\t\t- $i\n"; done'

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2016-04-14 22:32:56 +00:00
Enji Cooper
84833cfe39 Commit documentation change for r298012
Requested by: bdrewery
X-MFC with: r298012
Sponsored by: EMC / Isilon Storage Division
2016-04-14 22:23:15 +00:00
Enji Cooper
423e350b31 Add DEBUG_FLAGS to PROG_VARS and STRIP to PROG_OVERRIDE_VARS
This will allow the variables [*] to be overridden on a per-PROG basis,
which is useful when controlling "stripping" behavior for some tests
that require debug symbols or to be unstripped

DEBUG_FLAGS (similar to CFLAGS) supports appending, whereas STRIP is
an override

*: Due to how STRIP is defined in bsd.own.mk (in addition to
bsd.lib.mk and bsd.prog.mk), and the fact that bsd.test.mk pulls in
bsd.own.mk first, overriding STRIP doesn't work today.

A follow up commit is pending to "rectify" this after additional
testing is done.

Discussed with: bdrewery
MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division
2016-04-14 22:22:03 +00:00
Bryan Drewery
be894451fa Regenerate 2016-04-14 22:10:37 +00:00
Bryan Drewery
473fda75dd META_MODE+filemon: Default -DNO_CLEAN enabled.
When using meta mode with filemon, the build is reliably incremental
safe.  Bmake will use the meta files, along with filemon information,
to rebuild targets when their dependencies change, commands change,
or files they generate are missing.

Sponsored by:	EMC / Isilon Storage Division
2016-04-14 22:00:33 +00:00
Bryan Drewery
d1dd034d07 META_MODE: Don't rebuild build-tools targets during normal build.
This avoids 'build command changed' due to CFLAGS/CC changes during the
normal build.  Without this the build-tools targets end up rebuilding
for the *target* rather than keeping the native versions built in
build-tools.

Sponsored by:	EMC / Isilon Storage Division
2016-04-14 21:06:10 +00:00
Bryan Drewery
d7296a8fae Implement the dependency condition more safely.
Nested : are not handled well without "".

Sponsored by:	EMC / Isilon Storage Division
2016-04-14 21:04:49 +00:00
Bryan Drewery
2d9796bd24 Follow-up r297835: Let the intented default cookie work.
This happened to work for not prepending .OBJDIR twice but broke the
other case of prepending it when needed.

Pointyhat to:	bdrewery
Sponsored by:	EMC / Isilon Storage Division
2016-04-14 21:04:45 +00:00
Bryan Drewery
94086cea27 Rework META_TARGETS so that it automatically adds META_DEPS to the targets.
This will only be done if the target is defined, so if the target is
defined after bsd.sys.mk is included then it needs to manually add
${META_DEPS} still.

Sponsored by:	EMC / Isilon Storage Division
2016-04-14 21:04:42 +00:00
Bryan Drewery
f79bedf5ad Regenerate 2016-04-14 01:20:00 +00:00
Glen Barber
a123f26e92 MFH
Sponsored by:	The FreeBSD Foundation
2016-04-12 17:00:13 +00:00
Bryan Drewery
7f76a95cd0 Regenerate 2016-04-12 03:55:33 +00:00
Bryan Drewery
0457a4e053 META_MODE: Support targets that already have .OBJDIR in them for META_COOKIE.
Sponsored by:	EMC / Isilon Storage Division
2016-04-11 21:12:24 +00:00
Bryan Drewery
5528bda1b2 Revert r297833 which committed the wrong file 2016-04-11 21:12:00 +00:00
Bryan Drewery
63208a7a29 META_MODE: Support targets that already have .OBJDIR in them for META_COOKIE.
Sponsored by:	EMC / Isilon Storage Division
2016-04-11 21:10:14 +00:00
Glen Barber
2263fb580e MFH
Sponsored by:	The FreeBSD Foundation
2016-04-06 01:44:21 +00:00
Warren Block
281a5e676b Add another real-life example of setting a quirk for a USB gaming
keyboard.  From forum thread: https://forums.freebsd.org/threads/55717/

MFC after:	1 week
2016-04-05 01:12:56 +00:00
Glen Barber
d60840138f MFH
Sponsored by:	The FreeBSD Foundation
2016-04-04 23:55:32 +00:00
Bryan Drewery
8e8df7d50a DIRDEPS_BUILD: Use 1 parameter for defining -rpath-link.
Sponsored by:	EMC / Isilon Storage Division
2016-04-04 23:15:57 +00:00
Maxim Konovalov
aaeb469b3b OpenBSD 5.9 and FreeBSD 10.3 releases added. 2016-04-04 10:27:48 +00:00
Bryan Drewery
9b8d26fdbc Follow-up r297282: Make the COPTS warning more useful.
Sponsored by:	EMC / Isilon Storage Division
2016-04-01 23:31:57 +00:00
Bryan Drewery
5a8d10d763 We don't support DPLIBS.
Sponsored by:	EMC / Isilon Storage Division
2016-03-31 16:09:59 +00:00
Christian Brueffer
d848415659 Fix minor problems caught by mandoc -Tlint. 2016-03-31 15:16:22 +00:00
Bryan Drewery
8f399aba4d Define OBJTOP earlier if possible for use in targets.
Sponsored by:	EMC / Isilon Storage Division
2016-03-31 14:48:17 +00:00
Bryan Drewery
0d0ef32951 DIRDEPS_BUILD: Don't reset OBJROOT in sub-makes.
MAKEOBJDIRPREFIX is set to blank and exported from MAKELEVEL0 along
with OBJROOT exported.  In sub-makes OBJROOT is recalculated with
an empty MAKEOBJDIRPREFIX though.

Sponsored by:	EMC / Isilon Storage Division
2016-03-31 00:26:40 +00:00
Bryan Drewery
3d02549f51 Regenerate 2016-03-30 23:56:43 +00:00
Bryan Drewery
497e80911e Remove the old depend (mkdep) code and make FAST_DEPEND the one true way.
Reviewed by:	emaste, hselasky (partial), brooks (brief)
Discussed on:	arch@
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D5742
2016-03-30 23:50:23 +00:00
Bryan Drewery
cfbf3971dc Remove redundant code imported into dirdeps.mk in r290956.
Sponsored by:	EMC / Isilon Storage Division
2016-03-30 21:31:34 +00:00
Jamie Gritton
320d842101 Add osd_reserve() and osd_set_reserved(), which allow M_WAITOK allocation
of an OSD array,
2016-03-30 16:57:28 +00:00
Hans Petter Selasky
4d36338081 Add new USB ID to UDL driver.
Submitted by:	Matthias Petermann <matthias@petermann-it.de>
PR:		201084
2016-03-30 10:05:52 +00:00
Bryan Drewery
a23b48fee5 Reword descriptions of asserting locks held without WITNESS.
This corrects an error in r296947 in that it is not possible to assert
which thread holds a shared (or read) lock, but it is possible to assert
that one is held.  Just not very useful.

MFC after:	1 week
Submitted by:	wblock, jhb
Reviewed by:	kib (earlier version), jhb, wblock
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D5659
2016-03-29 16:07:51 +00:00
Alexander Motin
bc8b0193a6 Add support for AMD FCH watchdog timers.
MFC after:	2 weeks
2016-03-29 12:19:46 +00:00
Warren Block
c8edf4bc2a Fix two more unhappy instances of "user land".
Submitted by:	bdrewery
MFC after:	1 week
2016-03-28 19:55:30 +00:00
Warren Block
4a734567e7 Replace "user land", which, for any definition of the word "user",
sounds like some kind of horrific theme park.  "Hey kids, want to go to
User Land?"  "No!  We'll be good!"

The obvious replacement is "userland", a compound word replete with
term-of-art meaning and just a hint of cautionary tale.  The alternate
terms "flugelhorn" and "bullfrog", while also good, are less well-known
and were voted down in committee.

MFC after:	1 week
2016-03-28 17:42:14 +00:00
Warner Losh
b1101485df Support simple soft floating point abi for CPUTYPE in arm. Complex
types to follow.
2016-03-28 17:32:31 +00:00
Edward Tomasz Napierala
225636dccb Fix bunch of .Xrs.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-03-28 16:48:28 +00:00
Baptiste Daroussin
d69b292c7c Update pci_vendors database to 2016-02-27
MFC after:	1 week
2016-03-26 11:13:17 +00:00
Bryan Drewery
59f6130d2a Implement (ACFLAGS|CFLAGS|CXXFLAGS).SRC globally.
Sponsored by:	EMC / Isilon Storage Division
2016-03-26 03:46:12 +00:00
Bryan Drewery
38551f8fae We don't have a CPPFLAGS, COPTS or CPUFLAGS.
Sponsored by:	EMC / Isilon Storage Division
2016-03-26 03:46:04 +00:00
Bryan Drewery
11e49977a2 WITHOUT_TOOLCHAIN: Also exclude LLDB.
Sponsored by:	EMC / Isilon Storage Division
2016-03-25 22:36:29 +00:00
Bryan Drewery
1b337a349d Build libcompat (lib32) with a --sysroot pointing into its stage directory.
This overrides the cross-compiler's default sysroot to use the WORLD32's
sysroot for building the lib32 libraries.  Previously the cross-compiler
would default the sysroot to the 64bit WORLDTMP and -B/-L/-isystem flags
were used to build using the lib32 files.  This leads to multiple issues
discussed later.  Some extra headers are now needed to be staged since the
64bit WORLDTMP is not referenced at all for headers.  The 64bit WORLDTMP
is still used via PATH for build tools.  Overriding the default
target/arch is retained in the CC/CXX overrides.

This allows reverting the LDSCRIPT rewriting in installworld from r296921 and
r235122, thus allowing read-only objdirs to work for installing again.

This removes the need for _LDSCRIPTROOT.

This allows progressing the change to always use --sysroot for the build
rather than only relying on the cross-compiler's default sysroot.  The
work for that is in D3970 and needed to resolve WITHOUT_CROSS_COMPILER
not using a --sysroot [1].

PR:		196193 [1]
Sponsored by:	EMC / Isilon Storage Division
2016-03-25 19:12:38 +00:00
George V. Neville-Neil
c94c8223bd Remove dependency on mbuf provider as mbuf SDTs are now in the SDT space.
Sponsored by:	Rubicon Communications (Netgate)
2016-03-25 00:33:55 +00:00
Alexander Motin
baa7dd65be Polish wbwd(4) driver and add more supported chips.
MFC after:	1 month
2016-03-24 20:52:35 +00:00
Bryan Drewery
9b511ce96b Handle copyin failures.
Skip the log entry as there is nothing good to write out.  Don't fail
the syscall though since it already succeeded.  There's no reason
filemon's tracing failure should fail the already-succeeded syscall.

Record the error for later to return from close(2) on the filemon devfs
file descriptor.

Discussed with:	markj, sjg, kib (briefly with kib)
Reported by:	mjg
MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-03-22 22:41:14 +00:00
Bryan Drewery
4177d9f7d3 Return any log write failure encountered when closing the filemon fd.
Discussed with:	sjg, markj
Reviewed by:	sjg
MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-03-22 22:41:07 +00:00
Bryan Drewery
5a706efcfa Spell out 'system calls'.
MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-03-22 19:39:50 +00:00
George V. Neville-Neil
480f4e946d Add an mbuf provider to DTrace.
The mbuf provider is made up of a set of Statically Defined Tracepoints
which help us look into mbufs as they are allocated and freed.  This can be
used to inspect the buffers or for a simplified mbuf leak detector.

New tracepoints are:

mbuf:::m-init
mbuf:::m-gethdr
mbuf:::m-get
mbuf:::m-getcl
mbuf:::m-clget
mbuf:::m-cljget
mbuf:::m-cljset
mbuf:::m-free
mbuf:::m-freem

There is also a translator for mbufs which gives some visibility into the structure,
see mbuf.d for more details.

Reviewed by:	bz, markj
MFC after:	2 weeks
Sponsored by:	Rubicon Communications (Netgate)
Differential Revision:	https://reviews.freebsd.org/D5682
2016-03-22 13:16:52 +00:00
Bryan Drewery
6c8b789f47 Document openat(2) behavior.
MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-03-21 20:29:49 +00:00
Bryan Drewery
6d2077c2be Stop tracking stat(2).
None of lstat(2), fstat(2), fstatat(2) were tracked either.

The other filemon implementations also do not track stat(2), nor
does bmake utilize it.  The act of opening a file for read should
be enough to decide that a file is a dependency.  There could be
rare cases where just having a file would cause a dependency but it
is unlikely.

MFC after:	2 weeks
Also noted by:	sjg
Sponsored by:	EMC / Isilon Storage Division
2016-03-21 20:29:39 +00:00
Bryan Drewery
e0d84b9ee9 Track filemon usage via a proc.p_filemon pointer rather than its own lists.
- proc.p_filemon is added which is protected by PROC_LOCK.  This improves
  performance and avoids double-fork issues, taking allproc_lock
  while in syscalls, and walking the process tree in syscalls.  A
  particular proc.p_filemon can only be changed to NULL or another
  filemon, or the filemon inherited, while the filemon->lock is held.
- Filemon are reference counted.  On the last reference the log will be closed.
- When closing the devfs file handle, the filemon will be detached from all
  processes and inheritance prevented.
- Disallow attaching to a process already being traced since filemon is
  typically intended to be used on children only.  This is allowed for
  curproc as bmake relies on this behavior for rare cases when combining
  .MAKE with .META.
- Detach any previously tracked process on ioctl(FILEMON_SET_PID).
- Handle error from devfs_set_cdevpriv() in filemon_open().
- The global filemon lock and lists are removed.
- A free list is no longer kept.  Previously this list was
  forever-expanding and never garbage cleaned.
- No longer loses track of double-forks.  If the process holding the filemon
  handle closes it will close the log rather than wait on a daemonized process,
  but it will log all activity until it closes its handle.  The filemon
  will be removed from the process and not inherited.
- A separate process count is kept only as an optimization for
  forced detachment to avoid taking allproc_lock and walking the entire
  process tree.
- struct filemon access is protected by sx(9) filemon->lock as it was before.
- Add more comments and KASSERTS.

MFC after:	2 weeks
Reviewed by:	kib, mjg, markj (all on previous versions)
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D5520
2016-03-21 20:29:27 +00:00
Simon J. Gerraty
3bebe7293b Update to bmake-20160315
Archive member handling works again
meta mode, treat missing reads as for writes.

Update dirdeps.mk - much improved startup time.
Update meta.stage.mk - avoid ln when chmod required.
2016-03-18 20:03:09 +00:00
Julian Elischer
b89281ab2a Change a little to match what appears to be the right way of specifying an argument
(from looking at other man pages)

MFC after:	1 week
Sponsored by:	 Panzura inc
2016-03-18 09:17:54 +00:00
Julian Elischer
d52d61d022 Add a few details that make it easier to use this macro.
MFC after:	1 week
Sponsored by:	Panzura inc
2016-03-18 07:59:38 +00:00
Bryan Drewery
4d8ece19ae Remove incorrect BUGS entry about asserting lock not held.
For non-WITNESS< assertion support for SA_UNLOCKED was added in r125421 and
made to panic in r126316.

MFC after:	1 week
2016-03-16 18:39:48 +00:00
Hans Petter Selasky
a435d46fdf Improve the implementation and documentation of the
SYSCTL_COUNTER_U64_ARRAY() macro.

- Add proper asserts to the SYSCTL_COUNTER_U64_ARRAY() macro that checks
  the size of the first element of the array.
- Add an example to the counter(9) manual page how to use the
  SYSCTL_COUNTER_U64_ARRAY() macro.
- Add some missing symbolic links for counter(9) while at it.
2016-03-16 08:37:52 +00:00
Conrad Meyer
d8cc7a0213 fail.9: Bump Dd 2016-03-16 05:05:54 +00:00
Conrad Meyer
70e20d4e1a fail(9): Upstreaming some fail point enhancements
This is several year's worth of fail point upgrades done at EMC Isilon. They
are interdependent enough that it makes sense to put a single diff up for them.
Primarily, we added:

- Changing all mainline execution paths to be lockless, which lets us use fail
  points in more sleep-sensitive areas, and allows more parallel execution
- A number of additional commands, including 'pause' that lets us do some
  interesting deterministic repros of race conditions
- The ability to dump the stacks of all threads sleeping on a fail point
- A number of other API changes to allow marking up the fail point's context in
  the code, and firing callbacks before and after execution
- A man page update

Submitted by:	Matthew Bryan <matthew.bryan@isilon.com>
Reviewed by:	cem (earlier version), jhb, kib, pho
With feedback from:	bdrewery
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D5427
2016-03-16 04:22:32 +00:00
Bryan Drewery
54bc9e303d Partially revert r266227 and stop stripping paths in ldscripts.
Specifically this fixes /usr/lib/libc.so stripping the paths to the
libraries.  The reason for this in r266227 was both likely because ld(1) did
not fully respect --sysroot until r291226 and because of the lib32
build.  The lib32 build does not use --sysroot into the /usr/lib32 path,
rather it only uses -L and -B into the /usr/lib32 path and --sysroot
into the normal (64bit) /usr/lib.  The _LDSCRIPTROOT was added with
the ldscript support in bsd.lib.mk so that it builds a 32-bit-sysrooted pathed
ldscript in the object directory and then installs a normal unprefixed
version in installworld.  This commit also fixes the rebuild during
install which was broken in r266227.  This commit would break DIRDEPS_BUILD
build of lib32 but it does not currently have a way to build it anyhow.

For example, before this change we had in /usr/lib/libc.so:
  GROUP ( libc.so.7 libc_nonshared.a libssp_nonshared.a )
Now it is restored to pre-r266227:
  GROUP ( /lib/libc.so.7 /usr/lib/libc_nonshared.a /usr/lib/libssp_nonshared.a )

The motivation for this is in testing of lld.
From emaste:
  lld does not have built-in search paths (e.g. /lib, /usr/lib) and relies on
  -L arguments passed by the caller.  As the linker is nearly always invoked
  from the clang driver this is fine other than the fact that /usr/lib/libc.so
  is an ldscript that refers to libc.so.7 which is in /lib, not /usr/lib.

PR:		207980
Reported by:	emaste
Submitted by:	emaste (based on)
Differential Revision:	https://reviews.freebsd.org/D5637
2016-03-15 22:27:29 +00:00
Warner Losh
486607d0b6 Just install ar5523.bin into /usr/share/firmware and stop compiling it
in.

Differential Review: https://reviews.freebsd.org/D5639
2016-03-15 04:42:37 +00:00
Gleb Smirnoff
b5b7b142a7 Provide sysctl(9) macro to deal with array of counter(9). 2016-03-15 00:05:00 +00:00
Glen Barber
538354481e MFH
Sponsored by:	The FreeBSD Foundation
2016-03-14 18:54:29 +00:00
Bryan Drewery
6ccfaffdd1 Reword SX_NOADAPTIVE description to be clear that adaptive is default.
The default changed in r193011.

MFC after:	 1 week
2016-03-14 00:51:45 +00:00
Bryan Drewery
2b2ab443c0 Follow-up r296700: Fix incorrectly declaring these as .MAIN.
This broke bootstrap-tools at least for DIRDEPS_BUILD.

Sponsored by:	EMC / Isilon Storage Division
2016-03-13 20:51:45 +00:00
Bryan Drewery
19f67f6910 Don't even define or append subdir targets with NO_SUBDIR.
No functional change.

This prevents adding empty targets to the main called target which is
confusing for debugging.

MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:39 +00:00
Bryan Drewery
480364a499 Remove exists() checks so normal out-of-date handling can be used.
This also fixes META MODE rebuilding these because the 'number of build commands'
changed from the previous build.

MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:36 +00:00
Bryan Drewery
95ae492929 META_MODE: We can only use a cookie if filemon is being used.
Sponsored by:	EMC / Isilon Storage Divsion
2016-03-11 23:45:32 +00:00
Bryan Drewery
b7d28aff10 META_MODE: Simplify the META_COOKIE handling to use .USE/.USEBEFORE.
Extend it to other cases of meta mode cookies so they get the proper rm
cookie behavior when a .meta file detects it needs to rebuild and fails.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:28 +00:00
Bryan Drewery
bd08afe1c9 DIRDEPS_BUILD: Add a sure way to prohibit building 'all' during dirdeps phase.
This obsoletes the _SKIP_BUILD check but keeps it for now until it
proves to be enough.

In the dirdeps build the first 'make all' or 'make' ran would invoke
'make dirdeps' which builds dependencies and then builds the current
directory in a sub-make (when BUILD_AT_LEVEL0 is no, which for us it
is).  This behavior causes things attached to 'all:' to build in the
dirdeps phase AND the sub-make phase which creates all kinds of problems
for staging, meta file tracking, and races.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:23 +00:00
Bryan Drewery
bffd819972 DIRDEPS_BUILD: Reduce restaging here.
This also fixes meta tracking for the beforeinstall since it had been
marked .PHONY before (in bsd.sys.mk).

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:20 +00:00
Bryan Drewery
5e8745cc86 DIRDEPS_BUILD: Fix building during dirdeps.
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:17 +00:00
Bryan Drewery
9c7086241d DIRDEPS_BUILD: Avoid rebuilds due to changed build commands with newly staged tools.
This is a follow-up to r291561 which reworked the bootstrap tool PATH
handling.

An example of this is when building lib/clang/libclangedit.  At first
clang-tblgen will not be staged in the host tree so it will have
CLANG_TBLGEN=clang-tblgen set and exported.  During the build though it
will stage clang-tblgen and then find it via the PATH.  On the next
build it finds clang-tblgen in the stage directory and would set
CLANG_TBLGEN=<stagedir/usr/bin>/clang-tblgen thus causing the build
command to change.  In both cases the same exact tool was used though so
there is no need to rebuild.  If the tool did change the normal
meta/filemon handling would pick that up via timestamp comparisons and
rebuild.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:13 +00:00
Bryan Drewery
d5cc057985 DIRDEPS_BUILD: Fix staging of share/sendmail and share/examples.
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:09 +00:00
Bryan Drewery
4d7ae5ef71 DIRDEPS_BUILD: export DESTDIR for STAGING.
An example of where this is needed is in share/examples which for
'etc-examples' runs 'make -C SRCTOP/etc etc-examples' which installs
to the default DESTDIR otherwise.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:05 +00:00
Bryan Drewery
fa3afecf97 DIRDEPS_BUILD: Extend beforeinstall: staging hack.
Most beforeinstall: usage is not adding commands but only adding
targets, such as in share/sendmail.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:45:02 +00:00
Bryan Drewery
55f6623d83 Remove out-of-place make(buildincludes) check.
This came in r239572 for META_MODE handling but it doesn't make sense
since the staging is always done in make(all); make(buildincludes)
is never actually ran in the META_MODE build.

Reported by:	bapt
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:44:59 +00:00
Bryan Drewery
588f5cb86d DIRDEPS_BUILD: Remove the cookie when target is out-of-date.
The meta file may decide the target is out of date but nothing
ensures that the *next* build will build this target if it
fails this time for some reason; it is still out-of-date
until it succeeds.

Convert the include/ cookie usage to the global versions.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 23:44:27 +00:00
Bryan Drewery
cc5a4f7430 Regenerate 2016-03-11 17:03:30 +00:00
Bryan Drewery
d783b170b3 Enable FAST_DEPEND by default.
Discussed on:	arch
Sponsored by:	EMC / Isilon Storage Division
2016-03-11 16:57:41 +00:00
Bryan Drewery
e32a2cbe39 FAST_DEPEND: Use .dinclude to enable full .depend logic in bmake.
The inclusion of .MAKE.DEPENDFILE (.depend) has special logic in make
to ignore stale/missing dependencies.  bmake 20160220 added a '.dinclude'
directive that uses the special logic for .depend when including the file.

This fixes a build error when a file is moved or deleted that exists in a
.depend.OBJ file.  This happened in r292782 when sha512c.c "moved" and an
incremental build of lib/libmd would fail with:
  make: don't know how to make /usr/src/lib/libcrypt/../libmd/sha512c.c. Stop

Now this will just be seen as a stale dependency and cause a rebuild:
  make: /usr/obj/usr/src/lib/libmd/.depend.sha512c.o, 13: ignoring stale .depend for /usr/src/lib/libcrypt/../libmd/sha512c.c
  --- sha512c.o ---
  ...
This rebuild will only be done once since the .depend.sha512c.o will
be updated on the build with the -MF flags.

This also removes -MP being passed for the .depend.OBJ generation (which
would create fake targets for system headers) since the logic is no
longer needed to protect from missing files.

Sponsored by:	EMC / Isilon Storage Division
2016-03-11 04:09:56 +00:00
Simon J. Gerraty
be19d90b61 Merge bmake-20160307 2016-03-11 01:35:39 +00:00
Glen Barber
7d536dc855 MFH
Sponsored by:	The FreeBSD Foundation
2016-03-10 21:16:01 +00:00
Christian Brueffer
7daa71cca4 Fix mdoc markup. 2016-03-10 18:21:03 +00:00
Bryan Drewery
15c433351f DIRDEPS_BUILD: Connect MK_TESTS.
Sponsored by:	EMC / Isilon Storage Division
2016-03-09 22:46:01 +00:00
Bryan Drewery
17e75d1cd2 These group names may be used as a cookie, so replace any non-fs-safe characters.
One example is in cddl/usr.sbin/dtrace/tests/common/aggs.  It could be
fixed but other uses of this would break, especially in the
DIRDEPS_BUILD which uses the group names for stage cookies.

MFC after:	1 week
Sponsored by:	EMC / Isilon Storage Division
2016-03-09 22:45:00 +00:00
Bryan Drewery
9593179053 DIRDEPS_BUILD: Let PROGS bootstrapping work.
- Support (DP|LIB)ADD_${PROG}.
- Support SRCS[._]${PROG}.
- Don't bootstrap DIRDEPS while recursing.

Sponsored by:	EMC / Isilon Storage Division
2016-03-09 22:44:48 +00:00
Bryan Drewery
044fd54366 FILEMON_SET_FD: Disallow changing the fd.
MFC after:	1 week
Suggested by:	mjg
Sponsored by:	EMC / Isilon Storage Division
2016-03-09 19:50:35 +00:00
Bryan Drewery
d424483b4b Follow-up r295827: Don't enable meta stats when recursing PROGS.
Sponsored by:	EMC / Isilon Storage Division
2016-03-09 03:22:23 +00:00
Bryan Drewery
3cf3d03900 DIRDEPS_BUILD+PROGS: Fix staging not respecting (BINDIR|PROGNAME)[._]${PROG}.
Observed in tests/sys/kern.

Sponsored by:	EMC / Isilon Storage Division
2016-03-09 03:22:20 +00:00
Bryan Drewery
f68f6b3dd6 Remove things set already by bsd.progs.mk.
MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-03-09 03:22:17 +00:00
Bryan Drewery
3655b04367 PROGS: Track child meta files.
This will allow Makefile.depend to properly capture all dependencies.
It is not 100% optimal but works.  Other options would be to use *.meta
here which would include too much or to keep a Makefile.depend per PROG
and include it from the main Makefile.depend which would not be
straight forward.

Sponsored by:	EMC / Isilon Storage Division
2016-03-09 03:22:08 +00:00
Bryan Drewery
c12b4204c6 Follow-up r296324: Fix STATICOBJS dependency guesses conditions.
Reported by:	antoine
Pointyhat to:	bdrewery
Sponsored by:	EMC / Isilon Storage Division
2016-03-08 16:12:55 +00:00
Edward Tomasz Napierala
388bc30115 Mention resolvconf(8) in resolv.conf(5).
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-03-08 11:04:08 +00:00
Bryan Drewery
4039c53163 Require kldunload -f to unload.
Code may still be executing from the wrappers at unload time and thus is
not generally safe to unload.  Converting the wrappers to use
EVENTHANDLER(9) will allow this to safely drain on active threads in
hooks.  More work on EVENTHANDLER(9) is needed first.

MFC after:	1 week
Sponsored by:	EMC / Isilon Storage Division
2016-03-07 21:39:29 +00:00
Glen Barber
b655ec9752 MFH
Sponsored by:	The FreeBSD Foundation
2016-03-06 04:13:17 +00:00
Dimitry Andric
a36b180a7f Merge ^/head r296369 through r296409. 2016-03-05 15:34:54 +00:00
Christoph Moench-Tegeder
3135102b59 Add myself as a ports committer
Mentors are miwi@ and rene@

Approved by:	rene (mentor)
2016-03-05 11:20:02 +00:00
Bryan Drewery
49e6689098 DIRDEPS_BUILD: For bootstrapping always install all headers.
There is no good way to guess if any of these will be needed but
they commonly are and add no extra overhead so just stage them.

Sponsored by:	EMC / Isilon Storage Division
2016-03-04 22:37:21 +00:00
Bryan Drewery
400b94bbeb Fix over/under-linking in contrib/ofed.
Sponsored by:	EMC / Isilon Storage Division
2016-03-04 22:37:09 +00:00
Bryan Drewery
ee05c0f1b8 Allow adding to SOLINKOPTS.
Sponsored by:	EMC / Isilon Storage Division
2016-03-04 22:37:00 +00:00
Dimitry Andric
82aa34e6fa Merge ^/head r296007 through r296368. 2016-03-03 23:15:46 +00:00
Bryan Drewery
a324b0f04c DEBUG_FILES: Create the DEBUGFILEDIR if it doesn't exist on install.
Currently the base.txz distribution does not get the BSD.debug.dist mtree
extracted into it.  So if you start from that and then try to build a 3rd-party
application outside of buildworld it will by-default try installing the
debug files into a missing directory if they are being installed into /usr/lib.

Check for the existence before forcing the directory to be created rather than
the older way of running a shell command with test -d || mkdir -p always.

Reported by:	HardenedBSD (https://github.com/HardenedBSD/secadm/issues/23)
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D5411
2016-03-03 18:08:58 +00:00
Bryan Drewery
271d6c44ba Add missing atf dirs.
Sponsored by:	EMC / Isilon Storage Division
2016-03-03 06:37:17 +00:00
Bryan Drewery
d750b64121 Move casper library entries to proper places.
Sponsored by:	EMC / Isilon Storage Division
2016-03-03 06:22:51 +00:00
George V. Neville-Neil
342af4d5ef fix tcpdebug: - assign to "flags" in each probe, not only debug-input
compute "len" in the same way in each probe

Submitted by:	Hannes Mehnert
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D5524
2016-03-03 02:46:12 +00:00
Glen Barber
42d27ee343 MFH
Sponsored by:	The FreeBSD Foundation
2016-03-02 23:53:08 +00:00
Bryan Drewery
88fe1f7ab3 Add guessed dependencies to OBJS after bsd.dep.mk in case of it adding to SRCS.
This was a regression in r295985.

bsd.dep.mk adds to SRCS for dtrace probes, yacc grammars and some
others.

The code that is moving is planned to be removed once FAST_DEPEND is
default (and the only option) though since FAST_DEPEND doesn't use this.

Pointyhat to:	bdrewery
Sponsored by:	EMC / Isilon Storage Division
2016-03-02 21:03:42 +00:00
Bryan Drewery
210ee5ceea Fix meta2deps.sh tracking of dependencies inside .CURDIR.
An example of this is in share/i18n/csmapper.

Reviewed by:	sjg
Sponsored by:	EMC / Isilon Storage Division
2016-03-02 20:06:24 +00:00
Bryan Drewery
a54cfe70af Remove self-reference to destroy_dev_drain(9).
MFC after:	1 week
2016-03-02 19:22:24 +00:00
Glen Barber
52259a98ad MFH
Sponsored by:	The FreeBSD Foundation
2016-03-02 16:14:46 +00:00
Mark Johnston
a3f6b02969 Document m_catpkt(), and remove misinformation about m_cat(9).
Since m_cat() may copy data from the second mbuf chain into the last mbuf
of the first chain, it may free the first mbuf of the second chain. Thus,
the second chain is not guaranteed to be valid after m_cat() returns.

Reviewed by:	glebius
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D5497
2016-03-02 04:58:51 +00:00
Bryan Drewery
2eed38a070 CCACHE_BUILD+META_MODE: Lookup and canonicalize the default CCACHE_DIR.
This is done to prevent not having CCACHE_DIR causing meta mode with filemon to
see stat changes in the ccache dir and cause rebuilds.

Sponsored by:	EMC / Isilon Storage Division
2016-03-01 22:25:54 +00:00
Bryan Drewery
e03766c6a9 DIRDEPS_BUILD: Fix mapper files building during dirdeps.
Sponsored by:	EMC / Isilon Storage Division
2016-03-01 22:25:49 +00:00
John Baldwin
f3215338ef Refactor the AIO subsystem to permit file-type-specific handling and
improve cancellation robustness.

Introduce a new file operation, fo_aio_queue, which is responsible for
queueing and completing an asynchronous I/O request for a given file.
The AIO subystem now exports library of routines to manipulate AIO
requests as well as the ability to run a handler function in the
"default" pool of AIO daemons to service a request.

A default implementation for file types which do not include an
fo_aio_queue method queues requests to the "default" pool invoking the
fo_read or fo_write methods as before.

The AIO subsystem permits file types to install a private "cancel"
routine when a request is queued to permit safe dequeueing and cleanup
of cancelled requests.

Sockets now use their own pool of AIO daemons and service per-socket
requests in FIFO order.  Socket requests will not block indefinitely
permitting timely cancellation of all requests.

Due to the now-tight coupling of the AIO subsystem with file types,
the AIO subsystem is now a standard part of all kernels.  The VFS_AIO
kernel option and aio.ko module are gone.

Many file types may block indefinitely in their fo_read or fo_write
callbacks resulting in a hung AIO daemon.  This can result in hung
user processes (when processes attempt to cancel all outstanding
requests during exit) or a hung system.  To protect against this, AIO
requests are only permitted for known "safe" files by default.  AIO
requests for all file types can be enabled by setting the new
vfs.aio.enable_usafe sysctl to a non-zero value.  The AIO tests have
been updated to skip operations on unsafe file types if the sysctl is
zero.

Currently, AIO requests on sockets and raw disks are considered safe
and are enabled by default.  aio_mlock() is also enabled by default.

Reviewed by:	cem, jilles
Discussed with:	kib (earlier version)
Sponsored by:	Chelsio Communications
Differential Revision:	https://reviews.freebsd.org/D5289
2016-03-01 18:12:14 +00:00
John Baldwin
cbc4d2db75 Remove taskqueue_enqueue_fast().
taskqueue_enqueue() was changed to support both fast and non-fast
taskqueues 10 years ago in r154167.  It has been a compat shim ever
since.  It's time for the compat shim to go.

Submitted by:	Howard Su <howard0su@gmail.com>
Reviewed by:	sephe
Differential Revision:	https://reviews.freebsd.org/D5131
2016-03-01 17:47:32 +00:00
Ed Maste
973e8b3ede Regenerate src.conf.5 after r296193 and r296264 2016-03-01 14:30:35 +00:00
Bryan Drewery
e9508dc293 FAST_DEPEND: Prefer .OBJDIR depend files.
Sponsored by:	EMC / Isilon Storage Division
2016-02-29 21:10:47 +00:00
Ed Maste
68510f3bac Remove uudecode make rule for vt fonts
vt(4) fonts are provided in either .bdf or .hex form, and the binary
.fnt file is generated by vtfontcvt at build time.
2016-02-29 18:35:16 +00:00
Ed Maste
a304b6d089 Enable NO_ make variable deprecation warning
Reviewed by:	imp
Differential Revision:	https://reviews.freebsd.org/D5495
2016-02-29 17:57:11 +00:00
Edward Tomasz Napierala
23a6b49a1b {kbdcontrol,vidcontrol,quota,telnet}(8) -> {kbdcontrol,vidcontrol,quota,telnet}(1)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:40:02 +00:00
Edward Tomasz Napierala
2017d1b01b ioctl(8) -> ioctl(2)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:37:35 +00:00
Edward Tomasz Napierala
345c0478ad kbdmux(8) -> kbdmux(4)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:36:00 +00:00
Edward Tomasz Napierala
b144baaedd sha256(8) -> sha256(1)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:29:34 +00:00
Edward Tomasz Napierala
4dfbd8ff85 ddb(9) -> ddb(4)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:26:41 +00:00
Edward Tomasz Napierala
7c6e9b36af eventtimers(7) -> eventtimers(4)
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:26:05 +00:00
Edward Tomasz Napierala
e81210c1d0 The tcpdump is section 1, not 8.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:16:06 +00:00
Edward Tomasz Napierala
4b9f77e45e Autofs is section 5, not 4.
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
2016-02-29 17:14:04 +00:00
Phil Shafer
f487b23214 Add entries for Phil Shafer (phil@)
Differential Revision: https://reviews.freebsd.org/D5246
Approved by: sjg (mentor)
2016-02-29 04:50:24 +00:00
Justin Hibbits
0aeed3e993 Add support for the Freescale dTSEC DPAA-based ethernet controller.
Freescale's QorIQ line includes a new ethernet controller, based on their
Datapath Acceleration Architecture (DPAA).  This uses a combination of a Frame
manager, Buffer manager, and Queue manager to improve performance across all
interfaces by being able to pass data directly between hardware acceleration
interfaces.

As part of this import, Freescale's Netcomm Software (ncsw) driver is imported.
This was an attempt by Freescale to create an OS-agnostic sub-driver for
managing the hardware, using shims to interface to the OS-specific APIs.  This
work was abandoned, and Freescale's primary work is in the Linux driver (dual
BSD/GPL license).  Hence, this was imported directly to sys/contrib, rather than
going through the vendor area.  Going forward, FreeBSD-specific changes may be
made to the ncsw code, diverging from the upstream in potentially incompatible
ways.  An alternative could be to import the Linux driver itself, using the
linuxKPI layer, as that would maintain parity with the vendor-maintained driver.
However, the Linux driver has not been evaluated for reliability yet, and may
have issues with the import, whereas the ncsw-based driver in this commit was
completed by Semihalf 4 years ago, and is very stable.

Other SoC modules based on DPAA, which could be added in the future:
* Security and Encryption engine (SEC4.x, SEC5.x)
* RAID engine

Additional work to be done:
* Implement polling mode
* Test vlan support
* Add support for the Pattern Matching Engine, which can do regular expression
  matching on packets.

This driver has been tested on the P5020 QorIQ SoC.  Others listed in the
dtsec(4) manual page are expected to work as the same DPAA engine is included in
all.

Obtained from:	Semihalf
Relnotes:	Yes
Sponsored by:	Alex Perez/Inertial Computing
2016-02-29 03:38:00 +00:00
Jason Helfman
6cf621e08c - address obsolete Kerberos options
PR:		205168
Submitted by:	kevin@bostoncrypto.com
Reviewed by:	bjk
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D5430
2016-02-28 21:04:04 +00:00
Jason Unovitch
3b2a0d99af - Add myself to ports-secteam
Approved by:    delphij, miwi, feld
2016-02-27 23:39:59 +00:00
Justin Hibbits
ac6c1372f4 Add the bus_alloc_resource_anywhere() convenience function.
Summary:
Many instances of bus_alloc_resource() simply use 0 and ~0 for start and end to
denote 'anywhere' with a given count.  To clean this up, introduce a
bus_alloc_resource_anywhere() convenience function.

Bump __FreeBSD_version for the new API.

Reviewed By: jhb
Differential Revision: https://reviews.freebsd.org/D5370
2016-02-27 03:35:28 +00:00
Bryan Drewery
aae63957af Import bsd.clang-analyze.mk based on NetBSD's version.
This allows 'make analyze' or 'make OBJ.clang-analyzer' to run the
Clang static analyzer and present results on stdout.

Obtained from:	NetBSD (CVS Rev. 1.3)
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D5449
2016-02-26 22:14:00 +00:00
Bryan Drewery
b29980a63f META_MODE: Default to the silent build.
Sponsored by:	EMC / Isilon Storage Division
2016-02-26 22:13:56 +00:00
Bryan Drewery
342863e712 Move PROGS logic to proper place and remove redundant and unneeded logic.
- bsd.progs.mk is safe to include regardless of PROGS/PROGS_CXX/SCRIPTS
  being set.
- bsd.progs.mk includes bsd.prog.mk always and will bring in
  bsd.files.mk and bsd.obj.mk.
- DIRDEPS_BUILD: There's no need for _SKIP_BUILD or _SKIP_STAGING as the
  PROGS were implicitly being built by the staging dependency anyway.  This
  was also preventing other objects from building if they were not part of
  the staging sets.
- DIRDEPS_BUILD: This fixes PROGS without bsd.test.mk not staging.

MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-02-26 22:13:52 +00:00
Bryan Drewery
db74470bff DIRDEPS_BUILD: Fix some things building in MAKELEVEL0.
For PROGS this was recursing twice since MAKELEVEL0 is for 'dirdeps'
which then really builds in a sub-make.

Sponsored by:	EMC / Isilon Storage Division
2016-02-26 22:13:48 +00:00
Bryan Drewery
180a8487ee Track .meta files for .sh but don't preserve timestamp.
See r291320 for more information.

Sponsored by:	EMC / Isilon Storage Division
2016-02-26 22:13:42 +00:00
Bryan Drewery
64923b1128 Allow configuring .MAKE.MODE via META_MODE as meta.sys.mk does.
meta.sys.mk is only used for the DIRDEPS_BUILD.

Sponsored by:	EMC / Isilon Storage Division
2016-02-26 22:13:38 +00:00
Bryan Drewery
4e47b95cc9 Remove more references to targets we've never had.
Sponsored by:	EMC / Isilon Storage Division
2016-02-26 22:13:35 +00:00
Bryan Drewery
f1702f873d Remove _manpages and _maninstall targets as they are no longer needed.
r96164 added them to avoid recursing twice with _SUBDIR.  That issue was
fixed in bsd.subdir.mk in r291635 for all targets.

Sponsored by:	EMC / Isilon Storage Division
2016-02-26 22:13:31 +00:00
Ed Maste
ca8b902aa5 Install elftoolchain elfcopy(1) as objcopy(1) by default
As of r295661 elfcopy supports PE format for EFI boot binaries and is a
viable objcopy implementation for the base system and ports.

The (temporary) src.conf knob WITHOUT_ELFCOPY_AS_OBJCOPY knob may be set
to obtain the GNU version if necessary.

PR:		207091 [exp-run]
Relnotes:	Yes
Sponsored by:	The FreeBSD Foundation
2016-02-26 15:46:14 +00:00
Bryan Drewery
caf1fb322e Let CLEANDEPENDFILES actually be set before bsd.dep.mk.
This fixes 'cleandepend' for kmods after r295983.

Pointyhat to:	bdrewery
Sponsored by:	EMC / Isilon Storage Division
2016-02-26 01:52:33 +00:00
Bryan Drewery
73465ff7c7 Remove realall references from initial NetBSD import in r219019.
We've never had a realall.

Sponsored by:	EMC / Isilon Storage Division
2016-02-25 21:05:04 +00:00
Bryan Drewery
57b5a84431 Slightly lessen the amount of job target output for SUBDIR_PARALLEL.
Sponsored by:	EMC / Isilon Storage Division
2016-02-25 21:04:52 +00:00
Bryan Drewery
a2835556e9 Fix build without FAST_DEPEND and without running 'make depend' after r295985.
The OBJS_DEPEND_GUESS mechanism required moving the bsd.dep.mk inclusion
to after the checks, but left DEPENDFILE not-yet-set.  Move it to
bsd.own.mk to resolve this.

Pointyhat to:	bdrewery
Reported by:	antoine (ports failures)
Sponsored by:	EMC / Isilon Storage Division
2016-02-25 20:02:42 +00:00
Stanislav Galabov
d173587f9a Add myself as src committer
Approved by:	adrian (mentor)
Differential Revision:	https://reviews.freebsd.org/D5438

M    committers-src.dot
2016-02-25 19:29:55 +00:00
Mariusz Zaborski
c501d73c7e Convert casperd(8) daemon to the libcasper.
After calling the cap_init(3) function Casper will fork from it's original
process, using pdfork(2). Forking from a process has a lot of advantages:
1. We have the same cwd as the original process.
2. The same uid, gid and groups.
3. The same MAC labels.
4. The same descriptor table.
5. The same routing table.
6. The same umask.
7. The same cpuset(1).
From now services are also in form of libraries.
We also removed libcapsicum at all and converts existing program using Casper
to new architecture.

Discussed with:		pjd, jonathan, ed, drysdale@google.com, emaste
Partially reviewed by:	drysdale@google.com, bdrewery
Approved by:		pjd (mentor)
Differential Revision:	https://reviews.freebsd.org/D4277
2016-02-25 18:23:40 +00:00
Jared McNeill
fa104e4174 Add myself as src committer.
Approved by:	gonzo (mentor)
2016-02-25 01:03:34 +00:00
Bryan Drewery
b9c6f31681 Add more STANDALONE_SUBDIR_TARGETS.
Sponsored by:	EMC / Isilon Storage Division
2016-02-24 22:27:22 +00:00
Dimitry Andric
14e9c9161c Merge ^/head r295902 through r296006. 2016-02-24 21:38:51 +00:00
Konstantin Belousov
c83559c31f Fix year.
Noted by:	bdrewery
MFC after:	2 weeks
2016-02-24 20:32:24 +00:00
Bryan Drewery
1fdc8e0e39 PROGS: Only the main process will install INCS.
MFC after:	2 weeks
Sponsored by:	EMC / Isilon Storage Division
2016-02-24 20:28:48 +00:00
Bryan Drewery
80f9a973ef FAST_DEPEND: Still need to remove DEPENDFILE when rebuilding.
This avoids _EXTRADEPEND adding duplicate entries.

Sponsored by:	EMC / Isilon Storage Division
2016-02-24 20:28:45 +00:00
Konstantin Belousov
4b515c03a6 Remove references to Giant in the description of vrele(9). Add notes
about vnode lock and sleeping.

Reported by:	julian
Sponsored by:	The FreeBSD Foundation
MFC after:	2 weeks
2016-02-24 20:04:41 +00:00