]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/log
FreeBSD/FreeBSD.git
6 years agoRe-apply r190640.
hselasky [Thu, 31 May 2018 09:11:21 +0000 (09:11 +0000)]
Re-apply r190640.

- Restore local change to include <net/bpf.h> inside pcap.h.
This fixes ports build problems.
- Update local copy of dlt.h with new DLT types.
- Revert no longer needed <net/bpf.h> includes which were added
as part of r334277.

Suggested by: antoine@, delphij@, np@
MFC after: 3 weeks
Sponsored by: Mellanox Technologies

6 years agoRemove a debug printf from opal_pci driver
jhibbits [Thu, 31 May 2018 04:11:40 +0000 (04:11 +0000)]
Remove a debug printf from opal_pci driver

6 years agoNote the need for a new kernel / userland for devinfo to work
imp [Thu, 31 May 2018 02:58:08 +0000 (02:58 +0000)]
Note the need for a new kernel / userland for devinfo to work

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

6 years agoUpdate to device enumeration protocol 2
imp [Thu, 31 May 2018 02:58:03 +0000 (02:58 +0000)]
Update to device enumeration protocol 2

The new protocol from the kernel encodes things as a string table,
extract it into fields. strdup the strings, and free them when we're
done.

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

6 years agoMake the data returned by devinfo harder to overflow.
imp [Thu, 31 May 2018 02:57:58 +0000 (02:57 +0000)]
Make the data returned by devinfo harder to overflow.

Rather than using fixed-length strings, pack them into a string table
to return. Also expand the buffer from ~300 charaters to 3k. This should
be enough, even for USB.

This fixes a problem where USB pnp info is truncated on return to
userland.

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

6 years agoSanity check the return from the kernel.
imp [Thu, 31 May 2018 02:57:51 +0000 (02:57 +0000)]
Sanity check the return from the kernel.

We should be getting back as many bytes as we asked for, and we
don't handle shortages at all, so just reject anything that's
not right.

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

6 years agoPass a struct devdesc to the format commands. Use proper type rather
imp [Thu, 31 May 2018 02:54:11 +0000 (02:54 +0000)]
Pass a struct devdesc to the format commands. Use proper type rather
than doing weird type-punning that happened to work because the size
was right. We copied a zfs devdesc into a disk_devdesc and then after
passing through a NULL pointer reinterpreted it as a
zfs_devdesc. Instead, pass the base devdesc around and 'upcase' when
we know the types are right.

This has the happy side effect of fixing a gcc warning about bad
type punning.

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

6 years agocxgbe(4): Use ifm for ifmedia just like the rest of the kernel.
np [Thu, 31 May 2018 02:22:40 +0000 (02:22 +0000)]
cxgbe(4): Use ifm for ifmedia just like the rest of the kernel.

No functional change.

6 years agocxgbe(4): Implement ifm_change callback.
np [Thu, 31 May 2018 02:10:50 +0000 (02:10 +0000)]
cxgbe(4): Implement ifm_change callback.

Sponsored by: Chelsio Communications

6 years agolibpmc/jevents: fix cross-compile _to_ amd64
mmacy [Thu, 31 May 2018 01:01:35 +0000 (01:01 +0000)]
libpmc/jevents: fix cross-compile _to_ amd64

Reported by: emaste

6 years agoOnly conform to PCIe spec of 1 device per bus on !x86
jhibbits [Wed, 30 May 2018 22:39:41 +0000 (22:39 +0000)]
Only conform to PCIe spec of 1 device per bus on !x86

bhyve's root PCI complex shows up as PCIe, but behaves as traditional PCI.
Until that is special cased in a root complex driver, leave x86 as it was.

Requested by: grehan

6 years agocxgbe(4): Consider all supported speeds when building the ifmedia list
np [Wed, 30 May 2018 22:36:09 +0000 (22:36 +0000)]
cxgbe(4): Consider all supported speeds when building the ifmedia list
for a port.  Fix other related issues while here:
- Require port lock for access to link_config.
- Allow 100Mbps operation by tracking the speed in Mbps.  Yes, really.
- New port flag to indicate that the media list is immutable.  It will
  be used in future refinements.

This also fixes a bug where the driver reports incorrect media with
recent firmwares.

MFC after: 2 days
Sponsored by: Chelsio Communications

6 years agoRemove alternative names that are identical to the default.
brooks [Wed, 30 May 2018 22:22:58 +0000 (22:22 +0000)]
Remove alternative names that are identical to the default.

Verified by make sysent producing no changes.

6 years agopmc stat: fix format strings for 32-bit
mmacy [Wed, 30 May 2018 22:03:02 +0000 (22:03 +0000)]
pmc stat: fix format strings for 32-bit

6 years ago#include <bsm/audit.h> in security/audit/audit_ioctl.h
asomers [Wed, 30 May 2018 21:50:23 +0000 (21:50 +0000)]
#include <bsm/audit.h> in security/audit/audit_ioctl.h

security/audit/audit_ioctl.h uses a type from bsm/audit.h, so needs to
include it.  And it needs to know the type's size, so it can't just
forward-declare.

PR: 228470
Submitted by: aniketp
MFC after: 2 weeks
Sponsored by: Google, Inc. (GSoC 2018)
Differential Revision: https://reviews.freebsd.org/D15561

6 years agoif_setlladdr: don't call ioctl in epoch context
mmacy [Wed, 30 May 2018 21:46:10 +0000 (21:46 +0000)]
if_setlladdr: don't call ioctl in epoch context

PR: 228612
Reported by: markj

6 years agoUse pmap_pte_ufast() instead of pmap_pte() in pmap_extract(),
kib [Wed, 30 May 2018 20:47:20 +0000 (20:47 +0000)]
Use pmap_pte_ufast() instead of pmap_pte() in pmap_extract(),
pmap_is_prefaultable() and pmap_incore(), pushing the number of
shootdown IPIs back to the 3/1 kernel.

Benchmarked by: bde
Tested by: pho
Sponsored by: The FreeBSD Foundation

6 years agoExtract code for fast mapping of pte from pmap_extract_and_hold()
kib [Wed, 30 May 2018 20:43:48 +0000 (20:43 +0000)]
Extract code for fast mapping of pte from pmap_extract_and_hold()
into the helper function pmap_pte_ufast().

Benchmarked by: bde
Tested by: pho
Sponsored by: The FreeBSD Foundation

6 years agoRestore pmap_copy() for 4/4 i386 pmap.
kib [Wed, 30 May 2018 20:39:22 +0000 (20:39 +0000)]
Restore pmap_copy() for 4/4 i386 pmap.

Create yet another temporal pte mapping routine pmap_pte_quick3(),
which is the copy of the pmap_pte_quick() and relies on the
pvh_global_lock to protect the frame.  It accounts into the same
counters as pmap_pte_quick().  It is needed since pmap_copy() uses
pmap_pte_quick() already, and since a user pmap is no longer current
pmap.

pmap_copy() still provides the advantage for real-world workloads
involving lot of forks where processes do not exec immediately.

Benchmarked by: bde
Sponsored by: The FreeBSD Foundation

6 years agoDo use pmap_pte_quick() in pmap_enter_quick_locked().
kib [Wed, 30 May 2018 20:26:47 +0000 (20:26 +0000)]
Do use pmap_pte_quick() in pmap_enter_quick_locked().

Benchmarked by: bde
Tested by: pho
Sponsored by: The FreeBSD Foundation

6 years agoAvoid unneccessary TLB shootdowns in pmap_unwire_ptp() for user pmaps,
kib [Wed, 30 May 2018 20:24:21 +0000 (20:24 +0000)]
Avoid unneccessary TLB shootdowns in pmap_unwire_ptp() for user pmaps,
which no longer create recursive page table mappings.

Benchmarked by: bde
Tested by: pho
Sponsored by: The FreeBSD Foundation

6 years agoStrengthen locking for the NFSv4.1 server DestroySession operation.
rmacklem [Wed, 30 May 2018 20:16:17 +0000 (20:16 +0000)]
Strengthen locking for the NFSv4.1 server DestroySession operation.

If a client did a DestroySession on a session while it was still in use,
the server might try to use the session structure after it is free'd.
I think the client has violated RFC5661 if it does this, but this patch
makes DestroySession block all other nfsd threads so no thread could
be using the session when it is free'd. After the DestroySession, nfsd
threads will not be able to find the session. The patch also adds a check
for nd_sessionid being set, although if that was not the case it would have
been all 0s and unlikely to have a false match.
This might fix the crashes described in PR#228497 for the FreeNAS server.

PR: 228497
MFC after: 1 week

6 years agoRevert r334362
asomers [Wed, 30 May 2018 19:58:36 +0000 (19:58 +0000)]
Revert r334362

Reconnect tests/sys/audit now that the GCC issue is fixed by 334388

MFC after: 2 weeks
X-MFC-With: 334362, 334360, 334388

6 years agoauditpipe(4): fix some ioctl arguments in the man page
asomers [Wed, 30 May 2018 19:57:15 +0000 (19:57 +0000)]
auditpipe(4): fix some ioctl arguments in the man page

Fix the argument types for the AUDITPIPE_[GS]ET_PRESELECT_(NA)?FLAGS ioctls.
Also, fix some grammar.

[skip ci]

PR: 226713
Submitted by: aniketp
MFC after: 2 weeks
Sponsored by: Google, Inc. (GSoC 2018)
Differential Revision: https://reviews.freebsd.org/D15620

6 years agoRegen src.conf.5 after r334391 - LLD_IS_LD default on amd64
emaste [Wed, 30 May 2018 18:34:45 +0000 (18:34 +0000)]
Regen src.conf.5 after r334391 - LLD_IS_LD default on amd64

Relnotes: yes
Sponsored by: The FreeBSD Foundation

6 years agoEnable lld as the system linker by default on amd64
emaste [Wed, 30 May 2018 18:04:25 +0000 (18:04 +0000)]
Enable lld as the system linker by default on amd64

The migration to LLVM's lld linker has been in progress for quite some
time - about three years ago I opened an upstream LLVM meta-bug to track
issues using lld as FreeBSD's linker, and about 1.5 years ago requested
the first exp-run with lld as the system linker.

As of r327783 we enabled LLD_BOOTSTRAP by default on amd64, using lld as
the linker to link the kernel and world, but GNU ld was still installed
as /usr/bin/ld.

The vast majority of issues observed when building ports with lld as the
system linker have now been solved, so set LLD_IS_LD by default on amd64
and install lld as /usr/bin/ld.  A small number of port failures remain
and these will be addressed in the near future.

Thanks to antoine@ for handling the exp-runs, krion@ for investigating
many port failures and adding LLD_UNSAFE or other fixes or workarounds,
and everyone who helped investigate, fix or tag ports.

PR: 214864 (exp-run)
Sponsored by: The FreeBSD Foundation

6 years agoau_read_rec(3): correct return value in man page
asomers [Wed, 30 May 2018 17:05:48 +0000 (17:05 +0000)]
au_read_rec(3): correct return value in man page

Submitted by: aniketp
Reviewed by: csjp (earlier version)
MFC after: 2 weeks
Sponsored by: Google, Inc. (GSoC 2018)
Differential Revision: https://reviews.freebsd.org/D15618

6 years agoTypo.
markj [Wed, 30 May 2018 16:48:48 +0000 (16:48 +0000)]
Typo.

PR: 228533
Submitted by: Jakub Piecuch <j.piecuch96@gmail.com>
MFC after: 1 week

6 years agoFix OpenBSM with GCC with -Wredundant-decls
asomers [Wed, 30 May 2018 15:51:48 +0000 (15:51 +0000)]
Fix OpenBSM with GCC with -Wredundant-decls

Upstream change ed47534 consciously added some redundant functional
declarations, and I'm not sure why. AFAICT they were never required. On
FreeBSD, they break the build with GCC (but not Clang) for any program
including libbsm.h with WARNS=6.

Fix by cherry-picking upstream change
https://github.com/openbsm/openbsm/commit/0553c27

Reported by: emaste
Reviewed by: cem
Obtained from: OpenBSM
MFC after: 2 weeks
Pull Request: https://github.com/openbsm/openbsm/pull/31

6 years agoRemove max_pa, it's unused.
andrew [Wed, 30 May 2018 15:37:09 +0000 (15:37 +0000)]
Remove max_pa, it's unused.

Sponsored by: DARPA, AFRL

6 years agoregulator: Fix typo (shuting/shutting)
manu [Wed, 30 May 2018 15:32:31 +0000 (15:32 +0000)]
regulator: Fix typo (shuting/shutting)

Submitted by: Jose Luis Duran (github pull #151)

6 years agoFurther limit when we call pmap_fault.
andrew [Wed, 30 May 2018 15:25:48 +0000 (15:25 +0000)]
Further limit when we call pmap_fault.

We should only call pmap_fault in the kernel when accessing a userspace
address. As this should always happen through specific functions that set
a fault handler we can use this to limit calls to pmap_fault to when this
is set.

This should help with NULL pointer dereferences when we are unable to sleep
so we fall into the correct case.

Sponsored by: DARPA, AFRL

6 years agodevinfo_init() returns an errno, but doesn't set errno, so the error
imp [Wed, 30 May 2018 15:08:59 +0000 (15:08 +0000)]
devinfo_init() returns an errno, but doesn't set errno, so the error
message when it fails reflects some random thing rather than what it
returned. Set errno to the return value.

6 years agoThere's no meaningful errno when there's a version mismatch, so use
imp [Wed, 30 May 2018 15:08:46 +0000 (15:08 +0000)]
There's no meaningful errno when there's a version mismatch, so use
warnx. Also, report the mis-matched versions.

6 years agoPush down the locking in pmap_fault to just be around the calls to
andrew [Wed, 30 May 2018 14:18:19 +0000 (14:18 +0000)]
Push down the locking in pmap_fault to just be around the calls to
arm64_address_translate_*. There is no need to lock around the switch
statement as we only care about a few cases.

Sponsored by: DARPA, AFRL

6 years agomakeroot.sh: allow duplicate entries even with -f <filelist>
emaste [Wed, 30 May 2018 13:51:00 +0000 (13:51 +0000)]
makeroot.sh: allow duplicate entries even with -f <filelist>

makefs disallows duplicate entries unless the -D option is specified.

Previously makeroot.sh enabled -D unless a filelist was provided via
the -f options.  The filelist logic creates an mtree manifest from the
METALOG and the provided filelist by passing them through `sort -u`,
so duplicates were not expected.  However, duplicates can still occur
when a directory appears in multiple packages -- for example,

./etc/pam.d type=dir uname=root gname=wheel mode=0755
./etc/pam.d type=dir mode=0755 tags=package=runtime
./etc/pam.d type=dir mode=0755 tags=package=at
./etc/pam.d type=dir mode=0755 tags=package=ftp
./etc/pam.d type=dir mode=0755 tags=package=telnet

For the purposes of makefs these directory entries are identical, but
are of course not identical for sort -u.

For now just leave the allow duplicates -D flag enabled.

PR: 228606
Sponsored by: The FreeBSD Foundation

6 years agolink_elf_obj: correct an error message
emaste [Wed, 30 May 2018 12:55:27 +0000 (12:55 +0000)]
link_elf_obj: correct an error message

Previously we'd report that a file has "no valid symbol table" if it in
fact had two or more.  Change the message to report that there must be
exactly one.

6 years agopf: Add missing include statement
kp [Wed, 30 May 2018 12:40:37 +0000 (12:40 +0000)]
pf: Add missing include statement

rmlocks require <sys/lock.h> as well as <sys/rmlock.h>.
Unbreak mips build.

6 years agoHide unsupported remote capture definitions to avoid breakage in ports.
hselasky [Wed, 30 May 2018 11:45:29 +0000 (11:45 +0000)]
Hide unsupported remote capture definitions to avoid breakage in ports.

Suggested by: antoine@
MFC after: 3 weeks
Sponsored by: Mellanox Technologies

6 years agoRemove redundant header file from source list in libpcap.
hselasky [Wed, 30 May 2018 08:24:57 +0000 (08:24 +0000)]
Remove redundant header file from source list in libpcap.

MFC after: 3 weeks
Sponsored by: Mellanox Technologies

6 years agopf: Replace rwlock on PF_RULES_LOCK with rmlock
kp [Wed, 30 May 2018 07:11:33 +0000 (07:11 +0000)]
pf: Replace rwlock on PF_RULES_LOCK with rmlock

Given that PF_RULES_LOCK is a mostly read lock, replace the rwlock with rmlock.
This change improves packet processing rate in high pps environments.
Benchmarking by olivier@ shows a 65% improvement in pps.

While here, also eliminate all appearances of "sys/rwlock.h" includes since it
is not used anymore.

Submitted by: farrokhi@
Differential Revision: https://reviews.freebsd.org/D15502

6 years agohwpmc: remove stale assert
mmacy [Wed, 30 May 2018 06:29:22 +0000 (06:29 +0000)]
hwpmc: remove stale assert

Reported by: eadler

6 years agoWe've removed the special case code for upgrading from FreeBSD 9 so
imp [Wed, 30 May 2018 05:00:30 +0000 (05:00 +0000)]
We've removed the special case code for upgrading from FreeBSD 9 so
remove the special warning. It's in svn if we need it.

6 years agoIf linebytes property is missing from the graphics device, assume no
nwhitehorn [Wed, 30 May 2018 04:15:33 +0000 (04:15 +0000)]
If linebytes property is missing from the graphics device, assume no
overscan and synthesize it from the display depth and screen width.
This may not be right, but it sometimes right and is better than
returning CN_DEAD.

6 years agolibpmc: squelch valgrind warnings
mmacy [Wed, 30 May 2018 04:12:51 +0000 (04:12 +0000)]
libpmc: squelch valgrind warnings

6 years agoProtect dtrace_getpcstack() from a NULL stack pointer in a trap frame
jhibbits [Wed, 30 May 2018 03:48:27 +0000 (03:48 +0000)]
Protect dtrace_getpcstack() from a NULL stack pointer in a trap frame

Found when trying to use lockstat on a POWER9, the stack pointer (r1) could
be NULL, and result in a NULL pointer dereference, crashing the kernel.

6 years agolibpmc: bring pmu_util closer in line with style(9)
mmacy [Wed, 30 May 2018 03:40:02 +0000 (03:40 +0000)]
libpmc: bring pmu_util closer in line with style(9)

6 years agoepoch(9): make epoch closer to style(9)
mmacy [Wed, 30 May 2018 03:39:57 +0000 (03:39 +0000)]
epoch(9): make epoch closer to style(9)

6 years agoMake opal_pci driver work with POWER9
jhibbits [Wed, 30 May 2018 03:00:57 +0000 (03:00 +0000)]
Make opal_pci driver work with POWER9

Summary:
Coupled with r334365, this makes PCI work on POWER9.  There is still more to
do to fully exploit the hardware capabilities, but this is sufficient to
enable USB and ethernet controllers on a POWER9 Talos II system.

Reviewed by: nwhitehorn, leitao
Differential Revision: https://reviews.freebsd.org/D15566

6 years agoCache the phandle of the PCI node in opal_pci_attach
jhibbits [Wed, 30 May 2018 02:47:23 +0000 (02:47 +0000)]
Cache the phandle of the PCI node in opal_pci_attach

Simple cleanup, no functional change.  This is related to the fixups needed
for POWER9 support.

6 years agoRestrict PCIe maxslots to 0, instead of PCI_SLOTMAX
jhibbits [Wed, 30 May 2018 02:41:47 +0000 (02:41 +0000)]
Restrict PCIe maxslots to 0, instead of PCI_SLOTMAX

Summary:
PCIe only permits 1 device on an endpoint, so some devices ignore the device
part of B:D:F probing.  Although ARI likely fixes this, not all platforms
support ARI completely or correctly, so some devices end up showing up 32
times on the bus.

This was found during bringup of POWER9/Talos, and has been tested on POWER9
and POWER8 hardware.

Reviewed by: leitao
Differential Revision: https://reviews.freebsd.org/D15461

6 years agoRemove the mlx5 driver from LINT kernel config for 32-bit PPC
rpokala [Wed, 30 May 2018 02:26:36 +0000 (02:26 +0000)]
Remove the mlx5 driver from LINT kernel config for 32-bit PPC

The mlx5 driver requires 64-bit atomics, which are not supported on 32-bit
PPC. Exclude that driver from the LINT kernel config.

Submitted by: hps (but I re-worded the comment)
Reported by: rpokala
Reviewed by: jhibbits
Differential Revision: https://reviews.freebsd.org/D15611

6 years agoelfdump: chase ABI tag note name change from r232832
emaste [Wed, 30 May 2018 01:16:50 +0000 (01:16 +0000)]
elfdump: chase ABI tag note name change from r232832

r232832 changed the ABI tag note name from .note.ABI-tag to .note.tag.
Follow suit in elfdump.

Elfdump's note parsing is very basic and should be significantly
reworked, but for now just restore the broken functionality.

PR: 228290
Submitted by: martin at lispworks.com
MFC after: 1 week

6 years agoTemporarily disconnect audit tests
emaste [Wed, 30 May 2018 00:36:58 +0000 (00:36 +0000)]
Temporarily disconnect audit tests

Audit tests added in r334360 broke the build on a number of archs.
Remove the subdir from the top level tests/sys/Makefile until they're
fixed.

6 years agopmc: don't break build with format issues
mmacy [Wed, 30 May 2018 00:06:17 +0000 (00:06 +0000)]
pmc: don't break build with format issues

6 years agoAdd initial set of tests for audit(4)
asomers [Tue, 29 May 2018 23:08:33 +0000 (23:08 +0000)]
Add initial set of tests for audit(4)

This change includes the framework for testing the auditability of various
syscalls, and includes changes for the first 12.  The tests will start
auditd(8) if needed, though they'll be much faster if it's already running.
The syscalls tested in this commit include mkdir(2), mkdirat(2), mknod(2),
mknodat(2), mkfifo(2), mkfifoat(2), link(2), linkat(2), symlink(2),
symlinkat(2), rename(2), and renameat(2).

Submitted by: aniketp
MFC after: 2 weeks
Sponsored by: Google, Inc (GSoC 2018)
Differential Revision: https://reviews.freebsd.org/D15286

6 years agodwatch(1): Fix "-t test" for post-processing profiles
dteske [Tue, 29 May 2018 22:36:37 +0000 (22:36 +0000)]
dwatch(1): Fix "-t test" for post-processing profiles

Profiles that perform post-processing of the DTrace output were
dropping the "-t test" option on the floor. Fix handling of this
option for said profiles.

X-MFC-to: stable/11
X-MFC-with: r334261-334262
Sponsored by: Smule, Inc.

6 years agoiflib: mark irq allocation name parameter as constant
shurd [Tue, 29 May 2018 21:56:39 +0000 (21:56 +0000)]
iflib: mark irq allocation name parameter as constant

The *name parameter passed to iflib_irq_alloc_generic and
iflib_softirq_alloc_generic is never modified. Many places in code pass
string literals and thus should not be modified.

Mark the *name parameter as a const char * instead, so that we enforce
that the name is not modified before passing to bus_describe_intr()

Submitted by: Jacob Keller <jacob.e.keller@intel.com>
Reviewed by: kmacy
Sponsored by: Intel Corporation
Differential Revision: https://reviews.freebsd.org/D15343

6 years agodumpon(8)
sbruno [Tue, 29 May 2018 21:52:13 +0000 (21:52 +0000)]
dumpon(8)
- fix the WITHOUT_CRYPTO buildworld case.  Its rare, but some of us do
  build this way.

Sponsored by: Limelight Networks

6 years agoRevert second chunk of r333860. The warning from gcc is false positive. The
glebius [Tue, 29 May 2018 21:45:15 +0000 (21:45 +0000)]
Revert second chunk of r333860. The warning from gcc is false positive. The
npages won't be ever used in no space case.

6 years agolibpmc: silence scan-build warnings
mmacy [Tue, 29 May 2018 21:02:13 +0000 (21:02 +0000)]
libpmc: silence scan-build warnings

6 years agopmc: silence scan-build warnings
mmacy [Tue, 29 May 2018 21:02:08 +0000 (21:02 +0000)]
pmc: silence scan-build warnings

6 years agopmc_annotate: adhere to the API
vangyzen [Tue, 29 May 2018 20:30:46 +0000 (20:30 +0000)]
pmc_annotate: adhere to the API

If the 'mode' parameter was invalid, pmc_annotate() would
return EINVAL instead of setting errno and returning -1.

Sponsored by: Dell EMC

6 years agopmc: Add new sub-command structured "pmc" utility
mmacy [Tue, 29 May 2018 20:28:34 +0000 (20:28 +0000)]
pmc: Add new sub-command structured "pmc" utility

This will manage pmc functionality with a more
manageable structure of subcommands rather than the
gradually accreted spaghetti logic of overlapping flags
that exists in pmcstat.

This is intended to ultimately have all the same functionality
as pmcannotate+pmccontrol+pmcstat. Currently it just has
"stat" and "system-stat" - counters for the process itself and counters
for the system as a whole respectively (i.e. system-stat includes kernel
threads). Note that the rusage results (page faults/context switches/
user/sys) for stat-system will not account for the system as a whole -
only for the child process specified on the command line.

Implementing stat was suggested by mjg@ and the output is based on that
from Linux's "perf stat".

% pmc stat -- make -j32 buildkernel -DNO_MODULES  -ss > /dev/null
         9598393  page faults           #       0.674 M/sec
          387085  voluntary csw         #       0.027 M/sec
          106989  involuntary csw       #       0.008 M/sec
   2763965982317  cycles
   2542953049760  instructions          #       0.920 inst/cycle
    511562750157  branches
     12917006881  branch-misses         #       2.525%
     17944429878  cache-references      #       0.007 refs/inst
      2205119560  cache-misses          #       12.289%
           43.74  real                  #       2019.72% cpu
          795.09  user                  #       1817.72% cpu
           88.35  sys                   #       202.00% cpu

% make -j32 buildkernel -DNO_MODULES  -ss > /dev/null &
% sudo pmc stat-system cat
^C             103  page faults         #       0.811 M/sec
               4  voluntary csw         #       0.031 M/sec
               0  involuntary csw       #       0.000 M/sec
   2843639070514  cycles
   2606171217438  instructions          #       0.916 inst/cycle
    522450422783  branches
     13092862839  branch-misses         #       2.506%
     18592101113  cache-references      #       0.007 refs/inst
      2562878667  cache-misses          #       13.785%
           44.85  real                  #       0.00% cpu
            0.00  user                  #       0.00% cpu
            0.00  sys                   #       0.00% cpu

6 years agolibpmc: don't return -1 on success in pmc_allocate
mmacy [Tue, 29 May 2018 20:09:35 +0000 (20:09 +0000)]
libpmc: don't return -1 on success in pmc_allocate

6 years agoCorrect pointer subtraction in KASSERT().
brooks [Tue, 29 May 2018 20:03:24 +0000 (20:03 +0000)]
Correct pointer subtraction in KASSERT().

The assertion would never fire without truly spectacular future
programming errors.

Reported by: Coverity
CID: 1391370
Sponsored by: DARPA, AFRL

6 years agolibpmc: don't leak string in error case either
mmacy [Tue, 29 May 2018 19:07:00 +0000 (19:07 +0000)]
libpmc: don't leak string in error case either

Reported by: vangyzen@

6 years agolibpmc: remove fixed counter diagnostic
mmacy [Tue, 29 May 2018 18:30:37 +0000 (18:30 +0000)]
libpmc: remove fixed counter diagnostic

6 years agolibpmc: free allocated string on return from pmc_allocate
mmacy [Tue, 29 May 2018 18:26:12 +0000 (18:26 +0000)]
libpmc: free allocated string on return from pmc_allocate

Reported by: Coverity
CID: 1391359

6 years agohwpmc: don't enter epoch section across mmap hook
mmacy [Tue, 29 May 2018 18:03:48 +0000 (18:03 +0000)]
hwpmc: don't enter epoch section across mmap hook

6 years agoiflib: hold context lock across detach for drivers that need it
mmacy [Tue, 29 May 2018 18:03:43 +0000 (18:03 +0000)]
iflib: hold context lock across detach for drivers that need it

6 years agoCorrect pointer subtraction in KASSERT().
brooks [Tue, 29 May 2018 17:49:03 +0000 (17:49 +0000)]
Correct pointer subtraction in KASSERT().

The assertion would never fire without truly spectacular future
programming errors.

Reported by: Coverity
CID: 13913671391368
Sponsored by: DARPA, AFRL

6 years agoIncrease the number of fdt memory regions we support to 16. Some SoCs have
andrew [Tue, 29 May 2018 17:44:40 +0000 (17:44 +0000)]
Increase the number of fdt memory regions we support to 16. Some SoCs have
many excluded regions causing a buffer overflow in the early boot code if
this value is too small.

Obtained from: ABT Systems Ltd
Sponsored by: Turing Robotic Industries

6 years agoadd support for console resuming, implement it for uart, use on x86
avg [Tue, 29 May 2018 16:16:24 +0000 (16:16 +0000)]
add support for console resuming, implement it for uart, use on x86

This change adds a new optional console method cn_resume and a kernel
console interface cnresume.  Consoles that may need to re-initialize
their hardware after suspend (e.g., because firmware does not care to do
it) will implement cn_resume.  Note that it is called in rather early
environment not unlike early boot, so the same restrictions apply.
Platform specific code, for platforms that support hardware suspend,
should call cnresume early after resume, before any console output is
expected.

This change fixes a problem with a system of mine failing to resume when
a serial console is used.  I found that the serial port was in a strange
configuration and an attempt to write to it likely resulted in an
infinite loop.

To avoid adding cn_resume method to every console driver, CONSOLE_DRIVER
macro has been extended to support optional methods.

Reviewed by: imp, mav
MFC after: 3 weeks
Differential Revision: https://reviews.freebsd.org/D15552

6 years agoThe extension for zstd-compressed files is ".zst".
markj [Tue, 29 May 2018 16:04:53 +0000 (16:04 +0000)]
The extension for zstd-compressed files is ".zst".

Reported by: manu

6 years agofix x86 UP build broken by r334204, TSC resynchronization
avg [Tue, 29 May 2018 16:03:53 +0000 (16:03 +0000)]
fix x86 UP build broken by r334204, TSC resynchronization

Reported by: bde
MFC after: 1 week
X-MFC with: r334204

6 years agoswitch amd64 memstick installer images to MBR
emaste [Tue, 29 May 2018 15:06:13 +0000 (15:06 +0000)]
switch amd64 memstick installer images to MBR

A good number of BIOSes have trouble booting from GPT in non-UEFI mode.
This is commonly reported with Lenovo desktops and laptops (including
X220, X230, T430, and E31) and Dell systems.  Although UEFI is the
preferred amd64 boot method on recent hardware, older hardware does not
support UEFI, a user may wish to boot via BIOS/CSM, and some systems
that support UEFI fail to boot FreeBSD via UEFI (such as an old
AMD FX-6100 that I have).

With this change amd64 memsticks remain dual-mode (booting from either
UEFI or CSM); the partitioning type is just switched from GPT to MBR.

The "vestigial swap partition" in the GPT scheme was added in r265017 to
work around some issue with loader's GPT support, so we should not need
it when using MBR.

There is some concern that future UEFI systems may not boot from MBR,
but I am not aware of any today.  In any case the likely path forward
for our installers is to migrate to CD/USB combo images, and if it
becomes necessary introduce a separate memstick specifically for the
MBR BIOS/CSM case.

PR: 227954
Reviewed by: gjb, imp, tsoome
MFC after: 3 days
Relnotes: Yes
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D15599

6 years ago[usbdevs] add several GENESYS product ids
eadler [Tue, 29 May 2018 14:40:50 +0000 (14:40 +0000)]
[usbdevs] add several GENESYS product ids

Add USB product ID for two GENESYS LOGIC ICs, found in DELOCK
In-Desk-Hub 61991

PR: 228489
Submitted by: "Harald Schmalzbauer" <bugzilla.freebsd@omnilan.de>
MFC After: 3 weeks

6 years ago[usbdevs] add AMD vendor ids
eadler [Tue, 29 May 2018 14:37:48 +0000 (14:37 +0000)]
[usbdevs] add AMD vendor ids

- also more fully spell the name of ATI for ATI2

6 years ago[usbdevs] add misig letters
eadler [Tue, 29 May 2018 14:08:06 +0000 (14:08 +0000)]
[usbdevs] add misig letters

6 years ago[usbdevs] add several intel product identifiers
eadler [Tue, 29 May 2018 14:04:58 +0000 (14:04 +0000)]
[usbdevs] add several intel product identifiers

6 years agoAdd support for hardware rate limiting to mlx5en(4).
hselasky [Tue, 29 May 2018 14:04:57 +0000 (14:04 +0000)]
Add support for hardware rate limiting to mlx5en(4).

The hardware rate limiting feature is enabled by the RATELIMIT kernel
option. Please refer to ifconfig(8) and the txrtlmt option and the
SO_MAX_PACING_RATE set socket option for more information. This
feature is compatible with hardware transmit send offload, TSO.

A set of sysctl(8) knobs under dev.mce.<N>.rate_limit are provided to
setup the ratelimit table and also to fine tune various rate limit
related parameters.

Sponsored by: Mellanox Technologies

6 years ago[usbdevs] Add USB product ID for Philips SPC N900 CCD Webcam
eadler [Tue, 29 May 2018 14:04:50 +0000 (14:04 +0000)]
[usbdevs] Add USB product ID for Philips SPC N900 CCD Webcam

PR: 228488
Submitted by: "Harald Schmalzbauer" <bugzilla.freebsd@omnilan.de>

6 years agoOn ThunderX2 we need to be careful to only map the memory the firmware
andrew [Tue, 29 May 2018 13:52:25 +0000 (13:52 +0000)]
On ThunderX2 we need to be careful to only map the memory the firmware
lists in the EFI memory map. As such we need to reduce the mappings to
restrict them to not be the full 1G block. For now reduce this to a 2M
block, however this may be further restricted to be 4k page aligned as
other SoCs may require.

This allows ThunderX2 to boot reliably to userspace without performing
any speculative memory accesses to invalid physical memory.

This is a recommit of r334035 now that we can access the EFI Runtime data
through the DMAP region.

Tested by: tuexen
Sponsored by: DARPA, AFRL

6 years agoFix 32-bit buildworld for i386 after r334320.
hselasky [Tue, 29 May 2018 13:43:16 +0000 (13:43 +0000)]
Fix 32-bit buildworld for i386 after r334320.

The 64-bit atomics defined for i386 are currently only available in
the kernel space.

Found by: cy@
MFC after: 1 week
Sponsored by: Mellanox Technologies

6 years agoFix an inverted conditional in the netrc code, which would ignore the
des [Tue, 29 May 2018 13:07:36 +0000 (13:07 +0000)]
Fix an inverted conditional in the netrc code, which would ignore the
value of $HOME and always use the home directory from the passwd
database, unless $HOME was unset, in which case it would use (null).

While there, clean up handling of netrcfd and add debugging aids.

MFC after: 3 weeks

6 years agoRemove empty encap_init() function.
ae [Tue, 29 May 2018 12:32:08 +0000 (12:32 +0000)]
Remove empty encap_init() function.

MFC after: 2 weeks

6 years agoImplement atomic_add_64() and atomic_subtract_64() for the i386 target.
hselasky [Tue, 29 May 2018 11:59:02 +0000 (11:59 +0000)]
Implement atomic_add_64() and atomic_subtract_64() for the i386 target.

While at it add missing _acq_ and _rel_ variants for 64-bit atomic
operations under i386.

Reviewed by: kib @
MFC after: 1 week
Sponsored by: Mellanox Technologies

6 years agoFix a few (but far from all) style issues.
des [Tue, 29 May 2018 10:29:43 +0000 (10:29 +0000)]
Fix a few (but far from all) style issues.

MFC after: 3 weeks

6 years agoMFV r333668:
slavash [Tue, 29 May 2018 10:29:04 +0000 (10:29 +0000)]
MFV r333668:

Vendor import two upstream commits:
c1bb8784abd3ca978e376b0d10e324db0491237b
9c4af7213cc2543a1f5586d8f2c19f86aa0cbe72

When using tcpdump -I -i wlanN and wlanN is not a monitor mode VAP,
tcpdump will print an error message saying rfmon is not supported.

Give a concise explanation as to how one might solve this problem by
creating a monitor mode VAP.

MFC after:      1 month
Approved by:    hselasky (mentor), kib (mentor)
Sponsored by:   Mellanox Technologies

6 years agoUse __VA_ARGS__ to simplify the DEBUG macro.
des [Tue, 29 May 2018 10:28:20 +0000 (10:28 +0000)]
Use __VA_ARGS__ to simplify the DEBUG macro.

MFC after: 3 weeks

6 years agoteken: Fix `sequences` header which was crossing the 80-col boundary
dumbbell [Tue, 29 May 2018 08:41:44 +0000 (08:41 +0000)]
teken: Fix `sequences` header which was crossing the 80-col boundary

Also, the commented line's columns for `DECID` were not re-aligned in
r334302.

Reported by: bde

6 years agort_getifa_fib: don't use ifa but info->rti_ifa
mmacy [Tue, 29 May 2018 07:14:57 +0000 (07:14 +0000)]
rt_getifa_fib: don't use ifa but info->rti_ifa

Reported by: kp

6 years agolibpmc: add support for using fixed function counters
mmacy [Tue, 29 May 2018 04:23:21 +0000 (04:23 +0000)]
libpmc: add support for using fixed function counters

6 years agolibpmc: export names of counters for stat mode, make get_by_idx name consistent with...
mmacy [Tue, 29 May 2018 04:23:16 +0000 (04:23 +0000)]
libpmc: export names of counters for stat mode, make get_by_idx name consistent with others

6 years agohwpmc: don't incrorrectly strip the ANY flag
mmacy [Tue, 29 May 2018 04:04:06 +0000 (04:04 +0000)]
hwpmc: don't incrorrectly strip the ANY flag

6 years agoTeach ufs_module.c about bsd labels and probe 'a' partition.
imp [Tue, 29 May 2018 03:58:29 +0000 (03:58 +0000)]
Teach ufs_module.c about bsd labels and probe 'a' partition.

If the check for a UFS partition at offset 0 on the disk fails, check
to see if there's a BSD disklabel at block 1 (standard) or at offset
512 (install images assume 512 sector size). If found, probe for UFS
on the 'a' partition.

This fixes UEFI booting images from a BSD labeled MBR slice when the
'a' partiton isn't at offset 0. This is a stop-gap fix since we plan
on removing boot1.efi in FreeBSD 12. We can't easily do that for 11.2,
however, hence the short MFC window.

Tested by: emaste@
MFC After: 3 days
Sponsored by: Netflix
Differential Revision: https://reviews.freebsd.org/D15598

6 years agoBump the date on man pages in r334306
vangyzen [Tue, 29 May 2018 02:41:32 +0000 (02:41 +0000)]
Bump the date on man pages in r334306

It seems a shame to ruin the patina of the June 4, 1993 date
on abort.3, especially since it still matched the date of
the SCCS ID, but those are the rules.

Reported by: araujo
MFC after: 3 days
Sponsored by: Dell EMC

6 years agoSimplify macros EFPRINTF and EFFLUSH. [0]
araujo [Tue, 29 May 2018 01:46:00 +0000 (01:46 +0000)]
Simplify macros EFPRINTF and EFFLUSH. [0]
Also stdarg(3) says that each invocation of va_start() must be paired
with a corresponding invocation of va_end() in the same function. [1]

Reported by: Coverity
CID: 1194318[0] and 1194332[1]
Discussed with: jhb
MFC after: 4 weeks.
Sponsored by: iXsystems Inc.
Differential Revision: https://reviews.freebsd.org/D15548

6 years agoCross-reference abort2(2) from a few man pages
vangyzen [Tue, 29 May 2018 01:16:00 +0000 (01:16 +0000)]
Cross-reference abort2(2) from a few man pages

I didn't know abort2 existed until it was mentioned on a mailing list.
Mention it in related pages so others can find it easily.

MFC after: 3 days
Sponsored by: Dell EMC