Hi all I've been banging my head against this one for a while now, so I finally figured I could do with some help (and it might even be a bug in UML). ;-)
I am trying to set up a 2.6 UML instance on a VIA C3 Samuel2 [1] based system running a freshly installed Debian Sarge. In TT mode, everything works fine. However, in SKAS mode, the guest kernel starts up and outputs only: Checking for /proc/mm...found Checking for the skas3 patch in the host...found then nothing happens, but the guest kernel process uses 100% of the CPU. The same setup works fine on my Athlon64 system (IA32 mode) with identical host and guest kernels. I am not sure whether it provides additional insight, but here is the strace on the VIA box: execve("./linux-2.6.11-bs4", ["./linux-2.6.11-bs4", "mem=32M", "ubd0=./fwumlfs.img", "con=pts", "eth1=tuntap,tap1"], [/* 17 vars */]) = 0 uname({sys="Linux", node="emden2", ...}) = 0 brk(0) = 0xa02bb000 brk(0xa02dc000) = 0xa02dc000 rt_sigprocmask(SIG_SETMASK, [IO], NULL, 8) = 0 execve("./linux-2.6.11-bs4", ["./linux-2.6.11-bs4", " "..., "mem=32M", "ubd0=./fwumlfs.img", "con=pts", "eth1=tuntap,tap1"], [/* 17 vars */]) = 0 uname({sys="Linux", node="emden2", ...}) = 0 brk(0) = 0xa02bb000 brk(0xa02dc000) = 0xa02dc000 rt_sigprocmask(SIG_SETMASK, [IO], NULL, 8) = 0 getrlimit(RLIMIT_STACK, {rlim_cur=8192*1024, rlim_max=RLIM_INFINITY}) = 0 rt_sigaction(SIGINT, {0xa00108c0, [], SA_RESTORER|SA_NOMASK|SA_ONESHOT, 0xa014dcb8}, NULL, 8) = 0 rt_sigaction(SIGTERM, {0xa00108c0, [], SA_RESTORER|SA_NOMASK|SA_ONESHOT, 0xa014dcb8}, NULL, 8) = 0 rt_sigaction(SIGHUP, {0xa00108c0, [], SA_RESTORER|SA_NOMASK|SA_ONESHOT, 0xa014dcb8}, NULL, 8) = 0 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fff000 access("/proc/mm", W_OK) = 0 write(1, "Checking for /proc/mm...found\n", 30) = 30 old_mmap(NULL, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE| MAP_ANONYMOUS, -1, 0) = 0xb7ffe000 clone(child_stack=0xb7ffefd8, flags=0|SIGCHLD) = 7197 --- SIGCHLD (Child exited) @ 0 (0) --- waitpid(7197, [{WIFSTOPPED(s) && WSTOPSIG(s) == SIGSTOP}], WUNTRACED) = 7197 ptrace(0x34 /* PTRACE_??? */, 7197, 0, 0xbffff7c0) = 0 write(1, "Checking for the skas3 patch in "..., 49) = 49 ptrace(PTRACE_GETREGS, 7197, 0, 0xa02aaba0) = 0 ptrace(PTRACE_GETFPXREGS, 7197, 0, 0xa02aac80) = -1 EIO (Input/output error) rt_sigprocmask(SIG_SETMASK, NULL, [IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [ALRM VTALRM IO], NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [ALRM VTALRM], [ALRM VTALRM IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, NULL, [IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [ALRM VTALRM IO], NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [ALRM VTALRM], [ALRM VTALRM IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, NULL, [IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [ALRM VTALRM IO], NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [ALRM VTALRM], [ALRM VTALRM IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, NULL, [IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [ALRM VTALRM IO], NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [ALRM VTALRM], [ALRM VTALRM IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, NULL, [IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [ALRM VTALRM IO], NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [ALRM VTALRM], [ALRM VTALRM IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, NULL, [IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [ALRM VTALRM IO], NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [ALRM VTALRM], [ALRM VTALRM IO], 8) = 0 rt_sigprocmask(SIG_BLOCK, [IO], NULL, 8) = 0 rt_sigprocmask(SIG_UNBLOCK, [ALRM VTALRM IO], NULL, 8) = 0 --- SIGINT (Interrupt) @ 0 (0) --- rt_sigaction(SIGINT, {SIG_DFL}, {SIG_DFL}, 8) = 0 rt_sigaction(SIGTERM, {SIG_DFL}, {0xa00108c0, [], SA_RESTORER|SA_NOMASK| SA_ONESHOT, 0xa014dcb8}, 8) = 0 rt_sigaction(SIGHUP, {SIG_DFL}, {0xa00108c0, [], SA_RESTORER|SA_NOMASK| SA_ONESHOT, 0xa014dcb8}, 8) = 0 kill(0, SIGKILL (The SIGINT towards the end is me killing the guest kernel with Ctrl-C.) The above is with skas3-v9-pre1 [2] for the host and bs4 for the guest kernel which were applied to Debian's 2.6.11 sources. I've tried this with 2.6.10 and 2.6.11 kernels, both Debian and vanilla with and without the bs patch, all with the same result. I've tried compiling both the host and guest kernel on the VIA box, with no difference. The guest kernel is compiled with "ARCH=um SUBARCH=i386", so I hope I have excluded the CMOV on VIA C3 problem. Also, the guest kernel is statically linked, so it shouldn't have anything to do with TLS either (I think). Any help would be hugely appreciated. Also, I am more than happy to run additional tests and/or provide debugging information. (I've never done kernel debugging, so a hint or two would certainly be great.) Cheers Andree [1] /proc/cpuinfo: processor : 0 vendor_id : CentaurHauls cpu family : 6 model : 7 model name : VIA Samuel 2 stepping : 3 cpu MHz : 601.520 cache size : 64 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 1 wp : yes flags : fpu de tsc msr cx8 mtrr pge mmx pni 3dnow bogomips : 1187.84 [2] Patch skas-2.6.11-v8.patch.bz2 doesn't apply cleanly to neither vanilla nor Debian 2.6.11 kernel for me, so I'm using skas-2.6.11-v9-pre1.patch.bz2. The problem is the same with 2.6.10 using skas-2.6.10-v8.patch.bz2, though. -- Andree Leidenfrost Sydney - Australia
signature.asc
Description: This is a digitally signed message part