Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Apr 2019 21:03:59 -0600
From:      Ian Lepore <ian@freebsd.org>
To:        Lee D <embaudarm@gmail.com>, FreeBSD Hackers <freebsd-hackers@freebsd.org>
Subject:   Re: What code loads kernel modules at boot?
Message-ID:  <173b3741db8be891cff8b7005b2058a416d43115.camel@freebsd.org>
In-Reply-To: <CANC_bnNog192=sAgw6uu7J_oJMPLGyMa57y-eXNxHv_g-KMvOw@mail.gmail.com>
References:  <CANC_bnNog192=sAgw6uu7J_oJMPLGyMa57y-eXNxHv_g-KMvOw@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, 2019-04-17 at 20:52 -0400, Lee D wrote:
> A couple of years ago I wrote a FreeBSD bootloader for Zynq (Arm32).
> It's been working well, but now I need to add the ability to load
> kernel modules at boot.  This is for 11.0.1 (updating to 12 soon,
> hopefully).
> 
> Can anyone point me to the code that actually loads a kernel module
> for arm?  I got lost reading the source in /src/sys/boot/common, and
> can't quite figure out what routine is actually called.
> 
> I assume I need to parse the sections out of the .ko file and place
> them carefully in memory, like I do with the kernel image.
> 
> Also, if you're feeling loquacious, where do I put the darn thing and
> how do I tell the kernel how to find it (part of the MODINFO stuff I
> assume)?
> 
> This is all in the context of loading custom real time clock and I2C
> drivers so they are available at boot time.
> 
> Thanks,
> 
> 

The bulk of the module-loading code (the arch-independent part of it)
is in src/stand/common/module.c.  There is also archsw.arch_loadaddr,
which figures out where to put the modules (handling arch-specific
things like alignment requirements).

For some reason, I thought Zynq used u-boot.  That would allow using
either ubldr or the arm uefi loader (depending on how old the u-boot
is); those are just flavors of loader(8) that would get you module
handling and all the other loader goodness.

-- Ian




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