Subject: Re: LKM 'pf': environment compile options mismatch - LKM '', kernel
To: None <port-xen@NetBSD.org>
From: None <reed@reedmedia.net>
List: port-xen
Date: 07/19/2006 14:59:37
> Well, modules are always compiled without options in the distrib.
> As Xen kernels are compiled with debug options, these are incompatible.
> You'll have to rebuild  a LKM with these options, but I don't know the
> details.

So I retrieved netbsd-3 via cvs. On my NetBSD/i386 3.99.21 build system, I 
did:

cd /usr/src/netbsd-3/src/sys/lkm/net/pf

modified the Makefile to create Makefile.reed with:

-CPPFLAGS+=     -I$S/dist/pf -I$S -DINET6 -DINET
+CPPFLAGS+=     -I$S/dist/pf -I$S -DINET6 -DINET -DDIAGNOSTIC -DDEBUG

and the ran:

 make USETOOLS=NEVER -f Makefile.reed

I copied the resulting pf.o to the NetBSD 3.0 (XENU) system and ran:

# /sbin/modload pf.o
Module loaded as ID 0
# modstat
Type    Id   Offset Loadaddr Size Info     Rev Module Name
DEV       0  -1/161 cb820000 0098 cb8413a0   2 pf

Moments later it panicked. (Not at modload time.)

Went to console and saw:

kernel: protection fault trap, code=0
Stopped at      0xcb8235bf:     cli
emul_freebsd_object(cb844610,c049cd90,1,0,64) at 0xcb8235bf
softclock(0,c049cdd0,c0335a03,3b9aca00,0) at netbsd:softclock+0x2e3
softintr_dispatch(0,fffffffe,800,3,1) at netbsd:softintr_dispatch+0xb3
DDB lost frame for netbsd:Xsoftclock+0x2e, trying 0xc049cdbc
Xsoftclock() at netbsd:Xsoftclock+0x2e
--- interrupt ---
?(31,11,11,f,2468f) at 0
ds          0x11
es          0x11
fs          0x31
gs          0x11
edi         0xcb844610
esi         0x1
ebp         0xc049cd54  emul_freebsd_object+0x7db40
?(31,11,11,f,2468f) at 0
ds          0x11
es          0x11
fs          0x31
gs          0x11
edi         0xcb844610
esi         0x1
ebp         0xc049cd54  emul_freebsd_object+0x7db40
ebx         0xffffc000
edx         0x246
ecx         0xffffffff
eax         0x786c2578
eip         0xcb8235bf
cs          0x9
eflags      0x10246
esp         0xc049cd4c  emul_freebsd_object+0x7db38
ss          0x11
0xcb8235bf:     cli
Stopped at      0xcb8235bf:     cli
db> 
db> reboot
syncing disks... done
unmounting file systems...
unmounting /kern (kernfs)...
unmounting / (/dev/xbd0a)...kernel: page fault trap, code=0
Stopped at      netbsd:buf_lotsfree+0xa:        testb   $0x40,0x23(%eax)
db> 
rebooting...


So what is the correct way to build a pf.o?

Does anyone use kernel modules with Xen?

(I still can't figure out how it worked for me a couple weeks ago.)

Thanks,

Jeremy C. Reed