]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
3 years agoMFC r367609:
Konstantin Belousov [Thu, 19 Nov 2020 09:13:23 +0000 (09:13 +0000)]
MFC r367609:
mlx5en: Refactor repeated code to register media type to mlx5e_ifm_add().

3 years agoMFC r367398:
Konstantin Belousov [Thu, 19 Nov 2020 09:09:19 +0000 (09:09 +0000)]
MFC r367398:
Suspend all writeable local filesystems on power suspend.

3 years agoMFC r367625: Fix panic if NVMe is detached before the intrhook call.
Alexander Motin [Thu, 19 Nov 2020 02:44:08 +0000 (02:44 +0000)]
MFC r367625: Fix panic if NVMe is detached before the intrhook call.

3 years agoMFC r367596:
Mark Johnston [Wed, 18 Nov 2020 14:27:47 +0000 (14:27 +0000)]
MFC r367596:
iflib: Free full mbuf chains when draining transmit queues

3 years agoMFC r367588:
Mark Johnston [Wed, 18 Nov 2020 14:27:24 +0000 (14:27 +0000)]
MFC r367588:
Fix a pair of races in SIGIO registration

3 years agoMFC r367594:
Andrey V. Elsukov [Wed, 18 Nov 2020 13:52:13 +0000 (13:52 +0000)]
MFC r367594:
  Fix possible NULL pointer dereference.

  lagg(4) replaces if_output method of its child interfaces and expects
  that this method can be called only by child interfaces. But it is
  possible that lagg_port_output() could be called by children of child
  interfaces. In this case ifnet's if_lagg field is NULL. Add check that
  lp is not NULL.

3 years agoMFC r367552:
Mateusz Piotrowski [Wed, 18 Nov 2020 09:00:05 +0000 (09:00 +0000)]
MFC r367552:

Do not document MOTIFLIB in ports(7)

Perhaps it made sense in 1998 (r32836), but now it feels a bit out of
place.  We tend to avoid documenting non-essential ports variables in
the manual page (we try to document them in the Porter's Handbook instead).

3 years agoMFC r367600: Make CTL nicer to increased MAXPHYS.
Alexander Motin [Wed, 18 Nov 2020 02:05:59 +0000 (02:05 +0000)]
MFC r367600: Make CTL nicer to increased MAXPHYS.

Before this CTL always allocated MAXPHYS-sized buffers, even for 4KB I/O,
that is even more overkill for MAXPHYS of 1MB.  This change limits maximum
allocation to 512KB if MAXPHYS is bigger, plus if one is above 128KB, adds
new 128KB UMA zone for smaller I/Os.  The patch factors out alloc/free,
so later we could make it use more zones or malloc() if we'd like.

3 years agoMFC r367008: TCP Cubic: improve reaction to (and rollback from) RTO
Richard Scheffenegger [Tue, 17 Nov 2020 08:11:17 +0000 (08:11 +0000)]
MFC r367008: TCP Cubic: improve reaction to (and rollback from) RTO

fix compliancy issue of CUBIC RTO handling according to RFC8312 section 4.7
add CUBIC CC_RTO_ERR handling

Submitted by: chengc_netapp.com
Reviewed by: rrs, tuexen, rscheff
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D26808

3 years agoMFC r367007: tcp: move cwnd and ssthresh updates into cc modules
Richard Scheffenegger [Tue, 17 Nov 2020 08:03:49 +0000 (08:03 +0000)]
MFC r367007: tcp: move cwnd and ssthresh updates into cc modules

This will pave the way of setting ssthresh differently in TCP CUBIC, according
to RFC8312 section 4.7.

Use dynamic tcp_maxseg() adjusting for tcp options instead of static t_maxseg.

Submitted by: chengc_netapp.com
Reviewed by: rrs, tuexen, rscheff
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D26807

3 years agoMFC of 367045.
Kirk McKusick [Tue, 17 Nov 2020 06:04:16 +0000 (06:04 +0000)]
MFC of 367045.

Avoid improper sign extension in Pass5 inumber checks.

Sponsored by: Netflix

3 years agoMFC of 367035.
Kirk McKusick [Tue, 17 Nov 2020 05:59:55 +0000 (05:59 +0000)]
MFC of 367035.

Require clean superblock for tunefs, growfs, and fsirand

Sponsored by: Netflix

3 years agoMFC of 340927 and 367034.
Kirk McKusick [Tue, 17 Nov 2020 05:48:00 +0000 (05:48 +0000)]
MFC of 340927 and 367034.

Move clear of UFS feature flags from ufs_mountfs() to ffs_sbget() to
ensure that the appropriate feature flags get cleared by filesystem
utilities as well as the kernel when they modify the filesystem.

Note 340927 is relevant for this even though it was done for a
different reason at the time.

Sponsored by: Netflix

3 years agoMFC r367545: ng_nat: unbreak ABI
Eugene Grosbein [Tue, 17 Nov 2020 05:00:23 +0000 (05:00 +0000)]
MFC r367545: ng_nat: unbreak ABI

The revision r342168 broke ABI of ng_nat needlessly and
the change was merged to stable branches breaking ABI there, too.
Unbreak it.

PR: 250722

3 years agoMFC: 367628, 367635, 367645
George V. Neville-Neil [Tue, 17 Nov 2020 01:02:00 +0000 (01:02 +0000)]
MFC: 367628, 367635, 367645

An earlier commit effectively turned out the fast forwading path
  due to its lack of support for ICMP redirects. The following commit
  adds redirects to the fastforward path, again allowing for decent
  forwarding performance in the kernel.

  Reviewed by: ae, melifaro (also helped with the MFC)
  Sponsored by: Rubicon Communications, LLC (d/b/a "Netgate")

3 years agoMFC r367659: Add PMRCAP printing and fix earlier CAP_HI.
Alexander Motin [Tue, 17 Nov 2020 00:35:59 +0000 (00:35 +0000)]
MFC r367659: Add PMRCAP printing and fix earlier CAP_HI.

3 years agoMFC r367178:
Mitchell Horne [Mon, 16 Nov 2020 17:45:42 +0000 (17:45 +0000)]
MFC r367178:
arm64: set the correct partition type in make-memstick.sh

3 years agoMFC r367177:
Mitchell Horne [Mon, 16 Nov 2020 17:44:34 +0000 (17:44 +0000)]
MFC r367177:
arm64: convert virtual machine images to GPT

3 years agoMFC r367176:
Mitchell Horne [Mon, 16 Nov 2020 17:42:22 +0000 (17:42 +0000)]
MFC r367176:
vmimage.subr: noisier failure for unsupported targets

3 years agoMFC r367175:
Mitchell Horne [Mon, 16 Nov 2020 17:41:05 +0000 (17:41 +0000)]
MFC r367175:
Slight refactor in vmimage.subr

3 years agoMFC r367617:
Mark Johnston [Mon, 16 Nov 2020 16:53:46 +0000 (16:53 +0000)]
MFC r367617:
qat: Fix nits reported by Coverity

3 years agoMFC r367639:
Mateusz Piotrowski [Mon, 16 Nov 2020 11:57:49 +0000 (11:57 +0000)]
MFC r367639:

Reference setprogname(3) in setproctitle(3)

The reference to setproctitle(3) in the setprogname(3) manual is already
in place.

3 years agoMFC r367253:
Mateusz Piotrowski [Sun, 15 Nov 2020 12:28:57 +0000 (12:28 +0000)]
MFC r367253:

Document how to use sudo for SU_CMD

It is rather common for the ports users to replace su(1) with sudo(8)
within the SU_CMD variable. Let's document it in the manual page (so far
it's been hidden in a comment within bsd.commands.mk).

3 years agoMFC r366500:
Kristof Provost [Sun, 15 Nov 2020 11:56:16 +0000 (11:56 +0000)]
MFC r366500:

bridge: call member interface ioctl() without NET_EPOCH

We're not allowed to hold NET_EPOCH while sleeping, so when we call ioctl()
handlers for member interfaces we cannot be in NET_EPOCH.  We still need some
protection of our CK_LISTs, so hold BRIDGE_LOCK instead.

That requires changing BRIDGE_LOCK into a sleepable lock, and separating the
BRIDGE_RT_LOCK, to protect bridge_rtnode lists. That lock is taken in the data
path (while in NET_EPOCH), so it cannot be a sleepable lock.

While here document the locking strategy.

3 years agobridge: epoch-ification
Kristof Provost [Sun, 15 Nov 2020 11:46:44 +0000 (11:46 +0000)]
bridge: epoch-ification

Undo the revert (r363568). This commit still violates epoch rules by sleeping
within NET_EPOCH. That will be resolved in the following commit.

3 years agoMFC r367623:
Dimitry Andric [Sun, 15 Nov 2020 11:28:02 +0000 (11:28 +0000)]
MFC r367623:

Merge commit 8df4e6094 from llvm git (by Fangrui Song):

  [ELF] Don't consider SHF_ALLOC ".debug*" sections debug sections

  Fixes PR48071

  * The Rust compiler produces SHF_ALLOC `.debug_gdb_scripts` (which
    normally does not have the flag)
  * `.debug_gdb_scripts` sections are removed from `inputSections` due
    to --strip-debug/--strip-all
  * When processing --gc-sections, pieces of a SHF_MERGE section can be
    marked live separately

  `=>` segfault when marking liveness of a `.debug_gdb_scripts` which
  is not split into pieces (because it is not in `inputSections`)

  This patch circumvents the problem by not treating SHF_ALLOC
  ".debug*" as debug sections (to prevent --strip-debug's stripping)
  (which is still useful on its own).

  Reviewed By: grimar

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

This should fix lld segfaulting when linking the rust-based parts of the
devel/py-maturin port.

Reported by: Nick Venenga <nijave@gmail.com>
PR: 250783

3 years agoMFC r366231: Address whitespace nits in subr_rtc.c
Kyle Evans [Sat, 14 Nov 2020 20:45:12 +0000 (20:45 +0000)]
MFC r366231: Address whitespace nits in subr_rtc.c

These were separated out from a nearby patch from Andrew Gierth.

3 years agoMFC r365883: pkgbase: use consistent annotation for object keys
Kyle Evans [Sat, 14 Nov 2020 20:44:34 +0000 (20:44 +0000)]
MFC r365883: pkgbase: use consistent annotation for object keys

Everywhere else we use objects ("scripts", generally) we do specify the
optional colon. Be consistent and do the same for directories.

PR: 249273

3 years agoMFC r367604: umtx: drop incorrect timespec32 definition
Kyle Evans [Sat, 14 Nov 2020 15:33:39 +0000 (15:33 +0000)]
MFC r367604: umtx: drop incorrect timespec32 definition

This works for amd64, but none others -- drop it, because we already have a
proper definition in sys/compat/freebsd32/freebsd32.h that correctly uses
time32_t.

3 years agoMFC r366819: libbe(3): const'ify a couple arguments
Kyle Evans [Sat, 14 Nov 2020 15:26:18 +0000 (15:26 +0000)]
MFC r366819: libbe(3): const'ify a couple arguments

libbe will never need to mutate these as we either process them into a local
buffer or we just don't touch them and write to a separate out argument.

3 years agoMFC r366820-r366821: libbe(3) documentation improvements
Kyle Evans [Sat, 14 Nov 2020 15:21:20 +0000 (15:21 +0000)]
MFC r366820-r366821: libbe(3) documentation improvements

r366820:
libbe(3): document be_snapshot()

While toying around with lua bindings for libbe(3), I discovered that I
apparently never documented this, despite having documented
be_is_auto_snapshot_name that references it.

r366821:
libbe(3): install MLINKS for all of the functions provided

3 years agoMFC r366769: MFC r366760: lua: update to 5.3.6
Kyle Evans [Sat, 14 Nov 2020 15:19:36 +0000 (15:19 +0000)]
MFC r366769: MFC r366760: lua: update to 5.3.6

This release contains some minor bugfixes; notably:
- 2x minor Makefile fixes (not used in base)
- Long brackets with a huge number of '=' overflow some internal buffer
  arithmetic.
- Joining an upvalue with itself can cause a use-after-free crash.

See here for examples: http://www.lua.org/bugs.html#5.3.5

3 years agoMFC r366580: bpf(4): Update the man page to reflect reality
Gordon Bergling [Sat, 14 Nov 2020 14:15:49 +0000 (14:15 +0000)]
MFC r366580: bpf(4): Update the man page to reflect reality

PR: 131918
Submitted by: guy at alum dot mit dot edu
Reviewed by: gnn, gbe
Approved by: gnn
Differential Revision: https://reviews.freebsd.org/D25993

3 years agoMFC r367239-367241:
Vladimir Kondratyev [Sat, 14 Nov 2020 12:02:50 +0000 (12:02 +0000)]
MFC r367239-367241:

r367239:
Add plug and play information macroses for ACPI and I2C buses.

Matching table format is compatible with ACPI_ID_PROBE bus method.

Note that while ACPI_ID_PROBE matches against _HID and all _CIDs, current
acpi_pnpinfo_str() exports only _HID and first _CID.  That means second
and further _CIDs should be added to both acpi_pnpinfo_str() and
ACPICOMPAT_PNP_INFO if device matching against them is required.

r367240:
acpi_wmi(4): Add ACPI_PNP_INFO

r367241:
acpi_dock(4): Add ACPI_PNP_INFO

Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D26824

3 years agoMFC r367237:
Vladimir Kondratyev [Sat, 14 Nov 2020 11:51:37 +0000 (11:51 +0000)]
MFC r367237:

devmatch(8): Respect mask field when matching strings of Z type.

While here, add debug output for this action.

Reviewed by: imp
Differential Revision: https://reviews.freebsd.org/D26823

3 years agoMFC r367230:
Vladimir Kondratyev [Sat, 14 Nov 2020 11:48:28 +0000 (11:48 +0000)]
MFC r367230:

ig4(4): Add PCI IDs for Intel Comet Lake I2C controllers.

3 years agoMFC r366770: libc: typo fix (s/involes/involves)
Kyle Evans [Sat, 14 Nov 2020 02:11:56 +0000 (02:11 +0000)]
MFC r366770: libc: typo fix (s/involes/involves)

3 years agoMFC r366435: lualoader: improve the design of the brand-/logo- mechanism
Kyle Evans [Sat, 14 Nov 2020 02:11:04 +0000 (02:11 +0000)]
MFC r366435: lualoader: improve the design of the brand-/logo- mechanism

In the previous world order, any brand/logo was forced to pull in the
drawer and call drawer.add{Brand,Logo} with the name their brand/logo is
taking and a table describing it.

In the new world order, these files just need to return a table that maps
out graphics types to a table of the exact same format as what was
previously being passed back into the drawer. The appeal here is not needing
to grab a reference back to the drawer module and having a cleaner
data-driven looking format for these. The format has been renamed to 'gfx-*'
prefixes and each one can provide a logo and a brand.

drawer.addBrand/drawer.addLogo will remain in place until FreeBSD 13, as
there's no overhead to them and it's not yet worth the break in
compatibility with any pre-existing brands and logos.

3 years agoMFC r366275: Makefile.inc1: sysent: parallel subordinate sysent targets
Kyle Evans [Sat, 14 Nov 2020 02:03:34 +0000 (02:03 +0000)]
MFC r366275: Makefile.inc1: sysent: parallel subordinate sysent targets

makesyscalls.lua (and indeed makesyscalls.sh) are both safe to be run in
parallel, so let's do it.

This is a trivial difference because runtime per-target is pretty small, but
I like seeing it run in parallel when my muscle memory types `make -sj4`.

3 years agoMFC r366430: ngctl: add -c (compact output) for the dot command
Kyle Evans [Sat, 14 Nov 2020 02:00:50 +0000 (02:00 +0000)]
MFC r366430: ngctl: add -c (compact output) for the dot command

The output of "ngctl dot" is suitable for small netgraph networks. Even
moderate complex netgraph setups (about a dozen nodes) are hard to
understand from the .dot output, because each node and each hook are shown
as a full blown structure.

This patch allows to generate much more compact output and graphs by
omitting the extra structures for the individual hooks. Instead the names of
the hooks are labels to the edges.

3 years agoMFC r367448: vt: resolve conflict between VT_ALT_TO_ESC_HACK and DBG
Kyle Evans [Sat, 14 Nov 2020 01:58:33 +0000 (01:58 +0000)]
MFC r367448: vt: resolve conflict between VT_ALT_TO_ESC_HACK and DBG

When using the ALT+CTRL+ESC sequence to break into kdb, the keyboard is
completely borked when you return. watch(8) shows that it's working, but
it's inserting escape sequences.

Further investigation revealed that VT_ALT_TO_ESC_HACK is the default and
directly conflicts with this sequence, so upon return from the debugger
ALKED is set.

If they triggered the break to debugger, it's safe to assume they didn't
mean to use VT_ALT_TO_ESC_HACK, so just unset it to reduce the surprise when
the keyboard seems non-functional upon return.

3 years agoMFC r367440: epoch: support non-preemptible epochs checking in_epoch()
Kyle Evans [Sat, 14 Nov 2020 01:55:54 +0000 (01:55 +0000)]
MFC r367440: epoch: support non-preemptible epochs checking in_epoch()

Previously, non-preemptible epochs could not check; in_epoch() would always
fail, usually because non-preemptible epochs don't imply THREAD_NO_SLEEPING.

For default epochs, it's easy enough to verify that we're in the given
epoch: if we're in a critical section and our record for the given epoch
is active, then we're in it.

This patch also adds some additional INVARIANTS bookkeeping. Notably, we set
and check the recorded thread in epoch_enter/epoch_exit to try and catch
some edge-cases for the caller. It also checks upon freeing that none of the
records had a thread in the epoch, which may make it a little easier to
diagnose some improper use if epoch_free() took place while some other
thread was inside.

This version differs slightly from what was just previously reviewed by the
below-listed, in that in_epoch() will assert that no CPU has this thread
recorded even if it *is* currently in a critical section. This is intended
to catch cases where the caller might have somehow messed up critical
section nesting, we can catch both if they exited the critical section or if
they exited, migrated, then re-entered (on the wrong CPU).

3 years agoMFC imgact_binmisc housecleaning: r367361, r367439, r367441-r367442,
Kyle Evans [Sat, 14 Nov 2020 01:28:04 +0000 (01:28 +0000)]
MFC imgact_binmisc housecleaning: r367361, r367439, r367441-r367442,
r367444, r367452, r367456, r367477

r367361:
imgact_binmisc: fix up some minor nits

- Removed a bunch of redundant headers
- Don't explicitly initialize to 0
- The !error check prior to setting imgp->interpreter_name is redundant, all
  error paths should and do return or go to 'done'. We have larger problems
  otherwise.

r367439:
imgact_binmisc: minor re-organization of imgact_binmisc_exec exits

Notably, streamline error paths through the existing 'done' label, making it
easier to quickly verify correct cleanup.

Future work might add a kernel-only flag to indicate that a interpreter uses
#a. Currently, all executions via imgact_binmisc pay the penalty of
constructing sname/fname, even if they will not use it. qemu-user-static
doesn't need it, the stock rc script for qemu-user-static certainly doesn't
use it, and I suspect these are the vast majority of (if not the only)
current users.

r367441:
binmiscctl(8): miscellaneous cleanup

- Bad whitespace in Makefile.
- Reordered headers, sys/ first.
- Annotated fatal/usage __dead2 to help `make analyze` out a little bit.
- Spell a couple of sizeof constructs as "nitems" and "howmany" instead.

r367442:
imgact_binmisc: validate flags coming from userland

We may want to reserve bits in the future for kernel-only use, so start
rejecting any that aren't the two that we're currently expecting from
userland.

r367444:
imgact_binmisc: abstract away the list lock (NFC)

This module handles relatively few execs (initial qemu-user-static, then
qemu-user-static handles exec'ing itself for binaries it's already running),
but all execs pay the price of at least taking the relatively expensive
sx/slock to check for a match when this module is loaded. Future work will
almost certainly swap this out for another lock, perhaps an rmslock.

The RLOCK/WLOCK phrasing was chosen based on what the callers are really
wanting, rather than using the verbiage typically appropriate for an sx.

r367452:
imgact_binmisc: reorder members of struct imgact_binmisc_entry (NFC)

This doesn't change anything at the moment since the out-of-order elements
were a pair of uint32_t, but future additions may have caused unnecessary
padding by following the existing precedent.

r367456:
imgact_binmisc: move some calculations out of the exec path

The offset we need to account for in the interpreter string comes in two
variants:

1. Fixed - macros other than #a that will not vary from invocation to
   invocation
2. Variable - #a, which is substitued with the argv0 that we're replacing

Note that we don't have a mechanism to modify an existing entry.  By
recording both of these offset requirements when the interpreter is added,
we can avoid some unnecessary calculations in the exec path.

Most importantly, we can know up-front whether we need to grab
calculate/grab the the filename for this interpreter. We also get to avoid
walking the string a first time looking for macros. For most invocations,
it's a swift exit as they won't have any, but there's no point entering a
loop and searching for the macro indicator if we already know there will not
be one.

While we're here, go ahead and only calculate the argv0 name length once per
invocation. While it's unlikely that we'll have more than one #a, there's no
reason to recalculate it every time we encounter an #a when it will not
change.

I have not bothered trying to benchmark this at all, because it's arguably a
minor and straightforward/obvious improvement.

r367477:
imgact_binmisc: limit the extent of match on incoming entries

imgact_binmisc matches magic/mask from imgp->image_header, which is only a
single page in size mapped from the first page of an image. One can specify
an interpreter that matches on, e.g., --offset 4096 --size 256 to read up to
256 bytes past the mapped first page.

The limitation is that we cannot specify a magic string that exceeds a
single page, and we can't allow offset + size to exceed a single page
either.  A static assert has been added in case someone finds it useful to
try and expand the size, but it does seem a little unlikely.

While this looks kind of exploitable at a sideways squinty-glance, there are
a couple of mitigating factors:

1.) imgact_binmisc is not enabled by default,
2.) entries may only be added by the superuser,
3.) trying to exploit this information to read what's mapped past the end
  would be worse than a root canal or some other relatably painful
  experience, and
4.) there's no way one could pull this off without it being completely
  obvious.

The first page is mapped out of an sf_buf, the implementation of which (or
lack thereof) depends on your platform.

3 years agoMFC r367076: diff: don't force the format to 'context' with -p immediately
Kyle Evans [Sat, 14 Nov 2020 00:59:55 +0000 (00:59 +0000)]
MFC r367076: diff: don't force the format to 'context' with -p immediately

Instead, leave the fomat as unspecified (if it hasn't been) and use the
-p flag as a hint to 'context' if no other formatting option is specified.

This fixes `diff -purw`, used frequently by emaste, and matches the behavior
of its GNU counterpart.

PR: 250015

3 years agoMFC r367572:
Mateusz Guzik [Fri, 13 Nov 2020 13:38:08 +0000 (13:38 +0000)]
MFC r367572:

    Allow rtprio_thread to operate on threads of any process

3 years agoMFC r367352,r367353:
Mateusz Guzik [Fri, 13 Nov 2020 13:36:46 +0000 (13:36 +0000)]
MFC r367352,r367353:

    pipe: fix POLLHUP handling if no events were specified
    pipe: whitespace nit in previous

3 years agoMFC r367567:
Mateusz Piotrowski [Fri, 13 Nov 2020 09:48:54 +0000 (09:48 +0000)]
MFC r367567:

Address a mandoc warning

3 years agoMFC r367538:
Bjoern A. Zeeb [Thu, 12 Nov 2020 17:26:19 +0000 (17:26 +0000)]
MFC r367538:

  arm64: bs_sr_<N> take II

  In r367327 generic_bs_sr_<n> were derived from mips.  Given we are calling
  generic_bs_w_<n> and no write directly, we do not have to do the address
  calculations ourselves as eneric_bs_w_<n> will do a str val [bsh, offset].
  All we actually have to do is increment offset.

3 years agoMFC r367485:
Dimitry Andric [Wed, 11 Nov 2020 22:18:24 +0000 (22:18 +0000)]
MFC r367485:

Merge commit 354d3106c from llvm git (by Kai Luo):

  [PowerPC] Skip combining (uint_to_fp x) if x is not simple type

  Current powerpc64le backend hits
  ```
  Combining: t7: f64 = uint_to_fp t6
  llc: llvm-project/llvm/include/llvm/CodeGen/ValueTypes.h:291:
  llvm::MVT llvm::EVT::getSimpleVT() const: Assertion `isSimple() &&
  "Expected a SimpleValueType!"' failed.
  ```
  This patch fixes it by skipping combination if `t6` is not simple
  type.
  Fixed https://bugs.llvm.org/show_bug.cgi?id=47660.

  Reviewed By: #powerpc, steven.zhang

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

This should fix the llvm assertion mentioned above when building the
following ports for powerpc64le:

* audio/traverso
* databases/percona57-pam-for-mysql
* databases/percona57-server
* emulators/citra
* emulators/citra-qt5
* games/7kaa
* graphics/dia
* graphics/mandelbulber
* graphics/pcl-pointclouds
* net-p2p/libtorrent-rasterbar
* textproc/htmldoc

Requested by: pkubaj

3 years agoMFC r366683:
Dimitry Andric [Wed, 11 Nov 2020 22:15:25 +0000 (22:15 +0000)]
MFC r366683:

Merge commit 35ecc7fe4 from llvm git (by Hubert Tong):

  [clang][Sema] Fix PR47676: Handle dependent AltiVec C-style cast

  Fix premature decision in the presence of type-dependent expression
  operands on whether AltiVec vector initializations from single
  expressions are "splat" operations.

  Verify that the instantiation is able to determine the correct cast
  semantics for both the scalar type and the vector type case.

  Note that, because the change only affects the single-expression case
  (and the target type is an AltiVec-style vector type), the
  replacement of a parenthesized list with a parenthesized expression
  does not change the semantics of the program in a program-observable
  manner.

  Reviewed By: aaron.ballman

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

This should fix 'Assertion failed: (isScalarType()), function
getScalarTypeKind, file /usr/src/contrib/llvm-project/clang/lib/AST
/Type.cpp, line 2146', when building the graphics/opencv-core port for
powerpc64le.

Requested by: pkubaj

3 years agoMFC r367093, r367117
Vincenzo Maffione [Wed, 11 Nov 2020 21:27:16 +0000 (21:27 +0000)]
MFC r367093, r367117

iflib: add per-tx-queue netmap timer

The way netmap TX is handled in iflib when TX interrupts are not
used (IFC_NETMAP_TX_IRQ not set) has some issues:
  - The netmap_tx_irq() function gets called by iflib_timer(), which
    gets scheduled with tick granularity (hz). This is not frequent
    enough for 10Gbps NICs and beyond (e.g., ixgbe or ixl). The end
    result is that the transmitting netmap application is not woken
    up fast enough to saturate the link with small packets.
  - The iflib_timer() functions also calls isc_txd_credits_update()
    to ask for more TX completion updates. However, this violates
    the netmap requirement that only txsync can access the TX queue
    for datapath operations. Only netmap_tx_irq() may be called out
    of the txsync context.

This change introduces per-tx-queue netmap timers, using microsecond
granularity to ensure that netmap_tx_irq() can be called often enough
to allow for maximum packet rate. The timer routine simply calls
netmap_tx_irq() to wake up the netmap application. The latter will
wake up and call txsync to collect TX completion updates.

This change brings back line rate speed with small packets for ixgbe.
For the time being, timer expiration is hardcoded to 90 microseconds,
in order to avoid introducing a new sysctl.
We may eventually implement an adaptive expiration period or use another
deferred work mechanism in place of timers.

Also, fix the timers usage to make sure that each queue is serviced
by a different CPU.

PR:     248652
Reported by:    sg@efficientip.com

3 years agoMFC r367335:
Mark Johnston [Wed, 11 Nov 2020 14:06:45 +0000 (14:06 +0000)]
MFC r367335:
amd64: Make it easier to configure exception stack sizes

3 years agoMFC r367097:
Mateusz Piotrowski [Wed, 11 Nov 2020 11:25:14 +0000 (11:25 +0000)]
MFC r367097:

Correct USB HID item in examples

It turns out that examples were incorrectly referring to Volume_Up
and Volume_Down, which are not defined at all.

PR: 250683

3 years agoMFC r367120:
Konstantin Belousov [Wed, 11 Nov 2020 00:43:13 +0000 (00:43 +0000)]
MFC r367120:
Check for process group change in tty_wait_background().

PR: 250701

3 years agoMFC r367302:
Brooks Davis [Tue, 10 Nov 2020 18:07:13 +0000 (18:07 +0000)]
MFC r367302:

sysvshm: pass relevant uap members as arguments

Alter shmget_allocate_segment and shmget_existing to take the values
they want from struct shmget_args rather than passing the struct
around.  In general, uap structures should only be the interface to
sys_<foo> functions.

This makes one small functional change and records the allocated space
rather than the requested space.  If this turns out to be a problem
(e.g. if software tries to find undersized segments by exact size
rather than using keys), we can correct that easily.

Reviewed by: kib
Obtained from: CheriBSD
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D27077

3 years agoMFC r366751:
Hans Petter Selasky [Tue, 10 Nov 2020 13:36:07 +0000 (13:36 +0000)]
MFC r366751:
Remove ifdefs around IS_ALIGNED() definition in the LinuxKPI.

Discussed with: manu@
Sponsored by: Mellanox Technologies // NVIDIA Networking

3 years agoMFC r366806:
Hans Petter Selasky [Tue, 10 Nov 2020 13:32:50 +0000 (13:32 +0000)]
MFC r366806:
Add new USB quirk.

PR: 250422
Submitted by: vidwer+fbsdbugs@gmail.com
Sponsored by: Mellanox Technologies // NVIDIA Networking

3 years agoMFC r367269:
Hans Petter Selasky [Tue, 10 Nov 2020 13:22:52 +0000 (13:22 +0000)]
MFC r367269:
Fix for referencing file via its vnode in ibore.

Use the native vnode lookup functions, instead of going via the LinuxKPI,
because the file referenced is typically created outside the LinuxKPI, and
the LinuxKPI's fdget() can only resolve file descriptor numbers which
were created by itself.

The vnode pointer is used as an identifier to identify XRCD handles which
are sharing resources.

This patch fixes the so-called XRCD support in ibcore for FreeBSD.
Refer to ibv_open_xrcd(3) for more information how the file descriptor
argument is used.

Reviewed by: kib@
Sponsored by: Mellanox Technologies // NVIDIA Networking

3 years agoMFC r367236:
Hans Petter Selasky [Tue, 10 Nov 2020 13:18:44 +0000 (13:18 +0000)]
MFC r367236:
Implement the USB_GET_DEVICEINFO ioctl(2) for uhid(4).

Submitted by: pedro martelletto <pedro@ambientworks.net>
Sponsored by: Mellanox Technologies // NVIDIA Networking

3 years agoMFC r367096:
Hans Petter Selasky [Tue, 10 Nov 2020 13:15:53 +0000 (13:15 +0000)]
MFC r367096:
Add new USB IDs.

Submitted by: aleksi.kaalinpaa@kapsi.fi
PR: 250675
Sponsored by: Mellanox Technologies // NVIDIA Networking

3 years agoMFC r364860 and r366996:
Hans Petter Selasky [Tue, 10 Nov 2020 13:10:15 +0000 (13:10 +0000)]
MFC r364860 and r366996:
Implement extensible arrays API using the existing radix tree implementation
in the LinuxKPI.

Differential Revision: https://reviews.freebsd.org/D25101
Reviewed by: kib @
Sponsored by: Mellanox Technologies // NVIDIA Networking

3 years agoMFC r366695:
Andrey V. Elsukov [Tue, 10 Nov 2020 12:45:59 +0000 (12:45 +0000)]
MFC r366695:
  Implement SIOCGIFALIAS.

  It is lightweight way to check if an IPv4 address exists.

  Submitted by: Roy Marples
  Differential Revision: https://reviews.freebsd.org/D26636

3 years agoMFC r366908 (modified for stable/12 KBI):
Andrey V. Elsukov [Tue, 10 Nov 2020 12:13:18 +0000 (12:13 +0000)]
MFC r366908 (modified for stable/12 KBI):
  Add dtrace SDT probe ipfw:::rule-matched.

  It helps to reduce complexity with debugging of large ipfw rulesets.
  Also define several constants and translators, that can by used by
  dtrace scripts with this probe.

  Obtained from: Yandex LLC
  Sponsored by: Yandex LLC
  Differential Revision: https://reviews.freebsd.org/D26879

3 years agoMFC r351863:
Mateusz Piotrowski [Tue, 10 Nov 2020 10:19:55 +0000 (10:19 +0000)]
MFC r351863:

rc: Honor ${name}_env when a custom *_cmd is defined (e.g., start_cmd)

A user may set ${name}_env variable in rc.conf(5) in order to set additional
environment variables for a service command.  Unfortunately, at the moment
this variable is only honored when the command is specified via the command
variable. Those additional environment variables coming from ${name}_env
are never set if the service is started via the ${rc_arg}_cmd variable (for
example start_cmd).

PR: 239692
Reviewed by: bcr, jilles
Approved by: src (jilles)
Requested by: koobs

3 years agoMFC r367296:
Konstantin Belousov [Tue, 10 Nov 2020 08:59:55 +0000 (08:59 +0000)]
MFC r367296:
if_media.c SIOCGMEDIAX handler: improve loop

3 years agoMFC r367072:
Mateusz Piotrowski [Tue, 10 Nov 2020 08:33:45 +0000 (08:33 +0000)]
MFC r367072:

Mount devfs inside a beinstall(8) chroot

It turns out that without /dev/null beinstall is not able to complete and
instead exits with messages similar to these:

  --------------------------------------------------------------
  >>> Installing kernel GENERIC completed on Sun Oct 25 17:47:37 CET 2020
  --------------------------------------------------------------
  /tmp/beinstall.JleGoP/mnt: Inspecting dirs /usr/src /usr/obj/usr/src/amd64.amd64
  --- installworld ---
  make[1]: "/usr/obj/usr/src/amd64.amd64/toolchain-metadata.mk" line 1: Using cached toolchain metadata from build at t480 on Sun Oct 25 15:53:28 CET 2020
  make[2]: "/dev/null" line 2: Need an operator
  make[2]: Fatal errors encountered -- cannot continuemake[1]: "/usr/src/Makefile.inc1" line 593: CPUTYPE global should be set with ?=.
  Cleaning up ...
  umount -f /tmp/beinstall.JleGoP/mnt/usr/src /tmp/beinstall.JleGoP/mnt/usr/obj/usr/src/amd64.amd64 /tmp/beinstall.JleGoP/mnt
  Destroyed successfully
  error: Installworld failed!

Upon a bit of debugging, it turns out that /dev/null inside the chroot
environment is full random bytes, which cause "make -f /dev/null" to
misbehave. Mounting a proper devfs inside the chroot seems to be the most
appropriate way to fix it.

will@ also noted that this change requires that whatever is needed in devfs
must exist in the old kernel.

Approved by: will

3 years agoMFC r367291:
Mateusz Piotrowski [Tue, 10 Nov 2020 07:47:24 +0000 (07:47 +0000)]
MFC r367291:

rc.d/zfs: Add shutdown to KEYWORDS

The problem is that without walling /etc/rc.d/zfs on shutdown, resources
associated with ZFS mounts are not freed and the jails will remain in dying
state. In addition, the dataset is now in a dangling state, as the jail it
is attached to is dying.

A known workaround for jails was to add the following lines
to /etc/jail.conf, to make sure that "service zfs stop" is run
when the jail is stopped:

    exec.stop = "/bin/sh /etc/rc.shutdown";
    exec.stop += "/usr/sbin/service zfs stop || /usr/bin/true";

While the workaround seems to be okay-ish for the jail situation, it is
still unclean. However, for physical hosts this may wreak havoc with the
pool if shared spares are used, as "zfs unshare" is never invoked on
shutdown.

PR: 147444
Submitted by: Markus Stoff <markus__stoffdv_at>
Reported by: Mykah <mburkhardt__exavault_com>
Reviewed by: cy
Approved by: cy (src)
Relnotes: yes

3 years agoMFC r367435,367539:
Bjoern A. Zeeb [Mon, 9 Nov 2020 23:38:39 +0000 (23:38 +0000)]
MFC r367435,367539:

  usb_hub: giving up port reset - device vanished

  Improve the output of the recently often experienced debug message in order
  to gather further data.

PR: 237666

3 years agoMFC r367355:
Justin Hibbits [Mon, 9 Nov 2020 21:19:17 +0000 (21:19 +0000)]
MFC r367355:

Fix UMA alignment for COP2 context structure.

3 years agoMFC r366526:
Mitchell Horne [Mon, 9 Nov 2020 18:07:21 +0000 (18:07 +0000)]
MFC r366526:
Handle kmod local relocation failures gracefully

3 years agoMFC r367388:
Mark Johnston [Mon, 9 Nov 2020 15:37:57 +0000 (15:37 +0000)]
MFC r367388:
cryptotest: Add qat(4) coverage

3 years agoMFC r367387, r367422:
Mark Johnston [Mon, 9 Nov 2020 15:37:12 +0000 (15:37 +0000)]
MFC r367387, r367422:
Add firmware modules for qat(4)

3 years agoMFC r367386:
Mark Johnston [Mon, 9 Nov 2020 15:36:11 +0000 (15:36 +0000)]
MFC r367386:
Add qat(4)

3 years agoAdd hmac_init_ipad() and hmac_init_opad()
Mark Johnston [Mon, 9 Nov 2020 14:15:06 +0000 (14:15 +0000)]
Add hmac_init_ipad() and hmac_init_opad()

This is a merge of a small portion of r359374 which makes it easier
to maintain OpenCrypto drivers in stable/12.  No functional change
intended; this is a direct commit to stable/12.

Discussed with: jhb

3 years agoMFC r366576:
Mark Johnston [Mon, 9 Nov 2020 13:54:29 +0000 (13:54 +0000)]
MFC r366576:
syslogd: Avoid trimming host names in RFC 5424 mode

PR: 250014

3 years agoMFC r367420:
Mateusz Piotrowski [Mon, 9 Nov 2020 09:30:49 +0000 (09:30 +0000)]
MFC r367420:

Use Cm macros instead of Ar when referring to a specific memory disk type

3 years agoMFC r367005: MFV r366990: less v563.
Xin LI [Mon, 9 Nov 2020 05:17:23 +0000 (05:17 +0000)]
MFC r367005: MFV r366990: less v563.

Relnotes: yes

3 years agoBump __FreeBSD_version after ptsname_r addition.
Xin LI [Mon, 9 Nov 2020 01:55:30 +0000 (01:55 +0000)]
Bump __FreeBSD_version after ptsname_r addition.

3 years agoMFC r366781, r366866: Implement ptsname_r.
Xin LI [Mon, 9 Nov 2020 01:52:15 +0000 (01:52 +0000)]
MFC r366781, r366866: Implement ptsname_r.

3 years agoMFC r358477,365113,366767: arcmsr(4) 1.50.00.00.
Xin LI [Mon, 9 Nov 2020 01:38:02 +0000 (01:38 +0000)]
MFC r358477,365113,366767: arcmsr(4) 1.50.00.00.

3 years agoMFC r367261: Add icc (Isochronous Command Completion) ccb_ataio field.
Alexander Motin [Mon, 9 Nov 2020 01:14:22 +0000 (01:14 +0000)]
MFC r367261: Add icc (Isochronous Command Completion) ccb_ataio field.

3 years agoMFC r367052: Enable bioq 'car limit' added at r335066 at 128 bios.
Alexander Motin [Mon, 9 Nov 2020 01:13:28 +0000 (01:13 +0000)]
MFC r367052: Enable bioq 'car limit' added at r335066 at 128 bios.

Without the 'car limit' enabled (before this), running sequential ZFS scrub
on HDD without command queuing support, I've measured latency on concurrent
random reads reaching 4 seconds (surprised that not more).  Enabling this
reduced the latency to 65 milliseconds, while scrub still doing ~180MB/s.

For disks with command queuing this does not make much difference (if any),
since most time all the requests are queued down to the disk or HBA, leaving
nothing in the queue to sort.  And even if something does not fit, staying on
the queue, it is likely not for long.  To not limit sorting in such bursty
scenarios I've added batched counter zeroing when the queue is getting empty.

The internal scheduler of the SAS HDD I was testing seems to be even more
loyal to random I/O, reducing the scrub speed to ~120MB/s.  So in case
somebody worried this is limit is too strict -- it actually looks relaxed.

3 years agoMFC r367285:
Konstantin Belousov [Mon, 9 Nov 2020 00:39:48 +0000 (00:39 +0000)]
MFC r367285:
ifconfig: properly detect invalid mediaopt keywords.

3 years agoMFC r367042: mergemaster: Clarify installed and updated versions
Ed Maste [Sun, 8 Nov 2020 17:10:12 +0000 (17:10 +0000)]
MFC r367042: mergemaster: Clarify installed and updated versions

Describe "diff installed new" as "Displaying differences between
installed and new."  Previously mergemaster described them in the
opposite order.

PR: 249214
Reported by: Yuri Victorovich

3 years agoMFC r367256:
Mateusz Piotrowski [Sun, 8 Nov 2020 10:08:20 +0000 (10:08 +0000)]
MFC r367256:

Do not document default locations of the OpenBSD and NetBSD ports trees

Our own Ports Collection is not targeting those systems at the moment,
so let's stop documenting bits specific to OpenBSD and NetBSD in the ports
documentation. Especially, that it might bit rot one day.

3 years agoMFC r367252:
Konstantin Belousov [Sun, 8 Nov 2020 01:02:40 +0000 (01:02 +0000)]
MFC r367252:
net/if_media.c: improve IFMEDIA_DEBUG output.

3 years agoMFC r367251:
Konstantin Belousov [Sun, 8 Nov 2020 01:01:27 +0000 (01:01 +0000)]
MFC r367251:
Cleanup of net/if_media.c: simplify cleanup loop in ifmedia_removeall().

3 years agoMFC r367250:
Konstantin Belousov [Sun, 8 Nov 2020 01:00:10 +0000 (01:00 +0000)]
MFC r367250:
Cleanup of net/if_media.c: some style.

3 years agoMFC r367249:
Konstantin Belousov [Sun, 8 Nov 2020 00:59:09 +0000 (00:59 +0000)]
MFC r367249:
Cleanup of net/if_media.c: switch to ANSI C function definitions.

3 years agoMFC r367041: Fix incorrect constants of target tag action.
Alexander Motin [Sun, 8 Nov 2020 00:30:53 +0000 (00:30 +0000)]
MFC r367041: Fix incorrect constants of target tag action.

ocs_scsi_recv_cmd() receives the flags after ocs_get_flags_fcp_cmd(),
which translates them from FCP_TASK_ATTR_* to OCS_SCSI_CMD_*.  As result
non-SIMPLE requests turned into HEAD or ORDERED depending on direction.

3 years agoMFC r367323:
Dimitry Andric [Sat, 7 Nov 2020 19:57:19 +0000 (19:57 +0000)]
MFC r367323:

Update libcxxrt's private copy of elftoolchain demangler

This updates the private copy of libelftc_dem_gnu3.c in libcxxrt with
the most recent version from upstream r3877. Similar to r367322, this
fixes a number of possible assertions, and allows it to correctly
demangle several names that it could not handle before.

PR: 250702

MFC r367337:

Make vector-related functions in libcxxrt's demangler static

Follow-up to r367323 by re-adding static to a number of the functions
copied from elftc's libelftc_vstr.c. This was requested by upstream.

PR: 250702

3 years agoSync up elftoolchain with head, except for the capsicum-related commits,
Dimitry Andric [Sat, 7 Nov 2020 19:55:03 +0000 (19:55 +0000)]
Sync up elftoolchain with head, except for the capsicum-related commits,
which are incompatible with stable/12.

MFC r345360 (by oshogbo):

strings: do not depend on stdin

Instead of depending on one stdin FILE structure and use freopen(3), pass to
the functions appropriate FILE structure.

Reviewed by: cem
Discussed with: emaste
Differential Revision: https://reviews.freebsd.org/D18037

MFC r345361 (by oshogbo):

strings: do not continue if getc or getcharacter returns EOF

Reported by: cem

MFC r345362 (by oshogbo):

Fix powerpc and arm builds after r345361.

Reported by: jenkins

MFC r345364 (by oshogbo):

In case of ENCODING_8BIT the EOF code will be pass to putchar.
EOF check should be done before (uint8_t)c > 127 test.

Reported by: cem

MFC r345431 (by oshogbo):

strings: return an error code and the char value separately

If we returning 32 bits value it's hard to distinguish if the returned value
is a valid one or if its an error (in case of EOF). For that reason separate
exit code of the function from the returned character.

Reported by: cem, se

MFC r346323 (by emaste):

readelf: speed up readelf -wo

Use an array instead of STAILQ, and sort at the end instead of while
adding new elements.

PR: 212539
Submitted by: Bora Ã–zarslan <borako.ozarslan@gmail.com>
Reviewed by: markj
Sponsored by: The FreeBSD Foundation

MFC r346327 (by emaste):

readelf: use size_t for object counts

PR: 212539
Reported by: cem
Sponsored by: The FreeBSD Foundation

MFC r348776 (by csjp):

Teach readelf about some OpenBSD ELF program headers

- Add constants for OpenBSD wxneeded, bootdata and randomize to the
  FreeBSD elf_common.h file. This is the file that gets used by the
  elftoolchain library.
- Update readelf and elfdump utilities to decode these program headers
  if they are encountered.

Note: FreeBSD has it's own version of elfdump(1), which will be updated
in a subsequent commit. I am adding it here anyway because this diff is
going to be submitted upstream.

Discussed with: emaste
Reviewed by: imp
MFC afer: 2 weeks
Differential Revision: https://reviews.freebsd.org/D20548

M    contrib/elftoolchain/elfdump/elfdump.c
M    contrib/elftoolchain/readelf/readelf.c
M    sys/sys/elf_common.h

MFC r349510 (by luporl):

[PowerPC64] readelf: print description for 'e_flags' in ELF header (ABI type)

This prints out description text with the meaning of 'Flags' value in PowerPC64.

Example:

$ readelf -h ~/tmp/t1-Flag2
ELF Header:

Magic:   7f 45 4c 46 02 02 01 09 00 00 00 00 00 00 00 00
Class:                             ELF64
Data:                              2's complement, big endian
Version:                           1 (current)
OS/ABI:                            FreeBSD
ABI Version:                       0
Type:                              EXEC (Executable file)
Machine:                           PowerPC 64-bit
Version:                           0x1
Entry point address:               0x10010000
Start of program headers:          64 (bytes into file)
Start of section headers:          209368 (bytes into file)
Flags:                             0x2, OpenPOWER ELF V2 ABI
Size of this header:               64 (bytes)
Size of program headers:           56 (bytes)
Number of program headers:         10
Size of section headers:           64 (bytes)
Number of section headers:         34
Section header string table index: 31

Submitted by:  alfredo.junior_eldorado.org.br
Reviewed by: luporl
Differential Revision: https://reviews.freebsd.org/D20782

MFC r350511 (by emaste):

readelf: decode NT_GNU_PROPERTY_TYPE_0 / GNU_PROPERTY_X86_FEATURE_1_AND

These bits are used for Intel CET IBT/Shadow Stack.

Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D20516

MFC r354544 (by emaste):

elfcopy/strip: Ensure sections have required alignment on output

Object files may specify insufficient alignment on certain sections, for
example due to a bug in NASM[1].  When we detect that case in elfcopy or
strip, emit a warning and increase the alignment to the minimum
required.

The NASM bug was fixed in 2015[2], but we might as well have this fixup
(and warning) in elfcopy in case we encounter such a file for any other
reason.

This might be reworked somewhat upstream - see ELF Tool Chain
ticket 485[3].

[1] https://bugzilla.nasm.us/show_bug.cgi?id=3392307
[2] https://repo.or.cz/w/nasm.git/commit/1f0cb0f2c1ba632c0fab02424928cfb756a9160c
[3] https://sourceforge.net/p/elftoolchain/tickets/485/

PR: 198611
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D2292

MFC r357540 (by markj):

readelf: Fix a double close of the input file.

The caller of dump_object() is responsible for opening the file, let it
be responsible for closing too.

CID: 1411588
Sponsored by: The FreeBSD Foundation

MFC r357541 (by markj):

readelf: Fix the check for an error from realloc().

Use err() instead of errx() while here, since realloc() sets errno.

CID: 1401326
Sponsored by: The FreeBSD Foundation

MFC r358499 (by emaste):

readelf: add PROTMAX_DISABLE and STKGAP_DISABLE

From r349609 (PROTMAX_DISABLE) and r354790 (STKGAP_DISABLE).  Commited
upstream (in a slightly different form) as r3831.

Sponsored by: The FreeBSD Foundation

MFC r358631 (by emaste):

Reserve WXNEEDED ELF feature control flag

This will be used to tag binaries that require W+X mappings, in advance
of the ability to prevent W^X in mmap/mprotect.

There is still some discussion about the flag's name, but the ABI won't
change even if the name does (as kib pointed out in the review).

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

MFC r358637 (by emaste):

readelf: check note namesz and descsz

Previously corrupt note namesz or descsz (perhaps caused by readelf's
current lack of endian support for notes) resulted in a crash.  Check
that namesz and descsz do not extend beyond the end of the buffer before
trying to access name and desc data.

Reported by: jhb
Sponsored by: The FreeBSD Foundation

MFC r358639 (by emaste):

readelf: simplify namesz / descsz checks

Sponsored by: The FreeBSD Foundation

MFC r358685 (by emaste):

libelf: rationalize error handling in ELF note conversion

Previously _libelf_cvt_NOTE_tom (to host) returned false if a note's
namesz + descsz exceeded the buffer size, while _libelf_cvt_NOTE_tof
(to file) silently truncated.  Return false in the latter case too.

Sponsored by: The FreeBSD Foundation

MFC r358706 (by emaste):

readelf: add XEN_ELFNOTE_PHYS32_ENTRY note

See r336469 for details.

Sponsored by: The FreeBSD Foundation

MFC r358708 (by emaste):

readelf: decode and print Xen ELF note strings

Sponsored by: The FreeBSD Foundation

MFC r358713 (by emaste):

readelf: print GNU Build-ID

Sponsored by: The FreeBSD Foundation

MFC r359189 (by emaste):

readelf: simplify Xen string note printing

Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24140

MFC r361662 (by emaste):

readelf: add more DT_FLAGS_1 flags

Reference:
https://docs.oracle.com/cd/E36784_01/html/E36857/chapter6-42444.html

> DF_1_SINGLETON  Singleton symbols exist.
> DF_1_STUB       Object is a stub.
> DF_1_PIE        Object is a position-independent executable.

Sponsored by: The FreeBSD Foundation

MFC r364517 (by kib):

Reserve FreeBSD ELF feature control bit LA48 to control VA layout on amd64.

Tested by: pho
Sponsored by: The FreeBSD Foundation
Differential revision: https://reviews.freebsd.org/D25273

MFC r365489 (by bdragon):

[PowerPC64LE] PPC64LE support for libelf.

Fix native detection when building on powerpc64le.

I will be submitting this and r361104 upstream shortly.

Sponsored by: Tag1 Consulting, Inc.

MFC r366977 (by emaste):

libelf: add compression header support

GNU and Oracle libelf implementations added support for section
compression, intended to reduce the size of DWARF debug info (which
might be an order of magnitude larger than the code).

There are two compressed ELF section formats:

1. Old GNU - sections are renmaed to start with 'z'.  Section contains
   a magic number, uncompressed size, and compressed data.

2. Oracle and New GNU - compressed sections use the SHF_COMPRESSED flag.
   The compression header contains the compression type, uncompressed
   size, and uncompressed alignment.

The second style is preferred and this change implements only that one.

Submitted by: Tiger Gao <tig@FreeBSDFoundation.org>
Reviewed by: markj
Relnotes: Yes
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D24566

MFC r367209 (by emaste):

readelf: Add -z decompression support

Compatible with GNU readelf, -z decompresses sections displayed by
-x or -p.

ELF Tool Chain ticket #555
https://sourceforge.net/p/elftoolchain/tickets/555/

Submitted by: Tiger Gao <tig@FreeBSDFoundation.org>
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
Differential Revision:    https://reviews.freebsd.org/D26909

MFC r367238 (by bdragon):

Fix 32-bit build after r367209

Fix build on systems with a 32-bit size_t.

Since it's being passed as a pointer, a 64-bit write to it will overflow.

MFC with: r367209

MFC r367322 (by dim):

Merge elftoolchain r3877 (by jkoshy):

  Incorporate fixes from Dimitry Andric:

  - Use a BUFFER_GROW() macro to avoid rounding errors in capacity
    calculations.
  - Fix a bug introduced in [r3531].
  - Fix handling of nested template parameters.

  Ticket: #581

This should fix a number of assertions on elftoolchain's cxxfilt, and
allow it to correctly demangle several names that it could not handle
before.

Obtained from: https://sourceforge.net/p/elftoolchain/code/3877/
PR: 250702

3 years agoMFC r344855 (by jhb):
Dimitry Andric [Sat, 7 Nov 2020 18:10:59 +0000 (18:10 +0000)]
MFC r344855 (by jhb):

Drop "All rights reserved" from my copyright statements.

Reviewed by: rgrimes
Differential Revision: https://reviews.freebsd.org/D19485

3 years agoMFC r367327:
Bjoern A. Zeeb [Sat, 7 Nov 2020 16:35:48 +0000 (16:35 +0000)]
MFC r367327:

 arm64: implement bs_sr_<N>

  Implement the bs_sr_<N> generic functions based on the generic
  mips implementation calling the generic bs_w_<N> functions in a loop.

  ral(4) (rt2860.c) panics in RAL_SET_REGION_4() because bs_sr_4()
  is NULL.  It seems ral(4) and ti(4) might be the only consumers of
  these functions I could find quickly so keeping them in C rather than asm.

3 years agoMFC r367326:
Bjoern A. Zeeb [Sat, 7 Nov 2020 16:34:21 +0000 (16:34 +0000)]
MFC r367326:

 net80211: fix a typo

  Correct a typo referring to the wrong flags in a comment.
  No functional changes.

3 years agoMFC 366296: Avoid a dubious assignment to bio_data in aio_qbio().
John Baldwin [Sat, 7 Nov 2020 16:20:37 +0000 (16:20 +0000)]
MFC 366296: Avoid a dubious assignment to bio_data in aio_qbio().

A user pointer is not a suitable value for bio_data and the next block
of code always overwrites bio_data anyway.  Just use cb->aio_buf
directly in the call to vm_fault_quick_hold_pages().

3 years agoMFC r367022: Fix asymmetry in devstat(9) calls by GEOM.
Alexander Motin [Sat, 7 Nov 2020 13:16:11 +0000 (13:16 +0000)]
MFC r367022: Fix asymmetry in devstat(9) calls by GEOM.

Before this GEOM passed bio pointer to transaction end, but not start.
It was irrelevant until devstat(9) got DTrace hooks, that appeared to
provide bio pointer on I/O completion, but not on submission.

3 years agoMFC 365642: Add constant for the DE_CFG MSR on AMD CPUs.
John Baldwin [Fri, 6 Nov 2020 17:52:04 +0000 (17:52 +0000)]
MFC 365642: Add constant for the DE_CFG MSR on AMD CPUs.

3 years agoMFC r367300:
Mateusz Piotrowski [Fri, 6 Nov 2020 07:15:04 +0000 (07:15 +0000)]
MFC r367300:

build.7: Mention etcupdate(8) alongside mergemaster(8)

3 years agoMFC r367299:
Mateusz Piotrowski [Fri, 6 Nov 2020 07:14:04 +0000 (07:14 +0000)]
MFC r367299:

Fix a typo in the description of WITH_DEBUG_PORTS

For each origin listed in WITH_DEBUG_PORTS, the ports framework sets
WITH_DEBUG instead of WITH_DEBUG_PORTS.