09 Feb, 2008

1 commit

  • Calculate TASK_SIZE at run-time by figuring out the host's VMSPLIT - this is
    needed on i386 if UML is to run on hosts with varying VMSPLITs without
    recompilation.

    TASK_SIZE is now defined in terms of a variable, task_size. This gets rid of
    an include of pgtable.h from processor.h, which can cause include loops.

    On i386, task_size is calculated early in boot by probing the address space in
    a binary search to figure out where the boundary between usable and non-usable
    memory is. This tries to make sure that a page that is considered to be in
    userspace is, or can be made, read-write. I'm concerned about a system-global
    VDSO page in kernel memory being hit and considered to be a userspace page.

    On x86_64, task_size is just the old value of CONFIG_TOP_ADDR.

    A bunch of config variable are gone now. CONFIG_TOP_ADDR is directly replaced
    by TASK_SIZE. NEST_LEVEL is gone since the relocation of the stubs makes it
    irrelevant. All the HOST_VMSPLIT stuff is gone. All references to these in
    arch/um/Makefile are also gone.

    I noticed and fixed a missing extern in os.h when adding os_get_task_size.

    Note: This has been revised to fix the 32-bit UML on 64-bit host bug that
    Miklos ran into.

    Signed-off-by: Jeff Dike
    Cc: Miklos Szeredi
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

06 Feb, 2008

2 commits

  • Clean up the calculation and use of the usable address space size on the host.

    task_size is gone, replaced with TASK_SIZE, which is calculated from
    CONFIG_TOP_ADDR. get_kmem_end and set_task_sizes_skas are also gone.

    host_task_size, which refers to the entire address space usable by the UML
    kernel and which may be larger than the address space usable by a UML process,
    since that has to end on a pgdir boundary, is replaced by CONFIG_TOP_ADDR.

    STACK_TOP is now TASK_SIZE minus the two stub pages.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Untangle UML headers somewhat and add some includes where they were
    needed explicitly, but gotten accidentally via some other header.

    arch/um/include/um_uaccess.h loses asm/fixmap.h because it uses no
    fixmap stuff and gains elf.h, because it needs FIXADDR_USER_*, and
    archsetjmp.h, because it needs jmp_buf.

    pmd_alloc_one is uninlined because it needs mm_struct, and that's
    inconvenient to provide in asm-um/pgtable-3level.h.

    elf_core_copy_fpregs is also uninlined from elf-i386.h and
    elf-x86_64.h, which duplicated the code anyway, to
    arch/um/kernel/process.c, so that the reference to current_thread
    doesn't pull sched.h or anything related into asm/elf.h.

    arch/um/sys-i386/ldt.c, arch/um/kernel/tlb.c and
    arch/um/kernel/skas/uaccess.c got sched.h because they dereference
    task_structs. Its includes of linux and asm headers got turned from
    "" to <>.

    arch/um/sys-i386/bug.c gets asm/errno.h because it needs errno
    constants.

    asm/elf-i386 gets asm/user.h because it needs user_regs_struct.

    asm/fixmap.h gets page.h because it needs PAGE_SIZE and PAGE_MASK and
    system.h for BUG_ON.

    asm/pgtable doesn't need sched.h.

    asm/processor-generic.h defined mm_segment_t, but didn't use it. So,
    that definition is moved to uaccess.h, which defines a bunch of
    mm_segment_t-related stuff. thread_info.h uses mm_segment_t, and
    includes uaccess.h, which causes a recursion. So, the definition is
    placed above the include of thread_info. in uaccess.h. thread_info.h
    also gets page.h because it needs PAGE_SIZE.

    ObCheckpatchViolationJustification - I'm not adding a typedef; I'm
    moving mm_segment_t from one place to another.

    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

26 Apr, 2006

1 commit


06 May, 2005

1 commit

  • This patch make elh.h a symlink to the new arch-specific include files of the
    form elf-.h, as in the same way already is done for some other
    includes. Also moves Elf-stuff from archparam-.h and elf.h to the
    new elf-.h files.

    Signed-off-by: Bodo Stroesser
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bodo Stroesser
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds