dragonfly.git
5 years agoUpdate the pciconf(8) database.
Sascha Wildner [Sun, 16 Dec 2018 21:33:09 +0000 (22:33 +0100)]
Update the pciconf(8) database.

December 11, 2018 snapshot from https://pci-ids.ucw.cz

5 years agoefirt.9: Use .Er for error return values.
Sascha Wildner [Sun, 16 Dec 2018 21:29:41 +0000 (22:29 +0100)]
efirt.9: Use .Er for error return values.

5 years agoatkbdc - Change default to still attach PS2 controller even if FADT says don't
Matthew Dillon [Sun, 16 Dec 2018 21:26:06 +0000 (13:26 -0800)]
atkbdc - Change default to still attach PS2 controller even if FADT says don't

* Temporary workaround, disable commit 131acb0380e93664 by default.
  It can be enabled again with a tunable in /boot/loader.conf:

  hw.acpi.fadt_8042_nolegacy=1

* Should work around several bug reports of the keyboard not working
  in 5.4.

5 years agoAdd efidev.4 and efirt.9 manual pages from FreeBSD.
Sascha Wildner [Fri, 14 Dec 2018 23:56:19 +0000 (00:56 +0100)]
Add efidev.4 and efirt.9 manual pages from FreeBSD.

5 years agoSync ACPICA with Intel's version 20181213.
Sascha Wildner [Fri, 14 Dec 2018 23:04:38 +0000 (00:04 +0100)]
Sync ACPICA with Intel's version 20181213.

* Fix buffer length issues with the GenericSerialStatus.

* New object evaluation trace mechanism for control methods and data
  objects (ACPI_LV_EVALUATION).

* _OSI strings sync.

* New options in iasl (-ww) and acpiexec (-eo).

* Various smaller fixes and additions.

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

5 years agokernel/acpi: Fix the ACPI_LV_VERBOSITY1 level's value.
Sascha Wildner [Fri, 14 Dec 2018 21:34:59 +0000 (22:34 +0100)]
kernel/acpi: Fix the ACPI_LV_VERBOSITY1 level's value.

5 years agorc: Let dhcpcd(8) go to background immediately by default
Aaron LI [Fri, 14 Dec 2018 14:08:26 +0000 (22:08 +0800)]
rc: Let dhcpcd(8) go to background immediately by default

Set the default value of "dhcpcd_flags" to be "-b", thus don't let
dhcpcd(8) block the boot, especially when there is no wireless
connection, with the default settings.

5 years agonetwork.subr: Workaround race between wpa_supplicant and dhcpcd
Aaron LI [Wed, 12 Dec 2018 04:06:17 +0000 (12:06 +0800)]
network.subr: Workaround race between wpa_supplicant and dhcpcd

Insert a 1-second delay after starting wpa_supplicant(8) to workaround
the race between it and dhcpcd(8), which can modify the interface's
state and break wpa_supplicant's ongoing SSID scan.

dhclient(8) doesn't have such an issue with wpa_supplicant.

Tested-by: me, Daniel Bilik <ddb@neosystem.org>
5 years agoAllow optional "inet6" keyword in ipv6_ifconfig_<ifname>
Aaron LI [Wed, 12 Dec 2018 14:53:00 +0000 (22:53 +0800)]
Allow optional "inet6" keyword in ipv6_ifconfig_<ifname>

5 years agorc.d/netif: Rework wlan interface configuration
Aaron LI [Wed, 12 Dec 2018 03:52:24 +0000 (11:52 +0800)]
rc.d/netif: Rework wlan interface configuration

* wlan interfaces are more similar to clonable interfaces rather than
  vlan interfaces, so move the relevant code from childif_create() to
  network.subr as wlan_up(), which will be called to create the wlan
  interfaces before setting up them.

  Now, list_net_interfaces() shouldn't list "net.wlan.devices".

* Add the wlan_down() function in network.subr to destroy the wlan
  devices.

* Meanwhile, fix childif_destroy() to properly destroy the vlan
  interfaces created by childif_create().  Also tweak the order of this
  function in netif_stop().

* The 2-second delay in netif_start() doesn't apply anymore, since the
  DHCP and WPA configurations are now handled in ifconfig_up() called by
  ifn_start().

This patch is loosely based on FreeBSD's code.  Thanks to them.

5 years agonetwork.subr: Properly bring up/down interfaces
Aaron LI [Wed, 12 Dec 2018 03:29:10 +0000 (11:29 +0800)]
network.subr: Properly bring up/down interfaces

Now that the interface will be properly brought up in ifconfig_up(),
clean up the rc.d/wpa_supplicant script.

5 years agonetwork.subr: Add IPv6 support to ifalias_{up,down}()
Aaron LI [Wed, 12 Dec 2018 03:16:05 +0000 (11:16 +0800)]
network.subr: Add IPv6 support to ifalias_{up,down}()

* Factor out the common parts of ifalias_{up,down}() to be
  ifalias_common().
* Add IPv6 support to ifalias_common().
* Use ifalias_up() in network6_interface_setup().

5 years agorc.d/netif: Rename network_* to netif_* for consistency
Aaron LI [Tue, 11 Dec 2018 13:27:43 +0000 (21:27 +0800)]
rc.d/netif: Rename network_* to netif_* for consistency

Rename network_* subroutines to netif_* for better consistency.  Also
set the rcvar and add netif_enable=YES to rc.conf.

Taken-from: FreeBSD (r272959, r278506)

5 years agonetwork.subr: Clean up list_net_interfaces()
Aaron LI [Tue, 11 Dec 2018 13:16:25 +0000 (21:16 +0800)]
network.subr: Clean up list_net_interfaces()

The rc.d/netif takes care of DHCP/non-DHCP interfaces appropriately, and
thus the interface type filter feature in list_net_interfaces() is no
longer needed since long ago.

5 years agonetwork.subr: Cleanups and minor improvements
Aaron LI [Tue, 11 Dec 2018 06:05:20 +0000 (14:05 +0800)]
network.subr: Cleanups and minor improvements

* Localize variables in all functions.
* Better name several variables (e.g., $i -> $_if).
* Simplify several test and case usages.
* Use the newly added "-n" option for ifconfig(8) in ifexists().
* Improve comments, debug messages, and styles.
* Print a message when calling rtsol(8) to auto configure an interface,
  since it may take several seconds.

5 years agorc: Use SYSCTL{,_N,_W} variables
Aaron LI [Sun, 9 Dec 2018 02:55:55 +0000 (10:55 +0800)]
rc: Use SYSCTL{,_N,_W} variables

With minor cleanups to IO redirections.

5 years agokernel: Remove the FFS_ROOT option. It was a no-op since 4.9.
Sascha Wildner [Tue, 11 Dec 2018 19:58:57 +0000 (20:58 +0100)]
kernel: Remove the FFS_ROOT option. It was a no-op since 4.9.

5 years agohammer2 - stabilization, fix delete-on-reclaim (2)
Matthew Dillon [Tue, 11 Dec 2018 17:26:19 +0000 (09:26 -0800)]
hammer2 - stabilization, fix delete-on-reclaim (2)

* Fix double-delete.  When an inode is finally deleted, the
  HAMMER2_INODE_ISUNLINKED flag must be cleared to avoid a
  double delete later in reclaim.

5 years agodrm: Add missing file uapi/linux/pci.h
François Tigeot [Tue, 11 Dec 2018 06:56:18 +0000 (07:56 +0100)]
drm: Add missing file uapi/linux/pci.h

5 years agohammer2 - stabilization, fix delete-on-reclaim
Matthew Dillon [Mon, 10 Dec 2018 23:35:31 +0000 (15:35 -0800)]
hammer2 - stabilization, fix delete-on-reclaim

* Fix the delete-on-reclaim code which had been commented out
  temporarily during the prior work.  Restore and cleanup the
  code.

  This code handles deleting inodes for files which were unlinked
  (nlinks count -> 0) but still had open descriptors.

* Fixes inode leak in df output and on the media.

5 years agodrm: Add the DRM_IOCTL_GET_PCIINFO ioctl
François Tigeot [Mon, 10 Dec 2018 22:06:11 +0000 (23:06 +0100)]
drm: Add the DRM_IOCTL_GET_PCIINFO ioctl

* It provides an easy way to get PCI device information from
  a /dev file descriptor

* The main user will be mesa/libdrm

Obtained-from: OpenBSD

5 years agokernel/netinet6: Fix the kernel build without "options INET6".
Sascha Wildner [Sun, 9 Dec 2018 11:53:33 +0000 (12:53 +0100)]
kernel/netinet6: Fix the kernel build without "options INET6".

5 years agokernel/gif: Include just opt_inet6.h which is all this header needs.
Sascha Wildner [Sun, 9 Dec 2018 11:34:57 +0000 (12:34 +0100)]
kernel/gif: Include just opt_inet6.h which is all this header needs.

5 years agokernel: Remove some useless #ifdefs.
Sascha Wildner [Sun, 9 Dec 2018 10:16:35 +0000 (11:16 +0100)]
kernel: Remove some useless #ifdefs.

5 years agoHAMMER2 - Update DESIGN document
Matthew Dillon [Sun, 9 Dec 2018 04:58:18 +0000 (20:58 -0800)]
HAMMER2 - Update DESIGN document

* Bring the design document up-to-snuff.

5 years agokernel - Fix rare vref() assertion
Matthew Dillon [Sat, 8 Dec 2018 22:34:51 +0000 (14:34 -0800)]
kernel - Fix rare vref() assertion

* The VREF_TERMINATE flag gets cleared when a vnode is reactivated.
  However, concurrent LK_SHARED locks on vnodes can race the v_state
  test.  Thus the code cannot assume that VREF_TERMINATE has been cleared
  when v_state is VS_ACTIVE.

  To avoid the race, we simply unconditionally clear VREF_TERMINATE on
  a successful vget().

* Could be reproduced by running blogbench and synth together, both of
  which generate extreme filesystem-intensive loads.

5 years agobyteorder(3): Remove a VAX comment
François Tigeot [Sat, 8 Dec 2018 14:41:24 +0000 (15:41 +0100)]
byteorder(3): Remove a VAX comment

5 years agoifconfig(8): Add option -n to disable auto module loading
Aaron LI [Tue, 27 Nov 2018 04:05:58 +0000 (12:05 +0800)]
ifconfig(8): Add option -n to disable auto module loading

This option may be used by rc scripts to disable the auto loading of
network modules when try to configure/stop a non-existent interface.
e.g., `ifconfig tap0` will auto load `if_tap.ko` when `tap0` doesn't
exist yet.

Taken-from: FreeBSD (r169873)

5 years agokernel: Use NULL for pointers in DRIVER_MODULE().
Sascha Wildner [Sat, 8 Dec 2018 09:39:12 +0000 (10:39 +0100)]
kernel: Use NULL for pointers in DRIVER_MODULE().

5 years agohammer2 - stabilization, fix hammer2_inode_get()
Matthew Dillon [Sat, 8 Dec 2018 04:26:15 +0000 (20:26 -0800)]
hammer2 - stabilization, fix hammer2_inode_get()

* Fix a lock order reversal in hammer2_inode_get() which can be
  triggered under heavy loads.

5 years agohammer2 - Cleanup
Matthew Dillon [Sat, 8 Dec 2018 02:06:36 +0000 (18:06 -0800)]
hammer2 - Cleanup

* Cleanup a few wrappers, remove struct buf related temporary
  debug code.

* Add some lock assertions.

* Unlimit M_HAMMER2 (for use with HAMMER2_IO_DEBUG)

5 years agohammer2 - Add HAMMER2_IO_DEBUG
Matthew Dillon [Sat, 8 Dec 2018 02:05:16 +0000 (18:05 -0800)]
hammer2 - Add HAMMER2_IO_DEBUG

* Add HAMMER2_IO_DEBUG (default disabled).  This tracks callers
  that use hammer2_io's.  This eats a huge amount of (up to ~20GB)
  of kernel memory.

5 years agokernel - Improve umount operation
Matthew Dillon [Fri, 7 Dec 2018 02:50:07 +0000 (18:50 -0800)]
kernel - Improve umount operation

* Move the cache_inval(), and both cache_unmounting() and
  cache_clearmntcache() into the retry loop.  This ensures that
  the nc_refs test actually has a chance to update during the retry.

  This should significantly improve umount operation, reducing umount
  races against exiting processes still using the filesystem.

* Only issue the allproc scan which matches and clears proc->p_textnch
  on a forced umount.  Otherwise disallow the umount attempt.  We
  may have to reallow this later, but the shutdown code now properly
  clears p_textnch so it should take care of the case for us (which
  is why this code was originally present).

* Properly dispose of p->p_textnch during shutdown/halt/reboot for
  the calling process, proc0, and init.  This is an attempt to allow
  the system to cleanly unmount root.

* Cleanup the warning and error messages to clarify umount failures.

* Only reinstasll the syncer vp on error if umount deinstalled it.

* Add some debugging sysctls (default disabled).

Reported-by: marino
5 years agohammer2 - stabilization
Matthew Dillon [Thu, 6 Dec 2018 06:42:31 +0000 (22:42 -0800)]
hammer2 - stabilization

* Adjust the chain lock a bit to bump lockcnt prior to acquiring
  a non-blocking shared lock, instead of afterwords, which cleans
  up a live-loop case in the chain unlock code.

* Cleanup misc debugging.  Add some inode debugging code (default
  disabled).

* Add some crash-dump (or live) debug utilities for tracking down
  chains, dio's, and inodes.  kgdb's macros are too slow for iterating
  a million chains.

5 years agohammer2 - refactor filesystem sync 7/N
Matthew Dillon [Wed, 5 Dec 2018 18:19:31 +0000 (10:19 -0800)]
hammer2 - refactor filesystem sync 7/N

* Increase default caps for dirty chain and dirty inode counts.  The
  new SYNCQ semantics allow this number to be arbitrarily large, but
  it is still a good idea not to allow it to get out of control.

  NOTE: One advantage of higher caps is that it gives the frontend more
  time to delete temporary files.

* Get rid of the old syncer speedup / write moderation mechanisms.
  Replace with a new VFS_MODIFYING() hook that allows the filesystem
  to implement moderation prior to any vnode locks being held.

  Remove hammer2_pfs_memory_wait() calls from VOP bodies, implement
  the hammer2_pfs_memory_wait() call via VFS_MODIFYING() instead.

* Move the moderation wakeup for the inode count to the syncer, and
  change the parameter to use pmp->sideq_count.

5 years agokernel - Add trigger_syncer(), VFS_MODIFYING()
Matthew Dillon [Wed, 5 Dec 2018 05:49:35 +0000 (21:49 -0800)]
kernel - Add trigger_syncer(), VFS_MODIFYING()

* Add trigger_syncer().  This function asynchronously triggers the
  syncer vnode in the syncer thread for the mount.  It is a NOP if
  there is no syncer thread or syncer vnode.

  Will be used by HAMMER2 to pipeline syncs when heavy filesystem
  activity over-extends internal memory structures.

* Add VFS_MODIFYING().  This is a hook into the filesystem that
  modifying filesystem ops in the kernel will call prior to locking
  any vnodes.  It allows the filesystem to moderate the over-allocation
  of internal structures.  Waiting until after the VOP is called is too
  late, so we need kernel support for this.  Numerous attempts to hack
  moderation code into the H2 VOPs have all failed spectacularly.

  In H2, over-allocation can occur because H2 must retain disconnected
  inodes related to file creation and deletion until the next sync cycle.

5 years agohammer2 - refactor filesystem sync 6/N
Matthew Dillon [Sun, 2 Dec 2018 20:39:48 +0000 (12:39 -0800)]
hammer2 - refactor filesystem sync 6/N

* Dependency tracking.  Add modest cross-dependency grouping.  This code
  does not track dependencies in a graph.  Instead, it simply groups
  dependent inodes together.  This means that dependency groups can get
  rather large when, for example, lots of files are being created or
  deleted in the same directory.

* We retain the excellent dynamic inode reordering code for the syncq.
  When the frontend blocks on an inode that is in the syncq, the inode
  will be reordered to the front of the queue to reduce the frontend
  stall time as much as possible.

* Remove the COPYQ transaction flag and related sequencing.

* Fix flush sequencing for pmp->iroot.  We must flush iroot's chains with
  HAMMER2_XOP_FSSYNC last.  When iroot is dirty, the out-of-order flush
  of iroot that occurs before the final stage must be run without FSSYNC
  set, otherwise iroot's pmp->pfs_iroot_blocksets[] will not be consistent
  because the remaining inodes in the syncq haven't been flushed yet.

* Fix a broken syncer speedup conditional.

5 years agohammer2 - refactor filesystem sync 5/N
Matthew Dillon [Sat, 1 Dec 2018 21:57:35 +0000 (13:57 -0800)]
hammer2 - refactor filesystem sync 5/N

* Dependency ops need one atomic wrapper.  Adjust the use of
  pmp->list_spin for the atomic wrapper.

* Reorder hammer2_inode_depend() call from after hammer2_igetv()
  to before it.  This is because hammer2_igetv() can temporarily
  release the inode lock and the dependency code assumes that does
  not happen.

* Cleanup

* This code is still not 100% because earlier dependency pairs
  that wind up on the sideq can be split if an overlapping dependency
  occurs later that flags PASS2.

5 years agohammer2 - Add 'snapshot-debug' directive
Matthew Dillon [Fri, 16 Nov 2018 06:32:56 +0000 (22:32 -0800)]
hammer2 - Add 'snapshot-debug' directive

* Add the 'snapshot-debug' directive which takes a snapshot without
  first sync'ing the filesystem.  The idea is that the snapshot will
  be taken relative to the most recent filesystem sync (automatic or
  manual), and should still represent a fully consistent filesystem.

5 years agohammer2 - refactor filesystem sync 4/N
Matthew Dillon [Tue, 13 Nov 2018 21:32:33 +0000 (13:32 -0800)]
hammer2 - refactor filesystem sync 4/N

* Save synchronized iroot blockmaps for snapshot code, and use them
  in the snapshot code.

* Improve dependency handling and syncq/sideq flagging for
  dependencies.  Also improve the hammer2_inode_t reordering
  code that allows the frontend to continue operating on dirty
  inodes simultaneous with a filesystem sync.

* Move inode deletion into the filesystem sync code (in addition to
  creation), for the same reason.

* Fix lost ref counts in the snapshot code which were causing umount
  panics.

* Stabilization pass on volume flush code.  Since flushes stop at
  inode boundaries, we must properly flush the superroot before
  flushing the volume header.  That is, the flush sequence is:

  - flush inodes for PFS  (flushes inode content)
  - flush PFS root inode  (flushes through to inodes)
  - flush superroot inode (flushes through to PFS root)
  - flush volume header   (flushes voulume header to superroot)

  Theoretically this allows the filesystem asynchronously write data
  and inodes flushed by the kernel's buffer cache and vnode code
  concurrent with a filesystem flush without messing up filesystem
  consistency, because these asynchronously flushed inodes are not
  included (or have already been flushed) in the filesystem flush that
  is already underway.

* Filesystem consistency still not perfect (using snapshot-debug
  directive to test during heavy filesystem modification loads,
  directory entries are sometimes desynchronized from their inodes).

5 years agohammer2 - refactor filesystem sync 3/N
Matthew Dillon [Sat, 10 Nov 2018 02:05:14 +0000 (18:05 -0800)]
hammer2 - refactor filesystem sync 3/N

* Attempt to guarantee filesystem consistency at all sync points.

* Pretty severely hacked, and at the moment this can result in
  syncs which never end if the filesystem is busy.

5 years agohammer2 - refactor filesystem sync 2/N
Matthew Dillon [Fri, 9 Nov 2018 01:10:07 +0000 (17:10 -0800)]
hammer2 - refactor filesystem sync 2/N

* Flesh out the flush partitioning code, fixing a number of issues.

* Refactor hammer2_inode_lock() and add hammer2_inode_lock4() to
  interlock against flushes.  This is handled by blocking inode locks
  against SYNCQ, and reordering the inode to the front of the SYNCQ list
  in order to unblock as quickly as possible as the filesystem sync
  progresses.  The result should be relatively few frontend stalls
  during a filesystem sync.

* Disable resource caps for the moment, because synchronous
  operations to prevent resource limits from blowing out break
  the current inode_lock*() code and allow vnode deadlocks to
  occur.

* To avoid deadlocks, the filesystem sync currently must clear SYNCQ
  before locking the inode & vnode, and if it cannot lock a vnode it
  must continue on with the next inode and then restart.  Retried
  vnodes introduce a short delay to give the frontend time to work
  the blocking operation.

  This is necessary because the kernel locks vnodes before entering the
  H2 frontend, and we cannot safely unlock/relock them to work around
  this.  Nor do we necessarily even have full knowledge on which vnodes
  the current thread has locked.

* Does not yet guarantee complete filesystem consistency on-crash.

5 years agohammer2 - refactor filesystem sync 1/N
Matthew Dillon [Mon, 5 Nov 2018 01:31:07 +0000 (17:31 -0800)]
hammer2 - refactor filesystem sync 1/N

* Change H2 to allow concurrent filesystem sync and modifying
  frontend operations.

* FLUSH transactions no longer block modifying frontend
  transactions.

* Change filesystem sync operation to put all modified
  inodes on the pmp->syncq (which is also combined with
  any inodes on pmp->sideq), and then iterating the
  syncq to flush each inode.

  After this is done, stage 2 will flush the meta-data tree
  leading to each inode.

  This code will also handle delayed inode creation and
  destruction ops, which require modifications to the meta-data
  tree governing the inodes themselves (so we don't want the
  frontend to do it and interfere with the flush).

* Modifying operations against inodes already queued for a
  filesystem sync that is in progress will now reorder the
  inode to the front of the filesystem sync in progress and
  wait for the sync on that inode to complete before proceeding.

  This is handled by blocking in the exclusive inode lock code.

* hammer2_inode_get() does not need to pass 'dip' any more
  because regular inodes are inserted under the iroot (PFS root
  inode) and no longer inserted hierarchically.

* Separate out hammer2_inode_create() into hammer2_inode_create_pfs()
  and hammer2_inode_create_normal().  These two forms are now distinct
  enough that the code is a mess if we try to leave them combined.

5 years agodrm/i915: Add Kaby Lake and Amber Lake PCI IDs
François Tigeot [Tue, 4 Dec 2018 21:54:39 +0000 (22:54 +0100)]
drm/i915: Add Kaby Lake and Amber Lake PCI IDs

Obtained-from: Linux 4.19

5 years agodrm/i915: Add Whiskey Lake PCI IDs
François Tigeot [Tue, 4 Dec 2018 21:27:20 +0000 (22:27 +0100)]
drm/i915: Add Whiskey Lake PCI IDs

Obtained-from: Linux 4.19

5 years agodrm/i915: Add more Coffeelake PCI IDs
François Tigeot [Tue, 4 Dec 2018 20:57:46 +0000 (21:57 +0100)]
drm/i915: Add more Coffeelake PCI IDs

Obtained-from: Linux 4.19

5 years agoRevert "drm/ttm: Remove ttm_bo_unreserve_core()"
François Tigeot [Sat, 24 Nov 2018 13:12:34 +0000 (14:12 +0100)]
Revert "drm/ttm: Remove ttm_bo_unreserve_core()"

This reverts commit 5d4803440754b62fed1abd6d641d1f7a6f7b454e.

The drm/radeon driver has a tendency to lock up more frequently
without ttm_bo_unreserve_core().

Reported-by: Michael Neumann <mneumann@ntecs.de>
5 years agousb.4: Clean up a bit.
Sascha Wildner [Sun, 2 Dec 2018 12:32:35 +0000 (13:32 +0100)]
usb.4: Clean up a bit.

5 years agohier.7: Use .Xr
Sascha Wildner [Sun, 2 Dec 2018 03:24:54 +0000 (04:24 +0100)]
hier.7: Use .Xr

5 years agohier.7: Document some recently added directories.
Sascha Wildner [Sun, 2 Dec 2018 03:06:25 +0000 (04:06 +0100)]
hier.7: Document some recently added directories.

5 years agoRemove an unused include file.
Sascha Wildner [Sun, 2 Dec 2018 02:13:39 +0000 (03:13 +0100)]
Remove an unused include file.

5 years agolibc/locale: Mark up defined values better in the manual pages.
Sascha Wildner [Sat, 1 Dec 2018 20:15:32 +0000 (21:15 +0100)]
libc/locale: Mark up defined values better in the manual pages.

5 years agoInstall input{,-event-types}.h to /usr/include/compat/linux too.
Sascha Wildner [Fri, 30 Nov 2018 20:13:02 +0000 (21:13 +0100)]
Install input{,-event-types}.h to /usr/include/compat/linux too.

It helps preventing excessive patches in ravenport's weston.

It is kind of experimental, but depending on how useful it
proves to be for 3rd party software all in all, we will
eventually remove /usr/include/dev/misc/evdev in the future.

A -I /usr/include/compat is needed to get at these headers using
"#include <linux/input.h>", etc. They were not put in the default
include path to mislead configure scripts and the likes.

We will also evaluate if it is worth exposing further linux
specific headers in this directory.

It might even be that we change the new location again in the
future.

Requested-by: Peeter Must
5 years agokernel: Move some old unused stuff out of the way.
Sascha Wildner [Fri, 30 Nov 2018 16:13:37 +0000 (17:13 +0100)]
kernel: Move some old unused stuff out of the way.

5 years agokernel - Cleanup blist debug code (2)
Matthew Dillon [Thu, 29 Nov 2018 08:17:57 +0000 (00:17 -0800)]
kernel - Cleanup blist debug code (2)

* Conditionalize debugging kprintf() for non-kernel test
  code only.

5 years agokernel - Fix nstopped SMP race during core dump
Matthew Dillon [Thu, 29 Nov 2018 06:56:24 +0000 (22:56 -0800)]
kernel - Fix nstopped SMP race during core dump

* During a process core dump, p->p_nstopped can be adjusted without
  holding p->p_token, resulting in a SMP race which can cause
  p_nstopped to become permanently desynchronized and deadlock the
  process.

* Be robust in a p_nstopped handling case in kern_exit, just in case.

5 years agokernel - Cleanup blist debug code
Matthew Dillon [Tue, 27 Nov 2018 01:39:56 +0000 (17:39 -0800)]
kernel - Cleanup blist debug code

* Allow 64-bit fields to be specified in the debug code.  Does not
  affect the kernel.

* Correct two next_skip calculations that were casting to 32 bits.
  These are block numbers and can affect operations when > 2TB of
  swap is configured.

5 years agodrm includes: Rename uapi_xxx to uapi/xxx
François Tigeot [Wed, 28 Nov 2018 20:16:37 +0000 (21:16 +0100)]
drm includes: Rename uapi_xxx to uapi/xxx

Making the include hierarchy 100% compatible with the Linux one.

5 years agonetwork.subr: Handle DHCP in ipv6_ifconfig_<ifname>
Aaron LI [Wed, 28 Nov 2018 04:50:44 +0000 (12:50 +0800)]
network.subr: Handle DHCP in ipv6_ifconfig_<ifname>

Commit 329743def50a061489debcd9682983235c8f5b42 allows to set
'ipv6_ifconfig_<ifname>="DHCP"' to tell dhcpcd(8) to configure DHCPv6
for interface <ifname>.  However, the "DHCP" argument shouldn't be
passed to ifconfig(8).  Handle this case by using 'ifconfig_getargs()'
in 'network6_interface_setup()'.

5 years ago<sys/errno.h>: Remove EUNUSED*.
Levente Kurusa [Tue, 27 Nov 2018 10:48:45 +0000 (11:48 +0100)]
<sys/errno.h>: Remove EUNUSED*.

These values are not used (as their name suggests) and there is no
reason for an application to ever see or use them. This has recently
caused some confusion in the Rust ecosystem, and it looks like a
comment would better serve the intended purpose than making these
values available.

Signed-off-by: Levente Kurusa <lkurusa@acm.org>
5 years agoinitrd: Explicitly say the status when build completes
Aaron LI [Mon, 26 Nov 2018 07:29:56 +0000 (15:29 +0800)]
initrd: Explicitly say the status when build completes

Before this change, the 'all' target that builds the rescue and initrd
will end with a '--- obj ---' line, which may cause an illusion that the
build hasn't finished.  Now, explicitly say that the build has finished.

Suggested-by: swildner
5 years agoPut note about DSA OpenSSH key deprecation, from 5 versions ago, into UPDATING.
Justin C. Sherrill [Mon, 26 Nov 2018 02:45:51 +0000 (21:45 -0500)]
Put note about DSA OpenSSH key deprecation, from 5 versions ago, into UPDATING.
This probably affects nobody at this point, but now I can feel better about
removing it from release notes where it keeps getting reprinted.

5 years agoscript.1: Fix a typo, bump date.
Sascha Wildner [Sun, 25 Nov 2018 17:40:14 +0000 (18:40 +0100)]
script.1: Fix a typo, bump date.

5 years agodrm/ttm: Sync ttm_page_alloc.c with Linux
François Tigeot [Sun, 25 Nov 2018 15:54:27 +0000 (16:54 +0100)]
drm/ttm: Sync ttm_page_alloc.c with Linux

5 years agodrm/linux: Add set_pages_array_xx() functions
François Tigeot [Sun, 25 Nov 2018 15:28:33 +0000 (16:28 +0100)]
drm/linux: Add set_pages_array_xx() functions

5 years agoscript(1): Sync with FreeBSD
Antonio Huete Jimenez [Sun, 25 Nov 2018 11:05:59 +0000 (12:05 +0100)]
script(1): Sync with FreeBSD

- Add -p flag which is used to replay typescripts.
- Add -d flag to avoid sleeps in playbacks.
- Add -F flag which allows recording/playing through pipes.
- Add -r flag to optionally record all.
- A bunch of fixes, mostly.

Note: -f flag from FreeBSD is not available since DragonFly BSD does not
      have filemon(4)

5 years agoMakefile.inc1: Some minor cleanups
Aaron LI [Sat, 24 Nov 2018 11:09:00 +0000 (19:09 +0800)]
Makefile.inc1: Some minor cleanups

No functional change.

5 years agoinitrd: Rework build and install stages
Aaron LI [Sat, 24 Nov 2018 10:52:03 +0000 (18:52 +0800)]
initrd: Rework build and install stages

* Rewrite the Makefile to provide only the 'all' and 'install' targets.
  Do not separate the handling of the rescue tools and initrd image.
  Thus greatly simplify the whole logic.

  The 'all' target will build the rescue tools and initrd contents, and
  does not require root priviledge, while the 'install' target will
  install the rescue tools to the system, create the initrd image and
  install it.

* Update the top-level makefiles to call the new 'all' and 'install'.
  The 'buildworld' target now doesn't require root priviledge, same as
  before the refactoring in 9b724c0dcb2b9548a82d28d97e34375f64668669.

* Only provide the 'initrd' top-level target to keep it simple.  This
  target will install the rescue tools and initrd image built by the
  'buildworld', overwriting the existing ones.

* Clean up the nrelease/Makefile a bit, since 'installworld' will also
  install the rescue tools and initrd image in such a case.

* Update the mkinitrd.sh script a bit.

* Update the build(7) man page and clean up a bit.

Reviewed-by: swildner
5 years agorc.d/wpa_supplicant: Prefer the DPorts version for the moment
Aaron LI [Sun, 25 Nov 2018 09:39:41 +0000 (17:39 +0800)]
rc.d/wpa_supplicant: Prefer the DPorts version for the moment

We now also ship the wpa_supplicant from DPorts, which has several
important security fixes than the base one, so prefer the DPorts
wpa_supplicant if it exists for the moment.

This patch allows us to bring the base wpa_supplicant up-to-date and
switch back to it later without requiring users to modify their
'/etc/rc.conf'.

5 years agobuild - Add security/wpa_supplicant to nrelease
Matthew Dillon [Sun, 25 Nov 2018 07:44:21 +0000 (23:44 -0800)]
build - Add security/wpa_supplicant to nrelease

* Add security/wpa_supplicant to the nrelease build.  This ensures
  that the latest wpa_supplicant is available on release.  The
  wpa_supplicant in the base system exists only to help bootstrap
  systems when the port is not installed.

5 years agokernel - Fix probable callout race
Matthew Dillon [Sun, 25 Nov 2018 07:39:15 +0000 (23:39 -0800)]
kernel - Fix probable callout race

* Fix a probable callout race in kern/kern_event.c.  It is possible
  for the callout to be requeued during teardown and for the
  structure to subsequently become corrupted.

  Manifests as 'stuck' processes (still ^C'able if PCATCH is flagged),
  and sleeps which do not expire.  Can be triggered by synth bulk runs.

* Increase maximum number of kqueue timers from 4096 to 65536.  This
  limit will have to be moved to uidinfo (but not in this commit).

5 years ago<sys/param.h>: Adjust __DragonFly_version.
Sascha Wildner [Sat, 24 Nov 2018 18:02:08 +0000 (19:02 +0100)]
<sys/param.h>: Adjust __DragonFly_version.

5 years agoUpdates for new 5.5 master. v5.5.0
Justin C. Sherrill [Fri, 23 Nov 2018 03:38:50 +0000 (22:38 -0500)]
Updates for new 5.5 master.

5 years agoinstaller: Add serial detection
Diederik de Groot [Sun, 14 Oct 2018 23:53:19 +0000 (01:53 +0200)]
installer: Add serial detection

- The installer script now asks for TERM type when in serial port console.
- Make sure dfui is not left running using trap/cleanup

5 years agotest: Attempt to fix vnodeinfo.c (2)
Antonio Huete Jimenez [Thu, 22 Nov 2018 19:15:11 +0000 (20:15 +0100)]
test: Attempt to fix vnodeinfo.c (2)

5 years agosio: Correct how DDB option is checked
Antonio Huete Jimenez [Thu, 22 Nov 2018 11:30:38 +0000 (12:30 +0100)]
sio: Correct how DDB option is checked

5 years agotest: Fix some debug programs
Antonio Huete Jimenez [Thu, 22 Nov 2018 09:16:48 +0000 (10:16 +0100)]
test: Fix some debug programs

5 years agotest: Remove no longer relevant ttyinfo.c
Antonio Huete Jimenez [Thu, 22 Nov 2018 09:16:30 +0000 (10:16 +0100)]
test: Remove no longer relevant ttyinfo.c

5 years agokernel: Move vnode_index to sys/vnode.h
Antonio Huete Jimenez [Wed, 21 Nov 2018 23:51:19 +0000 (00:51 +0100)]
kernel: Move vnode_index to sys/vnode.h

- This allows userland programs (test/debug) to use that structure.

5 years agokernel - Refactor inum stat data for sockets
Matthew Dillon [Wed, 21 Nov 2018 21:06:24 +0000 (13:06 -0800)]
kernel - Refactor inum stat data for sockets

* Assign a dummy inode number to all sockets.  We previously were
  only assigning a dummy inode number to unix domain sockets.  Use
  the new pcpu facility and store the inum in the socket structure.

* Rip out the old inode number assigner for unix domain sockets, it
  was using an atomic_fetchadd_long() on a global variable, introducing
  unnecessary SMP stalls.  And it was specific to unix domain sockets.
  The new facility is generic to all sockets and uses a pcpu data
  structure.

5 years agokernel - Add uid, gid, and inum to stat data for pipes
Matthew Dillon [Wed, 21 Nov 2018 20:37:08 +0000 (12:37 -0800)]
kernel - Add uid, gid, and inum to stat data for pipes

* fstat(pipefd) now populations additional fields. uid, gid,
  and inum.  In-line with other BSDs and Linux.  Not sure why
  any program would use the inum field but... now its populated.

* Add an anonymous inode allocator to the pcpu structure.  No
  atomic ops required.  Basically just does:

  pipe->inum = gd->gd_anoninum++ * ncpus + gd->gd_cpuid + 2;

* Facility can be used for other things as needed.

Suggested-by: mjg
5 years agoinet: Recalculate the packet hash for IP encapsulation.
Sepherosa Ziehau [Tue, 20 Nov 2018 13:13:18 +0000 (21:13 +0800)]
inet: Recalculate the packet hash for IP encapsulation.

Some NICs, noticeably igb(4) and ix(4), calculate the packet hash
based on the encapsulated IP datagram instead of the outmost header.

Force packet hash recalculation using the outmost for encapsulated
packets; this is done on the encap_input() path, which leaves enough
room for us to utilize the NIC feature mentioned above.

Reported-by: dillon@
5 years agostf/gre: Make sure the input packet's hash is recalculated.
Sepherosa Ziehau [Tue, 20 Nov 2018 12:39:47 +0000 (20:39 +0800)]
stf/gre: Make sure the input packet's hash is recalculated.

5 years agokernel: Fix some -Wundef corner cases.
Sascha Wildner [Mon, 19 Nov 2018 18:07:35 +0000 (19:07 +0100)]
kernel: Fix some -Wundef corner cases.

When those modules were built outside buildkernel, NVN and NSNP would
not be defined, so provide some defaults.

5 years agoinet6: Set net.inet6.icmp6.nd6_onlink_ns_rfc4861 to 1 by default.
Sepherosa Ziehau [Mon, 19 Nov 2018 13:50:15 +0000 (21:50 +0800)]
inet6: Set net.inet6.icmp6.nd6_onlink_ns_rfc4861 to 1 by default.

It is almost required by contemporary INET6 deployment.

5 years agoinet6: Make non-prefix and directly reachable inet6 routes work (2).
Sepherosa Ziehau [Mon, 19 Nov 2018 13:45:30 +0000 (21:45 +0800)]
inet6: Make non-prefix and directly reachable inet6 routes work (2).

Generalize "non-prefix and directly reachable" inet6 routes lookup,
instead of specializing the ifa_rtrequest method as we did in
b72db1d3321d7a80f4da3f727765bcc200f30278

NOTE: net.inet6.icmp6.nd6_onlink_ns_rfc4861 MUST be on.

Reported-by: aly@
Tested-by: aly@
5 years agomtree(8): Bring in a fix from NetBSD.
Sascha Wildner [Mon, 19 Nov 2018 08:03:02 +0000 (09:03 +0100)]
mtree(8): Bring in a fix from NetBSD.

Thanks for sevan@netbsd for handling upstream.

5 years agoadd subdevice id 0x5260 for iwn 6035 series
Tobias Heilig [Mon, 29 Oct 2018 00:26:31 +0000 (01:26 +0100)]
add subdevice id 0x5260 for iwn 6035 series

5 years agokernel: Add -Wundef to our default kernel warning options.
Sascha Wildner [Sun, 18 Nov 2018 09:05:32 +0000 (10:05 +0100)]
kernel: Add -Wundef to our default kernel warning options.

It will warn when an undefined identifier is evaluated in an "#if"
directive and would be replaced with zero.

After the last such warnings were fixed in September, we can now do
this.

5 years agokernel: Clean up the warning flags a bit.
Sascha Wildner [Sun, 18 Nov 2018 09:02:31 +0000 (10:02 +0100)]
kernel: Clean up the warning flags a bit.

We had both -Winline and -Wno-inline.

5 years agofetch.9: Document fuwordadd{32,64}().
Sascha Wildner [Sat, 17 Nov 2018 20:25:37 +0000 (21:25 +0100)]
fetch.9: Document fuwordadd{32,64}().

5 years agodhcpcd.8: Comment out some info on /dev management.
Sascha Wildner [Sat, 17 Nov 2018 18:42:35 +0000 (19:42 +0100)]
dhcpcd.8: Comment out some info on /dev management.

It is not configured in DragonFly.

While here, fix some trailing whitespace and an .Xr misuse.

5 years agoresolvconf.conf.5: Fix some mandoc warnings.
Sascha Wildner [Sat, 17 Nov 2018 18:47:57 +0000 (19:47 +0100)]
resolvconf.conf.5: Fix some mandoc warnings.

5 years agoRevert "drm/linux: Fix vmap()"
François Tigeot [Sat, 17 Nov 2018 13:41:21 +0000 (14:41 +0100)]
Revert "drm/linux: Fix vmap()"

This reverts commit c9f83a72b5c7c2f29b40b404aa63767b20a7422c.

It introduced instability on Broadwell platforms.

Reported-by: Daniel Bilik
5 years agorc.d/dhcpcd: Fix passing of extra arguments
Aaron LI [Sat, 17 Nov 2018 02:28:22 +0000 (10:28 +0800)]
rc.d/dhcpcd: Fix passing of extra arguments

Before this fix, 'dhcpcd' ignores extra arguments when calling
'run_rc_command()', which causes '/etc/rc.d/dhcpcd restart <ifname>' to
fail.  Fix this issue by passing all arguments to 'run_rc_command()'.

5 years agosshlockout.8: Use a display instead of .Cd in the SYNOPSIS.
Sascha Wildner [Fri, 16 Nov 2018 16:26:01 +0000 (17:26 +0100)]
sshlockout.8: Use a display instead of .Cd in the SYNOPSIS.

.Cd is only for kernel configuration options.

5 years agoAdd "device uether" to various manual pages' synopses.
Sascha Wildner [Fri, 16 Nov 2018 12:15:07 +0000 (13:15 +0100)]
Add "device uether" to various manual pages' synopses.

It is needed to be compiled in.

Reported-by: aly
5 years agorc.d/ip6addrctl: Fix REQUIRE and afexists()
Aaron LI [Fri, 16 Nov 2018 03:01:28 +0000 (11:01 +0800)]
rc.d/ip6addrctl: Fix REQUIRE and afexists()

* DragonFly doesn't has the 'FILESYSTEMS' rc target.

* I forgot to implement the 'afexists()' function when import this.
  However, FreeBSD's 'afexists()' relies 'kern.features.<feature>'
  sysctls to determine whether the address family is supported, but
  DragonFly doesn't allow this.  So come up with a little 'has_inet6()'
  function for this rc script use only.

Reported-by: Thomas Nikolajsen <thomas.nikolajsen@mail.dk>
5 years agoexamples: Fix build
Antonio Huete Jimenez [Thu, 15 Nov 2018 19:39:59 +0000 (20:39 +0100)]
examples: Fix build

- While here hook 'firmware' to the main Makefile

5 years agosyscons - Increase static buffer size for ttyv0.
Imre Vadász [Thu, 15 Nov 2018 12:53:02 +0000 (13:53 +0100)]
syscons - Increase static buffer size for ttyv0.

* This allows the console on the EFI framebuffer to fill the whole screen
  on "odd" resolutions. This only takes up slightly less than 12KB extra
  space in the kernel binary size.