Hi Jeff, Thanks a lot for replying.
I have cloned my repository with Linus's. I am using this latest kernel now [EMAIL PROTECTED]:~/linuxsrc/linux-2.6$ make kernelversion 2.6.27-rc4 Though I am not seeing the same issue, but still the linux process is not running here is the screenshot The steps I did are make mrproper make mrproper ARCH=um make defconfig make defconfig ARCH=um make ARCH=um -j 2 [EMAIL PROTECTED]:~/linuxsrc/linux-2.6$ ./linux mem=256 ubda=./root_fs Locating the bottom of the address space ... 0x10000 Locating the top of the address space ... 0xc0000000 Core dump limits : soft - 0 hard - NONE Checking that ptrace can change system call numbers...OK Checking syscall emulation patch for ptrace...OK Checking advanced syscall emulation patch for ptrace...OK Checking for tmpfs mount on /dev/shm...OK Checking PROT_EXEC mmap in /dev/shm/...OK Checking for the skas3 patch in the host: - /proc/mm...not found: No such file or directory - PTRACE_FAULTINFO...not found - PTRACE_LDT...not found UML running in SKAS0 mode setup_physmem - mapping -8093440 bytes of memory at 0x0x8800000 failed - errno = -12 Attaching the strace output of ./linux Please let me know if I am missing any step. Thanks and Regards, Prasad On Wed, Aug 27, 2008 at 9:31 PM, Jeff Dike <[EMAIL PROTECTED]> wrote: > On Wed, Aug 20, 2008 at 01:11:23AM +0530, Prasad Joshi wrote: > > I am getting this error after starting the UML. > > > > [EMAIL PROTECTED]:~/linuxsrc/linux-2.6.26-rc5_uml$ ./linux mem=128 > > ubda=/mnt/ > > Locating the top of the address space ... Address 0x0 no good? > > Do one of these three things: > use 2.6.26, as this was fixed in 2.6.26-rc6 > on the host, echo 0 > /proc/sys/vm/mmap_min_addr > apply the patch below, which is the fix that went in to 2.6.26 > > Jeff > > -- > Work email - jdike at linux dot intel dot com > > commit 40fb16a360d9c6459afee91dc793c1e3374feb94 > Author: Tom Spink <[EMAIL PROTECTED]> > Date: Thu Jun 5 22:46:12 2008 -0700 > > uml: deal with inaccessible address space start > > This patch makes os_get_task_size locate the bottom of the address > space, > as well as the top. This is for systems which put a lower limit on mmap > addresses. It works by manually scanning pages from zero onwards until > a > valid page is found. > > Because the bottom of the address space may not be zero, it's not > sufficient to assume the top of the address space is the size of the > address space. The size is the difference between the top address and > bottom address. > > [EMAIL PROTECTED]: changed the name to reflect that this function is > supposed to return the top of the process address space, not its size > and > changed the return value to reflect that. Also some minor formatting > changes] > Signed-off-by: Tom Spink <[EMAIL PROTECTED]> > Signed-off-by: Jeff Dike <[EMAIL PROTECTED]> > Signed-off-by: Andrew Morton <[EMAIL PROTECTED]> > Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]> > > diff --git a/arch/um/include/os.h b/arch/um/include/os.h > index e2716ac..db5be46 100644 > --- a/arch/um/include/os.h > +++ b/arch/um/include/os.h > @@ -299,6 +299,6 @@ extern int os_arch_prctl(int pid, int code, unsigned > long *addr); > extern int get_pty(void); > > /* sys-$ARCH/task_size.c */ > -extern unsigned long os_get_task_size(void); > +extern unsigned long os_get_top_address(void); > > #endif > diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c > index 9db85b2..8d84250 100644 > --- a/arch/um/kernel/um_arch.c > +++ b/arch/um/kernel/um_arch.c > @@ -274,7 +274,7 @@ int __init linux_main(int argc, char **argv) > if (have_root == 0) > add_arg(DEFAULT_COMMAND_LINE); > > - host_task_size = os_get_task_size(); > + host_task_size = os_get_top_address(); > /* > * TASK_SIZE needs to be PGDIR_SIZE aligned or else exit_mmap craps > * out > diff --git a/arch/um/os-Linux/sys-i386/task_size.c > b/arch/um/os-Linux/sys-i386/task_size.c > index ccb49b0..be04c1e 100644 > --- a/arch/um/os-Linux/sys-i386/task_size.c > +++ b/arch/um/os-Linux/sys-i386/task_size.c > @@ -63,7 +63,7 @@ static int page_ok(unsigned long page) > return ok; > } > > -unsigned long os_get_task_size(void) > +unsigned long os_get_top_address(void) > { > struct sigaction sa, old; > unsigned long bottom = 0; > @@ -76,9 +76,9 @@ unsigned long os_get_task_size(void) > * hosts, but shouldn't hurt otherwise. > */ > unsigned long top = 0xffffd000 >> UM_KERN_PAGE_SHIFT; > - unsigned long test; > + unsigned long test, original; > > - printf("Locating the top of the address space ... "); > + printf("Locating the bottom of the address space ... "); > fflush(stdout); > > /* > @@ -89,16 +89,31 @@ unsigned long os_get_task_size(void) > sigemptyset(&sa.sa_mask); > sa.sa_flags = SA_NODEFER; > if (sigaction(SIGSEGV, &sa, &old)) { > - perror("os_get_task_size"); > + perror("os_get_top_address"); > exit(1); > } > > - if (!page_ok(bottom)) { > - fprintf(stderr, "Address 0x%x no good?\n", > - bottom << UM_KERN_PAGE_SHIFT); > + /* Manually scan the address space, bottom-up, until we find > + * the first valid page (or run out of them). > + */ > + for (bottom = 0; bottom < top; bottom++) { > + if (page_ok(bottom)) > + break; > + } > + > + /* If we've got this far, we ran out of pages. */ > + if (bottom == top) { > + fprintf(stderr, "Unable to determine bottom of address " > + "space.\n"); > exit(1); > } > > + printf("0x%x\n", bottom << UM_KERN_PAGE_SHIFT); > + printf("Locating the top of the address space ... "); > + fflush(stdout); > + > + original = bottom; > + > /* This could happen with a 4G/4G split */ > if (page_ok(top)) > goto out; > @@ -114,7 +129,7 @@ unsigned long os_get_task_size(void) > out: > /* Restore the old SIGSEGV handling */ > if (sigaction(SIGSEGV, &old, NULL)) { > - perror("os_get_task_size"); > + perror("os_get_top_address"); > exit(1); > } > top <<= UM_KERN_PAGE_SHIFT; > diff --git a/arch/um/os-Linux/sys-x86_64/task_size.c > b/arch/um/os-Linux/sys-x86_64/task_size.c > index fad6f57..26a0dd1 100644 > --- a/arch/um/os-Linux/sys-x86_64/task_size.c > +++ b/arch/um/os-Linux/sys-x86_64/task_size.c > @@ -1,4 +1,4 @@ > -unsigned long os_get_task_size(unsigned long shift) > +unsigned long os_get_top_address(unsigned long shift) > { > /* The old value of CONFIG_TOP_ADDR */ > return 0x7fc0000000; >
uml_proc
Description: Binary data
------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________ User-mode-linux-user mailing list User-mode-linux-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user