]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
4 years agoMerge ^/head r356931 through r357118.
dim [Sat, 25 Jan 2020 14:46:52 +0000 (14:46 +0000)]
Merge ^/head r356931 through r357118.

4 years agoFurther reduce diffs between upstream and our version.
dim [Sat, 25 Jan 2020 14:43:22 +0000 (14:43 +0000)]
Further reduce diffs between upstream and our version.

4 years agoUpdate FREEBSD-Xlist.
dim [Sat, 25 Jan 2020 14:39:59 +0000 (14:39 +0000)]
Update FREEBSD-Xlist.

4 years agoSending CWR after an RTO is according to RFC 3168 generally required
tuexen [Sat, 25 Jan 2020 13:45:10 +0000 (13:45 +0000)]
Sending CWR after an RTO is according to RFC 3168 generally required
and not only for the DCTCP congestion control.

Submitted by: Richard Scheffenegger
Reviewed by: rgrimes, tuexen@, Cheng Cui
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D23119

4 years agoDon't set the ECT codepoint on retransmitted packets during SACK loss
tuexen [Sat, 25 Jan 2020 13:34:29 +0000 (13:34 +0000)]
Don't set the ECT codepoint on retransmitted packets during SACK loss
recovery. This is required by RFC 3168.

Submitted by: Richard Scheffenegger
Reviewed by: rgrimes@, tuexen@, Cheng Cui
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D23118

4 years agoAs a TCP client only enable ECN when the corresponding sysctl variable
tuexen [Sat, 25 Jan 2020 13:11:14 +0000 (13:11 +0000)]
As a TCP client only enable ECN when the corresponding sysctl variable
indicates that ECN should be negotiated for the client side.

Submitted by: Richard Scheffenegger
Reviewed by: rgrimes@, tuexen@
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D23228

4 years agotests: Routing tests overwrote net tests
kp [Sat, 25 Jan 2020 10:51:51 +0000 (10:51 +0000)]
tests: Routing tests overwrote net tests

The routing subdirectory installed into the same directory as the test tests,
which caused them to overwrite the net Kyuafile. As a result these tests were
not executed.

X-MFC-With: r356146

4 years agoImplement cycle-detecting garbage collector for AF_UNIX sockets
jah [Sat, 25 Jan 2020 08:57:26 +0000 (08:57 +0000)]
Implement cycle-detecting garbage collector for AF_UNIX sockets

The existing AF_UNIX socket garbage collector destroys any socket
which may potentially be in a cycle, as indicated by its file reference
count being equal to its enqueue count. However, this can produce false
positives for in-flight sockets which aren't part of a cycle but are
part of one or more SCM_RIGHTS mssages and which have been closed
on the sending side. If the garbage collector happens to run at
exactly the wrong time, destruction of these sockets will render them
unusable on the receiving side, such that no previously-written data
may be read.

This change rewrites the garbage collector to precisely detect cycles:

1. The existing check of msgcount==f_count is still used to determine
   whether the socket is potentially in a cycle.
2. The socket is now placed on a local "dead list", which is used to
   reduce iteration time (and therefore contention on the global
   unp_link_rwlock).
3. The first pass through the dead list removes each potentially-dead
   socket's outgoing references from the graph of potentially-dead
   sockets, using a gc-specific copy of the original reference count.
4. The second series of passes through the dead list removes from the
   list any socket whose remaining gc refcount is non-zero, as this
   indicates the socket is actually accessible outside of any possible
   cycle.  Iteration is repeated until no further sockets are removed
   from the dead list.
5. Sockets remaining in the dead list are destroyed as before.

PR: 227285
Submitted by: jan.kokemueller@gmail.com (prior version)
Reviewed by: markj
Differential Revision: https://reviews.freebsd.org/D23142

4 years agolua: add modules.loaded hook
kevans [Sat, 25 Jan 2020 03:52:16 +0000 (03:52 +0000)]
lua: add modules.loaded hook

This may be used for the local module to hook in and load any additional
modules that it wants, since it can't modify the modules table internal to
config. We may consider adding API to do so at a later time, but I suspect
it will be more complicated to use with little return.

status is captured but ignored for the purpose of loading the hook. status
will be false if *any* module failed to load, but we typically don't let
that halt the boot so there's no reason to let it halt hooks. Some vendors
or setups may have expected fails that would be actively thwarted by
checking it.

We may, at a later date, consider adding an API for letting non-config
modules check which modules have successfully (or not) loaded in case an
unexpected failure *should* halt whatever they are doing.

MFC after: 3 days

4 years agoloader.lua: re-arrange to load local.lua *after* config loading
kevans [Sat, 25 Jan 2020 03:02:45 +0000 (03:02 +0000)]
loader.lua: re-arrange to load local.lua *after* config loading

The major problem with the current ordering is that loader.conf may contain
all of the magic we need to actually setup the console, so loading local.lua
prior to that can make it excessively difficult and annoying to debug
(whoops, sorry Ravi & Warner).

The new ordering has some implications, but I suspect they are a non-issue.
The first is that it's no longer possible for the local module to inject any
logic prior to loading config -- I suspect no one has relied on this. The
second implication is that the config.loaded hook is now useless, as the
local module will always be included after that hook would have fired.

For config.loaded, I will opt to leave it in, just in case we add an early
point for local lua to get injected or in case one wants to schedule some
deferred logic in a custom loader.lua. The overhead of having it if no hooks
will be invoked is relatively minimal.

Diagnosed by: imp
Reported by: imp, rpokala (most likely)
MFC after: 3 days

4 years agoEnter the network epoch in RX processing taskqueue.
glebius [Sat, 25 Jan 2020 00:06:18 +0000 (00:06 +0000)]
Enter the network epoch in RX processing taskqueue.

4 years agoDon't delay the ACK for a TCP segment with the CWR flag set.
tuexen [Fri, 24 Jan 2020 22:50:23 +0000 (22:50 +0000)]
Don't delay the ACK for a TCP segment with the CWR flag set.
This allows the data sender to increase the CWND faster.

Submitted by: Richard Scheffenegger
Reviewed by: rgrimes@, tuexen@, Cheng Cui
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D22670

4 years agoThe server side of TCP fast open relies on the delayed ACK timer to allow
tuexen [Fri, 24 Jan 2020 22:37:53 +0000 (22:37 +0000)]
The server side of TCP fast open relies on the delayed ACK timer to allow
including user data in the SYN-ACK. When DSACK support was added in
r347382, an immediate ACK was sent even for the received SYN with
user data. This patch fixes that and allows again to send user data with
the SYN-ACK.

Reported by: Jeremy Harris
Reviewed by: Richard Scheffenegger, rrs@
MFC after: 1 week
Sponsored by: Netflix, Inc.
Differential Revision: https://reviews.freebsd.org/D23212

4 years agoMerge ^/vendor/lvm-project/release-10.x up to its last change (upstream
dim [Fri, 24 Jan 2020 22:15:36 +0000 (22:15 +0000)]
Merge ^/vendor/lvm-project/release-10.x up to its last change (upstream
commit llvmorg-10-init-17538-gd11abddb32f).

4 years agoVendor import of llvm-project release/10.x
dim [Fri, 24 Jan 2020 22:11:32 +0000 (22:11 +0000)]
Vendor import of llvm-project release/10.x
llvmorg-10-init-17538-gd11abddb32f.

4 years agoMerge ^/vendor/lvm-project/release-10.x up to its last change (upstream
dim [Fri, 24 Jan 2020 22:04:02 +0000 (22:04 +0000)]
Merge ^/vendor/lvm-project/release-10.x up to its last change (upstream
commit c4a134a51).

4 years agoMerge ^/vendor/lvm-project/master up to its last change (upstream commit
dim [Fri, 24 Jan 2020 22:00:03 +0000 (22:00 +0000)]
Merge ^/vendor/lvm-project/master up to its last change (upstream commit
e26a78e70), and resolve conflicts.

4 years agoEnter the network epoch when rack_output() is called in setsockopt(2).
glebius [Fri, 24 Jan 2020 21:56:10 +0000 (21:56 +0000)]
Enter the network epoch when rack_output() is called in setsockopt(2).

4 years agoEnter the network epoch in USB WiFi drivers when processing input
glebius [Fri, 24 Jan 2020 21:04:33 +0000 (21:04 +0000)]
Enter the network epoch in USB WiFi drivers when processing input
mbuf queues.

Submitted by: Idwer Vollering <vidwer gmail.com>

4 years agoAdd support for RFC 6598/Carrier Grade NAT subnets. to libalias and ipfw.
melifaro [Fri, 24 Jan 2020 20:35:41 +0000 (20:35 +0000)]
Add support for RFC 6598/Carrier Grade NAT subnets. to libalias and ipfw.

In libalias, a new flag PKT_ALIAS_UNREGISTERED_RFC6598 is added.
 This is like PKT_ALIAS_UNREGISTERED_ONLY, but also is RFC 6598 aware.
Also, we add a new NAT option to ipfw called unreg_cgn, which is like
 unreg_only, but also is RFC 6598-aware.  The reason for the new
 flags/options is to avoid breaking existing networks, especially those
 which rely on RFC 6598 as an external address.

Submitted by: Neel Chauhan <neel AT neelc DOT org>
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D22877

4 years agoHandle a race of collapse with a retrying fault.
kib [Fri, 24 Jan 2020 19:42:53 +0000 (19:42 +0000)]
Handle a race of collapse with a retrying fault.

Both vm_object_scan_all_shadowed() and vm_object_collapse_scan() might
observe an invalid page left in the default backing object by the
fault handler that retried.  Check for the condition and refuse to collapse.

Reported and tested by: pho
Reviewed by: jeff
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D23331

4 years agore(4) uses taskqueue to process input packets. Enter network epoch
glebius [Fri, 24 Jan 2020 17:24:02 +0000 (17:24 +0000)]
re(4) uses taskqueue to process input packets.  Enter network epoch
in there.

4 years agoath(4) processing input packets in taskqueue. Enter network epoch
glebius [Fri, 24 Jan 2020 17:11:54 +0000 (17:11 +0000)]
ath(4) processing input packets in taskqueue.  Enter network epoch
before calling ieee80211_input_mimo().

4 years agoInclude the PCI stack to the riscv GENERIC kernel.
br [Fri, 24 Jan 2020 17:10:21 +0000 (17:10 +0000)]
Include the PCI stack to the riscv GENERIC kernel.

It will be used by an upcoming PCI root complex driver.

Sponsored by: DARPA, AFRL

4 years agoEnable NEW_PCIB on riscv.
br [Fri, 24 Jan 2020 16:50:51 +0000 (16:50 +0000)]
Enable NEW_PCIB on riscv.

Sponsored by: DARPA, AFRL

4 years agoo Move the software context struct to a header file.
br [Fri, 24 Jan 2020 16:43:49 +0000 (16:43 +0000)]
o Move the software context struct to a header file.
o Make the pci_host_generic_acpi_attach() globally visible.
o Declare a new driver class.

These will be used by a new PCI root complex driver.

Sponsored by: DARPA, AFRL

4 years agocaroot: use bsd.obj.mk, not bsd.prog.mk
kevans [Fri, 24 Jan 2020 16:43:02 +0000 (16:43 +0000)]
caroot: use bsd.obj.mk, not bsd.prog.mk

This directory stages certdata into .OBJDIR and processes it, but does not
actually build a prog-shaped object; bsd.obj.mk provides the minimal support
that we actually need, an .OBJDIR and descent into subdirs. This is
admittedly the nittiest of nits.

4 years agoMove the ECAM macroses to the header file.
br [Fri, 24 Jan 2020 16:08:06 +0000 (16:08 +0000)]
Move the ECAM macroses to the header file.

These will be used by other PCI root complex drivers.

Sponsored by: DARPA, AFRL

4 years agoRevert r357050.
markj [Fri, 24 Jan 2020 14:58:02 +0000 (14:58 +0000)]
Revert r357050.

It seems to have introduced a couple of regressions.

Reported by: cy, pho

4 years agoTag NLS aliases with pkgbase package
emaste [Fri, 24 Jan 2020 14:41:51 +0000 (14:41 +0000)]
Tag NLS aliases with pkgbase package

POSIX and en_US.US_ASCII are aliases (symlinks) to the C locale.  They were
not previously tagged with a pkgbase pacakge.  Add the tag so that they are
handled correctly on pkgbase-installed/updated systems.

[This is r356990 reapplied with a corrected commit message.]

Discussed with: manu

4 years agorevert r356990 to reapply with correct commit message
emaste [Fri, 24 Jan 2020 14:40:37 +0000 (14:40 +0000)]
revert r356990 to reapply with correct commit message

Requested by: rgrimes

4 years agoImplement mmget_not_zero() in the LinuxKPI.
hselasky [Fri, 24 Jan 2020 13:05:53 +0000 (13:05 +0000)]
Implement mmget_not_zero() in the LinuxKPI.

Submitted by: Austin Shafer <ashafer@badland.io>
MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agoMake linux(4) handle MAP_32BIT.
trasz [Fri, 24 Jan 2020 12:08:23 +0000 (12:08 +0000)]
Make linux(4) handle MAP_32BIT.

This unbreaks Mono (mono-devel-4.6.2.7+dfsg-1ubuntu1 from Ubuntu Bionic);
previously would crash on "amd64_is_imm32" assert.

MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D23306

4 years agoAdd kern_unmount() and use in Linuxulator. No functional changes.
trasz [Fri, 24 Jan 2020 11:57:55 +0000 (11:57 +0000)]
Add kern_unmount() and use in Linuxulator.  No functional changes.

Reviewed by: kib
MFC after: 2 weeks
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D22646

4 years agoFix a few spacing issues to make the page more readable.
n_hibma [Fri, 24 Jan 2020 11:22:33 +0000 (11:22 +0000)]
Fix a few spacing issues to make the page more readable.

4 years agoMost uses of vm_map_clip_start follow a call to vm_map_lookup. Define
dougm [Fri, 24 Jan 2020 07:48:11 +0000 (07:48 +0000)]
Most uses of vm_map_clip_start follow a call to vm_map_lookup. Define
an inline function vm_map_lookup_clip_start that invokes them both and
use it in places that invoke both. Drop a couple of local variables
made unnecessary by this function.

Reviewed by: markj
Tested by: pho
Differential Revision: https://reviews.freebsd.org/D22987

4 years agovfs: allow v_usecount to transition 0->1 without the interlock
mjg [Fri, 24 Jan 2020 07:47:44 +0000 (07:47 +0000)]
vfs: allow v_usecount to transition 0->1 without the interlock

There is nothing to do but to bump the count even during said transition.
There are 2 places which can do it:
- vget only does this after locking the vnode, meaning there is no change in
  contract versus inactive or reclamantion
- vref only ever did it with the interlock held which did not protect against
  either (that is, it would always succeed)

VCHR vnodes retain special casing due to the need to maintain dev use count.

Reviewed by: jeff, kib
Tested by: pho (previous version)
Differential Revision: https://reviews.freebsd.org/D23185

4 years agovfs: stop handling VI_OWEINACT in vget
mjg [Fri, 24 Jan 2020 07:45:59 +0000 (07:45 +0000)]
vfs: stop handling VI_OWEINACT in vget

vget is almost always called with LK_SHARED, meaning the flag (if present) is
almost guaranteed to get cleared. Stop handling it in the first place and
instead let the thread which wanted to do inactive handle the bumepd usecount.

Reviewed by: jeff
Tested by: pho
Differential Revision: https://reviews.freebsd.org/D23184

4 years agovfs: stop unlocking the vnode upfront in vput
mjg [Fri, 24 Jan 2020 07:44:25 +0000 (07:44 +0000)]
vfs: stop unlocking the vnode upfront in vput

Doing so runs into races with filesystems which make half-constructed vnodes
visible to other users, while depending on the chain vput -> vinactive ->
vrecycle to be executed without dropping the vnode lock.

Impediments for making this work got cleared up (notably vop_unlock_post now
does not do anything and lockmgr stops touching the lock after the final
write). Stacked filesystems keep vhold/vdrop across unlock, which arguably can
now be eliminated.

Reviewed by: jeff
Differential Revision: https://reviews.freebsd.org/D23344

4 years agolockmgr: don't touch the lock past unlock
mjg [Fri, 24 Jan 2020 07:42:57 +0000 (07:42 +0000)]
lockmgr: don't touch the lock past unlock

This evens it up with other locking primitives.

Note lock profiling still touches the lock, which again is in line with the
rest.

Reviewed by: jeff
Differential Revision: https://reviews.freebsd.org/D23343

4 years ago[ntp] Don't compile in the ssl routines into libevent if MK_OPENSSL is no
adrian [Fri, 24 Jan 2020 06:24:40 +0000 (06:24 +0000)]
[ntp] Don't compile in the ssl routines into libevent if MK_OPENSSL is no

Most of ntpd still handles MK_OPENSSL ok, but the libevent import brought
in the SSL bufferevent routines without checking MK_OPENSSL.

This doesn't completely fix WITHOUT_CRYPTO=YES building, but hey, it's one
less broken thing.

4 years agoDrop "All Rights Reserved" from all libbe/bectl files
kevans [Fri, 24 Jan 2020 02:18:09 +0000 (02:18 +0000)]
Drop "All Rights Reserved" from all libbe/bectl files

I sent out an e-mail on 2020/01/21 with a plan to do this to Kyle, Rob, and
Wes; all parties have responded in the affirmative that it's OK to drop it
from these files.

4 years agorandom(3): Abstract routines into _r versions on explicit state
cem [Fri, 24 Jan 2020 01:39:29 +0000 (01:39 +0000)]
random(3): Abstract routines into _r versions on explicit state

The existing APIs simply pass the implicit global state to the _r variants.

No functional change.

Note that these routines are not exported from libc and are not intended to be
exported.  If someone wished to export them from libc (which I would
discourage), they should first be modified to match the inconsistent parameter
type / order of the glibc public interfaces of the same names.

I know Ravi will ask, so: the eventual goal of this series is to replace
rand(3) with the implementation from random(3) (D23290).  However, I'd like to
wait a bit longer on that one to see if more feedback emerges.

Reviewed by: kevans, markm
Differential Revision: https://reviews.freebsd.org/D23289

4 years agorandom(3): Abstract state into a single context object
cem [Fri, 24 Jan 2020 01:32:16 +0000 (01:32 +0000)]
random(3): Abstract state into a single context object

No functional change.

Reviewed by: kevans, markm
Differential Revision: https://reviews.freebsd.org/D23288

4 years agocpufreq(4): Fix missing MODULE_DEPEND on hwpstate_intel
cem [Thu, 23 Jan 2020 23:52:57 +0000 (23:52 +0000)]
cpufreq(4): Fix missing MODULE_DEPEND on hwpstate_intel

DRIVER_MODULE does not actually define a MODULE_VERSION, which is required
to satisfy a MODULE_DEPENDency.  Declare one explicitly in
hwpstate_intel(4).

Reported by: flo
X-MFC-With: r357002

4 years agoCorrect the return types of fueword*().
jhb [Thu, 23 Jan 2020 23:36:58 +0000 (23:36 +0000)]
Correct the return types of fueword*().

MFC after: 1 week
Sponsored by: DARPA

4 years agopf: Apply kif flags to new group members
kp [Thu, 23 Jan 2020 22:13:41 +0000 (22:13 +0000)]
pf: Apply kif flags to new group members

If we have a 'set skip on <ifgroup>' rule this flag it set on the group
kif, but must also be set on all members. pfctl does this when the rules
are set, but if groups are added afterwards we must also apply the flags
to the new member. If not, new group members will not be skipped until
the rules are reloaded.

Reported by: dvl@
Reviewed by: glebius@
Differential Revision: https://reviews.freebsd.org/D23254

4 years agoMerge ^/vendor/llvm-openmp/dist up to its last change, and resolve conflicts.
dim [Thu, 23 Jan 2020 21:42:26 +0000 (21:42 +0000)]
Merge ^/vendor/llvm-openmp/dist up to its last change, and resolve conflicts.

4 years agoMerge ^/vendor/lldb/dist up to its last change, and resolve conflicts.
dim [Thu, 23 Jan 2020 21:36:25 +0000 (21:36 +0000)]
Merge ^/vendor/lldb/dist up to its last change, and resolve conflicts.

4 years agoMerge ^/vendor/lld/dist up to its last change, and resolve conflicts.
dim [Thu, 23 Jan 2020 21:35:51 +0000 (21:35 +0000)]
Merge ^/vendor/lld/dist up to its last change, and resolve conflicts.

4 years agoadd MIPS-specific PT header ELF definitions
emaste [Thu, 23 Jan 2020 17:38:17 +0000 (17:38 +0000)]
add MIPS-specific PT header ELF definitions

Submitted by: David Carlier
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D19428

4 years agosparc64: Busy the TSB page before freeing it in pmap_release().
markj [Thu, 23 Jan 2020 17:18:58 +0000 (17:18 +0000)]
sparc64: Busy the TSB page before freeing it in pmap_release().

This is now required by vm_page_free().

PR: 243534
Reported and tested by: Michael Reim <kraileth@elderlinux.org>

4 years agoFix r356919.
kib [Thu, 23 Jan 2020 17:08:33 +0000 (17:08 +0000)]
Fix r356919.

Instead of waiting for pc_curthread which is overwritten by
init_secondary_tail(), wait for non-NULL pc_curpcb, to be set by the
first context switch.
Assert that pc_curpcb is not set too early.

Reported and tested by: rlibby
Reviewed by: markj, rlibby
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D23330

4 years agong_nat: Pass IPv6 packets through.
markj [Thu, 23 Jan 2020 16:45:48 +0000 (16:45 +0000)]
ng_nat: Pass IPv6 packets through.

ng_nat implements NAT for IPv4 traffic only.  When connected to an
ng_ether node it erroneously handled IPv6 packets as well.

This change is not sufficient: ng_nat does not do any validation of IP
packets in this mode, even though they have not yet passed through
ip_input().

PR: 243096
Reported by: Robert James Hernandez <rob@sarcasticadmin.com>
Reviewed by: julian
Differential Revision: https://reviews.freebsd.org/D23080

4 years agovm_map_submap(): Avoid unnecessary clipping.
markj [Thu, 23 Jan 2020 16:45:10 +0000 (16:45 +0000)]
vm_map_submap(): Avoid unnecessary clipping.

A submap can only be created from an entry spanning the entire request
range.  In particular, if vm_map_lookup_entry() returns false or the
returned entry contains "end".

Since the only use of submaps in FreeBSD is for the static pipe and
execve argument KVA maps, this has no functional effect.

Github PR: https://github.com/freebsd/freebsd/pull/420
Submitted by: Wuyang Chung <wuyang.chung1@gmail.com> (original)
Reviewed by: dougm, kib
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D23299

4 years agoWith MSI interrupts bge(4) just schedules taskqueue. Enter the network
glebius [Thu, 23 Jan 2020 16:36:58 +0000 (16:36 +0000)]
With MSI interrupts bge(4) just schedules taskqueue.  Enter the network
epoch in the taskqueue handler.

Reported by: kib

4 years agoSet td_oncpu before dropping the thread lock during a switch.
markj [Thu, 23 Jan 2020 16:24:51 +0000 (16:24 +0000)]
Set td_oncpu before dropping the thread lock during a switch.

After r355784 we no longer hold a thread's thread lock when switching it
out.  Preserve the previous synchronization protocol for td_oncpu by
setting it together with td_state, before dropping the thread lock
during a switch.

Reported and tested by: pho
Reviewed by: kib
Discussed with: jeff
Differential Revision: https://reviews.freebsd.org/D23270

4 years agoPrint missing ID_AA64PFR{0,1}_EL1 register fields.
markj [Thu, 23 Jan 2020 16:10:38 +0000 (16:10 +0000)]
Print missing ID_AA64PFR{0,1}_EL1 register fields.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D23213

4 years agoarm64: Don't enable interrupts in init_secondary().
markj [Thu, 23 Jan 2020 16:07:27 +0000 (16:07 +0000)]
arm64: Don't enable interrupts in init_secondary().

Doing so can cause deadlocks or panics during boot, if an interrupt
handler accesses uninitialized per-CPU scheduler structures.  This seems
to occur frequently when running under QEMU or AWS.  The idle threads
are set up to release a spinlock section and enable interrupts in
fork_exit(), so there is no need to enable interrupts earlier.

Reviewed by: kib
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D23328

4 years agoTag /usr/tests/local symlink with package=tests
emaste [Thu, 23 Jan 2020 15:59:30 +0000 (15:59 +0000)]
Tag /usr/tests/local symlink with package=tests

As with the rest of /usr/tests, so that it is handled correctly on
pkgbase-installed/updated systems.

Sponsored by: The FreeBSD Foundation

4 years agoApply r355819 to sparc64 - fix assertion failure after r355784
emaste [Thu, 23 Jan 2020 14:11:02 +0000 (14:11 +0000)]
Apply r355819 to sparc64 - fix assertion failure after r355784

From r355819:
Repeat the spinlock_enter/exit pattern from amd64 on other architectures
to fix an assert violation introduced in r355784.  Without this
spinlock_exit() may see owepreempt and switch before reducing the
spinlock count.  amd64 had been optimized to do a single critical
enter/exit regardless of the number of spinlocks which avoided the
problem and this optimization had not been applied elsewhere.

This is completely untested - I have no obsolete Sparc hardware - but
someone did try testing recent changes on sparc64 (PR 243534).

PR: 243534

4 years agoFix kernel-tags target.
nyan [Thu, 23 Jan 2020 13:56:12 +0000 (13:56 +0000)]
Fix kernel-tags target.
  - A depend-file is broken up into .depend.*.o files. [1]
  - Fix an assembly file support.

PR: 241746
Submitted by: leres [1]
MFC after: 1 week

4 years agovmxnet3: add support for RSS kernel option
avg [Thu, 23 Jan 2020 11:05:03 +0000 (11:05 +0000)]
vmxnet3: add support for RSS kernel option

We observe at least one problem: if a UDP socket is connect(2)-ed, then a
received packet that matches the connection cannot be matched to the
corresponding PCB because of an incorrect flow ID.  That was oberved for DNS
requests from the libc resolver.  We got this problem because FreeBSD
r343291 enabled code that can set rsstype of received packets to values
other than M_HASHTYPE_OPAQUE_HASH.  Earlier that code was under 'ifdef
notyet'.

The essence of this change is to use the system-wide RSS key instead of
some historic hardcoded key when the software RSS is enabled and it is
configured to use Toeplitz algorithm (the default).
In all other cases, the driver reports the opaque hash type for received
packets while still using Toeplitz algorithm with the internal key.

PR: 242890
Reviewed by: pkelsey
Sponsored by: Panzura
Differential Revision: https://reviews.freebsd.org/D23147

4 years agoFix build of stand/usb .
hselasky [Thu, 23 Jan 2020 10:40:34 +0000 (10:40 +0000)]
Fix build of stand/usb .

MFC after: 1 week
Sponsored by: Mellanox Technologies

4 years agovirtio_scsi: use max target ID plus one as the initiator ID
avg [Thu, 23 Jan 2020 10:13:56 +0000 (10:13 +0000)]
virtio_scsi: use max target ID plus one as the initiator ID

This bus does not really have a concept of the initiator ID, so use
a guaranteed dummy one that won't conflict with any real target.

This change fixes a problem with virtio_scsi on GCE where disks get
sequential target IDs starting from one.  If there are seven or more
disks, then a disk with the target ID of seven would not be discovered
by FreeBSD as that ID was reserved as the initiator ID -- see
scsi_scan_bus().

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

4 years agoBring indentation back to normal after r357038.
melifaro [Thu, 23 Jan 2020 09:46:45 +0000 (09:46 +0000)]
Bring indentation back to normal after r357038.
No functional changes.

MFC after: 3 weeks

4 years agoFix epoch-related panic in ipdivert, ensuring in_broadcast() is called
melifaro [Thu, 23 Jan 2020 09:14:28 +0000 (09:14 +0000)]
Fix epoch-related panic in ipdivert, ensuring in_broadcast() is called
 within epoch.

Simplify gigantic div_output() by splitting it into 3 functions,
 handling preliminary setup, remote "ip[6]_output" case and
 local "netisr" case. Leave original indenting in most parts to ease
 diff comparison.  Indentation will be fixed by a followup commit.

Reported by: Nick Hibma <nick at van-laarhoven.org>
Reviewed by: glebius
Differential Revision: https://reviews.freebsd.org/D23317

4 years agoMerge ^/vendor/llvm-libunwind/dist up to its last change, and resolve conflicts.
dim [Thu, 23 Jan 2020 07:10:23 +0000 (07:10 +0000)]
Merge ^/vendor/llvm-libunwind/dist up to its last change, and resolve conflicts.

4 years agoMerge ^/vendor/libc++/dist up to its last change, and resolve conflicts.
dim [Thu, 23 Jan 2020 07:06:18 +0000 (07:06 +0000)]
Merge ^/vendor/libc++/dist up to its last change, and resolve conflicts.

4 years ago(fault 9/9) Move zero fill into a dedicated function to make the object lock
jeff [Thu, 23 Jan 2020 05:23:37 +0000 (05:23 +0000)]
(fault 9/9) Move zero fill into a dedicated function to make the object lock
state more clear.

Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D23326

4 years ago(fault 8/9) Restructure some code to reduce duplication and simplify flow
jeff [Thu, 23 Jan 2020 05:22:02 +0000 (05:22 +0000)]
(fault 8/9) Restructure some code to reduce duplication and simplify flow
control.

Reviewed by: dougm, kib, markj
Differential Revision: https://reviews.freebsd.org/D23321

4 years ago(fault 7/9) Move fault population and allocation into a dedicated function
jeff [Thu, 23 Jan 2020 05:19:39 +0000 (05:19 +0000)]
(fault 7/9) Move fault population and allocation into a dedicated function

Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D23320

4 years ago(fault 6/9) Move getpages and associated logic into a dedicated function.
jeff [Thu, 23 Jan 2020 05:18:00 +0000 (05:18 +0000)]
(fault 6/9) Move getpages and associated logic into a dedicated function.

Reviewed by: kib
Differential Revision: https://reviews.freebsd.org/D23311

4 years ago(fault 5/9) Move the backing_object traversal into a dedicated function.
jeff [Thu, 23 Jan 2020 05:14:41 +0000 (05:14 +0000)]
(fault 5/9)  Move the backing_object traversal into a dedicated function.

Reviewed by: dougm, kib, markj
Differential Revision: https://reviews.freebsd.org/D23310

4 years ago(fault 4/9) Move copy-on-write into a dedicated function.
jeff [Thu, 23 Jan 2020 05:11:01 +0000 (05:11 +0000)]
(fault 4/9) Move copy-on-write into a dedicated function.

Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D23304

4 years ago(fault 3/9) Move map relookup into a dedicated function.
jeff [Thu, 23 Jan 2020 05:07:01 +0000 (05:07 +0000)]
(fault 3/9) Move map relookup into a dedicated function.

Add a new VM return code KERN_RESTART which means, deallocate and restart in
fault.

Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D23303

4 years ago(fault 2/9) Move map lookup into a dedicated function.
jeff [Thu, 23 Jan 2020 05:05:39 +0000 (05:05 +0000)]
(fault 2/9) Move map lookup into a dedicated function.

Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D23302

4 years ago(fault 1/9) Move a handful of stack variables into the faultstate.
jeff [Thu, 23 Jan 2020 05:03:34 +0000 (05:03 +0000)]
(fault 1/9) Move a handful of stack variables into the faultstate.

This additionally fixes a potential bug/pessimization where we could fail to
reload the original fault_type on restart.

Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D23301

4 years agouma: fix zone domain overlaying pcpu cache with disabled cpus
rlibby [Thu, 23 Jan 2020 04:56:38 +0000 (04:56 +0000)]
uma: fix zone domain overlaying pcpu cache with disabled cpus

UMA zone structures have two arrays at the end which are sized according
to the machine: an array of CPU count length, and an array of NUMA
domain count length.  The CPU counting was wrong in the case where some
CPUs are disabled (when mp_ncpus != mp_maxid + 1), and this caused the
second array to be overlaid with the first.

Reported by: olivier
Reviewed by: jeff, markj
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D23318

4 years agouma: report leaks more accurately
rlibby [Thu, 23 Jan 2020 04:56:34 +0000 (04:56 +0000)]
uma: report leaks more accurately

Previously UMA had some false negatives in the leak report at keg
destruction time, where it only reported leaks if there were free items
in the slab layer (rather than allocated items), which notably would not
be true for single-item slabs (large items).  Now, report a leak if
there are any allocated pages, and calculate and report the number of
allocated items rather than free items.

Reviewed by: jeff, markj
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D23275

4 years agoConsistently use busy and vm_page_valid() rather than touching page bits
jeff [Thu, 23 Jan 2020 04:54:49 +0000 (04:54 +0000)]
Consistently use busy and vm_page_valid() rather than touching page bits
directly.  This improves API compliance, asserts, etc.

Reviewed by: kib, markj
Differential Revision: https://reviews.freebsd.org/D23283

4 years agoFix 32-bit build post r357002.
cy [Thu, 23 Jan 2020 03:38:41 +0000 (03:38 +0000)]
Fix 32-bit build post r357002.

4 years agoSome architectures with DMAP still consume boot kva. Simplify the test for
jeff [Thu, 23 Jan 2020 03:37:35 +0000 (03:37 +0000)]
Some architectures with DMAP still consume boot kva.  Simplify the test for
claiming kva in uma_startup2() to handle this.

Reported by: bdragon

4 years agoBlock the thread lock in sched_throw() and use cpu_switch() to unblock
jeff [Thu, 23 Jan 2020 03:36:50 +0000 (03:36 +0000)]
Block the thread lock in sched_throw() and use cpu_switch() to unblock
it.  The introduction of lockless switch in r355784 created a race to
re-use the exiting thread that was only possible to hit on a hypervisor.

Reported/Tested by: rlibby
Discussed with: rlibby, jhb

4 years agoSince now drivers that support pfil run their interrupts in the network
glebius [Thu, 23 Jan 2020 01:49:22 +0000 (01:49 +0000)]
Since now drivers that support pfil run their interrupts in the network
epoch, stop entering it in pfil_run_hooks().  Assert the epoch there.

4 years agoStop entering the network epoch in ether_input(), unless driver
glebius [Thu, 23 Jan 2020 01:47:43 +0000 (01:47 +0000)]
Stop entering the network epoch in ether_input(), unless driver
is marked with IFF_NEEDSEPOCH.

4 years agoThis is Ethernet driver so mark the interrupt appropriately.
glebius [Thu, 23 Jan 2020 01:46:05 +0000 (01:46 +0000)]
This is Ethernet driver so mark the interrupt appropriately.

4 years agoIntroduce flag IFF_NEEDSEPOCH that marks Ethernet interfaces that
glebius [Thu, 23 Jan 2020 01:41:09 +0000 (01:41 +0000)]
Introduce flag IFF_NEEDSEPOCH that marks Ethernet interfaces that
supposedly may call into ether_input() without network epoch.

They all need to be reviewed before 13.0-RELEASE.  Some may need
be fixed.  The flag is not planned to be used in the kernel for
a long time.

4 years agotap(4) calls ether_input() in context of write(2). Enter network
glebius [Thu, 23 Jan 2020 01:38:51 +0000 (01:38 +0000)]
tap(4) calls ether_input() in context of write(2).  Enter network
epoch here.

The tun(4) side doesn't need this, as netisr code will take care.

4 years agoIn netmap() call ether_input() within the network epoch.
glebius [Thu, 23 Jan 2020 01:35:02 +0000 (01:35 +0000)]
In netmap() call ether_input() within the network epoch.

4 years agoDEVICE_POLLING is an alternative to network interrupts and also
glebius [Thu, 23 Jan 2020 01:30:50 +0000 (01:30 +0000)]
DEVICE_POLLING is an alternative to network interrupts and also
needs to enter epoch.  Assert that in the netisr_poll() and do
the work for the idle poll routine.

4 years agoEnter network epoch in iflib rxeof task.
glebius [Thu, 23 Jan 2020 01:27:58 +0000 (01:27 +0000)]
Enter network epoch in iflib rxeof task.

In upcoming changes ether_input() is going to be changed not
to enter the network epoch.  It is going to be responsibility
of network interrupt.  In case of iflib - its taskqueue.

4 years agoMark swi_net() as INTR_TYPE_NET and stop entering epoch there.
glebius [Thu, 23 Jan 2020 01:25:32 +0000 (01:25 +0000)]
Mark swi_net() as INTR_TYPE_NET and stop entering epoch there.

4 years agoEnter the network epoch for interrupt handlers of INTR_TYPE_NET.
glebius [Thu, 23 Jan 2020 01:24:47 +0000 (01:24 +0000)]
Enter the network epoch for interrupt handlers of INTR_TYPE_NET.

Provide tunable to limit how many times handlers may be executed
without reentering epoch.

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

4 years agoAdd ie_hflags to struct intr_event, which accumulates flags from all
glebius [Thu, 23 Jan 2020 01:20:59 +0000 (01:20 +0000)]
Add ie_hflags to struct intr_event, which accumulates flags from all
handlers on this event.  For now handle only IH_ENTROPY in that manner.

4 years agocpufreq(4): Add support for Intel Speed Shift
cem [Wed, 22 Jan 2020 23:28:42 +0000 (23:28 +0000)]
cpufreq(4): Add support for Intel Speed Shift

Intel Speed Shift is Intel's technology to control frequency in hardware,
with hints from software.

Let's get a working version of this in the tree and we can refine it from
here.

Submitted by: bwidawsk, scottph
Reviewed by: bcr (manpages), myself
Discussed with: jhb, kib (earlier versions)
With feedback from: Greg V, gallatin, freebsdnewbie AT freenet.de
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D18028

4 years agoMerge ^/vendor/compiler-rt/dist up to its last change, and resolve conflicts.
dim [Wed, 22 Jan 2020 22:01:43 +0000 (22:01 +0000)]
Merge ^/vendor/compiler-rt/dist up to its last change, and resolve conflicts.

4 years agoMerge ^/vendor/clang/dist up to its last change, and resolve conflicts.
dim [Wed, 22 Jan 2020 21:31:48 +0000 (21:31 +0000)]
Merge ^/vendor/clang/dist up to its last change, and resolve conflicts.

4 years agoReduce diff between stock DWARFContext.cpp and ours.
dim [Wed, 22 Jan 2020 21:22:34 +0000 (21:22 +0000)]
Reduce diff between stock DWARFContext.cpp and ours.

4 years agoRemove support for auto-selecting an external binutils.
jhb [Wed, 22 Jan 2020 21:21:24 +0000 (21:21 +0000)]
Remove support for auto-selecting an external binutils.

All of the in-tree architectures not supported by in-tree binutils are
supported by lld, so the condition is now always false.  It also
didn't fully work since the external binutils are installed into a
directory that uses the host's OS version, not the target OS version.

Reviewed by: emaste, imp
Differential Revision: https://reviews.freebsd.org/D23294