dragonfly.git
2 years agoAdd work-around for bug #3167
Michael Neumann [Wed, 9 Jan 2019 20:41:47 +0000 (21:41 +0100)]
Add work-around for bug #3167

"UEFI boot hangs right after initializing UEFI framebuffer."
It actually boots but the system console is not shown.

I had this issue on a TUXEDO InfinityBook Pro 14v4.
This commits allows me to boot by setting loader tunable
machdep.hack_efifb_probe_early=1.

This commit is not intended to be there forever.
It's there for people who experience the same issue and want
a quick and easy way to test if this fixes their booting issue.

Discussed-with: dillon

2 years agoSync ACPICA with Intel's version 20190108.
Sascha Wildner [Wed, 9 Jan 2019 09:18:50 +0000 (10:18 +0100)]
Sync ACPICA with Intel's version 20190108.

* New acpiexec(8) option -va to dump memory leak information.

* iasl(8)'s TPM2 table template adjusted for revision 4 of the table.

* Bumped copyrights.

2 years agoMakefile_upgrade.inc: Add a missing file i forgot in 5a31d992307898
Sascha Wildner [Tue, 8 Jan 2019 20:53:38 +0000 (21:53 +0100)]
Makefile_upgrade.inc: Add a missing file i forgot in 5a31d992307898

2 years agoopenssl(1): Remove a no longer existing .PATH from the Makefile.
Sascha Wildner [Tue, 8 Jan 2019 20:21:07 +0000 (21:21 +0100)]
openssl(1): Remove a no longer existing .PATH from the Makefile.

2 years agokernel/Makefiles: Remove two empty lines I added by mistake.
Sascha Wildner [Mon, 7 Jan 2019 21:01:23 +0000 (22:01 +0100)]
kernel/Makefiles: Remove two empty lines I added by mistake.

2 years agodrm/i915/gem: Really implement i915_gem_object_invalidate()
François Tigeot [Mon, 7 Jan 2019 20:14:50 +0000 (21:14 +0100)]
drm/i915/gem: Really implement i915_gem_object_invalidate()

2 years agodrm/linux: Add invalidate_mapping_pages()
François Tigeot [Mon, 7 Jan 2019 19:44:57 +0000 (20:44 +0100)]
drm/linux: Add invalidate_mapping_pages()

Inspired-by: FreeBSD
2 years agodrm/i915: Sync i915_drv.c a bit with Linux
François Tigeot [Mon, 7 Jan 2019 18:03:05 +0000 (19:03 +0100)]
drm/i915: Sync i915_drv.c a bit with Linux

2 years agokernel: Change CFLAGS -> KCFLAGS also in commented out Makefile lines.
Sascha Wildner [Mon, 7 Jan 2019 10:33:12 +0000 (11:33 +0100)]
kernel: Change CFLAGS -> KCFLAGS also in commented out Makefile lines.

2 years agoipfw3: insert the new rule in the beginning
Your Name [Mon, 7 Jan 2019 08:03:12 +0000 (08:03 +0000)]
ipfw3: insert the new rule in the beginning

"ipfw3 add" is still the same, while the "ipfw3 insert" is the new method
which will insert the new rule in the beginning of the rule list.

2 years agoRemove some dead code.
Sascha Wildner [Sun, 6 Jan 2019 18:16:25 +0000 (19:16 +0100)]
Remove some dead code.

2 years agodrm: Add drm_prime.c
François Tigeot [Sat, 5 Jan 2019 22:28:31 +0000 (23:28 +0100)]
drm: Add drm_prime.c

Increase dma-buf subsystem coverage.

2 years agodrm/i915: Enable the I915_GEM_USERPTR ioctl
François Tigeot [Sat, 5 Jan 2019 21:22:08 +0000 (22:22 +0100)]
drm/i915: Enable the I915_GEM_USERPTR ioctl

Start building some of the associated code

2 years agodrm: Partially sync drm_mm.c with Linux 4.7.10
François Tigeot [Sat, 5 Jan 2019 20:56:07 +0000 (21:56 +0100)]
drm: Partially sync drm_mm.c with Linux 4.7.10

2 years agokernel: Remove two no longer used sysinit ids.
Sascha Wildner [Sat, 5 Jan 2019 20:43:50 +0000 (21:43 +0100)]
kernel: Remove two no longer used sysinit ids.

* SI_BOOT2_BIOS was used for longrun and other i386 specific stuff only.
  The last usage was removed in c292f53669b4862993224dcf5c489355215be50d.

* SI_SUB_CLIST was removed in the recent tty clist refactoring commit,
  see 4725869b060b0e647b6c64480a0ce50f64ff23bb.

2 years agokernel: Remove unused *.h files from SRCS in kernel module Makefiles. (2)
Sascha Wildner [Sat, 5 Jan 2019 18:58:04 +0000 (19:58 +0100)]
kernel: Remove unused *.h files from SRCS in kernel module Makefiles. (2)

Forgot two Makefiles.

2 years agokernel: Remove kernel profiling bits.
Sascha Wildner [Sat, 5 Jan 2019 17:58:10 +0000 (18:58 +0100)]
kernel: Remove kernel profiling bits.

It was broken on i386, is even more broken on x86_64 and isn't
worth fixing.

Discussed-with: dillon

2 years agoClean up the USB driver directories, remove unbuilt source.
Sascha Wildner [Sat, 5 Jan 2019 13:25:45 +0000 (14:25 +0100)]
Clean up the USB driver directories, remove unbuilt source.

Remove old source that has not (yet) been ported. If any of these
drivers would get ported in the future, it would be from current
FreeBSD source anyway. Keeping the old source around just confuses
when grepping in /usr/src.

2 years agolib/libc: Remove a file that is not used in libc.
Sascha Wildner [Sat, 5 Jan 2019 13:19:33 +0000 (14:19 +0100)]
lib/libc: Remove a file that is not used in libc.

2 years agokernel: Remove unused *.h files from SRCS in kernel module Makefiles.
Sascha Wildner [Fri, 4 Jan 2019 20:38:57 +0000 (21:38 +0100)]
kernel: Remove unused *.h files from SRCS in kernel module Makefiles.

They were found by checking the preprocessed code of the files
in SRCS to see if the header was included at some point.

After removal, the preprocessed source of a build with the old
Makefiles was compared against one with the changes (for various
kernel configurations and when building just from /usr/src) to
verify that the commit leads to no functional change.

2 years agodrm/i915: Add i915_gem_dmabuf.c
François Tigeot [Thu, 3 Jan 2019 20:50:43 +0000 (21:50 +0100)]
drm/i915: Add i915_gem_dmabuf.c

This just means we now build more dma-buf code, not that the
end result is usable.

2 years agodrm: Rename struct drm_gem_object.vm_obj to filp
François Tigeot [Thu, 3 Jan 2019 20:08:24 +0000 (21:08 +0100)]
drm: Rename struct drm_gem_object.vm_obj to filp

Synchronize a bunch of related code with Linux

2 years agodrm/linux: Add linux/mmu_context.h
François Tigeot [Wed, 2 Jan 2019 22:23:36 +0000 (23:23 +0100)]
drm/linux: Add linux/mmu_context.h

2 years agoHAPPY NEW YEAR!
Sascha Wildner [Mon, 31 Dec 2018 23:15:51 +0000 (00:15 +0100)]
HAPPY NEW YEAR!

2 years agoSync zoneinfo database with tzdata2018i from ftp://ftp.iana.org/tz/releases
Sascha Wildner [Mon, 31 Dec 2018 19:24:33 +0000 (20:24 +0100)]
Sync zoneinfo database with tzdata2018i from ftp://ftp.iana.org/tz/releases

* Qyzylorda, Kazakhstan moved from +06 to +05 on 2018-12-21.

* New zone Asia/Qostanay because Qostanay, Kazakhstan didn't move.

* Metlakatla, Alaska observes PST this winter only.

* Guess Morocco will continue to adjust clocks around Ramadan.

* Add predictions for Iran from 2038 through 2090.

* São Tomé and Príncipe switches from +01 to +00 on 2019-01-01.

For a detailed list of changes, see share/zoneinfo/NEWS.

2 years agomkinitrd.sh: Fix comment typo.
Sascha Wildner [Mon, 31 Dec 2018 12:00:43 +0000 (13:00 +0100)]
mkinitrd.sh: Fix comment typo.

2 years agovkernel - Remove unneeded -T flag, that was added in 7b21e5e4a2ba4592a.
Imre Vadász [Fri, 28 Dec 2018 14:50:31 +0000 (15:50 +0100)]
vkernel - Remove unneeded -T flag, that was added in 7b21e5e4a2ba4592a.

* Instead the -e hw.tsc_cputimer_enable=0 flag can be used, to set the
  tunable that disables use of the TSC cputimer.

Pointed-out-by: swildner
2 years agokernel: Remove more duplicate includes.
Sascha Wildner [Fri, 28 Dec 2018 13:34:12 +0000 (14:34 +0100)]
kernel: Remove more duplicate includes.

2 years agokernel/ic: Remove an unneeded #ifdef _KERNEL and two duplicate includes.
Sascha Wildner [Fri, 28 Dec 2018 13:27:57 +0000 (14:27 +0100)]
kernel/ic: Remove an unneeded #ifdef _KERNEL and two duplicate includes.

2 years agoOops, fix lagg's type in LINT64.
Sascha Wildner [Fri, 28 Dec 2018 12:50:47 +0000 (13:50 +0100)]
Oops, fix lagg's type in LINT64.

2 years agoAdd lagg(4) to LINT64.
Sascha Wildner [Fri, 28 Dec 2018 12:47:24 +0000 (13:47 +0100)]
Add lagg(4) to LINT64.

While here, adjust LINT64's ident and fix lagg's type in VKERNEL64.

2 years agovkernel - Delete unused/ancient timer/rtc function declarations in clock.h.
Imre Vadász [Fri, 28 Dec 2018 10:50:57 +0000 (11:50 +0100)]
vkernel - Delete unused/ancient timer/rtc function declarations in clock.h.

* Also get rid of tsc_is_broken flag, that is completely unused.

2 years agobsd-family-tree: Sync with FreeBSD.
Sascha Wildner [Fri, 28 Dec 2018 10:32:37 +0000 (11:32 +0100)]
bsd-family-tree: Sync with FreeBSD.

2 years agokernel/acpi: Bring in FreeBSD's r341632.
Sascha Wildner [Thu, 27 Dec 2018 23:23:14 +0000 (00:23 +0100)]
kernel/acpi: Bring in FreeBSD's r341632.

On specific machines (a Lenovo Ideapad 100-15IBD in this case) would fail
detecting the battery properly after 7bcb6caf98d72e1e5fd653428e604ea1.

See https://lists.freebsd.org/pipermail/svn-src-all/2018-December/173505.html
for further info.

Reported-by: mazocomp on #dragonflybsd.
Taken-from: FreeBSD

2 years agonet - Simplify net/altq TSC timer code, get rid of its TSC calibration code.
Imre Vadász [Thu, 27 Dec 2018 21:41:25 +0000 (22:41 +0100)]
net - Simplify net/altq TSC timer code, get rid of its TSC calibration code.

* There is no use for the custom TSC calibration code in the ALTQ code.
  If our bootup TSC calibration would ever fail, we have bigger problems
  than being a little bit slower in the ALTQ code.

2 years agobufcache.9: Fix bread() prototype.
Sascha Wildner [Thu, 27 Dec 2018 13:05:08 +0000 (14:05 +0100)]
bufcache.9: Fix bread() prototype.

2 years agovkernel.7: Fix a typo and bump date
Aaron LI [Thu, 27 Dec 2018 11:26:36 +0000 (19:26 +0800)]
vkernel.7: Fix a typo and bump date

2 years agokernel - Factor out TSC cputimer into common x86_64 code, use for vkernel.
Imre Vadász [Tue, 25 Dec 2018 15:02:38 +0000 (16:02 +0100)]
kernel - Factor out TSC cputimer into common x86_64 code, use for vkernel.

* This adds a command line flag -T to the vkernel, to force disable use of
  the TSC cputimer.

* By default the TSC will be used as a cputimer for the vkernel when the
  TSC is invariant and mpsync according to the hw.tsc_invariant and
  hw.tsc_mpsync sysctl values of the host.

2 years agokernel - Throw a global lock around udev dictionary ops
Matthew Dillon [Thu, 27 Dec 2018 03:33:23 +0000 (19:33 -0800)]
kernel - Throw a global lock around udev dictionary ops

* Throw a global lockmgr lock around accesses and adjustments to
  dev->si_dict.

* Refactor functions that used to access dev->si_dict directly by
  adding two helper functions, udev_get_dict() and udev_put_dict().

* Should fix occassional vn-related panics.

2 years agoiwm - Fix possible null pointer indirection
Matthew Dillon [Wed, 26 Dec 2018 06:17:25 +0000 (22:17 -0800)]
iwm - Fix possible null pointer indirection

* Fix possible null pointer indirection.  No known cases for dfly but
  I would speculate possibly something in the error path could
  trigger a NULL field there.

* Provisional change, may be adjusted in the future.  But harmless.

Taken-from: haiku
Requested-by: waddlespl
2 years agoefirt.9: Yet another prototype fix.
Sascha Wildner [Tue, 25 Dec 2018 10:05:18 +0000 (11:05 +0100)]
efirt.9: Yet another prototype fix.

2 years agoiconvlist.3: Fix prototype in SYNOPSIS.
Sascha Wildner [Sun, 23 Dec 2018 21:37:03 +0000 (22:37 +0100)]
iconvlist.3: Fix prototype in SYNOPSIS.

2 years agobus_space.9: Fix some protoypes in SYNOPSIS.
Sascha Wildner [Sun, 23 Dec 2018 21:25:59 +0000 (22:25 +0100)]
bus_space.9: Fix some protoypes in SYNOPSIS.

2 years agokernel: Add descriptions to the p1003_1b sysctls.
Sascha Wildner [Sun, 23 Dec 2018 20:39:46 +0000 (21:39 +0100)]
kernel: Add descriptions to the p1003_1b sysctls.

While here, clean up a bit.

2 years agokernel: Populate the p1003_1b sysctl tree a bit more.
Sascha Wildner [Sun, 23 Dec 2018 20:36:57 +0000 (21:36 +0100)]
kernel: Populate the p1003_1b sysctl tree a bit more.

2 years agosem_init.3: Mark up SEM_VALUE_MAX.
Sascha Wildner [Sun, 23 Dec 2018 20:09:35 +0000 (21:09 +0100)]
sem_init.3: Mark up SEM_VALUE_MAX.

2 years ago<utmpx.h>: Change struct utmpx's ut_type from uint16_t to short, per POSIX.
Sascha Wildner [Sun, 23 Dec 2018 08:13:58 +0000 (09:13 +0100)]
<utmpx.h>: Change struct utmpx's ut_type from uint16_t to short, per POSIX.

See https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/utmpx.h.html

Our valid ut_types are 0-8 currently, so there should not be any issues.

Also fix a no longer necessary cast in utmp_update.

2 years agokernel/mrsas: Fix a double assignment.
Sascha Wildner [Sun, 23 Dec 2018 06:35:02 +0000 (07:35 +0100)]
kernel/mrsas: Fix a double assignment.

This code is in an ioctl path that is not used in DragonFly.

Taken-from: FreeBSD

2 years agortadvctl(8): Add __printflike and fix warnings.
Sascha Wildner [Fri, 21 Dec 2018 20:21:29 +0000 (21:21 +0100)]
rtadvctl(8): Add __printflike and fix warnings.

2 years agolibc/sysvipc: Fix some style issues (no functional change).
Sascha Wildner [Fri, 21 Dec 2018 14:18:00 +0000 (15:18 +0100)]
libc/sysvipc: Fix some style issues (no functional change).

2 years agolibc/sysvipc: Mark two functions as printf-like and fix resulting errors.
Sascha Wildner [Fri, 21 Dec 2018 14:14:14 +0000 (15:14 +0100)]
libc/sysvipc: Mark two functions as printf-like and fix resulting errors.

2 years agoFix broken links.
Justin C. Sherrill [Thu, 20 Dec 2018 04:46:37 +0000 (23:46 -0500)]
Fix broken links.

http://bugs.dragonflybsd.org/issues/3161

2 years agorc.d/varsym: Rewrite following rc.d/sysctl
Aaron LI [Thu, 13 Dec 2018 05:53:54 +0000 (13:53 +0800)]
rc.d/varsym: Rewrite following rc.d/sysctl

* Rewrite this script following the same logic and style of rc.d/sysctl.
  The basic syntax is checked before setting it.

* Clarify the /etc/varsym.conf syntax in the man page.

Reviewed-by: swildner
2 years agorc.d/sysctl: Rewrite to be more robust and clean
Aaron LI [Thu, 13 Dec 2018 05:58:27 +0000 (13:58 +0800)]
rc.d/sysctl: Rewrite to be more robust and clean

* Check the validity of the sysctl config and warn about the invalid
  syntax.

  A common mistake is that users set 'sysctl <mib>=<val>' in
  /etc/sysctl.conf, which generate huge amount of junk/mysterious
  messages on the console.  Now this will be warned.

* Reorganize the logic to be much cleaner.

* Do not bother to check whether the new value is different from the old
  one.

* Rename the function for consistency.

2 years agorc.d/mountcritlocal: Clean up
Aaron LI [Fri, 14 Dec 2018 14:57:51 +0000 (22:57 +0800)]
rc.d/mountcritlocal: Clean up

Clean the code a bit and fix the style.

2 years agoefirt.9: Fix prototype.
Sascha Wildner [Wed, 19 Dec 2018 09:04:36 +0000 (10:04 +0100)]
efirt.9: Fix prototype.

2 years agohammer2 - Cleanup 'info' command
Matthew Dillon [Tue, 18 Dec 2018 16:31:56 +0000 (08:31 -0800)]
hammer2 - Cleanup 'info' command

* hammer2 info validates the partition info, but assumed that
  the filesystem would be a disklabel.  Add code to validate
  against GPT slices too by checking the filesystem uuid.

Reported-by: ftigeot
2 years agohammer1 - Fix left-over /va/run/hammer.cleanup files
Matthew Dillon [Mon, 17 Dec 2018 21:46:11 +0000 (13:46 -0800)]
hammer1 - Fix left-over /va/run/hammer.cleanup files

* Fix an incorrect API call by hammer1 to the pidfile_*() functions
  in libutil.  This caused hammer1 to leave its lock files sitting in
  /var/run due to a use-after-free that reared its ugly head after
  the version update.

Reported-by: JustinS
2 years agoefirt.9: Add missing header to the SYNOPSIS.
Sascha Wildner [Sun, 16 Dec 2018 23:15:54 +0000 (00:15 +0100)]
efirt.9: Add missing header to the SYNOPSIS.

2 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

2 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.

2 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.

2 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.

2 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.

2 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.

2 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.

2 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>
2 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>

2 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.

2 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.

2 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().

2 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)

2 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.

2 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.

2 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.

2 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.

2 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.

2 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

2 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.

2 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

2 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".

2 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.

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

2 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.

2 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.

2 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

2 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)

2 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().

2 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.

2 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)

2 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.

2 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
2 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.

2 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.

2 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.

2 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.

2 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.

2 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.

2 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).

2 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.