Kernel Loadable Driver vs. Custom Compiled Driver Question

John Baldwin jhb at freebsd.org
Fri Jun 5 13:55:07 UTC 2009


On Thursday 04 June 2009 3:02:30 pm AJ Shipley wrote:
> Hi,
> 
> I am in the process of integrating a 3rd party HW vendor’s driver into
> our FreeBSD code base.  The driver works when it is loaded as a KLM
> using kldload –v <driver_name> but when I modified the kernel using
> config and compiled the driver into the kernel, it does not work.  The
> kernel builds and installs fine, but the driver does not load
> correctly.
> 
> I was able to verify that the first 10 steps of the driver works
> during load in both cases and that the driver is loading the device
> into the same PCI memory range (it’s a PCI based HW card).  However,
> at a critical step in the driver, it polls an ISR register waiting for
> a bit to toggle high indicating that the board is ready and out of
> reset and it never does, and eventually hits the driver timeout and
> aborts its load.
> 
> Why would a driver work as a KLM but not statically compiled into the 
kernel?

Are you depending on working interrupts?  If so, you will need to defer that 
work using config_intrhook(9).

-- 
John Baldwin


More information about the freebsd-drivers mailing list