Port-xen archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Module support in a NetBSD domU



Hello,

I'm trying to use kernel modules a NetBSD domU and not having much success. Is this not possible?
I'm running NetBSD 5.99.5 with the current- kernel.  In a non- 
virtualized NetBSD OS, I can use modules without a problem.  But with  
a Linux dom0, latest Xen 3 testing snapshot, and NetBSD domU,  
inserting module fails during a memory allocation.  Digging into this,  
I found that the module_map VM object has module_start = module_end =  
0 when running under Xen.  Instead of "fixing" this, I changed kern/ 
kern_module to allocate module memory from kernel_map, instead of  
module_map.  Unfortunately, this didn't fix the problem.  I got the  
following stacktrace when inserting the module:
panic: xpq_flush_cache
fatal breakpoint trap in supervisor mode
trap type 1 code 0 rip ffffffff8012983d cs e030 rflags 246 cr2 ffffa0004658e000 cpl 6 rsp ffffa00045ac1b00
Stopped in pid 0.7 (system) at  netbsd:breakpoint+0x5:  leave
breakpoint() at netbsd:breakpoint+0x5
panic() at netbsd:panic+0x255
xpq_flush_cache() at netbsd:xpq_flush_cache+0x58
xc_thread() at netbsd:xc_thread+0x65

(I should note that I had to enable module support in the kernel config file. The GENERIC configuration enabled support for modules, but the XEN3_DOMU configuration did not.)
Debugging the above panic, I found that xpq_flush_cache panicked  
because the MMUEXT_FLUSH_CACHE hypercall failed.  In turn, "xm dmesg"  
shows that Xen was disallowing the MMUEXT_FLUSH_CACHE hypercall for a  
VM without "cache_flush_permitted" privilages.  So I changed Xen's xen/ 
arch/x86/mm.c's MMUEXT_FLUSH_CACHE handler to allow any VM to make  
this hypercall.  Unfortunately, the NetBSD domU still crashed, with  
the following stacktrace:
uvm_fault(0xffffffff805d0b00, 0xffffa00080302000, 4) -> e
fatal page fault in supervisor mode
trap type 6 code 10 rip ffffa00080302060 cs e030 rflags 10246 cr2 ffffa00080302
kernel: page fault trap, code=0
Stopped in pid 408.1 (modload) at 0xffffa00080302060:uvm_fault(0xffffa0004
fatal page fault in supervisor mode
trap type 6 code 0 rip ffffffff80131c7e cs e030 rflags 10202 cr2 7fbfe8002008 c
     kernel: page fau
lt trap, code=0
Stopped in pid 408.1 (modload) at netbsd:db_disasm+0x4e: cmpb $0,0(%rb
x)
db_disasm() at netbsd:db_disasm+0x4e
db_trap() at netbsd:db_trap+0xd8
kdb_trap() at netbsd:kdb_trap+0xc2
trap() at netbsd:trap+0x55f

Any help would be greatly appreciated. This is my first experience with NetBSD so I'm a bit new here.
Thanks in advance,
Mike


Home | Main Index | Thread Index | Old Index