Index: share/man/man9/DEVICE_PROBE.9 =================================================================== --- share/man/man9/DEVICE_PROBE.9 +++ share/man/man9/DEVICE_PROBE.9 @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd February 8, 2012 +.Dd January 17, 2022 .Dt DEVICE_PROBE 9 .Os .Sh NAME @@ -99,6 +99,17 @@ .Fx tree. Its use in the base OS is prohibited. +.It BUS_PROBE_HIGH_PRIORITY +The driver is a more desirable driver for a given plug and play ID. +The driver has special requirements like when there are two drivers +that support overlapping series of hardware devices and the driver +needs to raise its priority over BUS_PROBE_DEFAULT. +This may be the case when one driver is using a general framework +which is used by multiple drivers and its priority cannot be changed +(e.g., LinuxKPI). +This value should be used with care. +In most cases BUS_PROBE_LOW_PRIORITY and BUS_PROBE_DEFAULT are the +correct solution. .It BUS_PROBE_DEFAULT The device is a normal device matching some plug and play ID. This is Index: sys/sys/bus.h =================================================================== --- sys/sys/bus.h +++ sys/sys/bus.h @@ -692,17 +692,24 @@ * have special requirements like when there are two drivers that support * overlapping series of hardware devices. In this case the one that supports * the older part of the line would return this value, while the one that - * supports the newer ones would return BUS_PROBE_DEFAULT. BUS_PROBE_GENERIC - * is for drivers that wish to have a generic form and a specialized form, - * like is done with the pci bus and the acpi pci bus. BUS_PROBE_HOOVER is - * for those buses that implement a generic device placeholder for devices on - * the bus that have no more specific driver for them (aka ugen). + * supports the newer ones would return BUS_PROBE_DEFAULT. + * BUS_PROBE_HIGH_PRIORITY are likewise for drivers in case there are two + * drivers that support overlapping series of hardware devices and where one + * is on BUS_PROBE_DEFAULT (e.g., through a framework like LinuxKPI) and + * changing the priority of that driver is not possible (changing priority + * of the framework would affect all drivers using the framework). + * BUS_PROBE_GENERIC is for drivers that wish to have a generic form and a + * specialized form, like is done with the pci bus and the acpi pci bus. + * BUS_PROBE_HOOVER is for those buses that implement a generic device + * placeholder for devices on the bus that have no more specific driver for + * them (aka ugen). * BUS_PROBE_NOWILDCARD or lower means that the device isn't really bidding * for a device node, but accepts only devices that its parent has told it * use this driver. */ #define BUS_PROBE_SPECIFIC 0 /* Only I can use this device */ #define BUS_PROBE_VENDOR (-10) /* Vendor supplied driver */ +#define BUS_PROBE_HIGH_PRIORITY (-15) /* Driver more preferable */ #define BUS_PROBE_DEFAULT (-20) /* Base OS default driver */ #define BUS_PROBE_LOW_PRIORITY (-40) /* Older, less desirable drivers */ #define BUS_PROBE_GENERIC (-100) /* generic driver for dev */