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