]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
4 years agoCentralize adding OBJCOPY=${XOBJCOPY} to LIB32WMAKEFLAGS.
brooks [Fri, 11 Oct 2019 21:28:02 +0000 (21:28 +0000)]
Centralize adding OBJCOPY=${XOBJCOPY} to LIB32WMAKEFLAGS.

Reviewed by: emaste, imp
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D21983

4 years agocoredump_phnum_test: handle full file system gracefully
vangyzen [Fri, 11 Oct 2019 21:23:46 +0000 (21:23 +0000)]
coredump_phnum_test: handle full file system gracefully

Skip the test if the file system is full.  That's out of scope
of this test.

MFC after: 1 week
Sponsored by: Dell EMC Isilon

4 years agodevfs_vptocnp(): correct the component name when node is not at top.
kib [Fri, 11 Oct 2019 18:41:24 +0000 (18:41 +0000)]
devfs_vptocnp(): correct the component name when node is not at top.

Node' cdp.si_name is the full path as provided by make_dev(9), it
should not be returned by VOP_VPTOCNP() when only the last component
is requested.  Use the dirent entry instead.

With this note, handling of VDIR and VCHR nodes only differs in
handling of root vnode, which simplifies and unifies the logic.

Reported by: Li, Zhichao1 <Zhichao_Li1@Dell.com>
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

4 years agoPlug the rest of undef behavior places that were missed in r337456.
kib [Fri, 11 Oct 2019 18:37:02 +0000 (18:37 +0000)]
Plug the rest of undef behavior places that were missed in r337456.

There are three more places in msdosfs_fat.c which might shift one
into the sign bit.  While there, fix formatting of KASSERTs.

Sponsored by: The FreeBSD Foundation
MFC after: 1 week

4 years agoRemove an unneeded include of opt_sctp.h.
markj [Fri, 11 Oct 2019 17:23:23 +0000 (17:23 +0000)]
Remove an unneeded include of opt_sctp.h.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation

4 years agomountroot: run statfs after mounting devfs
kp [Fri, 11 Oct 2019 17:04:38 +0000 (17:04 +0000)]
mountroot: run statfs after mounting devfs

The usual flow for mounting a file system is to VFS_MOUNT() and then
immediately VFS_STATFS().

That's not done in vfs_mountroot_devfs(), which means the
mp->mnt_stat.f_iosize field is not correctly populated, which in turn
causes us to mark valid aio operations as unsafe (because the io size is
set to 0), ultimately causing the aio_test:md_waitcomplete test to fail.

Reviewed by: mckusick
MFC after: 1 week
Sponsored by: Axiado
Differential Revision: https://reviews.freebsd.org/D21897

4 years agofix up r353340, don't assume that fcmpset has strong semantics
avg [Fri, 11 Oct 2019 17:01:02 +0000 (17:01 +0000)]
fix up r353340, don't assume that fcmpset has strong semantics

fcmpset can have two kinds of semantics, weak and strong.
For practical purposes, strong semantics means that if fcmpset fails
then the reported current value is always different from the expected
value.  Weak semantics means that the reported current value may be the
same as the expected value even though fcmpset failed.  That's a so
called "sporadic" failure.

I originally implemented atomic_cas expecting strong semantics, but many
platforms actually have weak one.

Reported by: pkubaj (not confirmed if same issue)
Discussed with: kib, mjg
MFC after: 19 days
X-MFC with: r353340

4 years agoCall devmap_bootstrap in RISC-V machine dependent code to actually create
philip [Fri, 11 Oct 2019 16:28:46 +0000 (16:28 +0000)]
Call devmap_bootstrap in RISC-V machine dependent code to actually create
the static device mappings.

While RISC-V support was added to subr_devmap.c in r298631, it was never
actually initialised in the machine dependent code.

Submitted by: Nicholas O'Brien <nickisobrien_gmail.com>
Reviewed by: br, kp
Sponsored by: Axiado
Differential Revision: https://reviews.freebsd.org/D21975

4 years agoIncrease the default VMSIZE for raw, qcow2, vhd, and vmdk virtual
gjb [Fri, 11 Oct 2019 16:01:30 +0000 (16:01 +0000)]
Increase the default VMSIZE for raw, qcow2, vhd, and vmdk virtual
machine images due to 'filesystem full' failures.

Sponsored by: Rubicon Communications, LLC (Netgate)

4 years agoMFZol: Fix performance of "zfs recv" with many deletions
asomers [Fri, 11 Oct 2019 14:59:28 +0000 (14:59 +0000)]
MFZol: Fix performance of "zfs recv" with many deletions

This patch fixes 2 issues with the DMU free throttle implemented
in dmu_free_long_range(). The first issue is that get_next_chunk()
was calculating the number of L1 blocks the free would dirty
incorrectly. In some cases involving extremely large files, this
code would greatly overestimate the number of affected L1 blocks,
causing excessive calls to txg_wait_open(). This patch corrects
the calculation.

The second issue is that the free throttle uses the total number
of free'd blocks in all (open, quiescing, and syncing) txgs to
determine whether to throttle. This causes large frees (such as
those created by the first issue) to cause 4 txg syncs before
any further frees were allowed to proceed. This patch ensures
that the accounting is done entirely in a per-txg fashion, so
that frees from a given txg don't affect those that immediately
follow it.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Signed-off-by: Tom Caputi <tcaputi@datto.com>
zfsonlinux/zfs@f4c594da94d856c422512a54e48070f890b2685b

Freeing throttle should account for holes

Deletion throttle currently does not account for holes in a file.
This means that it can activate when it shouldn't.
To fix it we switch the throttle to be based on the number of
L1 blocks we will have to dirty when freeing

Reviewed-by: Tom Caputi <tcaputi@datto.com>
Reviewed-by: Matt Ahrens <mahrens@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Alek Pinchuk <apinchuk@datto.com>
zfsonlinux/zfs@65282ee9e06b130f1f0169baf5d9bf0dd8fc1ef9

Submitted by: Alek Pinchuk <pinchuk.alek@gmail.com>
Reviewed by: allanjude
MFC after: 2 weeks
Sponsored by: Axcient
Differential Revision: https://reviews.freebsd.org/D21895

4 years agoamd64 pmap: handle fictitious mappigns with addresses beyond pv_table
mjg [Fri, 11 Oct 2019 14:57:47 +0000 (14:57 +0000)]
amd64 pmap: handle fictitious mappigns with addresses beyond pv_table

There are provisions to do it already with pv_dummy, but new locking code
did not account for it. Previous one did not have the problem because
it hashed the address into the lock array.

While here annotate common vars with __read_mostly and __exclusive_cache_line.

Reported by: Thomas Laus
Tesetd by: jkim, Thomas Laus
Fixes: r353149 ("amd64 pmap: implement per-superpage locks")
Sponsored by: The FreeBSD Foundation

4 years agogcore: Add powerpc64 32-bit gcore support
jhibbits [Fri, 11 Oct 2019 14:17:31 +0000 (14:17 +0000)]
gcore: Add powerpc64 32-bit gcore support

Summary: Add the necessary bits for taking 32-bit gcore coredumps on powerpc64.

Reviewed by: luporl
Differential Revision: https://reviews.freebsd.org/D21954

4 years agogcore: Add aarch64 32-bit core support
jhibbits [Fri, 11 Oct 2019 14:15:50 +0000 (14:15 +0000)]
gcore: Add aarch64 32-bit core support

Summary: Add trivial 32-bit arm cores on aarch64 support for gcore.  This
doesn't handle fpregs.

Reviewed by: #arm, andrew
Sponsored by: Juniper Networks, Inc
Differential Revision: https://reviews.freebsd.org/D21947

4 years agoDocument that aarch64 can now run armv6/armv7 binaries, but won't however
cognet [Fri, 11 Oct 2019 13:34:09 +0000 (13:34 +0000)]
Document that aarch64 can now run armv6/armv7 binaries, but won't however
run armv5 binaries.

4 years agoman4/Makefile: fix sorting for a number of entries starting with 'v'
avg [Fri, 11 Oct 2019 12:04:38 +0000 (12:04 +0000)]
man4/Makefile: fix sorting for a number of entries starting with 'v'

MFC after:  1 week

4 years agofix a typo in superio.4
avg [Fri, 11 Oct 2019 11:31:45 +0000 (11:31 +0000)]
fix a typo in superio.4

Reported by: bjk
MFC after: 2 weeks
X-MFC with: r353432

4 years agoadd superio.4 and superio.9 manual pages
avg [Fri, 11 Oct 2019 11:13:47 +0000 (11:13 +0000)]
add superio.4 and superio.9  manual pages

This adds basic documentation on what the superio driver is and how
other drivers can interact with it.  I decided to also document
superio's ivar accessors.

Reviewed by: bcr, brueffer (both manual contents only)
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D21958

4 years agoInstall the libopencsd version header (other headers now depend on it).
br [Fri, 11 Oct 2019 09:18:45 +0000 (09:18 +0000)]
Install the libopencsd version header (other headers now depend on it).

Sponsored by: DARPA, AFRL

4 years agoFix braino in r353429
cem [Fri, 11 Oct 2019 06:02:03 +0000 (06:02 +0000)]
Fix braino in r353429

cy@ points out that I got parameter order backwards between definition and
invocation of the helper function.  He is totally correct.  The earlier
version of this patch predated the XFree column so this is one I introduced,
rather than the original author.

Submitted by: cy
Reported by: cy
X-MFC-With: r353429

4 years agoddb: Add CSV option, sorting to 'show (malloc|uma)'
cem [Fri, 11 Oct 2019 01:31:31 +0000 (01:31 +0000)]
ddb: Add CSV option, sorting to 'show (malloc|uma)'

Add /i option for machine-parseable CSV output.  This allows ready copy/
pasting into more sophisticated tooling outside of DDB.

Add total zone size ("Memory Use") as a new column for UMA.

For both, sort the displayed list on size (print the largest zones/types
first).  This is handy for quickly diagnosing "where has my memory gone?" at
a high level.

Submitted by: Emily Pettigrew <Emily.Pettigrew AT isilon.com> (earlier version)
Sponsored by: Dell EMC Isilon

4 years agoDon't use if_maddr_rlock() in 802.11, use epoch(9) directly instead.
glebius [Thu, 10 Oct 2019 23:55:33 +0000 (23:55 +0000)]
Don't use if_maddr_rlock() in 802.11, use epoch(9) directly instead.

4 years agoDon't use if_maddr_rlock() in sppp(4), use epoch(9) directly instead.
glebius [Thu, 10 Oct 2019 23:54:37 +0000 (23:54 +0000)]
Don't use if_maddr_rlock() in sppp(4), use epoch(9) directly instead.

4 years agoDon't use if_maddr_rlock() in tuntap(4), use epoch(9) directly instead.
glebius [Thu, 10 Oct 2019 23:51:14 +0000 (23:51 +0000)]
Don't use if_maddr_rlock() in tuntap(4), use epoch(9) directly instead.

4 years agoInterface output method must be executed in network epoch, so if_addr_rlock()
glebius [Thu, 10 Oct 2019 23:50:32 +0000 (23:50 +0000)]
Interface output method must be executed in network epoch, so if_addr_rlock()
isn't needed here.

4 years agoDon't use if_maddr_rlock() in ng_eiface(4), use epoch(9) directly instead.
glebius [Thu, 10 Oct 2019 23:49:19 +0000 (23:49 +0000)]
Don't use if_maddr_rlock() in ng_eiface(4), use epoch(9) directly instead.

4 years agoThe divert(4) module must always be running in network epoch, thus
glebius [Thu, 10 Oct 2019 23:48:42 +0000 (23:48 +0000)]
The divert(4) module must always be running in network epoch, thus
call to if_addr_rlock() isn't needed.

4 years agoDon't use if_maddr_rlock() in ng_ether(4), use epoch(9) directly instead.
glebius [Thu, 10 Oct 2019 23:47:14 +0000 (23:47 +0000)]
Don't use if_maddr_rlock() in ng_ether(4), use epoch(9) directly instead.

4 years agoAdd two extra functions that basically give count of addresses
glebius [Thu, 10 Oct 2019 23:44:56 +0000 (23:44 +0000)]
Add two extra functions that basically give count of addresses
on interface.  Such function could been implemented on top of
the if_foreach_llm?addr(), but several drivers need counting,
so avoid copy-n-paste inside the drivers.

4 years agoProvide new KPI for network drivers to access lists of interface
glebius [Thu, 10 Oct 2019 23:42:55 +0000 (23:42 +0000)]
Provide new KPI for network drivers to access lists of interface
addresses.  The KPI doesn't reveal neither how addresses are stored,
how the access to them is synchronized, neither reveal struct ifaddr
and struct ifmaddr.

Reviewed by: gallatin, erj, hselasky, philip, stevek
Differential Revision: https://reviews.freebsd.org/D21943

4 years agonvdimm(4): Calculate and save memattr once; it never changes
cem [Thu, 10 Oct 2019 22:49:45 +0000 (22:49 +0000)]
nvdimm(4): Calculate and save memattr once; it never changes

Refactor nvdimm_spa_memattr() routine and callers to just save the value at
initialization and use the value directly.  The reference value from NFIT,
MemoryMapping, is read only once, so the associated memattr could never
change.

No functional change.

Sponsored by: Dell EMC Isilon

4 years agoPull in r374444 from upstream lldb trunk (by me):
dim [Thu, 10 Oct 2019 20:33:55 +0000 (20:33 +0000)]
Pull in r374444 from upstream lldb trunk (by me):

  Fix process launch failure on FreeBSD after r365761

  Summary:
  After rLLDB365761, and with `LLVM_ENABLE_ABI_BREAKING_CHECKS`
  enabled, launching any process on FreeBSD crashes lldb with:

  ```
  Expected<T> must be checked before access or destruction.
  Expected<T> value was in success state. (Note: Expected<T> values in
  success mode must still be checked prior to being destroyed).
  ```

  This is because `m_operation_thread` and `m_monitor_thread` were
  wrapped in `llvm::Expected<>`, but this requires the objects to be
  correctly initialized before accessing them.

  To fix the crashes, use `llvm::Optional<>` for the members (as
  indicated by labath), and use local variables to store the return
  values of `LaunchThread` and `StartMonitoringChildProcess`.  Then,
  only assign to the member variables after checking if the return
  values indicated success.

  Reviewers: devnexen, emaste, MaskRay, mgorny

  Reviewed By: devnexen

  Subscribers: jfb, labath, krytarowski, lldb-commits

  Differential Revision: https://reviews.llvm.org/D68723

PR: 241137
MFC after: 1 month
X-MFC-With: r353358

4 years agoRevert r353363 in preparation for applying upstream fix:
dim [Thu, 10 Oct 2019 20:30:54 +0000 (20:30 +0000)]
Revert r353363 in preparation for applying upstream fix:

Put in a band-aid fix for lldb 9 exiting with "Expected<T> must be
checked before access or destruction" when launching executables, while
we sort this out with upstream.

PR: 241137
MFC after: 1 month
X-MFC-With: r353358

4 years agoTypo out->in.
kib [Thu, 10 Oct 2019 18:52:24 +0000 (18:52 +0000)]
Typo out->in.

Sponsored by: The FreeBSD Foundation
MFC after: 3 days

4 years agoFix -DNO_CLEAN build across r353340 and r353381
brooks [Thu, 10 Oct 2019 16:29:13 +0000 (16:29 +0000)]
Fix -DNO_CLEAN build across r353340 and r353381

opensolaris_atomic.S is now only used on i386 with opensolaris_atomic.c
used on other platforms.  After r353381 it doesn't exist on those
platforms so the stale dependency would result in a build error.

4 years agoRemove a stale file left after merging.
br [Thu, 10 Oct 2019 13:44:12 +0000 (13:44 +0000)]
Remove a stale file left after merging.

Sponsored by: DARPA, AFRL

4 years agoUpdate ARM CoreSight trace decoder library.
br [Thu, 10 Oct 2019 13:30:13 +0000 (13:30 +0000)]
Update ARM CoreSight trace decoder library.

Its latest version merged from:
^/vendor/opencsd/a1961c91b02a92f3c6ed8b145c636ac4c5565aca

Sponsored by: DARPA, AFRL

4 years agoUpdate Intel Processor Trace decoder library.
br [Thu, 10 Oct 2019 12:46:34 +0000 (12:46 +0000)]
Update Intel Processor Trace decoder library.

Its latest version merged from:
^/vendor/processor-trace/892e12c5a27bda5806d1e63269986bb4171b5a8b

Sponsored by: DARPA, AFRL

4 years agoremove unrelated files accidentally committed in r353381
avg [Thu, 10 Oct 2019 07:41:42 +0000 (07:41 +0000)]
remove unrelated files accidentally committed in r353381

4 years agoemulate illumos membar_producer with atomic_thread_fence_rel
avg [Thu, 10 Oct 2019 07:39:41 +0000 (07:39 +0000)]
emulate illumos membar_producer with atomic_thread_fence_rel

membar_producer is supposed to be a store-store barrier.
Also, in the code that FreeBSD has ported from illumos membar_producer
is used only with regular stores to regular memory (with respect to
caching).

We do not have an MI primitive for the store-store barrier, so
atomic_thread_fence_rel is the closest we have as it provides
(load | store) -> store barrier.

Previously, membar_producer was an empty function call on all 32-bit
arm-s, 32-bit powerpc, riscv and all mips variants.  I think that it was
inadequate.
On other platforms, such as amd64, arm64, i386, powerpc64, sparc64,
membar_producer was implemented using stronger primitives than required
for a store-store barrier with respect to regular memory access.
For example, it used sfence on amd64 and lock-ed nop in i386 (despite TSO).
On powerpc64 we now use recommended lwsync instead of eieio.
On sparc64 FreeBSD uses TSO mode.
On arm64/aarch64 we now use dmb sy instead of dmb ish.  Not sure if this
is an improvement, actually.

After this change we can drop opensolaris_atomic.S for aarch64, amd64,
powerpc64 and sparc64 as all required atomic operations have either
direct or light-weight mapping to FreeBSD native atomic operations.

Discussed with: kib
MFC after: 4 weeks

4 years agoThis driver attaches to the Intel VMD drive and connects a new PCI domain
ambrisko [Thu, 10 Oct 2019 03:12:17 +0000 (03:12 +0000)]
This driver attaches to the Intel VMD drive and connects a new PCI domain
starting at the max. domain, and then work down.  Then existing FreeBSD
drivers will attach.  Interrupt routing from the VMD MSI-X to the NVME
drive is not well known, so any interrupt is sent to all children that
register.

VROC used Intel meta data so graid(8) works with it. However, graid(8)
supports RAID 0,1,10 for read and write. I have some early code to
support writes with RAID 5.  Note that RAID 5 can have life issues
with SSDs since it can cause write amplification from updating the parity
data.

Hot plug support needs a change to skip the following check to work:
if (pcib_request_feature(dev, PCI_FEATURE_HP) != 0) {
in sys/dev/pci/pci_pci.c.

Looked at by: imp, rpokala, bcr
Differential Revision: https://reviews.freebsd.org/D21383

4 years agozfs: multiple improvements to the zpool_add tests
asomers [Thu, 10 Oct 2019 02:17:45 +0000 (02:17 +0000)]
zfs: multiple improvements to the zpool_add tests

* Don't partition a disk if too few are available.  Just rely on Kyua to
  ensure that the tests aren't run with insufficient disks.

* Remove redundant cleanup steps

* In zpool_add_003_pos, store the temporary file in $PWD so Kyua will
  automatically clean it up.

* Update zpool_add_005_pos to use dumpon instead of dumpadm.  This test had
  never been ported to FreeBSD.

* In zpool_add_005_pos, don't format the dump disk with UFS.  That was
  pointless.

MFC after: 2 weeks
Sponsored by: Axcient

4 years agoAdd opt_kern_tls.h to the sources from t4_tom.ko.
jhb [Wed, 9 Oct 2019 23:35:42 +0000 (23:35 +0000)]
Add opt_kern_tls.h to the sources from t4_tom.ko.

Missed in r353328.

Sponsored by: Chelsio Communications

4 years agodocument how to apply altq to vlan interfaces w/ pf.
jmg [Wed, 9 Oct 2019 21:48:00 +0000 (21:48 +0000)]
document how to apply altq to vlan interfaces w/ pf.

Thanks to jhb for pointing out that this might possibly work.

PR: 94182

4 years agoAdd note about universe changes to arch and the need to add
imp [Wed, 9 Oct 2019 21:45:40 +0000 (21:45 +0000)]
Add note about universe changes to arch and the need to add
MAKE_OBSOLETE_GCC to get old behavior on universe.

4 years agoAdd UPDATING entry for universe changes
imp [Wed, 9 Oct 2019 21:45:34 +0000 (21:45 +0000)]
Add UPDATING entry for universe changes

Suggested by: emaste@

4 years agoDon't free the cursor boundary tag during vmem_destroy().
jhb [Wed, 9 Oct 2019 21:20:39 +0000 (21:20 +0000)]
Don't free the cursor boundary tag during vmem_destroy().

The cursor boundary tag is statically allocated in the vmem instead of
from the vmem_bt_zone.  Explicitly remove it from the vmem's segment
list in vmem_destroy before freeing all the segments from the vmem.

Reviewed by: markj
MFC after: 1 week
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D21953

4 years agoWordsmith and simplify
imp [Wed, 9 Oct 2019 21:18:46 +0000 (21:18 +0000)]
Wordsmith and simplify

Simplify expressions as suggested by jhb. The extra indirection made
sense in earlier versions of this patch, but not the final one.

While here, apply suggestion from emaste for wording of universe.
Also wordsmith awkwardly worded comment about when we effectively
neuter the universe build for an architecture.

Once llvm 9.0 has been vetted for mips and powerpc, I'll take them out
of these lists.

4 years agoRemove adapters from t4_list earlier during detach.
jhb [Wed, 9 Oct 2019 21:08:51 +0000 (21:08 +0000)]
Remove adapters from t4_list earlier during detach.

This ensures the clip task won't race with t4_destroy_clip_table.

While here, make some mutex destroys unconditional since attach always
initializes them.

Reviewed by: np
MFC after: 1 week
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D21952

4 years agoFix casting error from newer gcc
imp [Wed, 9 Oct 2019 21:02:06 +0000 (21:02 +0000)]
Fix casting error from newer gcc

Cast the pointers to (uintptr_t) before assigning to type
uint64_t. This eliminates an error from gcc when we cast the pointer
to a larger integer type.

4 years agoDon't compile old gcc 4.2.1 archs by default in universe/tinderbox.
imp [Wed, 9 Oct 2019 20:59:10 +0000 (20:59 +0000)]
Don't compile old gcc 4.2.1 archs by default in universe/tinderbox.

Only compile clang supporting architectures of amd64, arm, arm64,
i386, and riscv as part of universe. Compile the other architectures
if MAKE_OBSOLETE_GCC is defined. In all cases, explicit lists of
architectures in TARGETS= on the command line override.

For mips, powerpc and sparc64, do the same thing we do for risvc when
MAKE_OBSOLETE_GCC isn't defined and short-circuit their universe build
with an echo saying to install the xtoolchain port or pkg.

PR: 241134
Discussed on: arch@ (https://lists.freebsd.org/pipermail/freebsd-arch/2019-August/019674.html)
Differential Revision: https://reviews.freebsd.org/D21942

4 years agoZFS: fix the zpool_add_010_pos test
asomers [Wed, 9 Oct 2019 20:16:40 +0000 (20:16 +0000)]
ZFS: fix the zpool_add_010_pos test

The test is necessarily racy, because it depends on being able to complete a
"zpool add" before a previous resilver finishes.  But it was racier than it
needed to be.  Move the first "zpool add" to before the resilver starts.

MFC after: 2 weeks
Sponsored by: Axcient

4 years agoAdd a missing macro for the previous commit (IS_INADDR_ANY()).
jlh [Wed, 9 Oct 2019 20:05:14 +0000 (20:05 +0000)]
Add a missing macro for the previous commit (IS_INADDR_ANY()).

4 years agoUse inet_ntop(3) instead of inet_ntoa(3) for AF_INET socket details.
jlh [Wed, 9 Oct 2019 20:01:23 +0000 (20:01 +0000)]
Use inet_ntop(3) instead of inet_ntoa(3) for AF_INET socket details.

This also makes the code closer to the one used for AF_INET6.

4 years agoPut in a band-aid fix for lldb 9 exiting with "Expected<T> must be
dim [Wed, 9 Oct 2019 19:51:41 +0000 (19:51 +0000)]
Put in a band-aid fix for lldb 9 exiting with "Expected<T> must be
checked before access or destruction" when launching executables, while
we sort this out with upstream.

Reported by: jbeich
PR: 241137
MFC after: 1 month
X-MFC-With: r353358

4 years agoFix the compilation workaround so it's not entirely dead code - clang
trasz [Wed, 9 Oct 2019 18:46:56 +0000 (18:46 +0000)]
Fix the compilation workaround so it's not entirely dead code - clang
also defines __GNUC__.

Submitted by: cem
Sponsored by: Klara Inc, Netflix

4 years agoZFS: in the tests, don't override PWD
asomers [Wed, 9 Oct 2019 17:36:57 +0000 (17:36 +0000)]
ZFS: in the tests, don't override PWD

The ZFS test suite was overriding the common $PWD variable with the path to
the pwd command, even though no test wanted to use it that way.  Most tests
didn't notice, because ksh93 eventually restored it to its proper meaning.

MFC after: 2 weeks
Sponsored by: Axcient

4 years agoZFS: multiple fixes to the zpool_import tests
asomers [Wed, 9 Oct 2019 17:24:09 +0000 (17:24 +0000)]
ZFS: multiple fixes to the zpool_import tests

* Don't create a UFS mountpoint just to store some temporary files.  The
  tests should always be executed with a sufficiently large TMPDIR.
  Creating the UFS mountpoint is not only unneccessary, but it slowed
  zpool_import_missing_002_pos greatly, because that test moves large files
  between TMPDIR and the UFS mountpoint.  This change also allows many of
  the tests to be executed with just a single test disk, instead of two.

* Move zpool_import_missing_002_pos's backup device dir from / to $PWD to
  prevent cross-device moves.  On my system, these two changes improved that
  test's speed by 39x.  It should also prevent ENOSPC errors seen in CI.

* If insufficient disks are available, don't try to partition one of them.
  Just rely on Kyua to skip the test.  Users who care will configure Kyua
  with sufficient disks.

MFC after: 2 weeks
Sponsored by: Axcient

4 years agoFactor out TCP rateset destruction code.
hselasky [Wed, 9 Oct 2019 17:08:40 +0000 (17:08 +0000)]
Factor out TCP rateset destruction code.

Ensure the epoch_call() function is not called more than one time
before the callback has been executed, by always checking the
RS_FUNERAL_SCHD flag before invoking epoch_call().

The "rs_number_dead" is balanced again after r353353.

Discussed with: rrs@
Sponsored by: Mellanox Technologies

4 years agoMerge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
dim [Wed, 9 Oct 2019 17:06:56 +0000 (17:06 +0000)]
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
9.0.0 final release r372316.

Release notes for llvm, clang, lld and libc++ 9.0.0 are available here:

https://releases.llvm.org/9.0.0/docs/ReleaseNotes.html
https://releases.llvm.org/9.0.0/tools/clang/docs/ReleaseNotes.html
https://releases.llvm.org/9.0.0/tools/lld/docs/ReleaseNotes.html
https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html

PR: 240629
MFC after: 1 month

4 years agoRevert most of the multicast changes from r353292. This needs a more
glebius [Wed, 9 Oct 2019 17:03:20 +0000 (17:03 +0000)]
Revert most of the multicast changes from r353292. This needs a more
accurate approach.

4 years agoip6_output() has a complex set of gotos, and some can jump out of
glebius [Wed, 9 Oct 2019 17:02:28 +0000 (17:02 +0000)]
ip6_output() has a complex set of gotos, and some can jump out of
the epoch section towards return statement. Since entering epoch
is cheap, it is easier to cover the whole function with epoch,
rather than try to properly maintain its state.

4 years agoCleanup unneeded includes that crept in with r353292.
glebius [Wed, 9 Oct 2019 16:59:42 +0000 (16:59 +0000)]
Cleanup unneeded includes that crept in with r353292.

4 years agodwmmc: Reset the dma controller at attach
manu [Wed, 9 Oct 2019 16:57:14 +0000 (16:57 +0000)]
dwmmc: Reset the dma controller at attach

If the bootloader enabled DMA we need to fully reset the DMA controller
otherwise we might have some stale data in it that provoke weird
behavior.

MFC after: 1 week

4 years agoFix locking order reversal in the TCP ratelimit code by moving
hselasky [Wed, 9 Oct 2019 16:48:48 +0000 (16:48 +0000)]
Fix locking order reversal in the TCP ratelimit code by moving
destructors outside the rsmtx mutex.

Witness message:
lock order reversal: (sleepable after non-sleepable)
   1st tcp_rs_mtx (rsmtx) @ sys/netinet/tcp_ratelimit.c:242
   2nd sysctl lock (sysctl lock) @ sys/kern/kern_sysctl.c:607

Backtrace:
witness_debugger
witness_checkorder
_rm_wlock_debug
sysctl_ctx_free
rs_destroy
epoch_call_task
gtaskqueue_run_locked
gtaskqueue_thread_loop

Discussed with: rrs@
Sponsored by: Mellanox Technologies

4 years agoMerge ^/head r353316 through r353350.
dim [Wed, 9 Oct 2019 16:40:22 +0000 (16:40 +0000)]
Merge ^/head r353316 through r353350.

4 years agoifnet_byindex_ref() requires network epoch.
glebius [Wed, 9 Oct 2019 16:21:50 +0000 (16:21 +0000)]
ifnet_byindex_ref() requires network epoch.

4 years agoEnter network epoch in domain callouts.
glebius [Wed, 9 Oct 2019 16:21:05 +0000 (16:21 +0000)]
Enter network epoch in domain callouts.

4 years agoConnect the libucl(3) manual page to the build.
gjb [Wed, 9 Oct 2019 15:35:22 +0000 (15:35 +0000)]
Connect the libucl(3) manual page to the build.

MFC after: 3 days
Sponsored by: Rubicon Communications, LLC (Netgate)

4 years agoAdd CTLFLAG_STATS to the dev.ioat.N.stats sysctl OIDs
vangyzen [Wed, 9 Oct 2019 12:14:10 +0000 (12:14 +0000)]
Add CTLFLAG_STATS to the dev.ioat.N.stats sysctl OIDs

Refer to r353111.

MFC after: 2 weeks
Sponsored by: Dell EMC Isilon

4 years agozfs: remove gratuitous divergence from other openzfs flavours
avg [Wed, 9 Oct 2019 11:57:45 +0000 (11:57 +0000)]
zfs: remove gratuitous divergence from other openzfs flavours

The divergence is a result of a local change in r344601 and a followup
fix in r352580 that reverted portions of the earlier change.

MFC after: 1 week

4 years agozfs: remove incorrect warning about boot support for large_dnode
avg [Wed, 9 Oct 2019 11:46:36 +0000 (11:46 +0000)]
zfs: remove incorrect warning about boot support for large_dnode

Fixes r353341

Reported by: tsoome
MFC after: 4 days
X-MFC with: r353341

4 years agozfs: document large_dnode feature
avg [Wed, 9 Oct 2019 11:34:16 +0000 (11:34 +0000)]
zfs: document large_dnode feature

The text is copied from illumos.
The conversion to mdoc is mine.
The FreeBSD boot warning is copied from large_block description.

MFC after: 4 days

4 years agocleanup of illumos compatibility atomics
avg [Wed, 9 Oct 2019 11:26:36 +0000 (11:26 +0000)]
cleanup of illumos compatibility atomics

atomic_cas_32 is implemented using atomic_fcmpset_32 on all platforms.
Ditto for atomic_cas_64 and atomic_fcmpset_64 on platforms that have it.
The only exception is sparc64 that provides MD atomic_cas_32 and
atomic_cas_64.
This is slightly inefficient as fcmpset reports whether the operation
updated the target and that information is not needed for cas.
Nevertheless, there is less code to maintain and to add for new platforms.
Also, the operations are done inline now as opposed to function calls before.

atomic_add_64_nv is implemented using atomic_fetchadd_64 on platforms
that provide it.

casptr, cas32, atomic_or_8, atomic_or_8_nv are completely removed as they
have no users.

atomic_mtx that is used to emulate 64-bit atomics on platforms that lack
them is defined only on those platforms.

As a result, platform specific opensolaris_atomic.S files have lost most of
their code.  The only exception is i386 where the compat+contrib code
provides 64-bit atomics for userland use.  That code assumes availability of
cmpxchg8b instruction.  FreeBSD does not have that assumption for i386
userland and does not provide 64-bit atomics.  Hopefully, this can and will
be fixed.

MFC after: 3 weeks

4 years agoRevert changes to rip6_bind() from r353292. This function is always
glebius [Wed, 9 Oct 2019 05:52:07 +0000 (05:52 +0000)]
Revert changes to rip6_bind() from r353292.  This function is always
called in syscall context, so it must enter epoch itself.  This
changeset originates from early version of the patch, and somehow
slipped to the final version.

Reported by: pho

4 years agobsdinstall: fix ESP detection for auto ZFS layout
yuripv [Wed, 9 Oct 2019 05:28:10 +0000 (05:28 +0000)]
bsdinstall: fix ESP detection for auto ZFS layout

Pass the list of user selected disks from zfsboot to bootconfig so that
the latter doesn't rely on ESP autodetection that apparently fails for
some cases, e.g. memstick installation with nvme (boot) and sata drives.

While here, fix printing of debug messages in bootconfig.

Reviewed by: bcran, imp, tsoome
Differential Revision: https://reviews.freebsd.org/D21930

4 years agoRISC-V: Fix an alignment warning in libthr
mhorne [Wed, 9 Oct 2019 02:02:22 +0000 (02:02 +0000)]
RISC-V: Fix an alignment warning in libthr

Compiling with clang gives a loss-of-alignment error due the cast to
uint8_t *. Since the TLS is always tcb aligned and TP_OFFSET is defined
as sizeof(struct tcb) we can guarantee there is no misalignment. Silence
the error by moving the offset into the inline assembly.

Reviewed by: br
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D21926

4 years agoFix a bug in r353332 that snuck in with a last-minute adjustment.
markj [Tue, 8 Oct 2019 23:52:04 +0000 (23:52 +0000)]
Fix a bug in r353332 that snuck in with a last-minute adjustment.

Reported by: Jenkins
MFC with: r353332
Sponsored by: The FreeBSD Foundation

4 years agoAdd a regression test for r353331.
markj [Tue, 8 Oct 2019 23:35:23 +0000 (23:35 +0000)]
Add a regression test for r353331.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation

4 years agoFix handling of empty SCM_RIGHTS messages.
markj [Tue, 8 Oct 2019 23:34:48 +0000 (23:34 +0000)]
Fix handling of empty SCM_RIGHTS messages.

As unp_internalize() processes the input control messages, it builds
an output mbuf chain containing the internalized representations of
those messages.  In one special case, that of an empty SCM_RIGHTS
message, the message is simply discarded.  However, the loop which
appends mbufs to the output chain assumed that each iteration would
produce an mbuf, resulting in a null pointer dereference if an empty
SCM_RIGHTS message was followed by a non-empty message.

Fix this by advancing the output mbuf chain tail pointer only if an
internalized control message was produced.

Reported by: syzbot+1b5cced0f7fad26ae382@syzkaller.appspotmail.com
MFC after: 1 week
Sponsored by: The FreeBSD Foundation

4 years agoAdd support for KTLS in the Chelsio TOE module.
jhb [Tue, 8 Oct 2019 21:40:42 +0000 (21:40 +0000)]
Add support for KTLS in the Chelsio TOE module.

This adds a TOE hook to allocate a KTLS session.  It also recognizes
TLS mbufs in the socket buffer and sends those to the NIC using a TLS
work request to encrypt the record before segmenting it.

TOE TLS support must be enabled via the dev.t6nex.<N>.tls sysctl in
addition to enabling KTLS.

Reviewed by: np, gallatin
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D21891

4 years agomsun: Silence new harmless -Wimplicit-int-float-conversion warnings
brooks [Tue, 8 Oct 2019 21:39:51 +0000 (21:39 +0000)]
msun: Silence new harmless -Wimplicit-int-float-conversion warnings

Clang from trunk recently added a warning for when implicit int-to-float
conversions cause a loss of precision. The code in question is designed
to be able to handle that, so add explicit casts to silence this.

Submitted by: James Clarke <jrtc27@jrtc27.com>
Reviewed by: dim
Obtained from: CheriBSD
MFC after: 1 week
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D21913

4 years agoAdd a TOE KTLS mode and a TOE hook for allocating TLS sessions.
jhb [Tue, 8 Oct 2019 21:34:06 +0000 (21:34 +0000)]
Add a TOE KTLS mode and a TOE hook for allocating TLS sessions.

This adds the glue to allocate TLS sessions and invokes it from
the TLS enable socket option handler.  This also adds some counters
for active TOE sessions.

The TOE KTLS mode is returned by getsockopt(TLSTX_TLS_MODE) when
TOE KTLS is in use on a socket, but cannot be set via setsockopt().

To simplify various checks, a TLS session now includes an explicit
'mode' member set to the value returned by TLSTX_TLS_MODE.  Various
places that used to check 'sw_encrypt' against NULL to determine
software vs ifnet (NIC) TLS now check 'mode' instead.

Reviewed by: np, gallatin
Sponsored by: Chelsio Communications
Differential Revision: https://reviews.freebsd.org/D21891

4 years agoamd64: plug spurious cld instructions
mjg [Tue, 8 Oct 2019 21:14:11 +0000 (21:14 +0000)]
amd64: plug spurious cld instructions

ABI already guarantees the direction is forward. Note this does not take care
of i386-specific cld's.

Reviewed by: kib
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D21906

4 years agoFix various -Wpointer-compare warnings
brooks [Tue, 8 Oct 2019 21:14:09 +0000 (21:14 +0000)]
Fix various -Wpointer-compare warnings

This warning (comparing a pointer against a zero character literal
rather than NULL) has existed since GCC 7.1.0, and was recently added to
Clang trunk.

Almost all of these are harmless, except for fwcontrol's str2node, which
needs to both guard against dereferencing a NULL pointer (though in
practice it appears none of the callers will ever pass one in), as well
as ensure it doesn't parse the empty string as node 0 due to strtol's
awkward interface.

Submitted by: James Clarke <jtrc27@jrtc27.com>
Obtained from: CheriBSD
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D21914

4 years agoUpdate tcsh to 6.21.00.
brooks [Tue, 8 Oct 2019 20:59:31 +0000 (20:59 +0000)]
Update tcsh to 6.21.00.

This is a bugfix release with no new features.  A number of these fixes
were previously merged into our tree.

Sponsored by: DARPA, AFRL

4 years agoAllow -DNO_CLEAN build across r352689.
brooks [Tue, 8 Oct 2019 20:26:51 +0000 (20:26 +0000)]
Allow -DNO_CLEAN build across r352689.

Split the LIBCOMPAT case because the usual egrep only matches in
LIBCOMPAT on amd64.

4 years agoSet the FID field in lookaside crypto requests to the rx queue ID.
jhb [Tue, 8 Oct 2019 20:22:05 +0000 (20:22 +0000)]
Set the FID field in lookaside crypto requests to the rx queue ID.

The PCI block in the adapter requires this field to be set to a valid
queue ID.  It is not clear why it did not fail on all machines, but
the effect was that crypto operations reading input data via DMA
failed with an internal PCI read error on machines with 128G or more
of RAM.

Reported by: gallatin
Reviewed by: np
MFC after: 3 days
Sponsored by: Chelsio Communications

4 years agoFix regression issue after r352989:
hselasky [Tue, 8 Oct 2019 19:49:25 +0000 (19:49 +0000)]
Fix regression issue after r352989:

As noted by the commit message, callouts are now persistant
and should not be in the auto-zero section of the RQ's and SQ's.
This fixes an assert when using the TX completion event
factor feature with mlx5en(4).

Found by: gallatin@
MFC after: 3 days
Sponsored by: Mellanox Technologies

4 years agoRework the logic for installing the pkg(8) configuration.
gjb [Tue, 8 Oct 2019 18:58:23 +0000 (18:58 +0000)]
Rework the logic for installing the pkg(8) configuration.

'quarterly' package sets do not exist for head, so explicitly
install the 'latest' configuration file there.  Otherwise,
fall back to the original conditional evaluation to determine
if the 'latest' or 'quarterly' configuration file should be
installed.

Reported by: manu
Reviewed by: manu
MFC after: 3 days
Sponsored by: Rubicon Communications, LLC (Netgate)

4 years agoPrepare for merging back to head:
dim [Tue, 8 Oct 2019 18:21:33 +0000 (18:21 +0000)]
Prepare for merging back to head:
* Set tentative merge date
* Add UPDATING entry
* Bump __FreeBSD_version
* Bump FREEBSD_CC_VERSION
* Bump LLD_REVISION

4 years agoImport 6.21.00.
brooks [Tue, 8 Oct 2019 18:20:02 +0000 (18:20 +0000)]
Import 6.21.00.

4 years agoMerge ^/head r352764 through r353315.
dim [Tue, 8 Oct 2019 18:17:02 +0000 (18:17 +0000)]
Merge ^/head r352764 through r353315.

4 years agoRemove epoch assertion from if_setlladdr(). Originally this function was
glebius [Tue, 8 Oct 2019 17:55:45 +0000 (17:55 +0000)]
Remove epoch assertion from if_setlladdr().  Originally this function was
protected by IF_ADDR_LOCK(), which was a mutex, so that two simultaneous
if_setlladdr() can't execute. Later it was switched to IF_ADDR_RLOCK(),
likely by a mistake. Later it was switched to NET_EPOCH_ENTER(). Then I
incorrectly added NET_EPOCH_ASSERT() here.

In reality ifp->if_addr never goes away and never changes its length. So,
doing bcopy() in it is always "safe", meaning it won't dereference a wrong
pointer or write into someone's else memory. Of course doing two bcopy() in
parallel would result in a mess of two addresses, but net epoch doesn't
protect against that, neither IF_ADDR_RLOCK() did.

So for now, just remove the assertion and leave for later a proper fix.

Reported by: markj

4 years agoQuickly plug another regression from r353292. Again, multicast locking needs
glebius [Tue, 8 Oct 2019 16:59:17 +0000 (16:59 +0000)]
Quickly plug another regression from r353292. Again, multicast locking needs
lots of work...

Reported by: pho

4 years agoIn DIAGNOSTIC block of if_delmulti_ifma_flags() enter the network epoch.
glebius [Tue, 8 Oct 2019 16:45:56 +0000 (16:45 +0000)]
In DIAGNOSTIC block of if_delmulti_ifma_flags() enter the network epoch.
This quickly plugs the regression from r353292. The locking of multicast
definitely needs a broader review today...

Reported by: pho, dhw

4 years agoSimplify pmap_page_array_startup() a bit.
markj [Tue, 8 Oct 2019 16:42:50 +0000 (16:42 +0000)]
Simplify pmap_page_array_startup() a bit.

No functional change intended.

Sponsored by: The FreeBSD Foundation

4 years agozfs: fix the zfsd_hotspare_007_pos test
asomers [Tue, 8 Oct 2019 15:48:28 +0000 (15:48 +0000)]
zfs: fix the zfsd_hotspare_007_pos test

It was trying to destroy the pool while zfsd was detaching the spare, and
"zpool destroy" failed.  Fix by waiting until the spare has fully detached.

MFC after: 2 weeks
Sponsored by: Axcient

4 years agozfs: fix the zfsd_autoreplace_003_pos test
asomers [Tue, 8 Oct 2019 15:33:11 +0000 (15:33 +0000)]
zfs: fix the zfsd_autoreplace_003_pos test

The test declared that it only needed 5 disks, but actually tried to use 6.
Fix it to use just 5, which is all it really needs.

MFC after: 2 weeks
Sponsored by: Axcient

4 years agoAvoid erroneously clearing PGA_WRITEABLE in riscv's pmap_enter().
markj [Tue, 8 Oct 2019 15:03:48 +0000 (15:03 +0000)]
Avoid erroneously clearing PGA_WRITEABLE in riscv's pmap_enter().

During a CoW fault, we must check for both 4KB and 2MB mappings before
clearing PGA_WRITEABLE on the old mapping's page.  Previously we were
only checking for 4KB mappings.  This was missed in r344106.

MFC after: 3 days
Sponsored by: The FreeBSD Foundation

4 years agoamd64 pmap: allocate pv table entries for gaps in PA
mjg [Tue, 8 Oct 2019 14:59:50 +0000 (14:59 +0000)]
amd64 pmap: allocate pv table entries for gaps in PA

This matches the state prior to r353149 and fixes crashes with DRM
modules.

Reported and tested by: cy, garga, Krasznai Andras
Fixes: r353149 ("amd64 pmap: implement per-superpage locks")
Sponsored by: The FreeBSD Foundation