ndiscvt: Unresolved symbols / kldload if_ndis panic

From: Ulrich Spoerlein <q_at_uni.de>
Date: Thu, 26 Aug 2004 11:37:42 +0200
Hello,

I'm trying to get Projet Evil working on this Dell Inspiron 8600 Laptop
with an Intel Pro Wireless NIC. I tried the XP driver shipped with it
and the latest offered from Dell, but none works (more below).

I'm running RELENG_5, dmesg and drivers can be obtained from
http://www.galgenberg.net/~q/freebsd/

none3_at_pci2:3:0: class=0x028000 card=0x25618086 chip=0x10438086 rev=0x04 hdr=0x00
    vendor   = 'Intel Corporation'
    device   = 'Intel(R) PRO/Wireless 7100 LAN Card Driver'
    class    = network

The ipw-driver from http://http://damien.bergamini.free.fr/ipw/ seems to
work (although I needed to download the mentioned firmware)

ipw0: <Intel(R) PRO/Wireless 2100 MiniPCI> mem 0xfaffc000-0xfaffcfff irq 5 at device 3.0 on pci2
ipw0: [GIANT-LOCKED]
ipw0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps

I'm trying the following (old and new driver produce the same)
igor# ndiscvt -O -i /root/ipw_old/W70N51.INF -s /root/ipw_old/W70N51.SYS -o ndis_driver_data.h
objcopy -I binary -O elf32-i386-freebsd -B i386 /tmp/ndiscvt.K3zhkM ndis_driver_data.o
objcopy --redefine-sym _binary__tmp_ndiscvt_K3zhkM_start=W70N51_SYS_drv_data_start --strip-symbol _binary__tmp_ndiscvt_K3zhkM_size --redefine-sym _binary__tmp_ndiscvt_K3zhkM_end=W70N51_SYS_drv_data_end ndis_driver_data.o ndis_driver_data.o
igor# make
Warning: Object directory not changed from original /usr/src/sys/modules/if_ndis
_at_ -> /usr/src/sys
machine -> /usr/src/sys/i386/include
touch opt_bdg.h
awk -f _at_/tools/makeobjops.awk _at_/kern/device_if.m -h
awk -f _at_/tools/makeobjops.awk _at_/kern/bus_if.m -h
awk -f _at_/tools/makeobjops.awk _at_/dev/pci/pci_if.m -h
awk -f _at_/tools/makeobjops.awk _at_/dev/pccard/card_if.m -h
awk -f _at_/tools/pccarddevs2h.awk _at_/dev/pccard/pccarddevs
cc -O -pipe  -D_KERNEL -DKLD_MODULE -nostdinc -I-   -I. -I_at_ -I_at_/contrib/altq -I_at_/../include -I/usr/include -finline-limit=8000 -fno-common  -mno-align-long-strings -mpreferred-stack-boundary=2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -fformat-extensions -std=c99 -c /usr/src/sys/modules/if_ndis/../../dev/if_ndis/if_ndis.c
cc -O -pipe  -D_KERNEL -DKLD_MODULE -nostdinc -I-   -I. -I_at_ -I_at_/contrib/altq -I_at_/../include -I/usr/include -finline-limit=8000 -fno-common  -mno-align-long-strings -mpreferred-stack-boundary=2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -fformat-extensions -std=c99 -c /usr/src/sys/modules/if_ndis/../../dev/if_ndis/if_ndis_pci.c
cc -O -pipe  -D_KERNEL -DKLD_MODULE -nostdinc -I-   -I. -I_at_ -I_at_/contrib/altq -I_at_/../include -I/usr/include -finline-limit=8000 -fno-common  -mno-align-long-strings -mpreferred-stack-boundary=2 -ffreestanding -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes  -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual  -fformat-extensions -std=c99 -c /usr/src/sys/modules/if_ndis/../../dev/if_ndis/if_ndis_pccard.c
ld  -d -warn-common -r -d -o if_ndis.kld if_ndis.o if_ndis_pci.o if_ndis_pccard.o
touch /usr/src/sys/modules/if_ndis/export_syms
awk -f /usr/src/sys/modules/if_ndis/../../conf/kmod_syms.awk if_ndis.kld  /usr/src/sys/modules/if_ndis/export_syms |  xargs -J% objcopy % if_ndis.kld
ld -Bshareable  -d -warn-common -o if_ndis.ko if_ndis.kld
objcopy --strip-debug if_ndis.ko
igor# make install
install -o root -g wheel -m 555   if_ndis.ko /boot/kernel
kldxref /boot/kernel
igor# nm ndis_driver_data.o
0025e000 D W70N51_SYS_drv_data_end
00000000 D W70N51_SYS_drv_data_start

Afer running 'kldload if_ndis' I get the kernel message:
link_elf: symbol W70N51_SYS_drv_data_start undefined

and kldload just sits there for about 60s. top showed that kldload is in
state 'ndisth'. I then tried 'ps auxl' and got a panic.

I can also reproduce the panic when running sysctl -a after the kldload
has finished. It will print the first lines (until kern.clockrate) and
panics with the following trace:
strlcpy
fill_kinfo_thread
sysctl_out_proc
sysctl_kern_proc
sysctl_root
userland_sysctl
__sysctl
syscall
Xint0x80_syscall

Calling doadump() is not possible, because a mutex is held...

But back to the real question, where the heck is
W70N51_SYS_drv_data_start? Am I using the wrong driver? 


Ulrich Spoerlein
-- 
PGP Key ID: F0DB9F44				Get it while it's hot!
PGP Fingerprint: F1CE D062 0CA9 ADE3 349B  2FE8 980A C6B5 F0DB 9F44
"They that can give up essential liberty to obtain a little temporary
safety deserve neither liberty nor safety."	-- Benjamin Franklin

Received on Thu Aug 26 2004 - 07:37:46 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:08 UTC