Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Aug 2018 16:51:46 +0000 (UTC)
From:      Brad Davis <brd@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r338144 - in head: etc etc/devd sbin/devd
Message-ID:  <201808211651.w7LGpkUP034875@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: brd
Date: Tue Aug 21 16:51:45 2018
New Revision: 338144
URL: https://svnweb.freebsd.org/changeset/base/338144

Log:
  Move all devd related configs to sbin/devd/
  
  This helps with pkgbase as it switches these to using CONFS so they are
  properly tagged as config files.
  
  Approved by:	will (mentor), imp
  Differential Revision:	https://reviews.freebsd.org/D16781

Added:
  head/sbin/devd/apple.conf
     - copied unchanged from r338143, head/etc/devd/apple.conf
  head/sbin/devd/asus.conf
     - copied unchanged from r338143, head/etc/devd/asus.conf
  head/sbin/devd/devd.conf
     - copied unchanged from r338143, head/etc/devd.conf
  head/sbin/devd/devmatch.conf
     - copied unchanged from r338143, head/etc/devd/devmatch.conf
  head/sbin/devd/hyperv.conf
     - copied unchanged from r338143, head/etc/devd/hyperv.conf
  head/sbin/devd/uath.conf
     - copied unchanged from r338143, head/etc/devd/uath.conf
  head/sbin/devd/ulpt.conf
     - copied unchanged from r338143, head/etc/devd/ulpt.conf
  head/sbin/devd/zfs.conf
     - copied unchanged from r338143, head/etc/devd/zfs.conf
Deleted:
  head/etc/devd/
  head/etc/devd.conf
Modified:
  head/etc/Makefile
  head/sbin/devd/Makefile

Modified: head/etc/Makefile
==============================================================================
--- head/etc/Makefile	Tue Aug 21 16:43:46 2018	(r338143)
+++ head/etc/Makefile	Tue Aug 21 16:51:45 2018	(r338144)
@@ -13,7 +13,6 @@ SUBDIR+=sendmail
 .endif
 
 BIN1=	crontab \
-	devd.conf \
 	devfs.conf \
 	dhclient.conf \
 	disktab \
@@ -152,7 +151,6 @@ distribution:
 	${_+_}cd ${.CURDIR}/bluetooth; ${MAKE} install
 .endif
 	${_+_}cd ${.CURDIR}/defaults; ${MAKE} install
-	${_+_}cd ${.CURDIR}/devd; ${MAKE} install
 	${_+_}cd ${.CURDIR}/gss; ${MAKE} install
 	${_+_}cd ${.CURDIR}/mtree; ${MAKE} install
 	${_+_}cd ${SRCTOP}/share/termcap; ${MAKE} etc-termcap

Modified: head/sbin/devd/Makefile
==============================================================================
--- head/sbin/devd/Makefile	Tue Aug 21 16:43:46 2018	(r338143)
+++ head/sbin/devd/Makefile	Tue Aug 21 16:51:45 2018	(r338144)
@@ -4,6 +4,30 @@
 
 WARNS?= 3
 PACKAGE=runtime
+CONFGROUPS=	CONFS DEVD
+CONFS=	devd.conf
+DEVD=	devmatch.conf
+DEVDDIR=	/etc/devd
+.if ${MK_ACPI} != "no"
+DEVD+=	asus.conf
+.endif
+
+.if ${MK_HYPERV} != "no"
+DEVD+=	hyperv.conf
+.endif
+
+.if ${MK_USB} != "no"
+DEVD+=	uath.conf ulpt.conf
+.endif
+
+.if ${MACHINE_ARCH} == "powerpc"
+DEVD+=	apple.conf
+.endif
+
+.if ${MK_ZFS} != "no"
+DEVD+=	zfs.conf
+.endif
+
 PROG_CXX=devd
 SRCS=	devd.cc token.l parse.y y.tab.h
 MAN=	devd.8 devd.conf.5

Copied: head/sbin/devd/apple.conf (from r338143, head/etc/devd/apple.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/apple.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd/apple.conf)
@@ -0,0 +1,80 @@
+# $FreeBSD$
+#
+# PowerPC Apple specific devd events
+
+# Keyboard power key
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"Button";
+	action			"shutdown -p now";
+};
+
+
+# PowerBook and iBook lid close.
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"lid";
+	match "type"		"close";
+	action			"shutdown -p now";
+};
+
+
+# The next blocks enable brightness hotkeys that can be found on Apple laptops
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"keys";
+	match "type"		"brightness";
+	match "notify"		"down";
+	action			"sysctl dev.backlight.0.level=\
+		$(expr `sysctl -n dev.backlight.0.level` - 10)";
+};
+
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"keys";
+	match "type"		"brightness";
+	match "notify"		"up";
+	action			"sysctl dev.backlight.0.level=\
+		$(expr `sysctl -n dev.backlight.0.level` + 10)";
+};
+
+
+# The next blocks enable volume hotkeys that can be found on Apple laptops
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"keys";
+	match "type"		"mute";
+	action			"mixer 0";
+};
+
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"keys";
+	match "type"		"volume";
+	match "notify"		"down";
+	action			"mixer vol -10";
+};
+
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"keys";
+	match "type"		"volume";
+	match "notify"		"up";
+	action			"mixer vol +10";
+};
+
+# Eject key
+notify 0 {
+	match "system"		"PMU";
+	match "subsystem"	"keys";
+	match "type"		"eject";
+	action			"camcontrol eject cd0";
+};
+
+# Equivalent to the ACPI/ACAD notify
+notify 10 {
+	match "system"		"PMU";
+	match "subsystem"	"POWER";
+	match "type"		"ACLINE";
+	action "service power_profile $notify";
+};

Copied: head/sbin/devd/asus.conf (from r338143, head/etc/devd/asus.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/asus.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd/asus.conf)
@@ -0,0 +1,74 @@
+# $FreeBSD$
+#
+# ASUS specific devd events
+
+# The next blocks enable volume hotkeys that can be found on the Asus laptops
+notify 0 {
+	match "system"		"ACPI";
+	match "subsystem"	"ASUS";
+	match "notify"		"0x32";
+	action			"mixer 0";
+};
+
+notify 0 {
+	match "system"		"ACPI";
+	match "subsystem"	"ASUS";
+	match "notify"		"0x31";
+	action			"mixer vol -10";
+};
+
+notify 0 {
+	match "system"		"ACPI";
+	match "subsystem"	"ASUS";
+	match "notify"		"0x30";
+	action			"mixer vol +10";
+};
+
+# The next blocks enable volume hotkeys that can be found on the Asus EeePC
+notify 0 {
+        match "system"          "ACPI";
+        match "subsystem"       "ASUS-Eee";
+        match "notify"          "0x13";
+        action                  "mixer 0";
+};
+
+notify 0 {
+        match "system"          "ACPI";
+        match "subsystem"       "ASUS-Eee";
+        match "notify"          "0x14";
+        action                  "mixer vol -10";
+};
+
+notify 0 {
+        match "system"          "ACPI";
+        match "subsystem"       "ASUS-Eee";
+        match "notify"          "0x15";
+        action                  "mixer vol +10";
+};
+
+# Enable user hotkeys that can be found on the Asus EeePC
+# The four keys above the keyboard notify 0x1a through to 0x1d respectively
+#notify 0 {
+#        match "system"          "ACPI";
+#        match "subsystem"       "ASUS-Eee";
+#        match "notify"          "0x1a";
+#        action                  "";
+#};
+#notify 0 {
+#        match "system"          "ACPI";
+#        match "subsystem"       "ASUS-Eee";
+#        match "notify"          "0x1b";
+#        action                  "";
+#};
+#notify 0 {
+#        match "system"          "ACPI";
+#        match "subsystem"       "ASUS-Eee";
+#        match "notify"          "0x1c";
+#        action                  "";
+#};
+#notify 0 {
+#        match "system"          "ACPI";
+#        match "subsystem"       "ASUS-Eee";
+#        match "notify"          "0x1d";
+#        action                  "";
+#};

Copied: head/sbin/devd/devd.conf (from r338143, head/etc/devd.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/devd.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd.conf)
@@ -0,0 +1,353 @@
+# $FreeBSD$
+#
+# Refer to devd.conf(5) and devd(8) man pages for the details on how to
+# run and configure devd.
+#
+
+# NB: All regular expressions have an implicit ^$ around them.
+# NB: device-name is shorthand for 'match device-name'
+
+options {
+	# Each "directory" directive adds a directory to the list of
+	# directories that we scan for files.  Files are loaded in the order
+	# that they are returned from readdir(3).  The rule-sets are combined
+	# to create a DFA that's used to match events to actions.
+	directory "/etc/devd";
+	directory "/usr/local/etc/devd";
+	pid-file "/var/run/devd.pid";
+
+	# Setup some shorthand for regex that we use later in the file.
+	#XXX Yes, these are gross -- imp
+	set scsi-controller-regex
+		"(aac|adv|adw|aha|ahc|ahd|aic|amr|bt|ciss|dpt|\
+		esp|ida|iir|ips|isp|mlx|mly|mpr|mps|mpt|ncr|ncv|nsp|stg|sym|\
+		trm)\
+		[0-9]+";
+	set wifi-driver-regex
+		"(ath|bwi|bwn|ipw|iwi|iwm|iwn|malo|mwl|ral|rsu|rtwn|rum|run|\
+		uath|upgt|ural|urtw|wi|wpi|wtap|zyd)[0-9]+";
+};
+
+# Note that the attach/detach with the highest value wins, so that one can
+# override these general rules.
+
+#
+# Configure the interface on attach.  Due to a historical accident, this
+# script is called pccard_ether.
+#
+# NB: DETACH events are ignored; the kernel should handle all cleanup
+#     (routes, arp cache).  Beware of races against immediate create
+#     of a device with the same name; e.g.
+#     ifconfig bridge0 destroy; ifconfig bridge0 create
+#
+notify 0 {
+	match "system"		"IFNET";
+	match "subsystem"	"!usbus[0-9]+";
+	match "type"		"ATTACH";
+	action "/etc/pccard_ether $subsystem start";
+};
+
+#
+# Try to start dhclient on Ethernet-like interfaces when the link comes
+# up.  Only devices that are configured to support DHCP will actually
+# run it.  No link down rule exists because dhclient automatically exits
+# when the link goes down.
+#
+notify 0 {
+	match "system"		"IFNET";
+	match "type"		"LINK_UP";
+	media-type		"ethernet";
+	action "service dhclient quietstart $subsystem";
+};
+
+#
+# Like Ethernet devices, but separate because 802.11 require spawning
+# wlan(4) interface.
+#
+attach 0 {
+	device-name "$wifi-driver-regex";
+	action "/etc/pccard_ether $device-name startchildren";
+};
+detach 0 {
+	device-name "$wifi-driver-regex";
+	action "/etc/pccard_ether $device-name stopchildren";
+};
+notify 0 {
+	match "system"		"IFNET";
+	match "type"		"LINK_UP";
+	media-type		"802.11";
+	action "service dhclient quietstart $subsystem";
+};
+
+# An entry like this might be in a different file, but is included here
+# as an example of how to override things.  Normally 'ed50' would match
+# the above attach/detach stuff, but the value of 100 makes it
+# hard wired to 1.2.3.4.
+attach 100 {
+	device-name "ed50";
+	action "ifconfig $device-name inet 1.2.3.4 netmask 0xffff0000";
+};
+detach 100 {
+	device-name "ed50";
+};
+
+# When a USB Bluetooth dongle appears, activate it
+attach 100 {
+	device-name "ubt[0-9]+";
+	action "service bluetooth quietstart $device-name";
+};
+detach 100 {
+	device-name "ubt[0-9]+";
+	action "service bluetooth quietstop $device-name";
+};
+
+# Firmware downloader for Atheros AR3011 based USB Bluetooth devices
+#attach 100 {
+#	match "vendor" "0x0cf3";
+#	match "product" "0x3000";
+#	action "sleep 2 && /usr/sbin/ath3kfw -d $device-name -f /usr/local/etc/ath3k-1.fw";
+#};
+
+# When a USB keyboard arrives, attach it as the console keyboard.
+attach 100 {
+	device-name "ukbd0";
+	action "service syscons setkeyboard /dev/ukbd0";
+};
+detach 100 {
+	device-name "ukbd0";
+	action "service syscons setkeyboard /dev/kbd0";
+};
+
+notify 100 {
+	match "system" "DEVFS";
+	match "subsystem" "CDEV";
+	match "type" "CREATE";
+	match "cdev" "atp[0-9]+";
+
+	action "service moused quietstart $cdev";
+};
+
+notify 100 {
+	match "system" "DEVFS";
+	match "subsystem" "CDEV";
+	match "type" "CREATE";
+	match "cdev" "ums[0-9]+";
+
+	action "service moused quietstart $cdev";
+};
+
+notify 100 {
+	match "system" "DEVFS";
+	match "subsystem" "CDEV";
+	match "type" "CREATE";
+	match "cdev" "wsp[0-9]+";
+
+	action "service moused quietstart $cdev";
+};
+
+notify 100 {
+	match "system" "DEVFS";
+	match "subsystem" "CDEV";
+	match "type" "DESTROY";
+	match "cdev" "ums[0-9]+";
+
+	action "service moused stop $cdev";
+};
+
+# Firmware download into the ActiveWire board. After the firmware download is
+# done, the device detaches and reappears as something new and shiny
+# automatically.
+attach 100 {
+	match "vendor"	"0x0854";
+	match "product"	"0x0100";
+	match "release"	"0x0000";
+	action "/usr/local/bin/ezdownload -f /usr/local/share/usb/firmware/0854.0100.0_01.hex $device-name";
+};
+
+# Firmware download for Entrega Serial DB25 adapter.
+attach 100 {
+	match "vendor"	"0x1645";
+	match "product"	"0x8001";
+	match "release"	"0x0101";
+	action "if ! kldstat -n usio > /dev/null 2>&1 ; then kldload usio; fi; /usr/sbin/ezdownload -v -f /usr/share/usb/firmware/1645.8001.0101 /dev/$device-name";
+};
+
+# This entry starts the ColdSync tool in daemon mode. Make sure you have an up
+# to date /usr/local/etc/palms. We override the 'listen' settings for port and
+# type in /usr/local/etc/coldsync.conf.
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x082d";
+	match "product"		"0x0100";
+	match "release"		"0x0100";
+	action "/usr/local/bin/coldsync -md -p /dev/$cdev -t usb";
+};
+
+#
+# Rescan SCSI device-names on attach, but not detach.  However, it is
+# disabled by default due to reports of problems.
+#
+attach 0 {
+	device-name "$scsi-controller-regex";
+//	action "camcontrol rescan all";
+};
+
+# Don't even try to second guess what to do about drivers that don't
+# match here.  Instead, pass it off to syslog.  Commented out for the
+# moment, as the pnpinfo variable isn't set in devd yet.  Individual
+# variables within the bus supplied pnpinfo are set.
+nomatch 0 {
+#	action "logger Unknown device: $pnpinfo $location $bus";
+};
+
+# Various logging of unknown devices.
+nomatch 10 {
+	match "bus" "uhub[0-9]+";
+	action "logger Unknown USB device: vendor $vendor product $product \
+		bus $bus";
+};
+
+# Some PC-CARDs don't offer numerical manufacturer/product IDs, just
+# show the CIS info there.
+nomatch 20 {
+	match "bus" "pccard[0-9]+";
+	match "manufacturer" "0xffffffff";
+	match "product" "0xffffffff";
+	action "logger Unknown PCCARD device: CISproduct $cisproduct \
+		CIS-vendor $cisvendor bus $bus";
+};
+
+nomatch 10 {
+	match "bus" "pccard[0-9]+";
+	action "logger Unknown PCCARD device: manufacturer $manufacturer \
+		product $product CISproduct $cisproduct CIS-vendor \
+		$cisvendor bus $bus";
+};
+
+nomatch 10 {
+	match "bus" "cardbus[0-9]+";
+	action "logger Unknown Cardbus device: device $device class $class \
+		vendor $vendor bus $bus";
+};
+
+# Switch power profiles when the AC line state changes.
+notify 10 {
+	match "system"		"ACPI";
+	match "subsystem"	"ACAD";
+	action "service power_profile $notify";
+};
+
+# Notify all users before beginning emergency shutdown when we get
+# a _CRT or _HOT thermal event and we're going to power down the system
+# very soon.
+notify 10 {
+	match "system"		"ACPI";
+	match "subsystem"	"Thermal";
+	match "notify"		"0xcc";
+	action "logger -p kern.emerg 'WARNING: system temperature too high, shutting down soon!'";
+};
+
+# User requested suspend, so perform preparation steps and then execute
+# the actual suspend process.
+notify 10 {
+	match "system"		"ACPI";
+	match "subsystem"	"Suspend";
+	action "/etc/rc.suspend acpi $notify";
+};
+notify 10 {
+	match "system"		"ACPI";
+	match "subsystem"	"Resume";
+	action "/etc/rc.resume acpi $notify";
+};
+
+/* EXAMPLES TO END OF FILE
+
+# An example of something that a vendor might install if you were to
+# add their device.  This might reside in /usr/local/etc/devd/deqna.conf.
+# A deqna is, in this hypothetical example, a pccard ethernet-like device.
+# Students of history may know other devices by this name, and will get
+# the in-jokes in this entry.
+nomatch 10 {
+	match "bus" "pccard[0-9]+";
+	match "manufacturer" "0x1234";
+	match "product" "0x2323";
+	action "kldload -n if_deqna";
+};
+attach 10 {
+	device-name "deqna[0-9]+";
+	action "/etc/pccard_ether $device-name start";
+};
+detach 10 {
+	device-name "deqna[0-9]+";
+	action "/etc/pccard_ether $device-name stop";
+};
+
+# Examples of notify hooks.  A notify is a generic way for a kernel
+# subsystem to send event notification to userland.
+
+# Here are some examples of ACPI notify handlers.  ACPI subsystems that
+# generate notifies include the AC adapter, power/sleep buttons,
+# control method batteries, lid switch, and thermal zones.
+#
+# Information returned is not always the same as the ACPI notify
+# events.  See the ACPI specification for more information about
+# notifies.  Here is the information returned for each subsystem:
+#
+# ACAD:            AC line state (0 is offline, 1 is online)
+# Button:          Button pressed (0 for power, 1 for sleep)
+# CMBAT:           ACPI battery events
+# Lid:             Lid state (0 is closed, 1 is open)
+# Suspend, Resume: Suspend and resume notification
+# Thermal:         ACPI thermal zone events
+#
+# This example calls a script when the AC state changes, passing the
+# notify value as the first argument.  If the state is 0x00, it might
+# call some sysctls to implement economy mode.  If 0x01, it might set
+# the mode to performance.
+notify 10 {
+	match "system"		"ACPI";
+	match "subsystem"	"ACAD";
+	action			"/etc/acpi_ac $notify";
+};
+
+# This example works around a memory leak in PostgreSQL, restarting
+# it when the "user:postgres:swap:devctl=1G" rctl(8) rule gets triggered.
+notify 0 {
+	match "system"		"RCTL";
+	match "rule"		"user:770:swap:.*";
+	action			"service postgresql restart";
+};
+
+# Discard autofs caches, useful for the -media special map.
+notify 100 {
+	match "system" "GEOM";
+	match "subsystem" "DEV";
+	action "/usr/sbin/automount -c";
+};
+
+# Handle userland coredumps.
+# This commented out handler makes it possible to run an
+# automated debugging session after the core dump is generated.
+# Replace action with a proper coredump handler, but be aware that
+# it will run with elevated privileges.
+notify 10 {
+	match "system"          "kernel";
+	match "subsystem"       "signal";
+	match "type"            "coredump";
+	action "logger $comm $core";
+};
+
+# Let the init(8) know there's a new USB serial interface it might
+# want to run getty(8) for.  This includes device-side tty created
+# by usb_template(4).
+notify 100 {
+	match "system"		"DEVFS";
+	match "subsystem"	"CDEV";
+	match "type"		"CREATE";
+	match "cdev"		"ttyU[0-9]+";
+	action "/sbin/init q";
+};
+
+*/

Copied: head/sbin/devd/devmatch.conf (from r338143, head/etc/devd/devmatch.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/devmatch.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd/devmatch.conf)
@@ -0,0 +1,20 @@
+#
+# $FreeBSD$
+#
+
+#
+# Example devd configuration file for automatically
+# loading what modules we can based on nomatch
+# events.
+#
+# Generic NOMATCH event
+nomatch 100 {
+	action "service devmatch quietstart '?'$_";
+};
+
+# Add the following to devd.conf to prevent this from running:
+# 	nomatch 1000 {
+#		action "true";
+#	};
+# it replaces the generic event with one of higher priority that
+# does nothing. You can also set 'devmatch_enable=NO' in /etc/rc.conf

Copied: head/sbin/devd/hyperv.conf (from r338143, head/etc/devd/hyperv.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/hyperv.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd/hyperv.conf)
@@ -0,0 +1,108 @@
+# $FreeBSD$
+#
+# Hyper-V specific events
+
+notify 10 {
+	match "system"		"DEVFS";
+	match "subsystem"	"CDEV";
+	match "type"		"CREATE";
+	match "cdev"		"hv_kvp_dev";
+	action "/usr/sbin/hv_kvp_daemon";
+};
+
+notify 10 {
+	match "system"		"DEVFS";
+	match "subsystem"	"CDEV";
+	match "type"		"DESTROY";
+	match "cdev"		"hv_kvp_dev";
+	action "pkill -x hv_kvp_daemon";
+};
+
+notify 11 {
+	match "system"		"DEVFS";
+	match "subsystem"	"CDEV";
+	match "type"		"CREATE";
+	match "cdev"		"hv_fsvss_dev";
+	action "/usr/sbin/hv_vss_daemon";
+};
+
+notify 11 {
+	match "system"		"DEVFS";
+	match "subsystem"	"CDEV";
+	match "type"		"DESTROY";
+	match "cdev"		"hv_fsvss_dev";
+	action "pkill -x hv_vss_daemon";
+};
+
+#
+# Rules for non-transparent network VF.
+#
+# How network VF works with hn(4) on Hyper-V in non-transparent mode:
+#
+# - Each network VF has a corresponding hn(4).
+# - The network VF and the it's corresponding hn(4) have the same hardware
+#   address.
+# - Once the network VF is up, e.g. ifconfig VF up:
+#   o  All of the transmission should go through the network VF.
+#   o  Most of the reception goes through the network VF.
+#   o  Small amount of reception may go through the corresponding hn(4).
+#      This reception will happen, even if the corresponding hn(4) is
+#      down.  The corresponding hn(4) will change the reception interface
+#      to the network VF, so that network layer and application layer will
+#      be tricked into thinking that these packets were received by the
+#      network VF.
+#   o  The corresponding hn(4) pretends the physical link is down.
+# - Once the network VF is down or detached:
+#   o  All of the transmission should go through the corresponding hn(4).
+#   o  All of the reception goes through the corresponding hn(4).
+#   o  The corresponding hn(4) fallbacks to the original physical link
+#      detection logic.
+#
+# All these features are mainly used to help live migration, during which
+# the network VF will be detached, while the network communication to the
+# VM must not be cut off.  In order to reach this level of live migration
+# transparency, we use failover mode lagg(4) with the network VF and the
+# corresponding hn(4) attached to it.
+#
+# To ease user configuration for both network VF and non-network VF, the
+# lagg(4) will be created by the following rules, and the configuration
+# of the corresponding hn(4) will be applied to the lagg(4) automatically.
+#
+# NOTE:
+# If live migration is not needed at all, the following rules could be
+# commented out, and the network VF interface could be used exclusively.
+# Most often the corresponding hn(4) could be completely ignored.
+#
+#
+# Default workflow for the network VF bringup:
+# 1) ETHERNET/IFATTACH -> VF interface up (delayed by rc.conf hyperv_vf_delay
+#    seconds).  This operation will trigger HYPERV_NIC_VF/VF_UP.
+# 2) HYPERV_NIC_VF/VF_UP:
+#    a) Create laggX coresponding to hnX.
+#    b) Add hnX and VF to laggX.
+#    c) Whack all previous network configuration on hnX, including stopping
+#       dhclient.
+#    d) Apply rc.conf ifconfig_hnX to laggX; i.e. including starting dhclient.
+#
+# NOTE:
+# HYPERV_NIC_VF/VF_UP action script could be customized per-interface by
+# adding /usr/libexec/hyperv/hyperv_vfup.hnX script.
+# /usr/libexec/hyperv/hyperv_vfup could be used as the template for the
+# customized per-interface script.
+#
+# NOTE:
+# For transparent network VF, hyperv_vfattach does nothing and
+# HYPERV_NIC_VF/VF_UP will not be triggered at all.
+#
+
+notify 10 {
+	match "system"		"HYPERV_NIC_VF";
+	match "type"		"VF_UP";
+	action "/usr/libexec/hyperv/hyperv_vfup $subsystem";
+};
+
+notify 10 {
+	match "system"		"ETHERNET";
+	match "type"		"IFATTACH";
+	action "/usr/libexec/hyperv/hyperv_vfattach $subsystem 0";
+};

Copied: head/sbin/devd/uath.conf (from r338143, head/etc/devd/uath.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/uath.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd/uath.conf)
@@ -0,0 +1,146 @@
+# $FreeBSD$
+#
+# Atheros USB wireless network device specific devd events
+
+# Accton
+#   SMCWUSBT-G2
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x083a";
+	match "product"		"0x4507";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Atheros Communications
+#   AR5523
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x168c";
+	match "product"		"0x0002";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Atheros Communications
+#   AR5523
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x0cf3";
+	match "product"		"(0x0002|0x0004|0x0006)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Conceptronic
+#   AR5523
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x0d8e";
+	match "product"		"(0x7802|0x7812)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# D-Link
+#   DWL-AG132, DWL-G132 and DWL-AG122
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x2001";
+	match "product"		"(0x3a01|0x3a03|0x3a05)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# D-Link
+#  DWA-120
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x07d1";
+	match "product"		"0x3a0c";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Gigaset
+#   SMCWUSBT-G
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x1690";
+	match "product"		"(0x0711|0x0713)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Global Sun Technology
+#   AR5523
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x16ab";
+	match "product"		"(0x7802|0x7812)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# BayNETGEAR
+#   WG111U
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x0846";
+	match "product"		"0x4301";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Netgear
+#   WG111T and WPN111
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x1385";
+	match "product"		"(0x4251|0x5f01)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# U-MEDIA Communications
+#   TEW-444UB and AR5523
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x157e";
+	match "product"		"(0x3007|0x3206)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Wistron NeWeb
+#   AR5523
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x1435";
+	match "product"		"(0x0827|0x0829)";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};
+
+# Z-Com
+#   AR5523
+notify 100 {
+	match "system"		"USB";
+	match "subsystem"	"DEVICE";
+	match "type"		"ATTACH";
+	match "vendor"		"0x0cde";
+	match "product"		"0x0013";
+	action "/usr/sbin/uathload -d /dev/$cdev";
+};

Copied: head/sbin/devd/ulpt.conf (from r338143, head/etc/devd/ulpt.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/ulpt.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd/ulpt.conf)
@@ -0,0 +1,18 @@
+#
+# $FreeBSD$
+#
+
+#
+# Example devd configuration file for USB printers.
+# Uncomment the notify rule below to enable.
+#
+# Generic USB printer devices
+#notify 100 {
+#	match "system"		"USB";
+#	match "subsystem"	"INTERFACE";
+#	match "type"		"ATTACH";
+#	match "intclass"	"0x07";
+#	match "intsubclass"	"0x01";
+#	match "intprotocol"	"(0x01|0x02|0x03)";
+#	action "chown root:wheel /dev/$cdev";
+#};

Copied: head/sbin/devd/zfs.conf (from r338143, head/etc/devd/zfs.conf)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/sbin/devd/zfs.conf	Tue Aug 21 16:51:45 2018	(r338144, copy of r338143, head/etc/devd/zfs.conf)
@@ -0,0 +1,77 @@
+# $FreeBSD$
+#
+# Sample ZFS problem reports handling.
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.checksum";
+	action "logger -p local7.warn -t ZFS 'checksum mismatch, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.io";
+	action "logger -p local7.warn -t ZFS 'vdev I/O failure, zpool=$pool path=$vdev_path offset=$zio_offset size=$zio_size error=$zio_err'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.data";
+	action "logger -p local7.warn -t ZFS 'pool I/O failure, zpool=$pool error=$zio_err'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.zpool";
+	action "logger -p local7.err -t ZFS 'failed to load zpool $pool'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.vdev\..*";
+	action "logger -p local7.err -t ZFS 'vdev problem, zpool=$pool path=$vdev_path type=$type'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.io_failure";
+	action "logger -p local7.alert -t ZFS 'catastrophic pool I/O failure, zpool=$pool'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.probe_failure";
+	action "logger -p local7.err -t ZFS 'vdev probe failure, zpool=$pool path=$vdev_path'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.log_replay";
+	action "logger -p local7.err -t ZFS 'pool log replay failure, zpool=$pool'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"fs.zfs.config_cache_write";
+	action "logger -p local7.warn -t ZFS 'failed to write zpool.cache, zpool=$pool'";
+};
+
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"resource.fs.zfs.removed";
+	action "logger -p local7.notice -t ZFS 'vdev is removed, pool_guid=$pool_guid vdev_guid=$vdev_guid'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"resource.fs.zfs.autoreplace";
+	action "logger -p local7.info -t ZFS 'autoreplace is configured for vdev, pool_guid=$pool_guid vdev_guid=$vdev_guid'";
+};
+
+notify 10 {
+	match "system"		"ZFS";
+	match "type"		"resource.fs.zfs.statechange";
+	action "logger -p local7.notice -t ZFS 'vdev state changed, pool_guid=$pool_guid vdev_guid=$vdev_guid'";
+};
+



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201808211651.w7LGpkUP034875>