Loading modules from /boot/loader.conf
Michael Tuexen
tuexen at freebsd.org
Tue Jul 10 14:18:37 UTC 2018
> On 10. Jul 2018, at 16:06, Hans Petter Selasky <hps at selasky.org> wrote:
>
> On 07/10/18 13:23, Michael Tuexen wrote:
>>> On 25. Jun 2018, at 19:17, Michael Tuexen <tuexen at FreeBSD.org> wrote:
>>>
>>> Dear all,
>>>
>>> I'm running FreeBSD head of today on a G4 MacMini. I'm trying to
>>> load a kernel module using /boot/loader.conf by having the line
>>>
>>> tcp_rack_load="YES"
>>>
>>> in /boot/loader.conf
>>>
>>> However, this doesn't work and results in:
>>>
>>> FreeBSD/powerpc Open Firmware loader, Revision 0.1
>>> (Tue Jun 12 01:08:20 UTC 2010 root at releng3.nyi.freebsd.org)
>>> Memory: 1048576KB
>>> Booted from: /pic at f4000000/ata- at d/disk at 0
>>>
>>> Loading /boot/default/loader.conf
>>> /boot/kernel/kernel data=0x706ac+0xed588 syms=[0x4+0xa3100+0x4+0x10bc45]
>>> /boot/entropy size=0x1000
>>> /boot/kernel/tcp_rack.ko text=0x2433c data=0x1d0+0x220 syms=[0x4+0x15a0+0x4+0x17bd]
>>> loading required module 'kernel'
>>> module 'kernel' exists but with wrong version
>>>
>>> Hit [Enter] to boot immediately, or any other key for command prompt.
>>> ...
>>>
>>> I have no problems when running
>>>
>>> kldload tcp_rack
>>>
>>> after the system completely booted. Then the modules loads without any problems.
>>>
>>> Any idea what am I doing wrong?
>> The problem seem to be in the metadata information stored in /boot/kernel/kernel.
>> Concentrating on the version info for the kernel.
>> The .symtab entry contains
>> entry: 11727
>> st_name: _mod_metadata_kernel_version
>> st_value: 0xdcafd4
>> st_size: 16
>> st_info: STT_OBJECT STB_LOCAL
>> st_shndx: 22
>> which seems to be correct. However, looking at the version info, one finds:
>> readelf -x .data.rel.local /boot/kernel/kernel provides
>> 0x00dcafc8 3454f8e9 00000000 00000000 00000001 4T..............
>> 0x00dcafd8 00000003 00000000 00000000 02000000 ................
>> which corresponds to
>> {.md_version = 1, .md_type = 3, .md_data = NULL, .md_cval = NULL}
>> First of all, this information is NOT stored in the .data section as it is in
>> the case of power64, amd64, arm64, but in the .data.rel.local section.
>> Furthermore,md_data and md_cval are NULL, which should not be the case.
>> In addition, the set_modmetadata_set should contain pointers to the module
>> metadata, but it contains only NULL pointers, as can be checked with
>> readelf -x set_modmetadata_set /boot/kernel/kernel
>> Does anyone knows what is going wrong and why?
>> Is it possible that
>> https://svnweb.freebsd.org/base?view=revision&revision=268055
>> is related to this issue? It only handles the 64-bit version.
>> However, simply applying this also to __powerpc__ and recompiling
>> the kernel didn't solve the issue.
>
> Hi,
>
> There is this thread with some more information:
> https://lists.freebsd.org/pipermail/svn-src-all/2014-June/087354.html
Thanks for the pointer!
It seems that the problem discussed there affects the compilation/linking
process and I can still reproduce the issue with the gcc version we have
in tree.
Do you think this problem is related to the problem the the module
information is not included correctly? Do you know anyone who has
experience in this area?
Best regards
Michael
>
> --HPS
>
More information about the freebsd-ppc
mailing list