Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Aug 2006 16:36:45 -0700
From:      "David Christensen" <davidch@broadcom.com>
To:        "Stefan Bethke" <stb@lassitu.de>
Cc:        freebsd-current@freebsd.org
Subject:   RE: Simplified Steps for Building a Loadable module on -CURRENT
Message-ID:  <09BFF2FA5EAB4A45B6655E151BBDD90301E2F2C1@NT-IRVA-0750.brcm.ad.broadcom.com>
In-Reply-To: <989384AE-60BB-4A37-B240-02DE1CEE4E4C@lassitu.de>

next in thread | previous in thread | raw e-mail | index | archive | help
> > I've been able to successfully build drivers in the past as
> > loadable modules but I'm getting some kernel panics with -CURRENT
> > when installing a module using kldload now where things used to
> > work before.
>=20
> You did nuke /usr/obj, performed a full kernel build (cd /usr/src; =20
> make buildkernel installkernel), and the module in question that was =20
> installed alongside your new kernel is *not* panicking the system?

Yes

>=20
> Then what's the panic message, and how exactly are you building your =20
> module?
>=20

The message wasn't readable on the serial console.  The text was jumbled
and I could only make out bits and pieces of it.

> > Assume I'm a complete FreeBSD noob for a moment
> > (which really isn't that far from the truth) and I want to build
> > a driver as a loadable module for testing.  After moving to
> > the appropriate directory in the source tree (/usr/src/sys/dev/XXX),
> > what steps do I need to follow to build the driver as a module?
>=20
> That would be /usr/src/sys/modules/<modulename>
>=20
> So far, just running make there has worked for me just fine.
>=20

Ah, there's the simple piece I was missing!  I had previously
created my own Makefile and placed it in the /usr/src/sys/dev/XXX
directory.

> > Assume for the moment that I have already commented the driver out
> > of my kernel configuration file
> > (/usr/src/sys/<architecture>/conf/GENERIC)
> > and rebuilt and installed that kernel.
>=20
> If the driver has been compiled into the kernel, kldload will error =20
> out with EEXISTS. If the system panics, you should provide specifics.
>=20

So I should do the following:

1) Comment out the driver I want to test in the kernel configuration
file.
   For example, modify /usr/src/sys/amd64/conf/MYCONFIG.
2) Rebuild and install the kernel (cd /usr/src; make kernel
KERNCONF=3DMYCONFIG)
3) Reboot the system to start using the new kernel
4) Edit the driver in /usr/src/sys/dev/XXX as necessary
5) Build the kernel module (cd /usr/src/sys/modules/XXX; make)
6) Load the kernel module (kldload ./if_XXX) and cross my fingers.




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