]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
7 years agoPull in r279454 from upstream llvm trunk (by James Molloy):
dim [Mon, 30 Jan 2017 18:35:24 +0000 (18:35 +0000)]
Pull in r279454 from upstream llvm trunk (by James Molloy):

  [SROA] Remove incorrect assertion

  Confirmed with aprantl, this assertion is incorrect - code can get
  here (for example 80-bit FP types) and if it does it's benign. This
  is exposed by a completely unrelated patch of mine, so stop the
  compiler falling over.

  Original differential: http://reviews.llvm.org/D16187
  aprantl's advice to remove assertion:
  http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160815/382129.html

This should fix assertions when building the math/opensolaris-libm port.

Reported by: marino
MFC after: 3 days

7 years agoMFV r312970:
pfg [Mon, 30 Jan 2017 16:32:53 +0000 (16:32 +0000)]
MFV r312970:
openresolv: update to version 3.9.0.

It is now possible to drop the _WITH_ARG vars thanks to a change to the
pdns_recursor upstreamed by Guy Yur.

MFC after: 3 weeks

7 years agoput very expensive sanity checks of advisory locks under DIAGNOSTIC
avg [Mon, 30 Jan 2017 15:20:13 +0000 (15:20 +0000)]
put very expensive sanity checks of advisory locks under DIAGNOSTIC

The checks have quadratic complexity over a number of advisory locks
active for a file and that could be a lot.  What's the worse is that the
checks are done while holding ls_lock.  That could lead to a long a very
long backlog and performance degradation even if all requested locks are
compatible (e.g. all shared locks).

The checks used to be under INVARIANTS.

Discussed with: kib
MFC after: 2 weeks
Sponsored by: Panzura

7 years agoAdd kern_listen(), kern_shutdown(), and kern_socket(), and use them
trasz [Mon, 30 Jan 2017 12:57:22 +0000 (12:57 +0000)]
Add kern_listen(), kern_shutdown(), and kern_socket(), and use them
instead of their sys_*() counterparts in various compats. The svr4
is left untouched, because there's no point.

Reviewed by: ed@, kib@
MFC after: 2 weeks
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D9367

7 years agoAdd kern_lseek() and use it instead of sys_lseek() in various compats.
trasz [Mon, 30 Jan 2017 12:24:47 +0000 (12:24 +0000)]
Add kern_lseek() and use it instead of sys_lseek() in various compats.
I didn't touch svr4/, there's no point.

Reviewed by: ed@, kib@
MFC after: 2 weeks
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D9366

7 years agoReplace sys_ftruncate() with kern_ftruncate() in various compats.
trasz [Mon, 30 Jan 2017 11:50:54 +0000 (11:50 +0000)]
Replace sys_ftruncate() with kern_ftruncate() in various compats.

Reviewed by: kib@
MFC after: 2 weeks
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D9368

7 years agoExtend LD_UTRACE by also generating utrace(2) log events for runtime linker
peterj [Mon, 30 Jan 2017 08:38:32 +0000 (08:38 +0000)]
Extend LD_UTRACE by also generating utrace(2) log events for runtime linker
errors.

Reviewed by: kib, jhb
Approved by: jhb(mentor)
MFC after: 1 week
Differential Revision:  D9347

7 years agoMake "desc" pointer non-constant inside the mlx5_core_diagnostics_entry
hselasky [Mon, 30 Jan 2017 08:35:15 +0000 (08:35 +0000)]
Make "desc" pointer non-constant inside the mlx5_core_diagnostics_entry
structure. This fixes compilation with amd64-xtoolchain-gcc.

PR: 216588
MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoCorrect comment grammar and make it easier to understand.
cy [Mon, 30 Jan 2017 04:51:18 +0000 (04:51 +0000)]
Correct comment grammar and make it easier to understand.

MFC after: 1 week

7 years agocache: use vrefact for '.' lookups and refing the rdir in fullpath
mjg [Mon, 30 Jan 2017 03:20:05 +0000 (03:20 +0000)]
cache: use vrefact for '.' lookups and refing the rdir in fullpath

7 years agofd: sprinkle __read_mostly and __exclusive_cache_line
mjg [Mon, 30 Jan 2017 03:07:32 +0000 (03:07 +0000)]
fd: sprinkle __read_mostly and __exclusive_cache_line

7 years agoDo not update the lagg link layer address when destroying a lagg clone.
loos [Mon, 30 Jan 2017 03:04:33 +0000 (03:04 +0000)]
Do not update the lagg link layer address when destroying a lagg clone.

This would enqueue an event to send the gratuitous arp on a dying lagg
interface without any physical ports attached to it.

Apart from that, the taskqueue_drain() on lagg_clone_destroy() runs too
late, when the ifp data structure is already freed.  Fix that too.

Obtained from: pfSense
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (Netgate)

7 years agoDrop the __GNUCLIKE_ASM guards around most atomic inlines.
jhibbits [Mon, 30 Jan 2017 02:52:15 +0000 (02:52 +0000)]
Drop the __GNUCLIKE_ASM guards around most atomic inlines.

There are no alternatives defined, so there's no point in keeping them.  Also,
they weren't around every inline asm block anyway.  Without __GNUCLIKE_ASM
defined, the guarded functions return garbage.

Reported by: Andrew Thompson

7 years agoForce the setting of bit 7 in the sysmouse packet byte 1 to be unsigned.
jhibbits [Mon, 30 Jan 2017 02:32:33 +0000 (02:32 +0000)]
Force the setting of bit 7 in the sysmouse packet byte 1 to be unsigned.

Clang complains about the shift of (1 << 7) into a int8_t changing the value:

warning: implicit conversion from 'int' to 'int8_t' (aka 'signed char') changes
value from 128 to -128 [-Wconstant-conversion]

Squash this warning by forcing clang to see it as an unsigned bit.

This seems odd, given that it's still a conversion of 128->-128, but I'm
guessing the explicit unsigned attribute notifies clang that sign really doesn't
matter in this case.

Reported by: Mark Millard <markmi AT dsl-only DOT net>
MFC after: 2 weeks

7 years agoMan page update to go along with r312907.
hiren [Mon, 30 Jan 2017 02:25:55 +0000 (02:25 +0000)]
Man page update to go along with r312907.

Reviewed by:     Allanjude
MFC after:     2 weeks
Sponsored by:     Limelight Networks

7 years agoi386: add atomic_fcmpset
mjg [Mon, 30 Jan 2017 02:24:54 +0000 (02:24 +0000)]
i386: add atomic_fcmpset

Tested by: pho

7 years agoAdd a INTR_TRIG_INVALID, and use it in the powerpc interrupt code.
jhibbits [Mon, 30 Jan 2017 02:21:29 +0000 (02:21 +0000)]
Add a INTR_TRIG_INVALID, and use it in the powerpc interrupt code.

Summary:
Clang throws the following warning in powerpc intr_machdep:

/usr/src/sys/powerpc/powerpc/intr_machdep.c:454:15: warning: comparison of
constant -1 with expression of type 'enum intr_trigger' is always false
[-Wtautological-constant-out-of-range-compare]
    if (i->trig == -1)
        ~~~~~~~ ^  ~~

This may lead to legitimate problems with aggressive optimizations, if not now
then in the future.  To avoid this, add a new enum, INTR_TRIG_INVALID, set to
-1, and use this new enumeration in these checks.

Test Plan: Compile test.

Reviewed By: jhb, kib
Differential Revision: https://reviews.freebsd.org/D9300

7 years agoAdd atomic_fcmpset_*() inlines for powerpc
jhibbits [Mon, 30 Jan 2017 02:15:54 +0000 (02:15 +0000)]
Add atomic_fcmpset_*() inlines for powerpc

Summary:
atomic_fcmpset_*() is analogous to atomic_cmpset(), but saves off the read value
from the target memory location into the 'old' pointer in the case of failure.

Requested by:  mjg
Differential Revision: https://reviews.freebsd.org/D9325

7 years ago[net80211] address seqno allocation for group addressed frames
adrian [Mon, 30 Jan 2017 01:11:30 +0000 (01:11 +0000)]
[net80211] address seqno allocation for group addressed frames

After some digging and looking at packet traces, it looks like the
sequence number allocation being done by net80211 doesn't meet
802.11-2012.

Specifically, group addressed frames (broadcast, multicast) have
sequence numbers allocated from a separate pool, even if they're
QoS frames.

This patch starts to try and address this, both on transmit and
receive.

* When receiving, don't throw away multicast frames for now.
  It's sub-optimal, but until we correctly track group addressed
  frames via another TID counter, this is the best we can do.

* When doing A-MPDU checks, don't include group addressed frames
  in the sequence number checks.

* When transmitting, don't allocate group frame sequence numbers
  from the TID, instead use the NONQOS TID for allocation.

This may fix iwn(4) 11n because I /think/ this was one of the
handful of places where ni_txseqs[] was being assigned /outside/
of the driver itself.

This however doesn't completely fix things - notably the way that
TID assignment versus WME assignment for driver hardware queues
will mess up multicast ordering. For example, if all multicast
QoS frames come from one sequence number space but they're
expected to obey the QoS value assigned, they'll end up in
different queues in the hardware and go out in different
orders.

I can't fix that right now and indeed fixing it will require some
pretty heavy lifting of both the WME<->TID QoS assignment, as well
as figuring out what the correct way for drivers to behave.

For example, both iwn(4) and ath(4) shouldn't put QoS multicast
traffic into the same output queue as aggregate traffic, because
the sequence numbers are all wrong. So perhaps the correct thing
to do there is ignore the WME/TID for QoS traffic and map it all
to the best effort queue or something, and ensure it doesn't
muck up the TID/blockack window tracking. However, I'm /pretty/
sure that is still going to happen.

.. maybe I should disable multicast QoS frames in general as well,
but I don't know what that'll do for whatever the current state
of 802.11s mesh support is.

Tested:

* STA mode, ath10k NIC
* AP mode, AR9344/AR9580 AP
* iperf tcp/udp tests with concurrent multicast QoS traffic.

Before this, iperfs would fail pretty quickly because the sending
AP would start sending out QoS multicast frames that would be
out of order from the rest of the TID traffic, causing the blockack
window to get way, way out of sync.

This now doesn't occur.

TODO:

* verify which QoS frames SHOULD be tagged as M_AMPDU_MPDU.
  For example, QoS NULL frames shouldn't be tagged!

Reviewed by: avos
Differential Revision: https://reviews.freebsd.org/D9357

7 years ago[am335x] Fix DTB name in LINKS variable
gonzo [Sun, 29 Jan 2017 22:06:52 +0000 (22:06 +0000)]
[am335x] Fix DTB name in LINKS variable

Fix apparent typo introduced by r312915, upstream DTBs are
am335x-* not am3335x-*

7 years agoDo not leave stale 4K TLB entries on pde (superpage) removal or
kib [Sun, 29 Jan 2017 19:14:48 +0000 (19:14 +0000)]
Do not leave stale 4K TLB entries on pde (superpage) removal or
protection change.

On superpage promotion, x86 pmaps do not invalidate existing 4K
entries for the superpage range, because they are compatible with the
promoted 2/4M entry.  But the invalidation on superpage removal or
protection change only did single INVLPG with the base address of the
superpage.  This reliably flushed superpage TLB entry, and 4K entry
for the first page of the superpage, potentially leaving other 4K TLB
entries lingering.  Do the invalidation of the whole superpage range
to correct the problem.

Note that the precise invalidation is done by x86 code for kernel_pmap
only, for user pmaps whole (per-AS) TLB is flushed.  This made the bug
well hidden, because promotions of the kernel mappings require
specific load.

Reported and tested by: Jonathan Looney <jtl@netflix.com> (previous version)
Reviewed by: alc
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

7 years agoThe stf(4) interface name does not conform with the default naming
loos [Sun, 29 Jan 2017 18:41:09 +0000 (18:41 +0000)]
The stf(4) interface name does not conform with the default naming
convention for interfaces, because only one stf(4) interface can exist
in the system.

This disallow the use of unit numbers different than 0, however, it is
possible to create the clone without specify the unit number (wildcard).

In the wildcard case we must update the interface name before return.

This fix an infinite recursion in pf code that keeps track of network
interfaces and groups:

1 - a group for the cloned type of the interface is added (stf in this
    case);
2 - the system will now try to add an interface named stf (instead of
    stf0) to stf group;
3 - when pfi_kif_attach() tries to search for an already existing 'stf'
    interface, the 'stf' group is returned and thus the group is added
    as an interface of itself;

This will now cause a crash at the first attempt to traverse the groups
which the stf interface belongs (which loops over itself).

Obtained from: pfSense
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (Netgate)

7 years agoImplement get_pcpu() for i386 and use it to replace pcpu_find(curcpu)
jah [Sun, 29 Jan 2017 16:54:55 +0000 (16:54 +0000)]
Implement get_pcpu() for i386 and use it to replace pcpu_find(curcpu)
in the i386 pmap.

The curcpu macro loads the per-cpu data pointer as its first step,
so the remaining steps of pcpu_find(curcpu) are circular.

get_pcpu() is already implemented for arm, arm64, and risc-v.
My plan is to implement it for the remaining architectures and use
it to replace several instances of pcpu_find(curcpu) in MI code.

Reviewed by: kib
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D9370

7 years agoCorrect the IT instruction in atomic_fcmpset_64().
cognet [Sun, 29 Jan 2017 13:31:56 +0000 (13:31 +0000)]
Correct the IT instruction in atomic_fcmpset_64().

Reported by: andrew

7 years agoRemove unused kern_sendfile() declaration.
trasz [Sun, 29 Jan 2017 12:31:24 +0000 (12:31 +0000)]
Remove unused kern_sendfile() declaration.

7 years agoRemove "-Xassembler -G0" from CFLAGS.
brooks [Sun, 29 Jan 2017 11:52:36 +0000 (11:52 +0000)]
Remove "-Xassembler -G0" from CFLAGS.

-G0 is sufficent except on old version of clang (<3.8) and such versions
are unlikely to be generally useful on mips64.

Reported by: sbruno
Sponsored by: DARPA, AFRL

7 years ago- Remove i8255.h because it's pc98 device.
nyan [Sun, 29 Jan 2017 03:34:49 +0000 (03:34 +0000)]
- Remove i8255.h because it's pc98 device.
- rsa.h is for both RSA-DV/S ISA and RSA-98III CBUS, but there is no RSA-DV/S
  support.  So it can be removed.

7 years agoDo not run the pf purge thread while the VNET variables are not
loos [Sun, 29 Jan 2017 02:17:52 +0000 (02:17 +0000)]
Do not run the pf purge thread while the VNET variables are not
initialized, this can cause a divide by zero (if the VNET initialization
takes to long to complete).

Obtained from: pfSense
MFC after: 2 weeks
Sponsored by: Rubicon Communications, LLC (Netgate)

7 years agoRemove GCC's __nonnull() attribute definition.
pfg [Sun, 29 Jan 2017 00:45:52 +0000 (00:45 +0000)]
Remove GCC's __nonnull() attribute definition.

While GCC's __nonnull__ attribute is generally useful to prevent misuse of
some functions it also tends to do rather dangerous "optimizations". Now
that we have replaced (r312934) all such uses with the clang nullability
qualifiers, the GCC attribute is unnecessary.

Remove the definition completely to prevent its use in system's headers.

7 years agoUpdate MACHINE/MACHINE_ARCH examples to use arm64/aarch64 instead of i386/pc98
ngie [Sun, 29 Jan 2017 00:24:34 +0000 (00:24 +0000)]
Update MACHINE/MACHINE_ARCH examples to use arm64/aarch64 instead of i386/pc98

pc98 support was removed in r312910

7 years agoRemove non-existent ct(4) dependency for scsi_low.c
ngie [Sun, 29 Jan 2017 00:12:06 +0000 (00:12 +0000)]
Remove non-existent ct(4) dependency for scsi_low.c

ct(4) was removed with pc98 in r312910

7 years agoFix overly long lines, whitespace and other bugs according to style(9).
marius [Sun, 29 Jan 2017 00:05:49 +0000 (00:05 +0000)]
Fix overly long lines, whitespace and other bugs according to style(9).

7 years agoUpdate TARGET/TARGET_ARCH examples to use arm64/aarch64 instead of i386/pc98
ngie [Sat, 28 Jan 2017 23:58:17 +0000 (23:58 +0000)]
Update TARGET/TARGET_ARCH examples to use arm64/aarch64 instead of i386/pc98

pc98 support was removed in r312910

7 years agoFix typo in lib/Makefile
ngie [Sat, 28 Jan 2017 23:51:03 +0000 (23:51 +0000)]
Fix typo in lib/Makefile

The SUBDIR_DEPEND variable should be for librpcsec_gss, not
liblibrpc_gss

MFC after: 1 week
PR: 216409
Reported by: mail@fbsd.e4m.org

7 years agoGarbage collect pc98-only variables still referenced in sys/modules/Makefile
ngie [Sat, 28 Jan 2017 23:47:17 +0000 (23:47 +0000)]
Garbage collect pc98-only variables still referenced in sys/modules/Makefile

These should have been removed with r312910

7 years agoRemove duplicate bhnd SUBDIR entry
ngie [Sat, 28 Jan 2017 23:41:38 +0000 (23:41 +0000)]
Remove duplicate bhnd SUBDIR entry

MFC after: 1 week
PR: 216413
Reported by: mail@fbsd.e4m.org

7 years agoMake use of clang nullability attributes.
pfg [Sat, 28 Jan 2017 20:54:43 +0000 (20:54 +0000)]
Make use of clang nullability attributes.

Replace uses of the GCC __nonnull__ attribute with the clang nullability
qualifiers. The replacement should be transparent for clang developers as
the new qualifiers will produce the same warnings and will be useful for
static checkers but will not cause aggressive optimizations.

GCC will not produce such warnings and developers will have to use
upgraded GCC ports built with the system headers from r312538.

Hinted by: Apple's Libc-1158.20.4, Bionic libc
MFC after: 11.1 Release

Differential Revision: https://reviews.freebsd.org/D9004

7 years agoRemove useless labels.
cognet [Sat, 28 Jan 2017 17:48:33 +0000 (17:48 +0000)]
Remove useless labels.

7 years agoUse strexeq instead of needlessly branch.
cognet [Sat, 28 Jan 2017 17:46:04 +0000 (17:46 +0000)]
Use strexeq instead of needlessly branch.

Suggested by: ian

7 years agoGarbage collect IFT_IEEE80211 (but leave the define for possible reuse)
avos [Sat, 28 Jan 2017 17:08:40 +0000 (17:08 +0000)]
Garbage collect IFT_IEEE80211 (but leave the define for possible reuse)

This interface type ("a parent interface of wlanX") is not used since
r287197

Reviewed by: adrian, glebius
Differential Revision: https://reviews.freebsd.org/D9308

7 years agoReally revert 312923 this time
bapt [Sat, 28 Jan 2017 16:40:51 +0000 (16:40 +0000)]
Really revert 312923 this time

7 years agoRevert crap accidentally committed
bapt [Sat, 28 Jan 2017 16:31:23 +0000 (16:31 +0000)]
Revert crap accidentally committed

7 years agoRevert r312923 a better approach will be taken later
bapt [Sat, 28 Jan 2017 16:30:14 +0000 (16:30 +0000)]
Revert r312923 a better approach will be taken later

7 years agoImplement atomic_fcmpset_* for arm and arm64.
cognet [Sat, 28 Jan 2017 16:24:06 +0000 (16:24 +0000)]
Implement atomic_fcmpset_* for arm and arm64.

7 years agoFix i386 compile failure by moving needed closing parenthesis out of
sbruno [Sat, 28 Jan 2017 15:44:14 +0000 (15:44 +0000)]
Fix i386 compile failure by moving needed closing parenthesis out of
conditional block.

Submitted by:   hiren
Reported by:    cy

7 years agoMake the drm2 module depend on linuxkpi
bapt [Sat, 28 Jan 2017 15:43:19 +0000 (15:43 +0000)]
Make the drm2 module depend on linuxkpi

Use linux memory allocation to reduce diff with upstream

7 years agoMerge enhancements to the ALTERA Avalon bus generic device attachment
rwatson [Sat, 28 Jan 2017 13:25:06 +0000 (13:25 +0000)]
Merge enhancements to the ALTERA Avalon bus generic device attachment
driver to support exposing a GEOM device, which can be used to mount
Avalon-attached ROMs, reserved areas of DRAM, etc, as a filesystem:

commit 9deb1e60eaaaf7a3687e48c58af5efd756f32ec6
Author: Robert N. M. Watson <robert.watson@cl.cam.ac.uk>
Date:   Sat Mar 5 20:33:12 2016 +0000

    Use format strings with make_dev(9) in avgen(4).

commit 0bf2176c23e7425bfa042c08a24f8a25fe6d8885
Author: Robert N. M. Watson <robert.watson@cl.cam.ac.uk>
Date:   Tue Mar 1 10:23:23 2016 +0000

    Implement a new "geomio" configuration argument to altera_avgen(4),
    the generic I/O device we attach to various BERI peripherals.  The new
    option requests that, instead of exposing the underlying device via a
    special device node in /dev, it instead be exposed via geom(4),
    allowing it to be used with filesystems.  The current implementation
    does not allow a device to be exposed both for file/mmap and geom, so
    one of the two models must be selected when configuring it via FDT or
    device.hints.  A typical use of the new option will be:

      sri-cambridge,geomio = "rw";

MFC after: 1 week
Sponsored by: DARPA, AFRL

7 years agoFix a bug which caused not to create AF_LOCAL sockets when family
hrs [Sat, 28 Jan 2017 13:09:18 +0000 (13:09 +0000)]
Fix a bug which caused not to create AF_LOCAL sockets when family
is specified.

Spotted by: Alex Deiter

7 years agoMerge robustness improvements for the ALTERA JTAG UART driver from
rwatson [Sat, 28 Jan 2017 12:43:19 +0000 (12:43 +0000)]
Merge robustness improvements for the ALTERA JTAG UART driver from
CheriBSD, which attempt to work around an inherent race in the UART's
control-register design in detecting whether JTAG is currently,
present, which will otherwise lead to moderately frequent output
drops when running in polled rather than interrupt-driven operation.
Now, these drops are quite infrequent.

commit 9f33fddac9215e32781a4f016ba17eab804fb6d4
Author: Robert N. M. Watson <robert.watson@cl.cam.ac.uk>
Date:   Thu Jul 16 17:34:12 2015 +0000

    Add a new sysctl, hw.altera_jtag_uart.ac_poll_delay, which allows the
    (default 10ms) delay associated with a full JTAG UART buffer combined
    with a lack of a JTAG-present flag to be tuned.  Setting this higher
    may cause some JTAG configurations to be more reliable when printing
    out low-level console output at a speed greater than the JTAG UART is
    willing to carry data.  Or it may not.

commit 73992ef7607738b2973736e409ccd644b30eadba
Author: Robert N. M. Watson <robert.watson@cl.cam.ac.uk>
Date:   Sun Jan 1 15:13:07 2017 +0000

    Minor improvements to the Altera JTAG UART device driver:

    - Minor rework to the logic to detect JTAG presence in order to be a bit
      more resilient to inevitable races: increase the retry period from two
      seconds to four seconds for trying to find JTAG, and more agressively
      clear the miss counter if JTAG has been reconnected.  Once JTAG has
      vanished, stop prodding the miss counter.

    - Do a bit of reworking of the output code to frob the control register
      less by checking whether write interrupts are enabled/disabled before
      changing their state.  This should reduce the opportunity for races
      with JTAG discovery (which are inherent to the Altera
      hardware-software interface, but can at least be minimised).

    - Add statistics relating to interrupt enable/disable/JTAG
      discovery/etc.

    With these changes, polled-mode JTAG UART ttys appear substantially
    more robust.

MFC after: 1 week
Sponsored by: DARPA, AFRL

7 years agoFix build of aio_test on MIPS, where the compiler warns about the local
rwatson [Sat, 28 Jan 2017 12:26:22 +0000 (12:26 +0000)]
Fix build of aio_test on MIPS, where the compiler warns about the local
variable 'err' shadowing the global function err(3).  Which it does.

Sponsored by: DARPA, AFRL

7 years agoAs with GENERIC on other architectures, include COMPAT_FREEBSD10 and
rwatson [Sat, 28 Jan 2017 11:38:51 +0000 (11:38 +0000)]
As with GENERIC on other architectures, include COMPAT_FREEBSD10 and
COMPAT_FREEBSD11 in the generic BERI kernel configuration template.

MFC after: 1 week
Sponsored by: DARPA, AFRL

7 years agoRemove more pc98 support.
nyan [Sat, 28 Jan 2017 09:58:00 +0000 (09:58 +0000)]
Remove more pc98 support.

7 years agoifnet: move the new ifnet_event EVENTHANDLER_DECLARE to net/if_var.h
dexuan [Sat, 28 Jan 2017 07:26:42 +0000 (07:26 +0000)]
ifnet: move the new ifnet_event EVENTHANDLER_DECLARE to net/if_var.h

Thank glebius for pointing this out:
"The network stuff shall not be added to sys/eventhandler.h"

Reviewed by: David_A_Bright_DELL.com, sephe, glebius
Approved by: sephe (mentor)
MFC after: 2 weeks
Sponsored by: Microsoft
Differential Revision: https://reviews.freebsd.org/D9345

7 years agoSwitch to Linux / device tree upstream names. U-boot uses these by
imp [Sat, 28 Jan 2017 05:07:55 +0000 (05:07 +0000)]
Switch to Linux / device tree upstream names. U-boot uses these by
default, and the fewer changes relative to the upstream u-boot the
better.
Add compatibility links for the old names.
Add dts file for BeagleBone Green while we're here.

7 years agoHonor LINKS=x y in dtb modules. We need this for compatibility links
imp [Sat, 28 Jan 2017 05:07:53 +0000 (05:07 +0000)]
Honor LINKS=x y in dtb modules. We need this for compatibility links
for old, FreeBSD names.

7 years agoImprove the aio tests
asomers [Sat, 28 Jan 2017 04:33:51 +0000 (04:33 +0000)]
Improve the aio tests

* Add tests for aio_suspend(2).
* Add tests for polled completion notification.
* Test the full matrix of file descriptor types and completion notification
  mechanisms.
* Don't bother with mkstemp, because ATF runs every test in its own temp dir.
* Fix some typos.
* Remove extraneous ATF_REQUIRE_KERNEL_MODULE calls.

Reviewed by: jhb
MFC after: 4 weeks
Differential Revision: https://reviews.freebsd.org/D9045

7 years agoGarbage collect the FPU_ERROR_BROKEN option.
nyan [Sat, 28 Jan 2017 03:53:53 +0000 (03:53 +0000)]
Garbage collect the FPU_ERROR_BROKEN option.
It is for pc98 only.

7 years agoRegen after r312910.
nyan [Sat, 28 Jan 2017 02:25:33 +0000 (02:25 +0000)]
Regen after r312910.

7 years agoRemove pc98 support completely.
nyan [Sat, 28 Jan 2017 02:22:15 +0000 (02:22 +0000)]
Remove pc98 support completely.
I thank all developers and contributors for pc98.

Relnotes: yes

7 years agoAdd iflib man pages for developers.
sbruno [Sat, 28 Jan 2017 00:40:36 +0000 (00:40 +0000)]
Add iflib man pages for developers.

Doc review is probably waranted here for editing.

Submitted by: Nicole Graziano

7 years agoERL: set -march=octeon+ for use with external toolchain
emaste [Sat, 28 Jan 2017 00:00:10 +0000 (00:00 +0000)]
ERL: set -march=octeon+ for use with external toolchain

Upstream GCC and devel/mips64-gcc use "octeon+" as the CPU setting for
the Octeon processor in the EdgeRouter Lite. As of r312899 the base
system GCC 4.2.1 accepts octeon+ as an alias for the Octeon support
added in r208737 for the same CPU.

Sponsored by: The FreeBSD Foundation

7 years agoAdd a knob to change default behavior of inheriting listen socket's tcp stack
hiren [Fri, 27 Jan 2017 23:10:46 +0000 (23:10 +0000)]
Add a knob to change default behavior of inheriting listen socket's tcp stack
regardless of what the default stack for the system is set to.

With current/default behavior, after changing the default tcp stack, the
application needs to be restarted to pick up that change. Setting this new knob
net.inet.tcp.functions_inherit_listen_socket_stack to '0' would change that
behavior and make any new connection use the newly selected default tcp stack.

Reviewed by: rrs
MFC after: 2 weeks
Sponsored by: Limelight Networks

7 years agoUnregister CPL handlers for TOE-related messages when unloading TOM.
jhb [Fri, 27 Jan 2017 23:08:30 +0000 (23:08 +0000)]
Unregister CPL handlers for TOE-related messages when unloading TOM.

MFC after: 1 week
Sponsored by: Chelsio Communications

7 years agoIFLIB updates:
sbruno [Fri, 27 Jan 2017 23:08:06 +0000 (23:08 +0000)]
IFLIB updates:
We found routing performance dropped significantly when configuring
FreeBSD as a router, we are applying the following changes in order to
resolve those issues and hopefully perform better.
 - don't prefetch the flags array, we usually don't need it
 - prefetch the next cache line of each of the software descriptor arrays as
   well as the first cache line of each of the next four packets' mbufs and
   clusters
 - reduce max copy size to 63 bytes
 - convert rx soft descriptors from array of structures to a structure of arrays
 - update copyrights

Submitted by: Matt Macy <mmacy@nextbsd.org>

7 years agoDon't drop a reference to the TOE PCB in undo_offload_socket().
jhb [Fri, 27 Jan 2017 23:03:28 +0000 (23:03 +0000)]
Don't drop a reference to the TOE PCB in undo_offload_socket().

undo_offload_socket() is only called by t4_connect() during a connection
setup failure, but t4_connect() still owns the TOE PCB and frees ita
after undo_offload_socket() returns.  Release a reference in
undo_offload_socket() resulted in a double-free which panicked when
t4_connect() performed the second free.  The reference release was
added to undo_offload_socket() incorrectly in r299210.

MFC after: 1 week
Sponsored by: Chelsio Communications

7 years agoReplace customized busmaster code with standardized setup call.
sbruno [Fri, 27 Jan 2017 22:30:27 +0000 (22:30 +0000)]
Replace customized busmaster code with standardized setup call.

Reported by: jhb

7 years agohwpmc: annotate pmc_hook and pmc_intr as __read_mostly
mjg [Fri, 27 Jan 2017 22:14:42 +0000 (22:14 +0000)]
hwpmc: annotate pmc_hook and pmc_intr as __read_mostly

MFC after: 1 month

7 years agohwpmc: partially depessimize mmap handling if the module is not loaded
mjg [Fri, 27 Jan 2017 22:13:15 +0000 (22:13 +0000)]
hwpmc: partially depessimize mmap handling if the module is not loaded

In particular this means the pmc sx lock is no longer taken when an
executable mapping succeeds.

MFC after: 1 week

7 years agoSquash a couple of uses of xpt_print_path()
scottl [Fri, 27 Jan 2017 21:55:47 +0000 (21:55 +0000)]
Squash a couple of uses of xpt_print_path()

Sponsored by: Netflix

7 years agoadd octeon+ as an alias for octeon in GCC & binutils
emaste [Fri, 27 Jan 2017 21:31:32 +0000 (21:31 +0000)]
add octeon+ as an alias for octeon in GCC & binutils

In r208737 jmallett@ added support for the "mips64r2" architecture
and "octeon" CPU, and the saa/saad instructions.

Upstream binutils also added the "octeon+" CPU, and the saa/saad
instructions are only available in octeon+, not octeon.  Since our
base system tool chain already accepts saa/saad with -march=octeon,
just allow octeon+ as an alias.

This allows the use of octeon+ in kernel config files, for use with both
external tool chain and in-tree GCC/binutils.

PR: 216516
MFC after: 1 month
Sponsored by: The FreeBSD Foundation

7 years agoRename LLD_AS_LD to LLD_IS_LD, for consistency with CLANG_IS_CC
emaste [Fri, 27 Jan 2017 21:18:23 +0000 (21:18 +0000)]
Rename LLD_AS_LD to LLD_IS_LD, for consistency with CLANG_IS_CC

An additional case missed in r312855

7 years agoFix an off-by-one in an assertion on fasttrap tracepoint sizes.
markj [Fri, 27 Jan 2017 17:58:41 +0000 (17:58 +0000)]
Fix an off-by-one in an assertion on fasttrap tracepoint sizes.

FASTTRAP_MAX_INSTR_SIZE is the largest valid value of a tracepoint, so
correct the assertion accordingly. This limit was hit with a 15-byte NOP.

Reported by: bdrewery
MFC after: 1 week
Sponsored by: Dell EMC Isilon

7 years agoSprinkle __read_mostly on backoff and lock profiling code.
mjg [Fri, 27 Jan 2017 15:03:51 +0000 (15:03 +0000)]
Sprinkle __read_mostly on backoff and lock profiling code.

MFC after: 1 month

7 years agocache: annotate with __read_mostly and __exclusive_cache_line
mjg [Fri, 27 Jan 2017 14:56:36 +0000 (14:56 +0000)]
cache: annotate with __read_mostly and __exclusive_cache_line

MFC after: 1 month

7 years agoIntroduce __read_mostly and __exclusive_cache_line macros.
mjg [Fri, 27 Jan 2017 14:53:09 +0000 (14:53 +0000)]
Introduce __read_mostly and __exclusive_cache_line macros.

The intended use is to annotate frequently used globals which either rarely
change (and thus can be grouped in the same cacheline) or are an atomic counter
(which means it may benefit from being the only variable in the cacheline).

Linker script support is provided only for amd64. Architectures without it risk
having other variables put in, i.e. as if they were not annotated. This is
harmless from correctness point of view.

Reviewed by: bde (previous version)
MFC after: 1 month

7 years agoHide unneeded message under bootverbose.
akiyama [Fri, 27 Jan 2017 14:17:48 +0000 (14:17 +0000)]
Hide unneeded message under bootverbose.

MFC after: 1 week

7 years agoFix lookup of original destination address when using a redirect rule.
cy [Fri, 27 Jan 2017 14:12:34 +0000 (14:12 +0000)]
Fix lookup of original destination address when using a redirect rule.
Transparent proxying, e.g. to squid, is an example of this.

Obtained from: NetBSD ip_nat.c r1.17, ip_nat6.c r1.10
MFC after: 6 weeks

7 years agosfxge(4): compact the first hot part of RxQ control
arybchik [Fri, 27 Jan 2017 11:59:02 +0000 (11:59 +0000)]
sfxge(4): compact the first hot part of RxQ control

buf_base_id is used on RxQ control operations only and not used on
datapath.

Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days

7 years agosfxge(4): fix RxQ structure layout vs usage on datapath
arybchik [Fri, 27 Jan 2017 11:57:19 +0000 (11:57 +0000)]
sfxge(4): fix RxQ structure layout vs usage on datapath

Recent changes in the pseudo header accessor prototypes start to
use common code RxQ handle on datapath. The handle was located
at the end of the structure with members not used on datapath.

Reviewed by:    philip
Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days
Differential Revision:  https://reviews.freebsd.org/D9359

7 years agosfxge(4): fix invalid VLAN tagging after stop/start
arybchik [Fri, 27 Jan 2017 11:56:18 +0000 (11:56 +0000)]
sfxge(4): fix invalid VLAN tagging after stop/start

TxQ is destroyed on stop and last used tag should be reset to default 0
on the next start.

Reviewed by:    philip
Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days
Differential Revision:  https://reviews.freebsd.org/D9358

7 years agoUse the busdma API to allocate all DMA-able memory.
hselasky [Fri, 27 Jan 2017 11:46:55 +0000 (11:46 +0000)]
Use the busdma API to allocate all DMA-able memory.

The MLX5 driver has four different types of DMA allocations which are
now allocated using busdma:

1) The 4K firmware DMA-able blocks. One busdma object per 4K allocation.
2) Data for firmware commands use the 4K firmware blocks split into four 1K blocks.
3) The 4K firmware blocks are also used for doorbell pages.
4) The RQ-, SQ- and CQ- DMA rings. One busdma object per allocation.

After this patch the mlx5en driver can be used with DMAR enabled in
the FreeBSD kernel.

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoAdd support for device surprise removal and other PCI errors.
hselasky [Fri, 27 Jan 2017 11:29:33 +0000 (11:29 +0000)]
Add support for device surprise removal and other PCI errors.

- When device disappears from PCI indicate error device state and:
  1) Trigger command completion for all pending commands
  2) Prevent new commands from executing and return:
     - success for modify and remove/cleanup commands
     - failure for create/query commands
  3) When reclaiming pages for a device in error state don't ask FW to
     return all given pages, just release the allocated memory

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoWait for all VFs pages to be reclaimed before closing EQ pages.
hselasky [Fri, 27 Jan 2017 11:19:06 +0000 (11:19 +0000)]
Wait for all VFs pages to be reclaimed before closing EQ pages.

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoRename struct fw_page into struct mlx5_fw_page as a preparation step
hselasky [Fri, 27 Jan 2017 11:03:58 +0000 (11:03 +0000)]
Rename struct fw_page into struct mlx5_fw_page as a preparation step
for adding busdma support.

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoFix command completion with callback scenario.
hselasky [Fri, 27 Jan 2017 10:56:03 +0000 (10:56 +0000)]
Fix command completion with callback scenario.

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoMinor code refactor as a preparation step for suprise removal of CX-4
hselasky [Fri, 27 Jan 2017 10:47:53 +0000 (10:47 +0000)]
Minor code refactor as a preparation step for suprise removal of CX-4
PCI device(s), changes:
- alloc_entry() now clears bit for page slot entry aswell
- update of cmd->ent_arr[] is now under cmd->alloc_lock
- complete command if alloc_entry() fails

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoUse ffs() to scan for first bit instead of using a for() loop.
hselasky [Fri, 27 Jan 2017 10:36:49 +0000 (10:36 +0000)]
Use ffs() to scan for first bit instead of using a for() loop.
Minor code refactor while at it.

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoMake fw_pages statistics counter 64-bit to avoid overflow.
hselasky [Fri, 27 Jan 2017 10:20:38 +0000 (10:20 +0000)]
Make fw_pages statistics counter 64-bit to avoid overflow.

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoAdd support for reading advanced diagnostic counters.
hselasky [Fri, 27 Jan 2017 10:03:50 +0000 (10:03 +0000)]
Add support for reading advanced diagnostic counters.

By default reading the diagnostic counters is disabled. The firmware
decides which counters are supported and only those supported show up
in the dev.mce.X.diagnostics sysctl tree.

To enable reading of diagnostic counters set one or more of the
following sysctls to one:

dev.mce.X.conf.diag_general_enable=1
dev.mce.X.conf.diag_pci_enable=1

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agosfxge(4): cleanup: remove unused soft context struct member rxq_cache
arybchik [Fri, 27 Jan 2017 08:54:33 +0000 (08:54 +0000)]
sfxge(4): cleanup: remove unused soft context struct member rxq_cache

Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days

7 years agosfxge(4): cleanup: remvoe trailing tab
arybchik [Fri, 27 Jan 2017 08:53:11 +0000 (08:53 +0000)]
sfxge(4): cleanup: remvoe trailing tab

Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days

7 years agosfxge(4): cleanup: remove unused txq_index TxQ control structure member
arybchik [Fri, 27 Jan 2017 08:51:48 +0000 (08:51 +0000)]
sfxge(4): cleanup: remove unused txq_index TxQ control structure member

Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days

7 years agoEnforce reading the consumer and producer counters once to ensure
hselasky [Fri, 27 Jan 2017 08:32:50 +0000 (08:32 +0000)]
Enforce reading the consumer and producer counters once to ensure
consistent return values from the mlx5e_sq_has_room_for()
function. The two counters are incremented by different threads under
different locks.

MFC after: 1 week
Sponsored by: Mellanox Technologies

7 years agoRemove nested #ifdef that can't possibly be false.
imp [Fri, 27 Jan 2017 08:30:43 +0000 (08:30 +0000)]
Remove nested #ifdef that can't possibly be false.

7 years agoConfigure the timer capture pin to input mode in the timer control
ian [Fri, 27 Jan 2017 04:08:24 +0000 (04:08 +0000)]
Configure the timer capture pin to input mode in the timer control
register, in addition to configuring it as input with the pinmux driver.

There was a control register bit commented as "no desc in datasheet".  A
later revision of the manual reveals the bit to be an input/output control
for the timer pin.  In addition to configuring capture or pulse mode, you
apparently have to separately configure the pin direction in the timer
control register.

Before this change, the timer block was apparently driving a signal onto a
pad configured by pinmux as input.  Capture mode still accidentally worked
for me during testing because I was using a very strong signal source that
just out-muscled the weaker drive from the misconfigured pin.

7 years agoUse cross-NM (XNM) in compat32 build
emaste [Fri, 27 Jan 2017 03:43:18 +0000 (03:43 +0000)]
Use cross-NM (XNM) in compat32 build

An attempt to build mips64 using external toolchain failed as it tried
to use the host amd64 nm.

MFC after: 1 month
Sponsored by: The FreeBSD Foundation

7 years agoRename LLD_AS_LD to LLD_IS_LD, for consistency with CLANG_IS_CC
emaste [Fri, 27 Jan 2017 01:59:12 +0000 (01:59 +0000)]
Rename LLD_AS_LD to LLD_IS_LD, for consistency with CLANG_IS_CC

Reported by: Dan McGregor <dan.mcgregor usask.ca>

7 years ago[net80211] prepare configuration checks for VHT, fragment-offload and seqno-offload.
adrian [Fri, 27 Jan 2017 01:24:24 +0000 (01:24 +0000)]
[net80211] prepare configuration checks for VHT, fragment-offload and seqno-offload.

* allocate an ext bit for fragment offload.  Some NICs (like the ath10k
  hardware in native wifi or 802.3 mode) support doing packet fragmentation
  in firmware/hardware, so we don't have to do it here.

* allocate an ext bit for VHT and start using it.

7 years ago[ath] fix "doing stuff before wakeup" warning; add comments for ACK/CTS handling...
adrian [Fri, 27 Jan 2017 01:17:00 +0000 (01:17 +0000)]
[ath] fix "doing stuff before wakeup" warning; add comments for ACK/CTS handling during DFS/PASSIVE channels

* Although the hardware is awake, the power state handling doesn't think so.
  So just explicitly wake it up early in setup so ath_hal calls don't complain.

* We shouldn't be transmitting or ACKing frames during DFS CAC or on passive
  channels before we hear a beacon.  So, start laying down comments in the
  places where this work has to be done.

Note:

* The main bit missing from finishing this particular bit of work is a state
  call to transition a VAP from passive to non-passive when a beacon is heard.
  CAC is easy, it's an interface state.  So, I'll go and add a method to control
  that soon.

7 years agoFix libcam build. It was broken with r312827.
jkim [Fri, 27 Jan 2017 00:17:07 +0000 (00:17 +0000)]
Fix libcam build.  It was broken with r312827.