21 months agoNumbering changes for master -> 4.9. v4.9.0
Justin C. Sherrill [Sun, 12 Mar 2017 01:43:50 +0000 (20:43 -0500)]
Numbering changes for master -> 4.9.

21 months agodrm/linux: fix tasklets
François Tigeot [Thu, 9 Mar 2017 09:20:27 +0000 (10:20 +0100)]
drm/linux: fix tasklets

The set_bit() and clear_bit() macros expect pointers as arguments.

21 months agosys/vfs/hammer: Cleanup hammer_modify_node()
Tomohiro Kusumi [Wed, 8 Mar 2017 19:10:12 +0000 (21:10 +0200)]
sys/vfs/hammer: Cleanup hammer_modify_node()

The only purpose of crcptr was to avoid split into multiple lines
(according to dillon@), but we could do with the same two lines..

21 months agore: Only limited versions of this chip require explicit padding.
Sepherosa Ziehau [Mon, 27 Feb 2017 18:01:21 +0000 (02:01 +0800)]
re: Only limited versions of this chip require explicit padding.

Certain versions of this chip fail to generate correct UDP checksum
on explicitly padded UDP datagrams.

Reported-and-Tested-by: Daniel Bilik
21 months agokernel - Fix cluster_write() inefficiency
Matthew Dillon [Tue, 7 Mar 2017 01:36:48 +0000 (17:36 -0800)]
kernel - Fix cluster_write() inefficiency

* A bug in the cluster code was causing HAMMER to write out 64KB buffers in
  32KB overlapping segments, resulting in data being written to the media

* This fix just about doubles HAMMER's sequential write bandwidth.

21 months agoAlways use unix line endings
Eitan Adler [Sun, 5 Mar 2017 18:27:43 +0000 (10:27 -0800)]
Always use unix line endings

21 months agovkernel: Prevent clang optimizing out the traps.
zrj [Thu, 2 Mar 2017 17:44:23 +0000 (19:44 +0200)]
vkernel: Prevent clang optimizing out the traps.

Turns out clang removes non volatile null-pointers. Prevent that.

21 months agowlan: Remove duplicate typedef.
zrj [Thu, 2 Mar 2017 16:14:51 +0000 (18:14 +0200)]
wlan: Remove duplicate typedef.

21 months agoUnbreak VKERNEL64 for clang compatibility.
zrj [Thu, 2 Mar 2017 15:46:09 +0000 (17:46 +0200)]
Unbreak VKERNEL64 for clang compatibility.

21 months agolibc/getnameinfo: Whitespace fix to my last commit.
Sascha Wildner [Sat, 4 Mar 2017 12:08:14 +0000 (13:08 +0100)]
libc/getnameinfo: Whitespace fix to my last commit.

21 months agolibc/getnameinfo: Clean up the comments in getnameinfo_link() a bit.
Sascha Wildner [Sat, 4 Mar 2017 12:00:43 +0000 (13:00 +0100)]
libc/getnameinfo: Clean up the comments in getnameinfo_link() a bit.

21 months agoSync ACPICA with Intel's version 20170303.
Sascha Wildner [Fri, 3 Mar 2017 21:15:04 +0000 (22:15 +0100)]
Sync ACPICA with Intel's version 20170303.

Nothing big, really:

* The licensing information at the start of each source code module has
  been updated. In addition to the Intel license, the dual GPLv2/BSD
  license has been added for completeness. Now, a single version of the
  source code should be suitable for all ACPICA customers. This is the
  major change for this release since it affects all source code modules.

* Fixed two issues with the common asltypes.h header that could cause
  problems in some environments (Kim Jung-uk).

* Disassembler: fixed a regression introduced in 20170224. A fix for a
  memory leak related to resource descriptor tags (names) could fault
  when the disassembler was generated with 64-bit compilers.

For a more detailed list, please see sys/contrib/dev/acpica/changes.txt.

21 months agoRemove old timezone Pacific/Johnston via 'make upgrade'.
Sascha Wildner [Fri, 3 Mar 2017 15:41:37 +0000 (16:41 +0100)]
Remove old timezone Pacific/Johnston via 'make upgrade'.

21 months agoSync zoneinfo database with tzdata2017a from ftp://ftp.iana.org/tz/releases
Sascha Wildner [Thu, 2 Mar 2017 13:43:55 +0000 (14:43 +0100)]
Sync zoneinfo database with tzdata2017a from ftp://ftp.iana.org/tz/releases

* Mongolia no longer observes DST.  (Thanks to Ganbold Tsagaankhuu.)

* Chile's Region of Magallanes moves from -04/-03 to -03 year-round.
    Its clocks diverge from America/Santiago starting 2017-05-13 at
    23:00, hiving off a new zone America/Punta_Arenas.  Although the
    Chilean government says this change expires in May 2019, for now
    assume it's permanent.  (Thanks to Juan Correa and Deborah
    Goldsmith.)  This also affects Antarctica/Palmer.

* Fix many entries for historical time stamps for Europe/Madrid
    before 1979, to agree with tables compiled by Pere Planesas of the
    National Astronomical Observatory of Spain.  As a side effect,
    this changes some time stamps for Africa/Ceuta before 1929, which
    are probably guesswork anyway.  (Thanks to Steve Allen and
    Pierpaolo Bernardi for the heads-ups, and to Michael Deckers for
    correcting the 1901 transition.)

* Ecuador observed DST from 1992-11-28 to 1993-02-05.
    (Thanks to Alois Treindl.)

* Asia/Atyrau and Asia/Oral were at +03 (not +04) before 1930-06-21.
    (Thanks to Stepan Golosunov.)

* Switch to numeric time zone abbreviations for South America, as
    part of the ongoing project of removing invented abbreviations.
    This avoids the need to invent an abbreviation for the new Chilean
    zone.  Similarly, switch from invented to numeric time zone
    abbreviations for a number of other zones.

* For Alaska time from 1900 through 1967, instead of "CAT" use the
    abbreviation "AST", the abbreviation commonly used at the time
    (Atlantic Standard Time had not been standardized yet).  Use "AWT"
    and "APT" instead of the invented abbreviations "CAWT" and "CAPT".

* Use "CST" and "CDT" instead of invented abbreviations for Macau
    before 1999 and Taiwan before 1938, and use "JST" instead of the
    invented abbreviation "JCST" for Japan and Korea before 1938.

* Move the Pacific/Johnston link from 'australasia' to 'backward',
    since Johnston is now uninhabited.

* africa (Africa/Monrovia): The 1972 transition was on January 7,
    not May 1.  (Shanks was wrong again! and Howse was right.)

* The 'Theory' file now better documents choice of historical time
    zone abbreviations.  (Problems reported by Michael Deckers.)

21 months agodrm/i915: Fix compilation with clang
François Tigeot [Thu, 2 Mar 2017 08:33:57 +0000 (09:33 +0100)]
drm/i915: Fix compilation with clang

* Add back a lost pointer initialization line

* With this change, a clang-built drm/i915 module now works as expected

Submitted-by: zrj
21 months agorc.d - Add option to load kernel modules from rc.conf(5)
Johannes Hofmann [Thu, 2 Mar 2017 06:46:41 +0000 (07:46 +0100)]
rc.d - Add option to load kernel modules from rc.conf(5)

Due to memory limitations in the early boot phase it is not
advisable to load kernel modules that are not strictly necessary
to mount the root file system via loader.conf(5).
Therefore a new rc script "modules" is added that allows loading of
kernel modules from rc.conf(5).

21 months agoxargs.1: Add some words about -r (taken from FreeBSD).
Sascha Wildner [Wed, 1 Mar 2017 21:05:27 +0000 (22:05 +0100)]
xargs.1: Add some words about -r (taken from FreeBSD).

21 months agorc.conf.5: Adjust the memimg documentation a bit.
Sascha Wildner [Wed, 1 Mar 2017 20:06:48 +0000 (21:06 +0100)]
rc.conf.5: Adjust the memimg documentation a bit.

21 months agoClean up the namespace in a number of standard headers.
Sascha Wildner [Wed, 1 Mar 2017 19:36:39 +0000 (20:36 +0100)]
Clean up the namespace in a number of standard headers.

* In most cases, instead of the full load of <sys/types.h>,
  include <machine/stdint.h> which defines the __-types that
  <monetary.h>, <pwd.h>, <search.h>, <strings.h> and <wordexp.h>
  only need.

* Additionally, extend the visibility of the size_t definition
  and adjust WRDE_NOSYS's visibility because it was only in the
  standard up to Issue 6.

* In <time.h>, include <sys/stdint.h> to get at __pid_t too.

* Likewise, include <sys/stdint.h> in <sys/wait.h> and provide
  a definition of pid_t as required.

21 months agoAdjust whitespace in a couple of standard headers (no functional change).
Sascha Wildner [Wed, 1 Mar 2017 19:24:01 +0000 (20:24 +0100)]
Adjust whitespace in a couple of standard headers (no functional change).

In preparation for another round of namespace cleanup.

21 months agorc.conf.5 - Adjust manpage to the last changes.
Antonio Huete Jimenez [Wed, 1 Mar 2017 19:11:15 +0000 (20:11 +0100)]
rc.conf.5 - Adjust manpage to the last changes.

21 months agoxargs - Add dummy -r option
Matthew Dillon [Wed, 1 Mar 2017 18:01:14 +0000 (10:01 -0800)]
xargs - Add dummy -r option

* Add the -r option for GNU compatbility.  This option is the short form
  for the --no-run-if-empty GNU option, which is our default behavior, so
  we do nothing with it other than allow it.

Taken-from: FreeBSD.

21 months agokernel: Remove unused DIRECTIO option (see 12b70cea73eef6a67).
Sascha Wildner [Wed, 1 Mar 2017 12:53:16 +0000 (13:53 +0100)]
kernel: Remove unused DIRECTIO option (see 12b70cea73eef6a67).

21 months agorc.d - Add an option to specify memimg file for vkernels
Antonio Huete Jimenez [Wed, 1 Mar 2017 01:04:30 +0000 (02:04 +0100)]
rc.d - Add an option to specify memimg file for vkernels

- This option defaults to /var/vkernel/memimg.xxxxxx when not specified
  and it tries to provide a memimg file automatically even when non-privileged
  users run vkernels.

- The default directory for memimg files (/var/vkernel) is created if it doesn't
  exist and set to 1777 mode.

21 months agorc.d - Allow vkernel to run as non-root
Antonio Huete Jimenez [Fri, 24 Feb 2017 20:52:39 +0000 (21:52 +0100)]
rc.d - Allow vkernel to run as non-root

21 months agorc.d - Follow up previous commit
Antonio Huete Jimenez [Fri, 24 Feb 2017 15:42:41 +0000 (16:42 +0100)]
rc.d - Follow up previous commit

- unset all variables that could be potentially reused
- Use lowercase in a warn message

21 months agoinstaller: Turn off soft updates for /boot in the UFS install.
Sascha Wildner [Sun, 26 Feb 2017 03:51:04 +0000 (04:51 +0100)]
installer: Turn off soft updates for /boot in the UFS install.

This was missed when we gave the UFS install a separate /boot partition.

Reported-by: ozmage
21 months agoSync ACPICA with Intel's version 20170224.
Sascha Wildner [Sun, 26 Feb 2017 01:28:55 +0000 (02:28 +0100)]
Sync ACPICA with Intel's version 20170224.

* Fixed two issues with the control method return value auto-repair
  feature in the interpreter.

* Fixed an AML interpreter mutex issue during the single stepping
  of control methods in the debugger.

* New iasl(8) -ca option to convert ASL to ASL+.

* Various other fixes in iasl(8).

For a more detailed list, please see sys/contrib/dev/acpica/changes.txt.

21 months agovmbus.4: It can be compiled into the kernel as well.
Sascha Wildner [Fri, 24 Feb 2017 15:36:57 +0000 (16:36 +0100)]
vmbus.4: It can be compiled into the kernel as well.

21 months agorc.d - Make sure rootimgs are empty for every vkernel
Antonio Huete Jimenez [Fri, 24 Feb 2017 13:38:29 +0000 (14:38 +0100)]
rc.d - Make sure rootimgs are empty for every vkernel

21 months agore: Fix typo for disabling txcsum.
Sepherosa Ziehau [Fri, 24 Feb 2017 01:35:49 +0000 (09:35 +0800)]
re: Fix typo for disabling txcsum.

Submitted-by: Daniel Bilik
21 months ago<sys/procctl.h>: Include <sys/types.h> explicitly for userland.
Sascha Wildner [Thu, 23 Feb 2017 22:18:59 +0000 (23:18 +0100)]
<sys/procctl.h>: Include <sys/types.h> explicitly for userland.

This prepares for more namespace cleanup in standard headers.

21 months agoClean up a bit after the recent ahc/ahd/aic removal.
Sascha Wildner [Wed, 22 Feb 2017 20:10:00 +0000 (21:10 +0100)]
Clean up a bit after the recent ahc/ahd/aic removal.

21 months agomrsas - release devq before freeing the sim.
Matthew Dillon [Wed, 22 Feb 2017 18:49:57 +0000 (10:49 -0800)]
mrsas - release devq before freeing the sim.

* Release the devq before freeing the sim.

21 months agokernel - Add missing bus lock to CAM
Matthew Dillon [Wed, 22 Feb 2017 18:48:48 +0000 (10:48 -0800)]
kernel - Add missing bus lock to CAM

* cam_periph_alloc() was missing a bus lock / unlock sequence around
  a list operation.

21 months agokernel - Improve exec performance
Matthew Dillon [Wed, 22 Feb 2017 18:43:00 +0000 (10:43 -0800)]
kernel - Improve exec performance

* Improves non-shared 32-way-concurrent exec performance for a small
  static binary on the xeon from 92KE/s (92000 execs/sec) to 136KE/s.

* Improves single-threaded test performance from ~4.5KE/s to ~6.5KE/s.
  And for reasons I don't entirely understand, sometimes up to ~8KE/s.

* Several changes here, but the only one that matters for the test is
  that the pv_placemarker_wakeup() code removes a spin_lock/spin_unlock
  pair on the pmap.  I adjusted the code so the pmap spinlock is not
  required for placemarker wakeup operations.

  What I think might have happened here is that this removal also got
  rid of a spin-lock shared/exclusive ping-pong.  Still, the huge
  improvement in performance was not expected.  Even with the removal
  there is still an atomic_swap_long() in the code path.

  My guess is that multiple atomic ops degrade the instruction pipeline
  more than one would otherwise expect due to the multiple memory

21 months agokernel - Slightly reduce extra spinlock ops in _pv_alloc()
Matthew Dillon [Wed, 22 Feb 2017 07:55:09 +0000 (23:55 -0800)]
kernel - Slightly reduce extra spinlock ops in _pv_alloc()

* Pre-stage pnew (new pv_entry) using a pcpu cache, avoiding an
  unnecessary spin_unlock/spin_lock sequence in _pv_alloc().

* No real performance improvement measured, but the code is cleaner so
  use it.

21 months agokernel - Add atomic ops features
Matthew Dillon [Wed, 22 Feb 2017 07:51:59 +0000 (23:51 -0800)]
kernel - Add atomic ops features

* Add <atomicop>_xacquire() and <atomicop>_xrelease() to a bunch of
  atomic ops.  Using this API will elide the operation using Intel's
  TSX extensions (the elides are backwards compatible to cpus that do
  not support TSX).

* Note however that preliminary testing using this API in the spin_lock*()
  and pv_*() interfaces has only led to a reduction of performance and not
  to any improvement, so at the moment we do not intend to use it.  But I
  did the work to add the API calls and I don't want to lose it.

21 months agore: Update to Realtek 1.93
Sepherosa Ziehau [Wed, 22 Feb 2017 14:57:08 +0000 (22:57 +0800)]
re: Update to Realtek 1.93

Tested-by: me, Tim Darby
21 months agodrm/linux: Implement tasklets
François Tigeot [Wed, 22 Feb 2017 06:06:04 +0000 (07:06 +0100)]
drm/linux: Implement tasklets

Even though this initial implementation is pretty naive and runs
tasklets synchronously, it appears to nevertheless work fine with
the drm/i915 driver version from Linux 4.7.

21 months agokernel: fix LINT64 build after old SCSI drivers removal
François Tigeot [Tue, 21 Feb 2017 23:46:11 +0000 (00:46 +0100)]
kernel: fix LINT64 build after old SCSI drivers removal

21 months agokernel - Disallow remote growstack from procfs
Matthew Dillon [Tue, 21 Feb 2017 20:32:51 +0000 (12:32 -0800)]
kernel - Disallow remote growstack from procfs

* Do not allow procfs operations to grow the stack of a remote process,
  at least for now, because we are not passing in the struct vmspace *
  pointer, for now.

* Fixes trivial panic caused by ps -e due to the recent addition of
  an assertion to test the condition that failed (the assertion is

21 months agobuild - Fix nativekernel build
Matthew Dillon [Tue, 21 Feb 2017 20:32:22 +0000 (12:32 -0800)]
build - Fix nativekernel build

* Fix issue with aic removal, forgot to remove something from the
  nativekernel build target.

21 months agokernel/re: Fix hw.re.phy_mdix_mode tunable.
Sascha Wildner [Tue, 21 Feb 2017 14:24:32 +0000 (15:24 +0100)]
kernel/re: Fix hw.re.phy_mdix_mode tunable.

21 months agoboot - Fix insufficient malloc()s
Matthew Dillon [Tue, 21 Feb 2017 04:22:16 +0000 (20:22 -0800)]
boot - Fix insufficient malloc()s

* Fix two places where not enough buffer space is malloc()d.

21 months agokernel - Remove old SCSI drivers - aic, aic7xxx, ahc, ahd
Matthew Dillon [Tue, 21 Feb 2017 04:05:44 +0000 (20:05 -0800)]
kernel - Remove old SCSI drivers - aic, aic7xxx, ahc, ahd

* Remove these drivers.  They were pinnacles of their time, requiring
  incredibly complex state machines for sequencing old-style SCSI busses.
  CAM was created to support these babies.  But alas, they became obsolete
  many years ago.

* They were from the 32-bit ISA and PCI (not PCIe) PC era.  DragonFlyBSD
  doesn't even boot on those old machines any more, being 64-bit only.

* Also deals with some -j races in the aic sub-build.

21 months agodrm/linux: u64 is unsigned long long
François Tigeot [Mon, 20 Feb 2017 20:42:19 +0000 (21:42 +0100)]
drm/linux: u64 is unsigned long long

* Some basic Linux types were badly defined, causing unnecessary
  differences in various lines of driver code such as kprintf

* Make u64 and __u64 unsigned long longs like in Linux

* Reduce differences with Linux 4.6 in the generic drm code as well
  as drm/i915 and drm/radeon drivers

* While there, make the include/ directory hierarchy more similar
  to the one in Linux 4.6

21 months agokernel - Expand p_nice effect more, fix %cpu calculation bug
Matthew Dillon [Mon, 20 Feb 2017 05:23:15 +0000 (21:23 -0800)]
kernel - Expand p_nice effect more, fix %cpu calculation bug

* Expand the p_nice effect even more.

* Fix a %cpu calculation bug which could improperly cause the
  lwp->lwp_priority to be reset to its base level, potentially giving
  a cpu-bound process more cpu than intended.

21 months agodrm - Fix major stalls by fixing an improper taskqueue priority
Matthew Dillon [Mon, 20 Feb 2017 05:20:46 +0000 (21:20 -0800)]
drm - Fix major stalls by fixing an improper taskqueue priority

* drm was creating task queues with a LWKT priority of 0, which is
  lower than the priority of a running user thread.

* Fix all cases where improper priorities are passed to
  taskqueue_start_threads().  This fixes major video stalls and glitches
  that occur when other things might be running on the system cpu-bound.

* taskqueue_start_threads() now asserts if the priority passed to it is

21 months agokernel - Fix bug in physio()
Matthew Dillon [Mon, 20 Feb 2017 02:14:17 +0000 (18:14 -0800)]
kernel - Fix bug in physio()

* Fix an integer overflow in physio() when attempting to dd a block size
  >= 2G.  An int was being used instead of size_t.

Reported-by: tpchin
Bug: 2981

21 months agokernel - Support FreeBSD style loader.conf hints for resources
Matthew Dillon [Mon, 20 Feb 2017 01:56:25 +0000 (17:56 -0800)]
kernel - Support FreeBSD style loader.conf hints for resources

* DragonFly uses <device><unit>.<resname>.

* Also support FreeBSD hints which use hint.<device>.<unit>.<resname>.

* Makes it easier for users coming from FreeBSD to bring in sound quirks
  and such.

Reported-by: Damien
21 months agokernel - Fix estcpu calculation
Matthew Dillon [Mon, 20 Feb 2017 00:46:09 +0000 (16:46 -0800)]
kernel - Fix estcpu calculation

* No longer use uload to try to correct estcpu.  It winds up inflating the
  cpu use of other processes that use cpu but are not cpu-bound, creating
  the same estcpu compression problem.  The problem is less pronounced
  without it.

* Remove the uload global.  No longer useful and saves an unnecessary
  cache line ping-pong.

* Refactor how p_nice affects p_priority.  This causes nice levels to have
  a greater effect.

* Make the forkbias programmable with a sysctl and set the default to 1,
  which is a good, safe, all-around default.

21 months agodrm/radeon: Replace some spinlocks by lockmgr locks
François Tigeot [Sun, 19 Feb 2017 20:09:34 +0000 (21:09 +0100)]
drm/radeon: Replace some spinlocks by lockmgr locks

The original Linux code uses struct mutexes instead of spinlocks for
gem.mutex, gpu_clock_mutex and srbm_mutex.

21 months agoRevert "kernel - Reduce priority range from dynamic priority"
Matthew Dillon [Sun, 19 Feb 2017 04:33:34 +0000 (20:33 -0800)]
Revert "kernel - Reduce priority range from dynamic priority"

This reverts commit abc0cda7b4a0a92afab15645d5adfac57af02866.

The change improved how nice ranging works but completely blew up
fork priority reduction, causing parent process dispatches via
fork/exec (such as done by a service or by make) to not immediately
move the child proces to another cpu when the parent has more work
to do.

This caused the kernel build to regress from 3:12 to 3:21 on the
test box, and for the world build to only show minor improvements
instead of more significant improvements.

So revert it for now.  We will improve nice priorities another way.

21 months agokernel/usb4bsd: Add a quirk for the Corsair STRAFE Gaming keyboard.
Sascha Wildner [Sat, 18 Feb 2017 08:52:18 +0000 (09:52 +0100)]
kernel/usb4bsd: Add a quirk for the Corsair STRAFE Gaming keyboard.

Taken-from: FreeBSD

21 months agosdpquery(1): Remove an unneeded explicit -Wno-unused-but-set-variable.
Sascha Wildner [Fri, 17 Feb 2017 21:46:13 +0000 (22:46 +0100)]
sdpquery(1): Remove an unneeded explicit -Wno-unused-but-set-variable.

-Wunused-but-set-variable comes in at WARNS==4 only.

21 months agolibc/nmalloc: Remove some kernel code remains.
Sascha Wildner [Fri, 17 Feb 2017 21:42:28 +0000 (22:42 +0100)]
libc/nmalloc: Remove some kernel code remains.

21 months agokernel - Fix machdep.pmap_mmu_optimize bug
Matthew Dillon [Fri, 17 Feb 2017 21:40:24 +0000 (13:40 -0800)]
kernel - Fix machdep.pmap_mmu_optimize bug

* Fix bug introduced by the recent pv_entry rewrite when MMU segment
  optimization is enabled.

Reported-by: sephe
21 months agoUnbreak vkernel build.
Sascha Wildner [Fri, 17 Feb 2017 21:15:24 +0000 (22:15 +0100)]
Unbreak vkernel build.

Move some hyperv specific but "standard" files into the pc64 specific
'files' file.

Reported-by: tuxillo
21 months agoUpdate the pciconf(8) database.
Sascha Wildner [Fri, 17 Feb 2017 10:52:30 +0000 (11:52 +0100)]
Update the pciconf(8) database.

February 8, 2017 snapshot from http://pciids.sourceforge.net/

21 months agokernel/slaballoc: Separate some parts better that need INVARIANTS.
Sascha Wildner [Fri, 17 Feb 2017 09:09:38 +0000 (10:09 +0100)]
kernel/slaballoc: Separate some parts better that need INVARIANTS.

21 months agoUnbreak kernel building
Sepherosa Ziehau [Thu, 16 Feb 2017 13:55:53 +0000 (21:55 +0800)]
Unbreak kernel building

21 months agokernel/vinum: Fix the position of VINUM_LABEL ioctl handling.
Sascha Wildner [Thu, 16 Feb 2017 09:29:00 +0000 (10:29 +0100)]
kernel/vinum: Fix the position of VINUM_LABEL ioctl handling.

This was touched in ca6d9fb71787f9d013cb789ad2f41d6fc33fb38e back in
2007, but slightly wrong, because the case was moved into the outer
switch() which doesn't actually handle ioctls, so this case was never
hit there.

With this commit, all of clang's -Wswitch warnings in the kernel build
are fixed.

21 months agokernel: Fix the type of 'cmd' in various ioctl functions (int -> u_long).
Sascha Wildner [Thu, 16 Feb 2017 09:24:49 +0000 (10:24 +0100)]
kernel: Fix the type of 'cmd' in various ioctl functions (int -> u_long).

These were all found by clang's -Wswitch option.

21 months agohyperv: Implement cpucounters.
Sepherosa Ziehau [Thu, 16 Feb 2017 06:43:31 +0000 (14:43 +0800)]
hyperv: Implement cpucounters.

21 months agohyperv: Reorganize
Sepherosa Ziehau [Thu, 16 Feb 2017 03:40:49 +0000 (11:40 +0800)]
hyperv: Reorganize

21 months agokern: Add cpucounter which returns 64bit monotonic counter.
Sepherosa Ziehau [Tue, 14 Feb 2017 15:45:01 +0000 (23:45 +0800)]
kern: Add cpucounter which returns 64bit monotonic counter.

It will be used to:
- Simplify per-cpu raw time extraction.
- ALTQ machclk.
- Per packet timestamp for CoDel.

As of this commit, dummy cpucounter, which falls back to cputimer,
and TSC cpucounter are implemented.

21 months agoaltq: Use microuptime() instead of microtime() - boottime.
Sepherosa Ziehau [Tue, 14 Feb 2017 13:54:36 +0000 (21:54 +0800)]
altq: Use microuptime() instead of microtime() - boottime.

21 months agokernel - Fix bug in pmap_unwire()
Matthew Dillon [Tue, 14 Feb 2017 07:21:09 +0000 (23:21 -0800)]
kernel - Fix bug in pmap_unwire()

* Fix a bug introduced in the recent pmap work.  For kernel pages,
  pmap_unwire() was not testing the V bit and would return a bogus
  vm_page_t for PTE values of 0, instead of returning NULL.

* Triggered by the mpipe code, used primarily by the crypto subsystem.
  Also used for IP fragment reassembly and by tcp_maketemplate().  A
  failed M_NOWAIT slab allocation tries to delete the partially filled
  map_entry_t, encounters 0 PTEs, and gets confused.

Reported-by: Tim Darby, Antonio Huete Jimenez
22 months agolibkern: Make inet_ntoa MPSAFE by passing string buffer to it.
Sepherosa Ziehau [Mon, 13 Feb 2017 13:51:20 +0000 (21:51 +0800)]
libkern: Make inet_ntoa MPSAFE by passing string buffer to it.

22 months agodrm/i915: Set GPU freq to idle_freq initially
François Tigeot [Mon, 13 Feb 2017 12:40:21 +0000 (13:40 +0100)]
drm/i915: Set GPU freq to idle_freq initially

Set the initial frequency to idle_freq on Skylake+/Valleyview/Cherryview
GPUs in order to not waste power.
This was already done on all other platforms.

Obtained-from: Linux 4.7, commit 5fd9f52384935dacfdc4adb5cc3531a40346d475

22 months agonet: Make sure that local variable is really used.
Sepherosa Ziehau [Sun, 12 Feb 2017 14:19:52 +0000 (22:19 +0800)]
net: Make sure that local variable is really used.

22 months agosort(1): Fix some obvious issues
John Marino [Mon, 13 Feb 2017 02:25:18 +0000 (20:25 -0600)]
sort(1): Fix some obvious issues

Taken-from: FreeBSD

22 months agodrm: Partial revert of "drm: Sync drm_crtc.c with Linux 4.6"
François Tigeot [Sun, 12 Feb 2017 21:32:10 +0000 (22:32 +0100)]
drm: Partial revert of "drm: Sync drm_crtc.c with Linux 4.6"

This partially reverts commit 917ec290eeeeb73fe8bfa066cfc3303a55646424.
It broke Xorg on some machines.

Reported-by: many people
22 months agokernel: Add a simple kern.cp_times sysctl.
Sascha Wildner [Sun, 12 Feb 2017 18:06:25 +0000 (19:06 +0100)]
kernel: Add a simple kern.cp_times sysctl.

This is like kern.cp_time, just per CPU.

It will help devel/libgtop, and by extension mate-system-monitor, perhaps
other such utilities/plugins too. Therefore, bump __DragonFly_version as

22 months agopktgen: Ifnet lock is required by ifunit.
Sepherosa Ziehau [Sun, 12 Feb 2017 13:35:19 +0000 (21:35 +0800)]
pktgen: Ifnet lock is required by ifunit.

22 months agokernel: Use CPUSTATES constant.
Sascha Wildner [Sun, 12 Feb 2017 09:50:36 +0000 (10:50 +0100)]
kernel: Use CPUSTATES constant.

22 months agovirtio: Fix and activate PCI MSI-X support.
Imre Vadász [Wed, 8 Feb 2017 21:05:35 +0000 (22:05 +0100)]
virtio: Fix and activate PCI MSI-X support.

* Change pci_msi_blacklisted() test to always assume working MSI and MSI-X
  interrupts on virtual-machines. We should assume that a hypervisor
  without MSI or MSI-X support shouldn't even indicate supported MSI(-X)
  via the PCI config space.

* Move vtblk_alloc_disk() to the end of virtio_blk's attach method.
  This avoids a race between irq enabling in virtio, and the disk probing.

* Fix allocation and teardown of MSI-X interrupts.

* Get rid of rather confusing VIRTIO_PCI_FLAG_NO_MSI and
  when using pci_alloc_1intr() for MSI allocation, and
  instead of VIRTIO_PCI_FLAG_NO_MSIX we can just check sc->vtpci_msix_res.

* For now, MSI-X vectors are simply assigned to subsequent cores (plus
  adding the device_get_unit() value to shuffle things a bit), i.e.:
  (device_get_unit(dev) + cnt) % ncpus

* For the if_vtnet network driver this means that the rx and tx queues run
  on different cores, but both queues still use the same serializer for

* One major advantages in using MSI-X interrupts instead of the legacy
  IRQ is, that this avoids interrupt sharing in many virtual-machine

* Tested on qemu with TCG (unaccelerated emulation) and 1 core, and with
  KVM acceleration and 2 cores, with both virtio network and disk devices.

22 months agoAdd entries for initial clang import in mtree.
zrj [Wed, 8 Feb 2017 16:48:50 +0000 (18:48 +0200)]
Add entries for initial clang import in mtree.

These will be used soon populated with initial base clang version.

22 months agoPrevent implicit -std=* passing from NXCFLAGS to NXCXXFLAGS.
zrj [Wed, 8 Feb 2017 16:40:21 +0000 (18:40 +0200)]
Prevent implicit -std=* passing from NXCFLAGS to NXCXXFLAGS.

C and c++ standards are not cross compatible, this is a major issue with clang
import into the base that explictly requires at least the -std=c++11 standard.
It gets complicated because even tablegen utilities used as buildtools depend
explictly on c++11. This implies that we no longer can avoid libstdc++ usage
in hostlib/hostprog infrastructure.

While there, explcitly filter out -flto options from host native tools FLAGS
and add a missing rule to allow generating host native c++ utilities for the
use in buildworld.

22 months agodevd(8): Remove build workaround.
zrj [Fri, 10 Feb 2017 09:48:37 +0000 (11:48 +0200)]
devd(8): Remove build workaround.

After previous commit change it should be no longer needed.

Spotted-by: swildner
22 months agoPrevent implicit -Wsystem-headers passing from CFLAGS to CXXFLAGS.
zrj [Wed, 8 Feb 2017 16:27:24 +0000 (18:27 +0200)]
Prevent implicit -Wsystem-headers passing from CFLAGS to CXXFLAGS.

Upcoming clang will be the first base system part that very heavily depends on
c++ headers, this prevents setting any level of WARNS in clang's makefiles
without performing certain unsafe manipulations of CXXFLAGS. To prevent that
it makes sense to allow only explict use directly in CXXFLAGS where it is
needed given c++11 headers are part of contrib and quite noisy with deprecated
attributes for previous features/interfaces to c++11 standard.

22 months agogencat(1): Limit and mark bootstrap hack.
zrj [Fri, 10 Feb 2017 08:02:10 +0000 (10:02 +0200)]
gencat(1): Limit and mark bootstrap hack.

By the git history it was only needed for DragonFly 3.6 changes.
But be generous and mark it as 4.1 just in case there were other changes
piggybacking on it during crossworld stage. It no longer should be needed
and might cause unwanted issues for future developments.

While there remove the getline helper too.

22 months agossl: Unhook internal usage of include/openssl/.
zrj [Tue, 7 Feb 2017 15:28:54 +0000 (17:28 +0200)]
ssl: Unhook internal usage of include/openssl/.

Redirect all cases to include priv to take needed openssl headers and
remove mistakenly added copying of private base LibreSSL headers back to
public dir used previously by OpenSSL headers.

After this make upgrade REMOVE_OPENSSL_FILES=yes should work as initially

It is still not clear if LIBMD places also miss the libprivate_crypto.
For now just to prevent conflicts with base vs dports ssl libs and headers.

22 months agokernel - Fix vmspace termination race (2)
Matthew Dillon [Fri, 10 Feb 2017 00:51:44 +0000 (16:51 -0800)]
kernel - Fix vmspace termination race (2)

* Fix a race and fix dangling cached mount points.  At the point where
  dounmount() checks to see if there are any dangling cache refs left
  it has already dropped its own ref on the mp.  The test, however,
  was (refs > 1).  The test needs to be (refs > 0).

  This race was probably causing the corruption, and in fact its the
  smoking gun because the mp->mnt_refs field is at the same offset as
  the pmap->copyin field, and the pmap->copyin field was getting
  corrupted by being decremented by 1.

* Fix a race where the unmount code was issuing tue dounmount() call
  without any ref or hold on the mp.  This race was unlikely (requires
  two unmounts of the same partition at the same time).

22 months ago<sys/{_iovec,_timespec,_timeval}.h>: Namespace cleanup.
Sascha Wildner [Thu, 9 Feb 2017 19:12:00 +0000 (20:12 +0100)]
<sys/{_iovec,_timespec,_timeval}.h>: Namespace cleanup.

Don't include the full <sys/types.h>.

Include <machine/stdint.h> and derive the types which <sys/_timespec.h>
and <sys/_timeval.h> need from the __* versions.

<sys/_iovec.h> just needs __size_t, which is in <machine/stdint.h>.

This commit also fixes a circular #include where <sys/_timeval.h>
was including <sys/types.h> and vice versa.

22 months ago<aio.h>: Prepare for the removal of <sys/types.h> from <sys/_timespec.h>.
Sascha Wildner [Thu, 9 Feb 2017 18:02:43 +0000 (19:02 +0100)]
<aio.h>: Prepare for the removal of <sys/types.h> from <sys/_timespec.h>.

Right now, <sys/aio.h> gets a number of required type definitions via
<sys/_timespec.h>, which includes <sys/types.h>. Instead of including
<sys/types.h> from <sys/aio.h> directly, go for a lighter namespace.

22 months ago<sched.h>: Clean up the namespace a bit.
Sascha Wildner [Thu, 9 Feb 2017 17:58:57 +0000 (18:58 +0100)]
<sched.h>: Clean up the namespace a bit.

Move CPU_* macros and three non-posix functions into __BSD_VISIBLE.

While here, put the __BEGIN_DECLS/__END_DECLS around prototypes only.

22 months ago<sched.h>: Clean up a bit (whitespace etc.). No functional change.
Sascha Wildner [Thu, 9 Feb 2017 17:56:22 +0000 (18:56 +0100)]
<sched.h>: Clean up a bit (whitespace etc.). No functional change.

22 months agokernel - Fix pmap dynamic deletion code, leave disabled
Matthew Dillon [Thu, 9 Feb 2017 18:12:05 +0000 (10:12 -0800)]
kernel - Fix pmap dynamic deletion code, leave disabled

* Fix the bug that caused pmap dynamic page table deletion to implode,
  but leave the feature disabled by default for now.

* Cleanup the pmap code a bit.  Use pv_put() more generically because
  it turns out that the dynamic page table deletion code is just cleaner
  that way.

* Assert the activated vmspaces are valid.

22 months agokernel - Fix vmspace termination race
Matthew Dillon [Thu, 9 Feb 2017 18:09:43 +0000 (10:09 -0800)]
kernel - Fix vmspace termination race

* Fix a SMP race which can cause a vmspace structure to be double-freed
  to its objcache, resulting in corruption.

* Typical panic was a kernel seg fault at 'vm_copyin+2'.  What was in fact
  happening was that corruption of the vmspace was racing against reuse and
  a decrement of the pmap copyin function pointer.  This decrement caused
  function calls through the pointer to get very confused.

Reported-by: tuxillo
22 months agokernel - Remove some debug warnings for now
Matthew Dillon [Wed, 8 Feb 2017 20:11:26 +0000 (12:11 -0800)]
kernel - Remove some debug warnings for now

* Remove "Warning: bio_page_alloc: memory exhausted " for now
  (conditionalize it on bootverbose).

* The underlying issue is still there, a potential deadlock between
  the pageout system.  But the warnings are confusing users.

22 months agodrm: Sync drm_crtc.c with Linux 4.6
François Tigeot [Tue, 7 Feb 2017 20:45:50 +0000 (21:45 +0100)]
drm: Sync drm_crtc.c with Linux 4.6

Start using ida functions.

22 months agobuild - Separate out CFLAGS for kernel & module build
Matthew Dillon [Tue, 7 Feb 2017 19:07:22 +0000 (11:07 -0800)]
build - Separate out CFLAGS for kernel & module build

* Make COPTFLAGS apply to module builds in addition to kernel builds.

* Implement a new make variable, KCFLAGS, for specifying overrides for
  kernel and module builds.

* Fixup the module build infrastructure to use KCFLAGS, and get rid of
  infiltration from the more generic CFLAGS onto the kernel & modules

22 months agossl: Consistently use LibreSSL base headers.
zrj [Tue, 7 Feb 2017 15:23:17 +0000 (17:23 +0200)]
ssl: Consistently use LibreSSL base headers.

Add missing include paths to prevent implicit search of <openssl/*> headers
where private crypto lib is linked in.

22 months agoUnbreak world after make upgrade REMOVE_OPENSSL_FILES=yes.
zrj [Tue, 7 Feb 2017 15:18:01 +0000 (17:18 +0200)]
Unbreak world after make upgrade REMOVE_OPENSSL_FILES=yes.

This is a partial solution to recover without requiring base system level
modifications. Patches to unhook /usr/include/openssl will follow next.

22 months agokernel - Default kernel build to -O2
Matthew Dillon [Tue, 7 Feb 2017 03:07:43 +0000 (19:07 -0800)]
kernel - Default kernel build to -O2

* Default the kernel build to -O2, primarily so that code generated
  from __predict_*() attributes is more optimal.  There's slightly
  more code bloat, but I think its time we move to this as a default.

22 months agokernel - Use __predict_* in spinlock2.h
Matthew Dillon [Tue, 7 Feb 2017 02:32:17 +0000 (18:32 -0800)]
kernel - Use __predict_* in spinlock2.h

* Use the __predict_* attributes in the spinlock hot-path.

Suggested-by: Mateusz Guzik
22 months agokernel - Reduce priority range from dynamic priority
Matthew Dillon [Tue, 7 Feb 2017 02:06:14 +0000 (18:06 -0800)]
kernel - Reduce priority range from dynamic priority

* Reduce the priority range that the estcpu mechanism can move a process
  over.  The general effect is that a nice +20 process will now get much
  less cpu than it used to verses a nice +0 process.

* In addition, due to the change, a nice +20 process will not get any cpu
  at all verses a nice -12 or lower process.  Before a nice +20 process
  would always still get a little cpu verses a nice -20 process, but that
  will no longer be the case.

22 months agokernel - Turn off pmap_dynamic_delete by default
Matthew Dillon [Mon, 6 Feb 2017 07:45:46 +0000 (23:45 -0800)]
kernel - Turn off pmap_dynamic_delete by default

* Turn this off until I can figure out how to fix it.  It's panicing