]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
3 years agonetmap: bridge: switch to libnetmap
vmaffione [Sun, 22 Nov 2020 09:10:12 +0000 (09:10 +0000)]
netmap: bridge: switch to libnetmap

Use the newer libnetmap (included in base) rather than the older
nm_open()/nm_close() defined in netmap_user.h

3 years ago[2/2] _umtx_op: introduce 32-bit/i386 flags for operations
kevans [Sun, 22 Nov 2020 05:47:45 +0000 (05:47 +0000)]
[2/2] _umtx_op: introduce 32-bit/i386 flags for operations

This patch takes advantage of the consolidation that happened to provide two
flags that can be used with the native _umtx_op(2): UMTX_OP___32BIT and
UMTX_OP__I386.

UMTX_OP__32BIT iindicates that we are being provided with 32-bit structures.
Note that this flag alone indicates a 64bit time_t, since this is the
majority case.

UMTX_OP__I386 has been provided so that we can emulate i386 as well,
regardless of whether the host is amd64 or not.

Both imply a different set of copyops in sysumtx_op. freebsd32__umtx_op
simply ignores the flags, since it's already doing a 32-bit operation and
it's unlikely we'll be running an emulator under compat32. Future work
could consider it, but the author sees little benefit.

This will be used by qemu-bsd-user to pass on all _umtx_op calls to the
native interface as long as the host/target endianness matches, effectively
eliminating most if not all of the remaining unresolved deadlocks for most.

This version changed a fair amount from what was under review, mostly in
response to refactoring of the prereq reorganization and battle-testing
it with qemu-bsd-user.  The main changes are as follows:

1.) The i386 flag got renamed to omit '32BIT' since this is redundant.
2.) The flags are now properly handled on 32-bit platforms to emulate other
    32-bit platforms.
3.) Robust list handling was fixed, and the 32-bit functionality that was
    previously gated by COMPAT_FREEBSD32 is now unconditional.
4.) Robust list handling was also improved, including the error reported
    when a process has already registered 32-bit ABI lists and also
    detecting if native robust lists have already been registered. Both
    scenarios now return EBUSY rather than EINVAL, because the input is
    technically valid but we're too busy with another ABI's lists.

libsysdecode/kdump/truss support will go into review soon-ish, along with
the associated manpage update.

Reviewed by: kib (earlier version)
MFC after: 3 weeks

3 years agoFix build after 367926.
mav [Sun, 22 Nov 2020 05:42:52 +0000 (05:42 +0000)]
Fix build after 367926.

Option ISP_TARGET_MODE is evil.

3 years ago_umtx_op: move compat32 definitions back in
kevans [Sun, 22 Nov 2020 05:34:51 +0000 (05:34 +0000)]
_umtx_op: move compat32 definitions back in

These are reasonably compact, and a future commit will blur the compat32
lines by supporting 32-bit operations with the native _umtx_op.

3 years agofd: free old file descriptor tables when not shared
rew [Sun, 22 Nov 2020 05:00:28 +0000 (05:00 +0000)]
fd: free old file descriptor tables when not shared

During the life of a process, new file descriptor tables may be allocated. When
a new table is allocated, the old table is placed in a free list and held onto
until all processes referencing them exit.

When a new file descriptor table is allocated, the old file descriptor table
can be freed when the current process has a single-thread and the file
descriptor table is not being shared with any other processes.

Reviewed by:    kevans
Approved by:    kevans (mentor)
Differential Revision:  https://reviews.freebsd.org/D18617

3 years agoMake handlers and atpds overflows unlikely.
mav [Sun, 22 Nov 2020 04:29:55 +0000 (04:29 +0000)]
Make handlers and atpds overflows unlikely.

 - Allocate 256 handlers more than payload commands for management purposes.
 - Increase maximum number of handlers from 8K to 16K by tuning the format.
 - Just to be safe limit the number of payload commands to 16K - 256.
 - Limit number of target exchanges in mixed mode to the number of atpds.
 - If we still somehow get out of atpds -- return BUSY, since we really are.

3 years agoDo not parent all busdma tags to the payload tag.
mav [Sun, 22 Nov 2020 04:10:13 +0000 (04:10 +0000)]
Do not parent all busdma tags to the payload tag.

There is not much to inherit any more, may create more problems than solve.
Instead parent them all directly to upstream.

While there, add missed payload tag and tune scratch tag destructions.

3 years agoRemove remnants of execthrottle and maxalloc parameters.
mav [Sun, 22 Nov 2020 02:51:30 +0000 (02:51 +0000)]
Remove remnants of execthrottle and maxalloc parameters.

The first was obsolete since 26xx, not used on 25xx and not needed on 24xx.
The second seems never worked on 24xx and up.

3 years agoStop using eventhandlers for itimers subsystem exec and exit hooks.
kib [Sat, 21 Nov 2020 21:43:36 +0000 (21:43 +0000)]
Stop using eventhandlers for itimers subsystem exec and exit hooks.

While there, do some minor cleanup for kclocks.  They are only
registered from kern_time.c, make registration function static.
Remove event hooks, they are not used by both registered kclocks.
Add some consts.

Perhaps we can stop registering kclocks at all and statically
initialize them.

Reviewed by: mjg
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D27305

3 years agoImprove number reading by rounding up to a next unit earlier for memory display.
mr [Sat, 21 Nov 2020 19:14:11 +0000 (19:14 +0000)]
Improve number reading by rounding up to a next unit earlier for memory display.

Submitted by: ota@j.email.ne.jp
Differential Revision: https://reviews.freebsd.org/D26503

3 years agonetmap: bridge, pkt-gen: fix man page typo
vmaffione [Sat, 21 Nov 2020 18:47:13 +0000 (18:47 +0000)]
netmap: bridge, pkt-gen: fix man page typo

Reported by: ian
MFC after: 3 days

3 years agonetmap: bridge: update man page with more information
vmaffione [Sat, 21 Nov 2020 18:20:21 +0000 (18:20 +0000)]
netmap: bridge: update man page with more information

Update the man page to describe how it is necessary to
enable promiscuous mode and/or disable offloads.

3 years agoRemove unused prototype.
kib [Sat, 21 Nov 2020 10:58:19 +0000 (10:58 +0000)]
Remove unused prototype.

Missed part of r367918.

Sponsored by: The FreeBSD Foundation
MFC after: 1 week

3 years agoStop using eventhandler to invoke umtx_exec hook.
kib [Sat, 21 Nov 2020 10:32:40 +0000 (10:32 +0000)]
Stop using eventhandler to invoke umtx_exec hook.

There is no point in dynamic registration, umtx hook is there always.

Reviewed by: mjg
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D27303

3 years agocxgbe(4): Catch up with in-flight netmap rx before destroying queues.
np [Sat, 21 Nov 2020 03:27:32 +0000 (03:27 +0000)]
cxgbe(4): Catch up with in-flight netmap rx before destroying queues.

The netmap application using the driver is responsible for replenishing
the receive freelists and they may be totally depleted when the
application exits.  Packets in flight, if any, might block the pipeline
in case there aren't enough buffers left in the freelist.  Avoid this by
filling up the freelists with a driver allocated buffer.

MFC after: 1 week
Sponsored by: Chelsio Communications

3 years agoUnlucky change...
mav [Sat, 21 Nov 2020 00:53:31 +0000 (00:53 +0000)]
Unlucky change...

MFC after: 3 days

3 years agoFix stupid math mistake in r366922.
mav [Sat, 21 Nov 2020 00:51:39 +0000 (00:51 +0000)]
Fix stupid math mistake in r366922.

MFC after: 3 days

3 years agoDocument the new "tls" NFS mount option.
rmacklem [Fri, 20 Nov 2020 22:29:38 +0000 (22:29 +0000)]
Document the new "tls" NFS mount option.

Recent commits to head have added support for NFS over TLS
to the FreeBSD kernel.
To enable use of this for an NFS mount, the "tls" mount_nfs
option has been added.

Once the IETF has assigned an RFC number, I will replace "NNNN"
with the number.

This is a content change.

Reviewed by: gbe
Differential Revision: https://reviews.freebsd.org/D26262

3 years agoUpdate man page for new TLS export options.
rmacklem [Fri, 20 Nov 2020 22:14:51 +0000 (22:14 +0000)]
Update man page for new TLS export options.

NFS over TLS uses three new export options, added by r364979.
This patch updates the exports.5 man page for these new options.
Once assigned by IETF, "NNNN" will be replaced with the RFC number.

This is a content change.

Reviewed by: gbe
Differential Revision: https://review.freebsd.org/D26241

3 years agoOnly attempt a VOP_UNLOCK() when the vn_lock() has been successful.
mckusick [Fri, 20 Nov 2020 20:22:01 +0000 (20:22 +0000)]
Only attempt a VOP_UNLOCK() when the vn_lock() has been successful.

No MFC as this code is not present in 12-stable.

Reported by:  Peter Holm
Reviewed by:  Mateusz Guzik
Tested by:    Peter Holm
Sponsored by: Netflix

3 years agoAdd lists for customizing legacy and bootstrap-tools.
bdrewery [Fri, 20 Nov 2020 20:11:59 +0000 (20:11 +0000)]
Add lists for customizing legacy and bootstrap-tools.

Reviewed by: arichardson
Sponsored by: Dell EMC
Differential Revision: https://reviews.freebsd.org/D27200

3 years agoIncrease queue depths from 1024/256 to 8192/1024 IOCBs.
mav [Fri, 20 Nov 2020 19:36:34 +0000 (19:36 +0000)]
Increase queue depths from 1024/256 to 8192/1024 IOCBs.

Qlogic chips store S/G lists in the same queue as requests themselves.  In
the worst case 1MB I/O may require up to 52 IOCBs, that means queue of 1024
IOCBs can store only 19 of such requests.  The increase reduces chances of
overflow, while we should be able to afford additional 512KB of RAM per HBA.
The Linux driver uses comparable numbers.

While there, decouple ATIO queue size from response queue size.  There is
no reason for them to be equal.

3 years ago[POWERPC] print uprintf_signal 'type' field in hex
alfredo [Fri, 20 Nov 2020 18:52:37 +0000 (18:52 +0000)]
[POWERPC] print uprintf_signal 'type' field in hex

Print 'type' field in hex to improve readability

Reviewed by: jhibbits
Differential Revision: https://reviews.freebsd.org/D27294

3 years ago[POWERPC64LE,POWEPCSPE] set default kernel config for powerpc64le and powerpcspe...
alfredo [Fri, 20 Nov 2020 18:42:01 +0000 (18:42 +0000)]
[POWERPC64LE,POWEPCSPE] set default kernel config for powerpc64le and powerpcspe variants

Default KERNCONF for powerpc64le should be GENERIC64, and powerpcspe should
select MPC85XXSPE

Reviewed by: bdragon,emaste
Sponsored by: Eldorado Research Institute (eldorado.org.br)
Differential Revision: https://reviews.freebsd.org/D27257

3 years agoCleanup DMA handling.
mav [Fri, 20 Nov 2020 18:02:04 +0000 (18:02 +0000)]
Cleanup DMA handling.

 - Make isp_start() to set all the IOCB fields aside of S/G list, removing
extra information from isp_send_cmd(), now only doing S/G lists and sending.
 - Turn DMA setup/free from being card and PCI-specific into OS-specific,
instead add new card-specific method for isp_send_cmd().  Previously this
function was a monster handling all the cards.
 - Remove double error code translation.

3 years agoWhen copying types from one CTF container to another, ensure that we
jtl [Fri, 20 Nov 2020 17:26:02 +0000 (17:26 +0000)]
When copying types from one CTF container to another, ensure that we
encode 0-length (i.e. "") structure and union member names as offset 0.
This ensures that we don't confuse other parts of the CTF code which
expect this encoding.

This resolves a Dtrace error resolving members of anonymous structs/unions
within the (struct mbuf) type which some users were seeing after r366908.

While here, update the code in ctf_add_generic() to encode 0-length type
names as offset 0.

Reviewed by: markj
MFC after: 2 weeks
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D27246

3 years agohostapd.conf(5): Add missing 'l'
gbe [Fri, 20 Nov 2020 17:13:13 +0000 (17:13 +0000)]
hostapd.conf(5): Add missing 'l'

In r367901 I accidentally deleted the 'l' while fixing a few
mandoc erros.

Spotted by: Yuri Pankov

3 years agomoused(8): Fix a few mandoc warnings
gbe [Fri, 20 Nov 2020 17:04:49 +0000 (17:04 +0000)]
moused(8): Fix a few mandoc warnings

- new sentence, new line

3 years agocrashinfo(8): Fix a few mandoc warnings
gbe [Fri, 20 Nov 2020 16:59:51 +0000 (16:59 +0000)]
crashinfo(8): Fix a few mandoc warnings

- new sentence, new line

3 years agohostapd.conf(5): Fix a mandoc warning
gbe [Fri, 20 Nov 2020 16:57:06 +0000 (16:57 +0000)]
hostapd.conf(5): Fix a mandoc warning

- new sentence, new line

3 years agosyslog.conf(5): Fix a few mandoc warnings
gbe [Fri, 20 Nov 2020 16:50:52 +0000 (16:50 +0000)]
syslog.conf(5): Fix a few mandoc warnings

- new sentence, new line
- skipping paragraph macro: Pp at the end of Sh

3 years agosnmp_wlan(3): Fix mandoc warnings
gbe [Fri, 20 Nov 2020 16:46:51 +0000 (16:46 +0000)]
snmp_wlan(3): Fix mandoc warnings

- new sentence, new line

3 years agoiscsi.conf(5): Fix a mandoc warning
gbe [Fri, 20 Nov 2020 16:41:32 +0000 (16:41 +0000)]
iscsi.conf(5): Fix a mandoc warning

- new sentence, new line

3 years agodevmatch(8): Fix section ordering
gbe [Fri, 20 Nov 2020 16:34:01 +0000 (16:34 +0000)]
devmatch(8): Fix section ordering

- sections out of conventional order: Sh HISTORY

3 years agoriscv: always initialize the static kernel environment
mhorne [Fri, 20 Nov 2020 15:21:10 +0000 (15:21 +0000)]
riscv: always initialize the static kernel environment

Ensure we initialize the static environment when not booting via
loader(8), and provide a static buffer if this is the case. This fixes
two issues.

First, performing the initialization ensures that kenv variables set in
the kernel's config file are honored. Previously, any new or overridden
values were ignored.

Second, providing the static buffer allows variables to be set in the
device tree's bootargs property of the chosen node. This can be set by
u-boot or by QEMU's '-append' flag. Attempting to this prior to this
change resulted in an early panic, since the static environment had no
buffer backing it.

Submitted by: syrinx (earlier version)
Reviewed by: kp
Differential Revision: https://reviews.freebsd.org/D25034

3 years agomsdosfs: suspend around unmount or remount rw->ro.
kib [Fri, 20 Nov 2020 15:19:30 +0000 (15:19 +0000)]
msdosfs: suspend around unmount or remount rw->ro.

This also eliminates unsafe use of VFS_SYNC(MNT_WAIT).

Requested by: mckusick
Discussed with: imp
Tested by: pho (previous version)
Sponsored by: The FreeBSD Foundation
MFC after: 2 weeks
Differential revision: https://reviews.freebsd.org/D27269

3 years agoMake net/ifq.h C++ friendly
mhorne [Fri, 20 Nov 2020 14:45:45 +0000 (14:45 +0000)]
Make net/ifq.h C++ friendly

Don't use "new" as an identifier, and add explicit casts from void *.

As a general policy, FreeBSD doesn't make any C++ compatibility
guarantees for kernel headers like it does for userland, but it is a
small effort to do so in this case, to the benefit of a downstream
consumer (NetApp).

Reviewed by: rscheff
Sponsored by: NetApp, Inc.
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D27286

3 years agoRevert r367291 (KEYWORD: shutdown for rc.d/zfs)
0mp [Fri, 20 Nov 2020 14:37:07 +0000 (14:37 +0000)]
Revert r367291 (KEYWORD: shutdown for rc.d/zfs)

The problem is that zfs is asked to stop too early in the shutdown
sequence. Other services, such as syslog may still be running and have some
files open (e.g., under /var/log). This of course causes the messages like:

  cannot unmount '/var/run': umount failed
  cannot unmount '/var/log': umount failed
  cannot unmount '/var': umount failed
  cannot unmount '/usr/home': umount failed
  cannot unmount '/usr': umount failed
  cannot unmount '/': umount failed

For now, let's remove the shutdown KEYWORD from the zfs service, as people are
reporting problems in their setups:
https://lists.freebsd.org/pipermail/freebsd-current/2020-November/077559.html

In the future, we may think of stopping zfs on shutdown after all the other
services and just before init(8) exits. Another interesting option might be to
a new rcorder(8) KEYWORD like "shutdownjail", but this idea would need to be
discussed a bit.

Reported by: Johan Hendriks <joh.hendriks gmail.com>
Reported by: Yasuhiro KIMURA <yasu utahime.org>
Reported by: Tomoaki AOKI <junchoon dec.sakura.ne.jp>
Approved by: kevans (src)
MFC: 3 days
Differential Revision: https://reviews.freebsd.org/D27263

3 years agoUnlock channels when any of them are locked, when returning for non-busy state.
kib [Fri, 20 Nov 2020 14:02:43 +0000 (14:02 +0000)]
Unlock channels when any of them are locked, when returning for non-busy state.

Reported and tested by: "Wall, Stephen" <stephen.wall@redcom.com>
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

3 years agoFix an issue I introuced in r367530: tcp_twcheck() can be called
tuexen [Fri, 20 Nov 2020 13:00:28 +0000 (13:00 +0000)]
Fix an issue I introuced in r367530: tcp_twcheck() can be called
with to == NULL for SYN segments. So don't assume tp != NULL.
Thanks to jhb@ for reporting and suggesting a fix.

PR: 250499
MFC after: 1 week
XMFC-with: r367530
Sponsored by: Netflix, Inc.

3 years agomsdosfs: Add trivial support for suspension.
kib [Fri, 20 Nov 2020 12:31:02 +0000 (12:31 +0000)]
msdosfs: Add trivial support for suspension.

Tested by: pho (previous version)
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D27269

3 years agocamcontrol(8): Fix some warnings spotted by mandoc
gbe [Fri, 20 Nov 2020 11:45:08 +0000 (11:45 +0000)]
camcontrol(8): Fix some warnings spotted by mandoc

- skipping paragraph macro: Pp before Bl

3 years agoif_dwc: Add checksum offloading support
manu [Fri, 20 Nov 2020 11:31:25 +0000 (11:31 +0000)]
if_dwc: Add checksum offloading support

3 years agoif_dwc: Add flow control support
manu [Fri, 20 Nov 2020 11:31:04 +0000 (11:31 +0000)]
if_dwc: Add flow control support

3 years agoif_awg: Add a awg_dma_start_tx function that trigger dma engine
manu [Fri, 20 Nov 2020 11:30:44 +0000 (11:30 +0000)]
if_awg: Add a awg_dma_start_tx function that trigger dma engine

No functional changes intended

3 years agoif_dwc: Use if_ function where appropriate
manu [Fri, 20 Nov 2020 11:30:23 +0000 (11:30 +0000)]
if_dwc: Use if_ function where appropriate

No functional changes intended

3 years agoif_dwc: Reorder functions and sort them by usage
manu [Fri, 20 Nov 2020 11:30:01 +0000 (11:30 +0000)]
if_dwc: Reorder functions and sort them by usage

No functional changes intended

3 years agoif_awg: Reorder functions and sort them by usage
manu [Fri, 20 Nov 2020 11:29:37 +0000 (11:29 +0000)]
if_awg: Reorder functions and sort them by usage

No functional changes intended

3 years agoif_dwc: dwc_get_hwaddr cannot fail, change return to void
manu [Fri, 20 Nov 2020 11:29:20 +0000 (11:29 +0000)]
if_dwc: dwc_get_hwaddr cannot fail, change return to void

No functional changes intended

3 years agoif_dwc: Add dwc_stop_dma and use it in dwc_stop_locked
manu [Fri, 20 Nov 2020 11:29:00 +0000 (11:29 +0000)]
if_dwc: Add dwc_stop_dma and use it in dwc_stop_locked

No functional changes intended

3 years agoif_awg: Add awg_stop_dma and use it in awg_stop
manu [Fri, 20 Nov 2020 11:28:23 +0000 (11:28 +0000)]
if_awg: Add awg_stop_dma and use it in awg_stop

No functional changes intended

3 years agoif_dwc: Use dwc_enable_mac in dwc_stop_locked
manu [Fri, 20 Nov 2020 11:28:06 +0000 (11:28 +0000)]
if_dwc: Use dwc_enable_mac in dwc_stop_locked

No functional changes intended

3 years agoif_dwc: Add a function to enable/disable the mac tx/rx
manu [Fri, 20 Nov 2020 11:27:43 +0000 (11:27 +0000)]
if_dwc: Add a function to enable/disable the mac tx/rx

No functional changes intended

3 years agoif_awg: Add a function to enable/disable the mac tx/rx
manu [Fri, 20 Nov 2020 11:27:26 +0000 (11:27 +0000)]
if_awg: Add a function to enable/disable the mac tx/rx

No functional changes intended

3 years agoif_dwc: Use if_setdrvflagbits to notify that we are running
manu [Fri, 20 Nov 2020 11:27:08 +0000 (11:27 +0000)]
if_dwc: Use if_setdrvflagbits to notify that we are running

No functional changes intended

3 years agoif_dwc: Split init code into sub function
manu [Fri, 20 Nov 2020 11:26:46 +0000 (11:26 +0000)]
if_dwc: Split init code into sub function

Be clear of what we enable or init.

No functional changes intended

3 years agoif_awg: Split init code into sub function
manu [Fri, 20 Nov 2020 11:26:20 +0000 (11:26 +0000)]
if_awg: Split init code into sub function

Be clear of what we enable or init.

No functional changes intended

3 years agoif_awg: Remove the taskqueue for miibus_statchg
manu [Fri, 20 Nov 2020 11:25:54 +0000 (11:25 +0000)]
if_awg: Remove the taskqueue for miibus_statchg

I guess it was added so we can obtain the device lock but we already
have it when the function is called.

No functional changes intended

3 years agopf tests: Basic source tracking test
kp [Fri, 20 Nov 2020 10:11:03 +0000 (10:11 +0000)]
pf tests: Basic source tracking test

MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D27255

3 years agopf: Fix incorrect assertion
kp [Fri, 20 Nov 2020 10:08:33 +0000 (10:08 +0000)]
pf: Fix incorrect assertion

We never set PFRULE_RULESRCTRACK when calling pf_insert_src_node(). We do set
PFRULE_SRCTRACK, so update the assertion to match.

MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D27254

3 years agobzgrep: make flag --no-filename work
eugen [Fri, 20 Nov 2020 09:56:46 +0000 (09:56 +0000)]
bzgrep: make flag --no-filename work

PR: 248813
MFC after: 1 week

3 years agoAlso pass interrupt binding request to non-root interrupt controllers.
mmel [Fri, 20 Nov 2020 09:05:36 +0000 (09:05 +0000)]
Also pass interrupt binding request to non-root interrupt controllers.
There are message based controllers that can bind interrupts even if they are
not implemented as root controllers (such as the ITS subblock of GIC).

MFC after: 3 weeks

3 years agoMerge bmake-20201117
sjg [Fri, 20 Nov 2020 06:02:31 +0000 (06:02 +0000)]
Merge bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
  checks in InitObjdir.  Explicit .OBJDIR target always allows
  read-only directory.

o More code cleanup and refactoring.

o More unit tests

MFC after: 1 week

3 years agoMicrooptimize cam_num_doneqs math in xpt_done().
mav [Fri, 20 Nov 2020 05:46:27 +0000 (05:46 +0000)]
Microoptimize cam_num_doneqs math in xpt_done().

MFC after: 1 week

3 years agotag bmake-20201117
sjg [Fri, 20 Nov 2020 03:54:46 +0000 (03:54 +0000)]
tag bmake-20201117

3 years agoImport bmake-20201117
sjg [Fri, 20 Nov 2020 03:54:37 +0000 (03:54 +0000)]
Import bmake-20201117

o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
  checks in InitObjdir.  Explicit .OBJDIR target always allows
  read-only directory.

o Fix building and unit-tests on non-BSD.

o More code cleanup and refactoring.

o More unit tests

3 years agoFix r367857 build without ISP_TARGET_MODE.
mav [Fri, 20 Nov 2020 02:03:58 +0000 (02:03 +0000)]
Fix r367857 build without ISP_TARGET_MODE.

3 years agoRemove parallel SCSI and 1/2Gb FC support from isp(4).
mav [Fri, 20 Nov 2020 01:15:48 +0000 (01:15 +0000)]
Remove parallel SCSI and 1/2Gb FC support from isp(4).

This removes 288KB (36%) of the driver code and zillions of hacks and
workarounds, making single driver uniformly support several different
generations of hardware interfaces, not counting minor card variations.
After years of the hopeless fight, I don't think it worth to continue
support for hardware obsolete for 15-20 years.  Instead much cleaner
now code should allow to move forward toward better locking, multiple
queues and other cool features.

All the remaining Qlogic cards starting from 4Gb 24xx to 32Gb 27xx use
the same hardware/firmware interface with minor incremental improvements,
so it seems to be a good new starting point.  Except one PCI-X model all
all of them are PCIe and so still usable in modern systems.

Discussed with: ken, scottl, jpaetzel, imp
Relnotes: yes

3 years agopsm(4): Disable AUX multiplexer probing on all Lenovo laptops.
wulf [Fri, 20 Nov 2020 00:13:30 +0000 (00:13 +0000)]
psm(4): Disable AUX multiplexer probing on all Lenovo laptops.

Rudimentary AUX multiplexing support was added to kernel to make possible
touchpad initialization on some HP EliteBook laptops with trackpoint.

Disable multiplexer probing on all Lenovo laptops now as they use touchpad
pass-through port rather than AUX multiplexer to connect trackpoint and
at least two model (X120e and X121e) is known for getting PS/2 AUX port
dysfunctional after switching back to hidden multiplexing mode.

AUX MUX probing can be reenabled with setting of hw.psm.mux_disabled loader
tunable to 0.

PR: 249987
Reported by: jwb
MFC after: 2 weeks

3 years agoaddr2line: swap if conditions for diff reduction in upcoming change
emaste [Thu, 19 Nov 2020 21:10:36 +0000 (21:10 +0000)]
addr2line: swap if conditions for diff reduction in upcoming change

No functional change intended.

3 years agopipe: thundering herd problem in pipelock
mjg [Thu, 19 Nov 2020 19:25:47 +0000 (19:25 +0000)]
pipe: thundering herd problem in pipelock

All reads and writes are serialized with a hand-rolled lock, but unlocking it
always wakes up all waiters. Existing flag fields get resized to make room for
introduction of waiter counter without growing the struct.

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

3 years agofstat(1): Add EXAMPLES section
fernape [Thu, 19 Nov 2020 19:05:16 +0000 (19:05 +0000)]
fstat(1): Add EXAMPLES section

* Add examples covering -f, -m and -p flags.

While here, extend the initial description paragraph to note that fstat(1)
will report on all opened files, belonging to processes the user has access to.
The current paragraph may lead to understand that you can get information on
opened files from processes belonging to other users.

Reviewed by: bjk@, danfe@, gbe@
Approved by: manpages (gbe@)
Differential Revision: https://reviews.freebsd.org/D26949

3 years agogrep(1): Add more EXAMPLES
fernape [Thu, 19 Nov 2020 18:58:15 +0000 (18:58 +0000)]
grep(1): Add more EXAMPLES

* Add more EXAMPLES covering flags: -A, -B, -c, -f, -i, -H, -l, -q, -R, -w
* While here, change existing wording to use the imperative (remove "To
  find")
* Reword first example to be consistent with how grep(1) understand
  words (-w)

Approved by: manpages (bcr@)
Differential Revision: https://reviews.freebsd.org/D27264

3 years agocallout(9): Fix a race between CPU migration and callout_drain()
markj [Thu, 19 Nov 2020 18:37:28 +0000 (18:37 +0000)]
callout(9): Fix a race between CPU migration and callout_drain()

Suppose a running callout re-arms itself, and before the callout
finishes running another CPU calls callout_drain() and goes to sleep.
softclock_call_cc() will wake up the draining thread, which may not run
immediately if there is a lot of CPU load.  Furthermore, the callout is
still in the callout wheel so it can continue to run and re-arm itself.
Then, suppose that the callout migrates to another CPU before the
draining thread gets a chance to run.  The draining thread is in this
loop in _callout_stop_safe():

while (cc_exec_curr(cc) == c) {
CC_UNLOCK(cc);
sleep();
CC_LOCK(cc);
}

but after the migration, cc points to the wrong CPU's callout state.
Then the draining thread goes off and removes the callout from the
wheel, but does so using the wrong lock and per-CPU callout state.

Fix the problem by doing a re-lookup of the callout CPU after sleeping.

Reported by: syzbot+79569cd4d76636b2cc1c@syzkaller.appspotmail.com
Reported by: syzbot+1b27e0237aa22d8adffa@syzkaller.appspotmail.com
Reported by: syzbot+e21aa5b85a9aff90ef3e@syzkaller.appspotmail.com
Reviewed by: emaste, hselasky
Tested by: pho
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D27266

3 years agoAdd an option for entering KDB on recursive panics
mhorne [Thu, 19 Nov 2020 18:03:40 +0000 (18:03 +0000)]
Add an option for entering KDB on recursive panics

There are many cases where one would choose avoid entering the debugger
on a normal panic, opting instead to reboot and possibly save a kernel
dump. However, recursive kernel panics are an unusual case that might
warrant attention from a human, so provide a secondary tunable,
debug.debugger_on_recursive_panic, to allow entering the debugger only
when this occurs.

For for simplicity in maintaining existing behaviour, the tunable
defaults to zero.

Reviewed by: cem, markj
Sponsored by: NetApp, Inc.
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D27271

3 years agoDocument disk ioctl
imp [Thu, 19 Nov 2020 17:54:41 +0000 (17:54 +0000)]
Document disk ioctl

First stab at documenting the different disk ioctl commands defined in
sys/disk.h.

Reviewed by: phk (prior version)
Differential Revision: https://reviews.freebsd.org/D26994

3 years agointro.7: Add missing manual page
debdrup [Thu, 19 Nov 2020 16:57:45 +0000 (16:57 +0000)]
intro.7: Add missing manual page

Section 7 of the manual pages contain lots of very useful information, but
finding the pages is not always obvious - to assist people in finding the
information, add missing cross-references.

Reviewed by: 0mp (mentor), mhorne, yuripv
Approved by: 0mp (mentor
Differential Revision: https://reviews.freebsd.org/D27284

3 years agoWrap a long line in vm_pqbatch_process_page()
markj [Thu, 19 Nov 2020 15:41:42 +0000 (15:41 +0000)]
Wrap a long line in vm_pqbatch_process_page()

3 years agoMicro-optimize vm_page_pqbatch_submit()
markj [Thu, 19 Nov 2020 15:40:58 +0000 (15:40 +0000)]
Micro-optimize vm_page_pqbatch_submit()

Avoid calling vm_page_domain() twice.

Discussed with: alc (in D27207)

3 years agorelease: Switch the Allwinner board to GPT
manu [Thu, 19 Nov 2020 14:27:01 +0000 (14:27 +0000)]
release: Switch the Allwinner board to GPT

Allwinner bootrom have an alternate location for u-boot at 128k.
Work was made recently in u-boot to relocate correctly if loaded from
there.
The advantage of this offset is that we can now use a GPT scheme.

3 years agothread: numa-aware zombie reaping
mjg [Thu, 19 Nov 2020 10:00:48 +0000 (10:00 +0000)]
thread: numa-aware zombie reaping

The current global list is a significant problem, in particular induces a lot
of cross-domain thread frees. When running poudriere on a 2 domain box about
half of all frees were of that nature.

Patch below introduces per-domain thread data containing zombie lists and
domain-aware reaping. By default it only reaps from the current domain, only
reaping from others if there is free TID shortage.

A dedicated callout is introduced to reap lingering threads if there happens
to be no activity.

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

3 years agoFall back to use the GICR address from the generic interrupt struct
andrew [Thu, 19 Nov 2020 09:26:51 +0000 (09:26 +0000)]
Fall back to use the GICR address from the generic interrupt struct

When there is no ACPI redistributor sub-table in the MADT we need to
fall back to use the GICR base address from the GIC CPU interface
structure.

Handle this fallback when adding memory to the device and when counting
the number of redistributors.

PR: 251171
Reported by: Andrey Fesenko <f0andrey_gmail.com>
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D27247

3 years agopipe: tidy up pipelock
mjg [Thu, 19 Nov 2020 08:16:45 +0000 (08:16 +0000)]
pipe: tidy up pipelock

3 years agoAdvance RIP after userspace instruction decode
grehan [Thu, 19 Nov 2020 07:23:39 +0000 (07:23 +0000)]
Advance RIP after userspace instruction decode

Add update to RIP after a userspace instruction decode (as is done for
the in-kernel counterpart of this case).

Submitted by: adam_fenn.io
Reviewed by: cem, markj
Approved by: grehan (bhyve)
MFC after: 3 weeks
Differential Revision: https://reviews.freebsd.org/D27243

3 years agopipe: allow for lockless pipe_stat
mjg [Thu, 19 Nov 2020 06:30:25 +0000 (06:30 +0000)]
pipe: allow for lockless pipe_stat

pipes get stated all thet time and this avoidably contributed to contention.
The pipe lock is only held to accomodate MAC and to check the type.

Since normally there is no probe for pipe stat depessimize this by having the
flag.

The pipe_state field gets modified with locks held all the time and it's not
feasible to convert them to use atomic store. Move the type flag away to a
separate variable as a simple cleanup and to provide stable field to read.
Use short for both fields to avoid growing the struct.

While here short-circuit MAC for pipe_poll as well.

3 years agoMerge upstream r948: fix race condition in openpam_ttyconv(3).
des [Thu, 19 Nov 2020 05:46:59 +0000 (05:46 +0000)]
Merge upstream r948: fix race condition in openpam_ttyconv(3).

3 years agocred: fix minor nits in r367695
mjg [Thu, 19 Nov 2020 04:28:39 +0000 (04:28 +0000)]
cred: fix minor nits in r367695

Noted by: jhb

3 years agosmp: fix smp_rendezvous_cpus_retry usage before smp starts
mjg [Thu, 19 Nov 2020 04:27:51 +0000 (04:27 +0000)]
smp: fix smp_rendezvous_cpus_retry usage before smp starts

Since none of the other CPUs are running there is nobody to clear their
entries and the routine spins indefinitely.

3 years agovm_phys: Try to clean up NUMA KPIs
markj [Thu, 19 Nov 2020 03:59:21 +0000 (03:59 +0000)]
vm_phys: Try to clean up NUMA KPIs

It can useful for code outside the VM system to look up the NUMA domain
of a page backing a virtual or physical address, specifically when
creating NUMA-aware data structures.  We have _vm_phys_domain() for
this, but the leading underscore implies that it's an internal function,
and vm_phys.h has dependencies on a number of other headers.

Rename vm_phys_domain() to vm_page_domain(), and _vm_phys_domain() to
vm_phys_domain().  Make the latter an inline function.

Add _vm_phys.h and define struct vm_phys_seg there so that it's easier
to use in other headers.  Include it from vm_page.h so that
vm_page_domain() can be defined there.

Include machine/vmparam.h from _vm_phys.h since it depends directly on
some constants defined there.

Reviewed by: alc
Reviewed by: dougm, kib (earlier versions)
Differential Revision: https://reviews.freebsd.org/D27207

3 years agoMove kern_clocksource.c to sys/conf/files
markj [Thu, 19 Nov 2020 02:53:29 +0000 (02:53 +0000)]
Move kern_clocksource.c to sys/conf/files

Sponsored by: The FreeBSD Foundation

3 years agoRemove NO_EVENTTIMERS support
markj [Thu, 19 Nov 2020 02:50:48 +0000 (02:50 +0000)]
Remove NO_EVENTTIMERS support

The arm configs that required it have been removed from the tree.
Removing this option makes the callout code easier to read and
discourages developers from adding new configs without eventtimer
drivers.

Reviewed by: ian, imp, mav
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D27270

3 years agoAdd '-u' switch that would uncompress cores that were compressed by
glebius [Thu, 19 Nov 2020 02:20:38 +0000 (02:20 +0000)]
Add '-u' switch that would uncompress cores that were compressed by
kernel during dump time.

A real life scenario is that cores are compressed to reduce
size of dumpon partition, but we either don't care about space
in the /var/crash or we have a filesystem level compression of
/var/crash. And we want cores to be uncompressed in /var/crash
because we'd like to instantily read them with kgdb. In this
case we want kernel to write cores compressed, but savecore(1)
write them uncompressed.

Reviewed by: markj, gallatin
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D27245

3 years agolibc: fix undefined behavior from signed overflow in strstr and memmem
emaste [Thu, 19 Nov 2020 00:03:15 +0000 (00:03 +0000)]
libc: fix undefined behavior from signed overflow in strstr and memmem

unsigned char promotes to int, which can overflow when shifted left by
24 bits or more. this has been reported multiple times but then
forgotten. it's expected to be benign UB, but can trap when built with
explicit overflow catching (ubsan or similar). fix it now.

note that promotion to uint32_t is safe and portable even outside of
the assumptions usually made in musl, since either uint32_t has rank
at least unsigned int, so that no further default promotions happen,
or int is wide enough that the shift can't overflow. this is a
desirable property to have in case someone wants to reuse the code
elsewhere.

musl commit: 593caa456309714402ca4cb77c3770f4c24da9da

Obtained from: musl

3 years agolibc: optimize memmem two-way bad character shift
emaste [Thu, 19 Nov 2020 00:02:12 +0000 (00:02 +0000)]
libc: optimize memmem two-way bad character shift

first, the condition (mem && k < p) is redundant, because mem being
nonzero implies the needle is periodic with period exactly p, in which
case any byte that appears in the needle must appear in the last p
bytes of the needle, bounding the shift (k) by p.

second, the whole point of replacing the shift k by mem (=l-p) is to
prevent shifting by less than mem when discarding the memory on shift,
in which case linear time could not be guaranteed. but as written, the
check also replaced shifts greater than mem by mem, reducing the
benefit of the shift. there is no possible benefit to this reduction of
the shift; since mem is being cleared, the full shift is valid and
more optimal. so only replace the shift by mem when it would be less
than mem.

musl commits:
8f5a820d147da36bcdbddd201b35d293699dacd8
122d67f846cb0be2c9e1c3880db9eb9545bbe38c

Obtained from: musl
MFC after: 2 weeks

3 years agoclang-format libc string functions imported from musl
emaste [Wed, 18 Nov 2020 22:01:34 +0000 (22:01 +0000)]
clang-format libc string functions imported from musl

We have adopted these and don't consider them 'contrib' code, so bring
them closer to style(9).  This is a followon to r315467 and r351700.

MFC after: 1 week
Sponsored by: The FreeBSD Foundation

3 years agoAdd CTLFLAG_MPSAFE to the suser_enabled sysctl.
oshogbo [Wed, 18 Nov 2020 21:26:14 +0000 (21:26 +0000)]
Add CTLFLAG_MPSAFE to the suser_enabled sysctl.

Pointed out by: mjg

3 years agojail: introduce per jail suser_enabled setting
oshogbo [Wed, 18 Nov 2020 21:07:08 +0000 (21:07 +0000)]
jail: introduce per jail suser_enabled setting

The suser_enable sysctl allows to remove a privileged rights from uid 0.
This change introduce per jail setting which allow to make root a
normal user.

Reviewed by: jamie
Previous version reviewed by: kevans, emaste, markj, me_igalic.co
Discussed with: pjd
Differential Revision: https://reviews.freebsd.org/D27128

3 years agoFix style nits.
oshogbo [Wed, 18 Nov 2020 20:59:58 +0000 (20:59 +0000)]
Fix style nits.

3 years agomsdosfs(5): Fix debug-only format string
cem [Wed, 18 Nov 2020 20:20:03 +0000 (20:20 +0000)]
msdosfs(5): Fix debug-only format string

No functional change; MSDOSFS_DEBUG isn't a real build option, so this isn't
covered by LINT kernels.

3 years agoMake use of the getlocalbase() function for run-time adjustment of the
se [Wed, 18 Nov 2020 20:00:55 +0000 (20:00 +0000)]
Make use of the getlocalbase() function for run-time adjustment of the
local software base directory, as committed in SVN rev. 367813.

The pkg and mailwrapper programs used the LOCALBASE environment variable
for this purpose and this functionality is preserved by getlocalbase().

After this change, the value of the user.localbase sysctl variable is used
if present (and not overridden in the environment).

The nvmecontrol program gains support of a dynamic path to its plugin
directory with this update.

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