From: Gerd K. <kr...@by...> - 2003-12-08 10:20:12
|
> "list systemProbe = SCR:Read(.probe.system);" Oh, that one. Didn't know yast triggeres this too. That is actually a bug in the uml kernel (there should be a mail in the -devel archive ...). One if the things the hardware probes does is to check whenever it runs within vmware or not, and that test hangs (source code below). Known workarounds: * boot with "hwprobe=-sys" (that will make the hardware detect skip the critical test), or * don't use skas mode (it hangs in skas mode only for some musterious reason), or * just do something else in another terminal, that will unblock it too (scheduler bug in the uml kernel?). > btw: what would be a better solution: asking the suse people to make > yast "uml-aware" or fixing those things inside uml? IMHO this one is a UML kernel bug. Gerd ==============================[ cut here ]============================== #define _GNU_SOURCE /* we want memmem() */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/wait.h> void sigsegv_handler(int signum) { exit(77); } int chk_vmware(void) { static int is_vmware = -1; int child, status; /* do the check only once */ if(is_vmware < 0) { child = fork(); if(child == 0) { signal(SIGSEGV, sigsegv_handler); asm( "push %ebx\n" "\tpush %edx\n" "\tpush %eax\n" "\tpush %ecx\n" "\tmov $0x564d5868,%eax\n" "\tmov $0xa,%ecx\n" "\tmov $0x5658,%edx\n" "\tin (%dx),%eax\n" "\tpop %ecx\n" "\tpop %eax\n" "\tpop %edx\n" "\tpop %ebx\n" ); _exit(66); } else { if(waitpid(child, &status, 0) == child) { status = WEXITSTATUS(status); if(status == 66) is_vmware = 1; if(status == 77) is_vmware = 0; } } } return is_vmware; } int main(int argc, char *argv[]) { int rc; fprintf(stderr, "check for vmware... "); rc = chk_vmware(); fprintf(stderr, "%s\n", rc ? "yes" : "no"); return rc; } |