panic at vm_page_wire with FreeBSD 9.0 Beta 3

Arnaud Lacombe lacombar at
Mon Nov 7 19:31:32 UTC 2011


On Wed, Nov 2, 2011 at 6:32 AM, Andriy Gapon <avg at> wrote:
> [restored cc: to the original poster]
> on 02/11/2011 08:10 Benjamin Kaduk said the following:
>> I am perhaps confused.  Last I checked, caused '-include
>> opt_global.h' to be passed on the command line.  Is the issue just that the
>> opt_global.h used for the kmod could be different from the actual kernel's
>> opt_global.h, because KERNCONF was not specified and the header is generated at
>> module-build time?  In this case, clearly the onus is on the user to pass
>> KERNCONF at module build time.
> To be precise, this is what is actually passed to a compiler:
> sys/conf/
> .if defined(KERNBUILDDIR)
> .endif
> where KERNBUILDDIR can be passed via environment from a kernel build:
> sys/conf/
> KERNCONF does not have any meaning in a module build.
> To make sure that a module build sees exactly the same kernel options as a
> kernel with which the module should work, one has to either build the module
> together with the kernel (within the kernel build; search for MODULES in
> make.conf(5)) or to manually specify KERNBUILDDIR to point to a correct kernel
> build directory.  (Which to a certain degree implies impossibility to build a
> "perfect" module for a pre-built binary kernel or to provide a "perfect"
> universal pre-built module for any custom kernel)
> Of course, the real problem is that modules should not care about any (or at
> least some) kernel options, they should be isolated from the options via a
> proper KPI/KBI (perhaps DDI or "module-to-kernel interface" or whatever).  A
> module should be able to work correctly with kernels built with different options.
You cannot be make a point in shade of gray, it either "must care" or
"must not care" about kernel option, not "care about some, but not
other". Moreover, you cannot advocate stable internal KBI/KPI when you
are not even able to provide a stable userland ABI...

> P.P.S. [and tangential] I see that many module makefiles fake up various kernel
> options in a fashion similar to the following:
> .if !defined(KERNBUILDDIR)
> opt_compat.h:
>        echo "#define COMPAT_FREEBSD6 1" > ${.TARGET}
> opt_kbd.h:
>        echo "#define KBD_INSTALL_CDEV 1" > ${.TARGET}
> .endif
> And handful of modules fake up opt_global.h, e.g.:
> opt_global.h:
>        echo "#define ALTQ 1"     > ${.TARGET}
<personal opinion>This mess is utterly broken.</personal opinion>

FWIW, I advocate to make KERNBUILDDIR (ie. kernel option's
configuration) mandatory for building any modules.

 - Arnaud

> --
> Andriy Gapon
> _______________________________________________
> freebsd-current at mailing list
> To unsubscribe, send any mail to "freebsd-current-unsubscribe at"

More information about the freebsd-current mailing list