]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
4 years agoAdd the PCI HDAudio device model from the 2016 GSoC. Detailed information
scottl [Mon, 24 Jun 2019 19:31:32 +0000 (19:31 +0000)]
Add the PCI HDAudio device model from the 2016 GSoC.  Detailed information
can be found at

https://wiki.freebsd.org/SummerOfCode2016/HDAudioEmulationForBhyve

This commit has evolved from the original work to include Capsicum
integration.  As part of that, it only opens the host audio devices once
and leaves them open, instead of opening and closing them on each guest
access.  Thanks to Peter Grehan and Marcelo Araujo for their help in
bringing the work forward and providing some of the final techncial push.

Submitted by: Alex Teaca <iateaca@freebsd.org>
Differential Revision: D7840, D12419

4 years agoRemove a lingering use of splbio().
markj [Mon, 24 Jun 2019 19:19:37 +0000 (19:19 +0000)]
Remove a lingering use of splbio().

The buffer must be locked by the caller.  No functional change
intended.

Reviewed by: kib
MFC after: 1 week
Sponsored by: The FreeBSD Foundation

4 years agovtfontcvt: improve .bdf validation
emaste [Mon, 24 Jun 2019 17:25:14 +0000 (17:25 +0000)]
vtfontcvt: improve .bdf validation

Previously if we had a FONTBOUNDINGBOX or DWIDTH entry that had missing
or invalid values and and failed sscanf, we would proceeded with
partially initialized bounding box / device width variables.

Reported by: afl (FONTBOUNDINGBOX)
MFC with: r349100
Sponsored by: The FreeBSD Foundation

4 years agoClean out duplicate definitions of TCP macros also found in netinet/tcp.h.
cy [Mon, 24 Jun 2019 02:58:02 +0000 (02:58 +0000)]
Clean out duplicate definitions of TCP macros also found in netinet/tcp.h.

MFC after: 1 week

4 years agoAdd pwm devices to NOTES.
ian [Mon, 24 Jun 2019 02:39:56 +0000 (02:39 +0000)]
Add pwm devices to NOTES.

4 years agoAdd gpio(4) and related drivers to NOTES.
ian [Mon, 24 Jun 2019 02:30:05 +0000 (02:30 +0000)]
Add gpio(4) and related drivers to NOTES.

4 years agoThe gpiopps(4) driver currently has probe and attach code only for FDT based
ian [Mon, 24 Jun 2019 02:27:17 +0000 (02:27 +0000)]
The gpiopps(4) driver currently has probe and attach code only for FDT based
systems, so conditionalize it accordingly in conf/files.

4 years agoBuild an armv7 LINT kernel in addition to armv5 LINT. You might think this
ian [Mon, 24 Jun 2019 01:42:09 +0000 (01:42 +0000)]
Build an armv7 LINT kernel in addition to armv5 LINT.  You might think this
had been done years ago.  I did.  All this time we've only compiled a LINT
kernel for TARGET_ARCH=arm.  Now separate LINT-V5 and LINT-V7 configs are
generated and built.

There are two new files in arm/conf, NOTES.armv5 and NOTES.armv7, containing
some of what used to be in the arm NOTES file.  That file now contains only
the bits that are common to v5 and v7.

The makeLINT.mk file now creates the LINT-V5 and LINT-V7 files by concatening
sys/conf/NOTES, arm/conf/NOTES, and arm/conf/NOTES.armv{5,7} in that order.

4 years agoamd64 pmap: block on turnstile for lock-less DI.
kib [Sun, 23 Jun 2019 21:21:11 +0000 (21:21 +0000)]
amd64 pmap: block on turnstile for lock-less DI.

Port the code to block on turnstile instead of yielding, to lock-less
delayed invalidation. The yield might cause tight loop due to priority
inversion.

Since it is impossible to avoid race between block and wake-up, arm
1-tick callout to wakeup when thread blocks itself.

Reported and tested by: mjg
Reviewed by: alc, markj
Sponsored by: The FreeBSD Foundation
MFC after: 2 months
Differential revision: https://reviews.freebsd.org/D20636

4 years agoAllow compiling ukbdmap.h on arm, since it appears to work fine.
ian [Sun, 23 Jun 2019 21:17:41 +0000 (21:17 +0000)]
Allow compiling ukbdmap.h on arm, since it appears to work fine.

4 years agoSwitch to check for effective user id in r349320, and disable dumping
kib [Sun, 23 Jun 2019 21:15:31 +0000 (21:15 +0000)]
Switch to check for effective user id in r349320, and disable dumping
into existing files for sugid processes.

Despite using real user id pronounces the intent, it actually breaks
suid coredumps, while not making any difference for non-sugid
processes.  The reason for the breakage is that non-existent core file
is created with the effective uid (unless weird hacks like SUIDDIR are
configured).

Then, if user enabled kern.sugid_coredump, core dumping should not
overwrite core files owned by effective uid, but we cannot pretend to
use real uid for dumping.

PR: 68905
admbugs: 358
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

4 years agopmap_enter_quick_locked() never replaces a valid mapping, so it need not
alc [Sun, 23 Jun 2019 21:06:56 +0000 (21:06 +0000)]
pmap_enter_quick_locked() never replaces a valid mapping, so it need not
perform a TLB invalidation.  A barrier suffices.  (See r343876.)

Add a comment to pmap_enter_quick_locked() in order to highlight the
fact that it does not replace valid mappings.

Correct a typo in one of pmap_enter()'s comments.

MFC after: 1 week

4 years agoSkip sys.netinet.socket_afinet.socket_afinet_bind_zero temporarily because it
lwhsu [Sun, 23 Jun 2019 19:37:12 +0000 (19:37 +0000)]
Skip sys.netinet.socket_afinet.socket_afinet_bind_zero temporarily because it
doesn't work when mac_portacl(4) loaded

PR: 238781
Sponsored by: The FreeBSD Foundation

4 years agoImprove AHCI Enclosure Management and SES interoperation.
mav [Sun, 23 Jun 2019 19:05:01 +0000 (19:05 +0000)]
Improve AHCI Enclosure Management and SES interoperation.

Since SES specs do not define mechanism to map enclosure slots to SATA
disks, AHCI EM code I written many years ago appeared quite useless,
that always bugged me.  I was thinking whether it was a good idea, but
if LSI HBAs do that, why I shouldn't?

This change introduces simple non-standard mechanism for the mapping
into both AHCI EM and SES code, that makes AHCI EM on capable controllers
(most of Intel's) a first-class SES citizen, allowing it to report disk
physical path to GEOM, show devices inserted into each enclosure slot in
`sesutil map` and `getencstat`, control locate and fault LEDs for specific
devices with `sesutil locate adaX on` and `sesutil fault adaX on`, etc.

I've successfully tested this on Supermicro X10DRH-i motherboard connected
with sideband cable of its S-SATA Mini-SAS connector to SAS815TQ backplane.
It can indicate with LEDs Locate, Fault and Rebuild/Remap SES statuses for
each disk identical to real SES of Supermicro SAS2 backplanes.

MFC after: 2 weeks

4 years agocoredump: avoid writing to core files not owned by the real user.
kib [Sun, 23 Jun 2019 18:35:11 +0000 (18:35 +0000)]
coredump: avoid writing to core files not owned by the real user.

Reported by: blake frantz <trew@hick.org>
PR: 68905
admbugs: 358
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

4 years agoAdd some i2c slave-device drivers that were missing from NOTES.
ian [Sun, 23 Jun 2019 17:39:13 +0000 (17:39 +0000)]
Add some i2c slave-device drivers that were missing from NOTES.

4 years agoThe sy8106a and syr827 drviers require FDT and the ext_resources subsystem.
ian [Sun, 23 Jun 2019 17:38:30 +0000 (17:38 +0000)]
The sy8106a and syr827 drviers require FDT and the ext_resources subsystem.

4 years agoAdd the rtc8583 driver to conf/files. Also, move sy8106a from
ian [Sun, 23 Jun 2019 17:23:56 +0000 (17:23 +0000)]
Add the rtc8583 driver to conf/files.  Also, move sy8106a from
file.allwinner to conf/files... it's not allwinner-specific, some day
other platforms could use the same regulator chip.

4 years agoRemove some unused header files from the ad7418 driver.
ian [Sun, 23 Jun 2019 17:20:39 +0000 (17:20 +0000)]
Remove some unused header files from the ad7418 driver.

4 years agoAdd libc stub for pthread_getthreadid_np(3).
kib [Sun, 23 Jun 2019 10:50:26 +0000 (10:50 +0000)]
Add libc stub for pthread_getthreadid_np(3).

Requested by: jbeich
PR: 238650
Sponsored by: The FreeBSD Foundation
MFC after: 1 week

4 years agoFix two WARNS=6 warnings in opendir.c and telldir.c
arichardson [Sun, 23 Jun 2019 10:47:07 +0000 (10:47 +0000)]
Fix two WARNS=6 warnings in opendir.c and telldir.c

This is in preparation for compiling these files as part of rtld (which is
built with WARNS=6). See https://reviews.freebsd.org/D20663 for more details.

4 years agoRemove redundand 'else' and 'return'.
kib [Sun, 23 Jun 2019 10:45:50 +0000 (10:45 +0000)]
Remove redundand 'else' and 'return'.

Sponsored by: The FreeBSD Foundation
MFC after: 1 week

4 years agoAdd DragonFly BSD 5.6.1
sevan [Sat, 22 Jun 2019 22:43:40 +0000 (22:43 +0000)]
Add DragonFly BSD 5.6.1

4 years agoRemove question mark from the link between NetBSD & Darwin.
sevan [Sat, 22 Jun 2019 22:34:59 +0000 (22:34 +0000)]
Remove question mark from the link between NetBSD & Darwin.
As linked to in bug 26137 as a source
https://web.archive.org/web/20001012121507/http://www.opensource.apple.com/projects/darwin/faq.html
mentions:
"We already synchronize our code periodically with NetBSD for most of our user commands"

4 years agoYou can't use block special nodes for swap, so don't let that happen.
dougm [Sat, 22 Jun 2019 19:27:09 +0000 (19:27 +0000)]
You can't use block special nodes for swap, so don't let that happen.

Fix a style violation with regard to header file arrangement.

Improved by: alc
Approved by: markj, kib (mentor)
Differential Revision: https://reviews.freebsd.org/D20723

4 years agoDecouple enc/ses verbosity from bootverbose.
mav [Sat, 22 Jun 2019 19:09:10 +0000 (19:09 +0000)]
Decouple enc/ses verbosity from bootverbose.

I don't want to be regularly notified that my enclosure violates standards
until there is some real problem I want to debug.

MFC after: 2 weeks

4 years agoAdd list of valid CPUTYPE flags for arm/arm64 to make.conf example
imp [Sat, 22 Jun 2019 16:54:23 +0000 (16:54 +0000)]
Add list of valid CPUTYPE flags for arm/arm64 to make.conf example

Summary:
Adds a list of valid CPUTYPE flags for arm and arm64 architectures
List taken from share/mk/bsd.cpu.mk

Submitted by: Daniel Engberg
Reviewed By: imp
Differential Revision: https://reviews.freebsd.org/D20315

4 years agoIntroduce pmap_remove_l3_range() and use it in two places:
alc [Sat, 22 Jun 2019 16:26:38 +0000 (16:26 +0000)]
Introduce pmap_remove_l3_range() and use it in two places:
(1) pmap_remove(), where it eliminates redundant TLB invalidations by
pmap_remove() and pmap_remove_l3(), and (2) pmap_enter_l2(), where it may
optimize the TLB invalidations by batching them.

Reviewed by: markj
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D12725

4 years ago`libjail/jail.c' includes both <sys/param.h> and <sys/types.h>
dteske [Sat, 22 Jun 2019 15:39:34 +0000 (15:39 +0000)]
`libjail/jail.c' includes both <sys/param.h> and <sys/types.h>

Latter is undesired when including <sys/param.h> according to style(9)

Submitted by: Faraz Vahedi
Reviewed by: cem
Differential Revision: https://reviews.freebsd.org/D20637

4 years agoddb show proc typo
rlibby [Sat, 22 Jun 2019 05:35:23 +0000 (05:35 +0000)]
ddb show proc typo

4 years agoRemove ancient SCSI-2/3 mentioning.
mav [Sat, 22 Jun 2019 03:50:43 +0000 (03:50 +0000)]
Remove ancient SCSI-2/3 mentioning.

MFC after: 2 weeks

4 years agoModify swapon(8) to invoke BIO_DELETE to trim swap devices, either if
dougm [Sat, 22 Jun 2019 03:16:01 +0000 (03:16 +0000)]
Modify swapon(8) to invoke BIO_DELETE to trim swap devices, either if
'-E' appears on the swapon command line, or if "trimonce" appears as
an fstab option.

Discussed at: BSDCAN
Tested by: markj
Reviewed by: markj
Approved by: markj (mentor)
Differential Revision:https://reviews.freebsd.org/D20599

4 years agoVirtIO SCSI: validate seg_max on attach
vangyzen [Sat, 22 Jun 2019 01:20:45 +0000 (01:20 +0000)]
VirtIO SCSI:  validate seg_max on attach

Until r349278, bhyve presented a seg_max to the guest that was too large.
Detect this case and clamp it to the virtqueue size.  Otherwise, we would
fail the "too many segments to enqueue" assertion in virtqueue_enqueue().

I hit this by running a guest with a MAXPHYS of 256 KB.

Reviewed by: bryanv cem
MFC after: 1 week
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D20703

4 years agoMake ELEMENT INDEX validation more strict.
mav [Sat, 22 Jun 2019 01:06:41 +0000 (01:06 +0000)]
Make ELEMENT INDEX validation more strict.

SES specifications tell: "The Additional Element Status descriptors shall
be in the same order as the status elements in the Enclosure Status
diagnostic page".  It allows us to question ELEMENT INDEX that is lower
then values we already processed.  There are many SAS2 enclosures with
this kind of problem.

While there, add more specific error messages for cases when ELEMENT INDEX
is obviously wrong.  Also skip elements with INVALID bit set.

MFC after: 2 weeks

4 years agoRefactor xpt_getattr() to make it more readable. No outwardly
scottl [Fri, 21 Jun 2019 23:40:26 +0000 (23:40 +0000)]
Refactor xpt_getattr() to make it more readable.  No outwardly
visible functional changes, though code flow was modified a bit
internally to lessen the need for goto jumps and chained if
conditionals.

4 years agoFix individual_element_index when some type has 0 elements.
mav [Fri, 21 Jun 2019 23:29:16 +0000 (23:29 +0000)]
Fix individual_element_index when some type has 0 elements.

When some type has 0 elements, saved_individual_element_index was set
to -1 on second type bump, since individual_element_index was not
restored after the first.  To me it looks easier just to increment
saved_individual_element_index separately than think when to save it.

MFC after: 2 weeks

4 years agoReduce namespace pollution from r349233
asomers [Fri, 21 Jun 2019 21:50:14 +0000 (21:50 +0000)]
Reduce namespace pollution from r349233

Define __daddr_t in _types.h and use it in filio.h

Reported by: ian, bde
Reviewed by: ian, imp, cem
MFC after: 2 weeks
MFC-With: 349233
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D20715

4 years agobhyve: Fix vtscsi maximum segment config
vangyzen [Fri, 21 Jun 2019 18:57:33 +0000 (18:57 +0000)]
bhyve: Fix vtscsi maximum segment config

The seg_max value reported to the guest should be two less than the
host's maximum, in order to leave room for the request and the
response.  This is analogous to r347033 for virtio_block.

We hit the "too many segments to enqueue" assertion on OneFS because
we increase MAXPHYS to 256 KB.

Reviewed by: bryanv
Discussed with: cem jhb rgrimes
MFC after: 1 week
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D20529

4 years agoLinuxKPI: Additions to rcu list.
johalun [Fri, 21 Jun 2019 18:48:07 +0000 (18:48 +0000)]
LinuxKPI: Additions to rcu list.

- Add rcu list functions.
- Make rcu hlist's foreach macro use rcu calls instead of the non-rcu macro.
- Bump FreeBSD version so we have a checkpoint for the vboxvideo drm driver.

Reviewed by: hps
Approved by: imp (mentor), hps
MFC after: 1 week
Differential Revision: D20719

4 years agoLinuxKPI: Add atomic_long_sub macro.
johalun [Fri, 21 Jun 2019 16:43:16 +0000 (16:43 +0000)]
LinuxKPI: Add atomic_long_sub macro.

Reviewed by: imp (mentor), hps
Approved by: imp (mentor), hps
MFC after: 1 week
Differential Revision: D20718

4 years agoAdd pwm to the armv7 GENERIC kernel, it's now used by TI and Allwinner.
ian [Fri, 21 Jun 2019 15:44:58 +0000 (15:44 +0000)]
Add pwm to the armv7 GENERIC kernel, it's now used by TI and Allwinner.

4 years agoDo some general cleanup and light wordsmithing.
ian [Fri, 21 Jun 2019 15:12:17 +0000 (15:12 +0000)]
Do some general cleanup and light wordsmithing.

Sort methods alphabetically.  Wrap long lines.  Start sentences on a new
line.  Remove contractions (not because it's a good idea, just to silence
igor).  Add some explanation of the units for the period and duty arguments
and the convention for channel numbers.

4 years agoCatch up with recent changes in pwmbus(9). The pwm(9) and pwmbus(9)
ian [Fri, 21 Jun 2019 14:46:43 +0000 (14:46 +0000)]
Catch up with recent changes in pwmbus(9).  The pwm(9) and pwmbus(9)
interfaces were unified into pwmbus(9), and the PWMBUS_CHANNEL_MAX method
was renamed PWMBUS_CHANNEL_COUNT.  The pwmbus_attach_bus() function just
went away completely.  Also, fix a few typos such as s/is/if/.

4 years agoAdd support for the PWM(9) API. This allows configuring the pwm output using
ian [Fri, 21 Jun 2019 14:24:33 +0000 (14:24 +0000)]
Add support for the PWM(9) API.  This allows configuring the pwm output using
pwm(9), but also maintains the historical sysctl config interface for
compatiblity with existing apps.  The two config systems are not compatible
with each other; if you use both interfaces to change configurations you're
likely to end up with incorrect output or none at all.

4 years agoSome mundane tweaks and cleanups to help de-clutter the diffs of some
ian [Fri, 21 Jun 2019 14:01:02 +0000 (14:01 +0000)]
Some mundane tweaks and cleanups to help de-clutter the diffs of some
upcoming functional changes.

Add an ofw_compat_data table for probing compat strings, and use it to add
PNP data.  Remove some stray semicolons at the end of macro definitions,
and add a PWM_LOCK_ASSERT macro to round out the usual suite.  Move the
device_t and driver_methods structs to the end of the file.  Tweak comments.

4 years agonandsim: correct test to avoid out-of-bounds access
emaste [Fri, 21 Jun 2019 13:42:40 +0000 (13:42 +0000)]
nandsim: correct test to avoid out-of-bounds access

Previously nandsim_chip_status returned EINVAL iff both of user-provided
chip->ctrl_num and chip->num were out of bounds.  If only one failed the
bounds check arbitrary memory would be read and returned.

The NAND framework is not built by default, nandsim is not intended for
production use (it is a simulator), and the nandsim device has root-only
permissions.

admbugs: 827
Reported by: Daniel Hodson of elttam
MFC after: 3 days
Security: kernel information leak or DoS
Sponsored by: The FreeBSD Foundation

4 years agoAdd "tcpmss" opcode to match the TCP MSS value.
ae [Fri, 21 Jun 2019 10:54:51 +0000 (10:54 +0000)]
Add "tcpmss" opcode to match the TCP MSS value.

With this opcode it is possible to match TCP packets with specified
MSS option, whose value corresponds to configured in opcode value.
It is allowed to specify single value, range of values, or array of
specific values or ranges. E.g.

 # ipfw add deny log tcp from any to any tcpmss 0-500

Reviewed by: melifaro,bcr
Obtained from: Yandex LLC
MFC after: 1 week
Sponsored by: Yandex LLC

4 years agoip_output: pass PFIL_FWD in the slow path
kp [Fri, 21 Jun 2019 07:58:08 +0000 (07:58 +0000)]
ip_output: pass PFIL_FWD in the slow path

If we take the slow path for forwarding we should still tell our
firewalls (hooked through pfil(9)) that we're forwarding. Pass the
ip_output() flags to ip_output_pfil() so it can set the PFIL_FWD flag
when we're forwarding.

MFC after: 1 week
Sponsored by: Axiado

4 years agoNo need for each bsnmpd(1) module to open connection to syslog
syrinx [Fri, 21 Jun 2019 07:45:58 +0000 (07:45 +0000)]
No need for each bsnmpd(1) module to open connection to syslog

bsnmpd(1) main does that early on init and the connection is available
to all loaded modules

Event: Vienna Hackathon 2019
PR: 233431 , 221487
MFC after: 2 weeks

4 years agoUnbreak snmp_pf(3) after the changes introduced in r338209
syrinx [Fri, 21 Jun 2019 07:29:02 +0000 (07:29 +0000)]
Unbreak snmp_pf(3) after the changes introduced in r338209

PR: 237011
Event: Vienna Hackathon 2019
MFC after: 2 weeks

4 years agoMount and unmount devfs around calls to add packages.
imp [Fri, 21 Jun 2019 03:49:36 +0000 (03:49 +0000)]
Mount and unmount devfs around calls to add packages.

pkg now uses /dev/null for some of its operations. NanoBSD's packaging
stuff didn't mount that for the chroot it ran in, so any config that
added packages would see the error:
pkg: Cannot open /dev/null:No such file or directory
when trying to actually add those packages. It's easy enough for
nanobsd to mount /dev and it won't hurt anything that was already
working and may help things that weren't (like this). I moved the
mount/unmount pair to be in the right push/pop order from the
submitted patch.

PR: 238727
Submitted by: mike tancsa
Tested by: Karl Denninger

4 years agoCorrect function names.
kevlo [Fri, 21 Jun 2019 02:49:36 +0000 (02:49 +0000)]
Correct function names.

4 years agorc.d/motd: Update motd more robustly
cem [Fri, 21 Jun 2019 02:37:54 +0000 (02:37 +0000)]
rc.d/motd: Update motd more robustly

Use appropriate fsyncs to persist the rewritten /etc/motd file, when a
rewrite is performed.

Reported by: Jonathan Walton <jonathan AT isilon.com>
Reviewed by: allanjude, vangyzen
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D20701

4 years agoFixup UPDATING text for r349253
cem [Fri, 21 Jun 2019 00:33:45 +0000 (00:33 +0000)]
Fixup UPDATING text for r349253

Requested by: delphij

4 years agosys: Remove DEV_RANDOM device option
cem [Fri, 21 Jun 2019 00:16:30 +0000 (00:16 +0000)]
sys: Remove DEV_RANDOM device option

Remove 'device random' from kernel configurations that reference it (most).
Replace perhaps mistaken 'nodevice random' in two MIPS configs with 'options
RANDOM_LOADABLE' instead.  Document removal in UPDATING; update NOTES and
random.4.

Reviewed by: delphij, markm (previous version)
Approved by: secteam(delphij)
Differential Revision: https://reviews.freebsd.org/D19918

4 years agoFix the case where no root hub object while host controller object exist in ACPI...
takawata [Thu, 20 Jun 2019 23:52:33 +0000 (23:52 +0000)]
Fix the case where no root hub object while host controller object exist in ACPI namespace.
Also you can disable ACPI support for USB by setting
debug.acpi.disabled="usb"

PR: 238711

4 years agofcntl: fix overflow when setting F_READAHEAD
asomers [Thu, 20 Jun 2019 23:07:20 +0000 (23:07 +0000)]
fcntl: fix overflow when setting F_READAHEAD

VOP_READ and VOP_WRITE take the seqcount in blocks in a 16-bit field.
However, fcntl allows you to set the seqcount in bytes to any nonnegative
31-bit value. The result can be a 16-bit overflow, which will be
sign-extended in functions like ffs_read. Fix this by sanitizing the
argument in kern_fcntl. As a matter of policy, limit to IO_SEQMAX rather
than INT16_MAX.

Also, fifos have overloaded the f_seqcount field for a completely different
purpose ever since r238936.  Formalize that by using a union type.

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

4 years agoSPC-3 and up require some UAs to be returned as fixed.
mav [Thu, 20 Jun 2019 22:20:30 +0000 (22:20 +0000)]
SPC-3 and up require some UAs to be returned as fixed.

MFC after: 2 weeks

4 years agoAdd PROT_MAX to the HISTORY section.
brooks [Thu, 20 Jun 2019 21:52:30 +0000 (21:52 +0000)]
Add PROT_MAX to the HISTORY section.

In the case of mmap(), add a HISTORY section.  Mention that mmap() and
mprotect()'s documentation predates an implementation.  The
implementation first saw wide use in 4.3-Reno, but there seems to be no
easy way to express that in mdoc so stick with 4.4BSD.

Reviewed by: emaste
Requested by: cem
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D20713

4 years agoOptimize xpt_getattr().
mav [Thu, 20 Jun 2019 20:29:42 +0000 (20:29 +0000)]
Optimize xpt_getattr().

Do not allocate temporary buffer for attributes we are going to return
as-is, just make sure to NUL-terminate them.  Do not zero temporary 64KB
buffer for CDAI_TYPE_SCSI_DEVID, XPT tells us how much data it filled
and there are also length fields inside the returned data also.

MFC after: 2 weeks
Sponsored by: iXsystems, Inc.

4 years agocxgbe/t4_tom: DDP_DEAD is a ddp flag and not a toepcb flag.
np [Thu, 20 Jun 2019 20:06:19 +0000 (20:06 +0000)]
cxgbe/t4_tom: DDP_DEAD is a ddp flag and not a toepcb flag.

The driver was in effect setting TPF_ABORT_SHUTDOWN on the toepcb
instead of what was intended.

MFC after: 1 week
Sponsored by: Chelsio Communications

4 years agoClarify vm_map_protect max_protection downgrade
emaste [Thu, 20 Jun 2019 18:30:19 +0000 (18:30 +0000)]
Clarify vm_map_protect max_protection downgrade

As reported in review D20709 by brooks calling vm_map_protect to set a
new max_protection value downgrades existing mappings if necessary (as
opposed to returning an error).

Reported by: brooks
MFC after: 1 week
Sponsored by: The FreeBSD Foundation

4 years agoExtend mmap/mprotect API to specify the max page protections.
brooks [Thu, 20 Jun 2019 18:24:16 +0000 (18:24 +0000)]
Extend mmap/mprotect API to specify the max page protections.

A new macro PROT_MAX() alters a protection value so it can be OR'd with
a regular protection value to specify the maximum permissions.  If
present, these flags specify the maximum permissions.

While these flags are non-portable, they can be used in portable code
with simple ifdefs to expand PROT_MAX() to 0.

This change allows (e.g.) a region that must be writable during run-time
linking or JIT code generation to be made permanently read+execute after
writes are complete.  This complements W^X protections allowing more
precise control by the programmer.

This change alters mprotect argument checking and returns an error when
unhandled protection flags are set.  This differs from POSIX (in that
POSIX only specifies an error), but is the documented behavior on Linux
and more closely matches historical mmap behavior.

In addition to explicit setting of the maximum permissions, an
experimental sysctl vm.imply_prot_max causes mmap to assume that the
initial permissions requested should be the maximum when the sysctl is
set to 1.  PROT_NONE mappings are excluded from this for compatibility
with rtld and other consumers that use such mappings to reserve
address space before mapping contents into part of the reservation.  A
final version this is expected to provide per-binary and per-process
opt-in/out options and this sysctl will go away in its current form.
As such it is undocumented.

Reviewed by: emaste, kib (prior version), markj
Additional suggestions from: alc
Obtained from: CheriBSD
Sponsored by: DARPA, AFRL
Differential Revision: https://reviews.freebsd.org/D18880

4 years agoClarify that vm_map_protect cannot upgrade max_protection
emaste [Thu, 20 Jun 2019 18:19:09 +0000 (18:19 +0000)]
Clarify that vm_map_protect cannot upgrade max_protection

It's implied by the man page's RETURN VALUES section, but be explicit in
the description that vm_map_protect can not set new protection bits that
are already in each entry's max_protection.

Reviewed by: brooks
MFC After: 1 week
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D20709

4 years agoVOP_REVOKE(9): update locking requirements per r143495
asomers [Thu, 20 Jun 2019 16:36:20 +0000 (16:36 +0000)]
VOP_REVOKE(9): update locking requirements per r143495

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

4 years agotop(1): Don't show the swap line when there are no swap devices
allanjude [Thu, 20 Jun 2019 15:44:43 +0000 (15:44 +0000)]
top(1): Don't show the swap line when there are no swap devices

Submitted by: antranigv@freebsd.am
Reviewed by: bapt
MFC after: 1 month
Sponsored by: Klara Systems
Differential Revision: https://reviews.freebsd.org/D18928

4 years agoVOP_BMAP(9): fix typo in the copyright header
asomers [Thu, 20 Jun 2019 14:40:36 +0000 (14:40 +0000)]
VOP_BMAP(9): fix typo in the copyright header

Reported by: rgrimes
MFC after: 2 weeks
MFC-With: 349230
Sponsored by: The FreeBSD Foundation

4 years ago#include <sys/types.h> from sys/filio.h
asomers [Thu, 20 Jun 2019 14:35:28 +0000 (14:35 +0000)]
#include <sys/types.h> from sys/filio.h

This fixes world build after r349231

Reported by: Jenkins
MFC after: 2 weeks
MFC-With: 349231
Sponsored by: The FreeBSD Foundation

4 years agoAdd FIOBMAP2 ioctl
asomers [Thu, 20 Jun 2019 14:13:10 +0000 (14:13 +0000)]
Add FIOBMAP2 ioctl

This ioctl exposes VOP_BMAP information to userland. It can be used by
programs like fragmentation analyzers and optimized cp implementations. But
I'm using it to test fusefs's VOP_BMAP implementation. The "2" in the name
distinguishes it from the similar but incompatible FIBMAP ioctls in NetBSD
and Linux.  FIOBMAP2 differs from FIBMAP in that it uses a 64-bit block
number instead of 32-bit, and it also returns runp and runb.

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

4 years agoAdd a VOP_BMAP(9) man page
asomers [Thu, 20 Jun 2019 13:59:46 +0000 (13:59 +0000)]
Add a VOP_BMAP(9) man page

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

4 years agoAdd head(1) to native-xtools so that it can be used in qemu-user jails
antoine [Thu, 20 Jun 2019 13:24:58 +0000 (13:24 +0000)]
Add head(1) to native-xtools so that it can be used in qemu-user jails

4 years agoThe variable names in the description of the port number usage is
tuexen [Thu, 20 Jun 2019 12:38:41 +0000 (12:38 +0000)]
The variable names in the description of the port number usage is
inconsistent. This patch fixes that and improves the precision of
the description.
Thanks to Tom Marcoen for reporting the issue and providing an
initial patch, on which this change is based.

PR: 237723
Reviewed by: bcr@
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D20708

4 years agoFinsh readding Big5 in r317204, which was reverting r315568. This commit
lwhsu [Thu, 20 Jun 2019 07:17:16 +0000 (07:17 +0000)]
Finsh readding Big5 in r317204, which was reverting r315568.  This commit
reverts r315569.

Reported by: Ting-Wei Lan <lantw44 gmail com>
Discussed with: kevlo
MFC after: 3 days
Sponsored by: The FreeBSD Foundation

4 years agoAdd wakeup_any(), cheaper wakeup_one() for taskqueue(9).
mav [Thu, 20 Jun 2019 01:15:33 +0000 (01:15 +0000)]
Add wakeup_any(), cheaper wakeup_one() for taskqueue(9).

wakeup_one() and underlying sleepq_signal() spend additional time trying
to be fair, waking thread with highest priority, sleeping longest time.
But in case of taskqueue there are many absolutely identical threads, and
any fairness between them is quite pointless.  It makes even worse, since
round-robin wakeups not only make previous CPU affinity in scheduler quite
useless, but also hide from user chance to see CPU bottlenecks, when
sequential workload with one request at a time looks evenly distributed
between multiple threads.

This change adds new SLEEPQ_UNFAIR flag to sleepq_signal(), making it wakeup
thread that went to sleep last, but no longer in context switch (to avoid
immediate spinning on the thread lock).  On top of that new wakeup_any()
function is added, equivalent to wakeup_one(), but setting the flag.
On top of that taskqueue(9) is switchied to wakeup_any() to wakeup its
threads.

As result, on 72-core Xeon v4 machine sequential ZFS write to 12 ZVOLs
with 16KB block size spend 34% less time in wakeup_any() and descendants
then it was spending in wakeup_one(), and total write throughput increased
by ~10% with the same as before CPU usage.

Reviewed by: markj, mmacy
MFC after: 2 weeks
Sponsored by: iXsystems, Inc.
Differential Revision: https://reviews.freebsd.org/D20669

4 years agoGroup vm_page_activate()'s definition with other related functions.
markj [Wed, 19 Jun 2019 21:36:00 +0000 (21:36 +0000)]
Group vm_page_activate()'s definition with other related functions.

No functional change intended.

MFC after: 3 days

4 years agoTell loader to ignore newer features enabled on the root pool.
mmacy [Wed, 19 Jun 2019 21:10:13 +0000 (21:10 +0000)]
Tell loader to ignore newer features enabled on the root pool.

There are many new features in ZoF. Most, if not all, do not effect read only usage.
Encryption in particular is enabled at the pool level but used at the dataset level.
The loader obviously will not be able to boot if the boot dataset is encrypted, but
should not care if some other dataset in the root pool is encrypted.

Reviewed by: allanjude
MFC after: 1 week

4 years agoFollow-up r349065: Fix .TARGET flag ambiguity with PROGS which broke MK_TESTS.
bdrewery [Wed, 19 Jun 2019 19:19:37 +0000 (19:19 +0000)]
Follow-up r349065: Fix .TARGET flag ambiguity with PROGS which broke MK_TESTS.

X-MFC-With: r349065
Sponsored by: DellEMC

4 years agoefinet: Defer exclusively opening the network handles
bcran [Wed, 19 Jun 2019 18:47:44 +0000 (18:47 +0000)]
efinet: Defer exclusively opening the network handles

Don't commit to exclusive access to the network device handle by
efinet until the loader has decided to load something through the
network. This allows for the possibility of other users of the
network device.

Submitted by: scottph
Reviewed by: tsoome, emaste
Tested by:  tsoome, bcran
Differential Revision: https://reviews.freebsd.org/D20642

4 years agoMake zlib encoding messages idempotent.
markj [Wed, 19 Jun 2019 16:09:20 +0000 (16:09 +0000)]
Make zlib encoding messages idempotent.

Otherwise duplicate messages can trigger a reinitialization of the
compression stream while the update thread is running.  Also ensure
that the stream is initialized before the update thread may attempt
to use it.

PR: 238333
Reviewed by: cem, rgrimes
MFC after: 3 days
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D20673

4 years agoUse sbuf_cat() in GEOM confxml generation.
mav [Wed, 19 Jun 2019 15:36:02 +0000 (15:36 +0000)]
Use sbuf_cat() in GEOM confxml generation.

When it comes to megabytes of text, difference between sbuf_printf() and
sbuf_cat() becomes substantial.

MFC after: 2 weeks
Sponsored by: iXsystems, Inc.

4 years agoAdd the ability to limit how much the code will fragment the RACK send map
jtl [Wed, 19 Jun 2019 13:55:00 +0000 (13:55 +0000)]
Add the ability to limit how much the code will fragment the RACK send map
in response to SACKs. The default behavior is unchanged; however, the limit
can be activated by changing the new net.inet.tcp.rack.split_limit sysctl.

Submitted by: Peter Lei <peterlei@netflix.com>
Reported by: jtl
Reviewed by: lstewart (earlier version)
Security: CVE-2019-5599

4 years agoFix typo in r349178.
mav [Wed, 19 Jun 2019 13:30:50 +0000 (13:30 +0000)]
Fix typo in r349178.

Reported by: ae
MFC after: 1 week

4 years ago[PPC] Fix loader input with newer QEMU versions
luporl [Wed, 19 Jun 2019 11:37:43 +0000 (11:37 +0000)]
[PPC] Fix loader input with newer QEMU versions

At least since version 4.0.0, QEMU became bug-compatible with PowerVM's
vty, by inserting a \0 after every \r. As this confuses loader's
interpreter and as a \0 coming from the console doesn't seem reasonable,
it's now being filtered at OFW console input.

Reviewed by: jhibbits
MFC after: 2 weeks
Differential Revision: https://reviews.freebsd.org/D20676

4 years agoWhitespace
sevan [Wed, 19 Jun 2019 11:22:09 +0000 (11:22 +0000)]
Whitespace

4 years agoV_ip6_forwarding and V_ipforwarding have been defined in ip6_var.h /
zec [Wed, 19 Jun 2019 08:49:24 +0000 (08:49 +0000)]
V_ip6_forwarding and V_ipforwarding have been defined in ip6_var.h /
ip_var.h since at least 2008, so make use of those definitions here.

MFC after: 3 days

4 years agoEvaluating htons() at compile time is more efficient than doing ntohs()
zec [Wed, 19 Jun 2019 08:39:19 +0000 (08:39 +0000)]
Evaluating htons() at compile time is more efficient than doing ntohs()
at runtime.  This change removes a dependency on a barrel shifter pass
before branch resolution, while reducing the instruction stream size
by 9 bytes on amd64.

MFC after: 3 days

4 years agoImplement VT-d capability detection on chipsets that have multiple
scottl [Wed, 19 Jun 2019 06:41:07 +0000 (06:41 +0000)]
Implement VT-d capability detection on chipsets that have multiple
translation units with differing capabilities

From the author via Bugzilla:
---
When an attempt is made to passthrough a PCI device to a bhyve VM
(causing initialisation of IOMMU) on certain Intel chipsets using
VT-d the PCI bus stops working entirely. This issue occurs on the
E3-1275 v5 processor on C236 chipset and has also been encountered
by others on the forums with different hardware in the Skylake
series.

The chipset has two VT-d translation units. The issue is caused by
an attempt to use the VT-d device-IOTLB capability that is
supported by only the first unit for devices attached to the
second unit which lacks that capability. Only the capabilities of
the first unit are checked and are assumed to be the same for all
units.

Attached is a patch to rectify this issue by determining which
unit is responsible for the device being added to a domain and
then checking that unit's device-IOTLB capability. In addition to
this a few fixes have been made to other instances where the first
unit's capabilities are assumed for all units for domains they
share. In these cases a mutual set of capabilities is determined.
The patch should hopefully fix any bugs for current/future
hardware with multiple translation units supporting different
capabilities.

A description is on the forums at
https://forums.freebsd.org/threads/pci-passthrough-bhyve-usb-xhci.65235
The thread includes observations by other users of the bug
occurring, and description as well as confirmation of the fix.
I'd also like to thank Ordoban for their help.

---
Personally tested on a Skylake laptop, Skylake Xeon server, and
a Xeon-D-1541, passing through XHCI and NVMe functions.  Passthru
is hit-or-miss to the point of being unusable without this
patch.

PR: 229852
Submitted by: callum@aitchison.org
MFC after: 1 week

4 years agoCorrect an error in r349122. pmap_unwire() should update the pmap's wired
alc [Wed, 19 Jun 2019 03:33:00 +0000 (03:33 +0000)]
Correct an error in r349122.  pmap_unwire() should update the pmap's wired
count, not its resident count.

X-MFC with: r349122

4 years agoRework r349061: Don't apply guessed dependencies if there is a custom target.
bdrewery [Tue, 18 Jun 2019 22:00:38 +0000 (22:00 +0000)]
Rework r349061: Don't apply guessed dependencies if there is a custom target.

This is still targeting bin/sh cyclic dependency issues.  Only apply
guessed dependencies that are explicitly set for an object (which
gnu/lib/cc/cc_tools needs) and if no custom target exists with its
own dependencies.

This was manifesting as a missing yacc.h in usr.bin/mkesdb_static when
built without -j (or -B). No actual yacc.h dependency ordering was
defined but with -j it got lucky and built fine.

Before r349061 the behavior was different for META_MODE but that logic
difference isn't needed.

X-MFC-With: r349061
Sponsored by: DellEMC

4 years agoOptimize kern.geom.conf* sysctls.
mav [Tue, 18 Jun 2019 21:05:10 +0000 (21:05 +0000)]
Optimize kern.geom.conf* sysctls.

On large systems those sysctls may generate megabytes of output.  Before
this change sbuf(9) code was resizing buffer by 4KB each time many times,
generating tons of TLB shootdowns.  Unfortunately in this case existing
sbuf_new_for_sysctl() mechanism, supposed to help with this issue, is not
applicable, since all the sbuf writes are done in different kernel thread.

This change improves situation in two ways:
 - on first sysctl call, not providing any output buffer, it sets special
sbuf drain function, just counting the data and so not needing big buffer;
 - on second sysctl call it uses as initial buffer size value saved on
previous call, so that in most cases there will be no reallocation, unless
GEOM topology changed significantly.

MFC after: 1 week
Sponsored by: iXsystems, Inc.

4 years agoMark NetBSD branch points
sevan [Tue, 18 Jun 2019 21:02:40 +0000 (21:02 +0000)]
Mark NetBSD branch points
NetBSD 7.0 was a separate branch, subsequent 8.x releases did not emerge from
this branch.
Clean up minor visual nits, centre OpenBSD listing on the B, DragonFly
listings on the y.

4 years agorandom(4): Fix a regression in short AES mode reads
cem [Tue, 18 Jun 2019 18:50:58 +0000 (18:50 +0000)]
random(4): Fix a regression in short AES mode reads

In r349154, random device reads of size < 16 bytes (AES block size) were
accidentally broken to loop forever.  Correct the loop condition for small
reads.

Reported by: pho
Reviewed by: delphij
Approved by: secteam(delphij)
Differential Revision: https://reviews.freebsd.org/D20686

4 years agobhyve: vtnet: fix locking on receive
vmaffione [Tue, 18 Jun 2019 17:51:30 +0000 (17:51 +0000)]
bhyve: vtnet: fix locking on receive

The vsc_rx_ready and the RX virtqueue is protected by the rx_mtx lock.
However, pci_vtnet_ping_rxq() (currently called only once after each
device reset) accesses those without acquiring the lock.

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

4 years agoHandle labels specified with hints even on FDT systems. Hints are the
ian [Tue, 18 Jun 2019 17:05:05 +0000 (17:05 +0000)]
Handle labels specified with hints even on FDT systems.  Hints are the
easiest thing for a user to control (via loader.conf or kenv+kldload), so
handle them in addition to any label specified via the FDT data.

4 years agoRemove sys/capability.h for the third time
emaste [Tue, 18 Jun 2019 14:13:52 +0000 (14:13 +0000)]
Remove sys/capability.h for the third time

In all supported (and most unsupported) FreeBSD versions the appropriate
header for Capsicum is sys/capsicum.h.  Software including sys/capability.h
is most likely looking for Linux capabilities based on the withdrawn
POSIX.1e draft.

This header was previously removed in r334929 and r340156, but reverted
each time due to ports failures.  These issues have now (broadly) been
addressed.

PR: 228878 [exp-run]
Submitted by: eadler (r334929)
Relnotes: Yes
Sponsored by: The FreeBSD Foundation

4 years agoAdd a pwmc(4) manpage.
ian [Tue, 18 Jun 2019 04:32:19 +0000 (04:32 +0000)]
Add a pwmc(4) manpage.

4 years agoOops, it seems I left out the word 'cycle', fix it.
ian [Tue, 18 Jun 2019 02:27:30 +0000 (02:27 +0000)]
Oops, it seems I left out the word 'cycle', fix it.

Reported by: rpokala@

4 years agoRearrange the argument checking and processing so that enable and disable
ian [Tue, 18 Jun 2019 01:15:00 +0000 (01:15 +0000)]
Rearrange the argument checking and processing so that enable and disable
can be combined with configuring the period and duty cycle (the same ioctl
sets all 3 values at once, so there's no reason to require the user to run
the program twice to get all 3 things set).

4 years agoExplain the relationship between PWM hardware channels being controlled and
ian [Tue, 18 Jun 2019 00:17:10 +0000 (00:17 +0000)]
Explain the relationship between PWM hardware channels being controlled and
pwmc(4) device filenames.  Also, use uppercase PWM when the term is being
used as an acronym, and expand the acronym where it's first used.

4 years agoRemove everything related to channels from the pwmc public interface, now
ian [Tue, 18 Jun 2019 00:11:00 +0000 (00:11 +0000)]
Remove everything related to channels from the pwmc public interface, now
that there is a pwmc(4) instance per channel and the channel number is
maintained as a driver ivar rather than being passed in from userland.