28 Apr, 2008

1 commit

  • s390 for one, cannot implement VM_MIXEDMAP with pfn_valid, due to their memory
    model (which is more dynamic than most). Instead, they had proposed to
    implement it with an additional path through vm_normal_page(), using a bit in
    the pte to determine whether or not the page should be refcounted:

    vm_normal_page()
    {
    ...
    if (unlikely(vma->vm_flags & (VM_PFNMAP|VM_MIXEDMAP))) {
    if (vma->vm_flags & VM_MIXEDMAP) {
    #ifdef s390
    if (!mixedmap_refcount_pte(pte))
    return NULL;
    #else
    if (!pfn_valid(pfn))
    return NULL;
    #endif
    goto out;
    }
    ...
    }

    This is fine, however if we are allowed to use a bit in the pte to determine
    refcountedness, we can use that to _completely_ replace all the vma based
    schemes. So instead of adding more cases to the already complex vma-based
    scheme, we can have a clearly seperate and simple pte-based scheme (and get
    slightly better code generation in the process):

    vm_normal_page()
    {
    #ifdef s390
    if (!mixedmap_refcount_pte(pte))
    return NULL;
    return pte_page(pte);
    #else
    ...
    #endif
    }

    And finally, we may rather make this concept usable by any architecture rather
    than making it s390 only, so implement a new type of pte state for this.
    Unfortunately the old vma based code must stay, because some architectures may
    not be able to spare pte bits. This makes vm_normal_page a little bit more
    ugly than we would like, but the 2 cases are clearly seperate.

    So introduce a pte_special pte state, and use it in mm/memory.c. It is
    currently a noop for all architectures, so this doesn't actually result in any
    compiled code changes to mm/memory.o.

    BTW:
    I haven't put vm_normal_page() into arch code as-per an earlier suggestion.
    The reason is that, regardless of where vm_normal_page is actually
    implemented, the *abstraction* is still exactly the same. Also, while it
    depends on whether the architecture has pte_special or not, that is the
    only two possible cases, and it really isn't an arch specific function --
    the role of the arch code should be to provide primitive functions and
    accessors with which to build the core code; pte_special does that. We do
    not want architectures to know or care about vm_normal_page itself, and
    we definitely don't want them being able to invent something new there
    out of sight of mm/ code. If we made vm_normal_page an arch function, then
    we have to make vm_insert_mixed (next patch) an arch function too. So I
    don't think moving it to arch code fundamentally improves any abstractions,
    while it does practically make the code more difficult to follow, for both
    mm and arch developers, and easier to misuse.

    [akpm@linux-foundation.org: build fix]
    Signed-off-by: Nick Piggin
    Acked-by: Carsten Otte
    Cc: Jared Hulbert
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

17 Apr, 2008

1 commit

  • Semaphores are no longer performance-critical, so a generic C
    implementation is better for maintainability, debuggability and
    extensibility. Thanks to Peter Zijlstra for fixing the lockdep
    warning. Thanks to Harvey Harrison for pointing out that the
    unlikely() was unnecessary.

    Signed-off-by: Matthew Wilcox
    Acked-by: Ingo Molnar

    Matthew Wilcox
     

16 Apr, 2008

1 commit

  • This patch fixes this error:

    In file included from /home/wangcong/projects/linux-2.6/arch/um/kernel/smp.c:9:
    include2/asm/tlb.h: In function `tlb_remove_page':
    include2/asm/tlb.h:101: error: implicit declaration of function `page_cache_release'

    And since including in will break sparc,
    we add this #include in uml's own header.

    Acked-by: Jeff Dike
    Signed-off-by: WANG Cong
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    WANG Cong
     

03 Apr, 2008

1 commit

  • Currently include/linux/kvm.h is not considered by make headers_install,
    because Kbuild cannot handle " unifdef-$(CONFIG_FOO) += foo.h. This problem
    was introduced by

    commit fb56dbb31c4738a3918db81fd24da732ce3b4ae6
    Author: Avi Kivity
    Date: Sun Dec 2 10:50:06 2007 +0200

    KVM: Export include/linux/kvm.h only if $ARCH actually supports KVM

    Currently, make headers_check barfs due to , which
    includes, not existing. Rather than add a zillion s, export kvm.
    only if the arch actually supports it.

    Signed-off-by: Avi Kivity

    which makes this an 2.6.25 regression.

    One way of solving the issue is to enhance Kbuild, but Avi and David conviced
    me, that changing headers_install is not the way to go. This patch changes
    the definition for linux/kvm.h to unifdef-y.

    If  unifdef-y is used for linux/kvm.h "make headers_check" will fail on all
    architectures without asm/kvm.h. Therefore, this patch also provides
    asm/kvm.h on all architectures.

    Signed-off-by: Christian Borntraeger
    Acked-by: Avi Kivity
    Cc: Sam Ravnborg
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christian Borntraeger
     

09 Feb, 2008

5 commits

  • %fs needs to be copied from parent to child during fork.

    Tidied up some whitespace while I was here.

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

    Jeff Dike
     
  • 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
     
  • Background: I've implemented 1K/2K page tables for s390. These sub-page
    page tables are required to properly support the s390 virtualization
    instruction with KVM. The SIE instruction requires that the page tables
    have 256 page table entries (pte) followed by 256 page status table entries
    (pgste). The pgstes are only required if the process is using the SIE
    instruction. The pgstes are updated by the hardware and by the hypervisor
    for a number of reasons, one of them is dirty and reference bit tracking.
    To avoid wasting memory the standard pte table allocation should return
    1K/2K (31/64 bit) and 2K/4K if the process is using SIE.

    Problem: Page size on s390 is 4K, page table size is 1K or 2K. That means
    the s390 version for pte_alloc_one cannot return a pointer to a struct
    page. Trouble is that with the CONFIG_HIGHPTE feature on x86 pte_alloc_one
    cannot return a pointer to a pte either, since that would require more than
    32 bit for the return value of pte_alloc_one (and the pte * would not be
    accessible since its not kmapped).

    Solution: The only solution I found to this dilemma is a new typedef: a
    pgtable_t. For s390 pgtable_t will be a (pte *) - to be introduced with a
    later patch. For everybody else it will be a (struct page *). The
    additional problem with the initialization of the ptl lock and the
    NR_PAGETABLE accounting is solved with a constructor pgtable_page_ctor and
    a destructor pgtable_page_dtor. The page table allocation and free
    functions need to call these two whenever a page table page is allocated or
    freed. pmd_populate will get a pgtable_t instead of a struct page pointer.
    To get the pgtable_t back from a pmd entry that has been installed with
    pmd_populate a new function pmd_pgtable is added. It replaces the pmd_page
    call in free_pte_range and apply_to_pte_range.

    Signed-off-by: Martin Schwidefsky
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Schwidefsky
     
  • Suppress A.OUT library support if CONFIG_ARCH_SUPPORTS_AOUT is not set.

    Not all architectures support the A.OUT binfmt, so the ELF binfmt should not
    be permitted to go looking for A.OUT libraries to load in such a case. Not
    only that, but under such conditions A.OUT core dumps are not produced either.

    To make this work, this patch also does the following:

    (1) Makes the existence of the contents of linux/a.out.h contingent on
    CONFIG_ARCH_SUPPORTS_AOUT.

    (2) Renames dump_thread() to aout_dump_thread() as it's only called by A.OUT
    core dumping code.

    (3) Moves aout_dump_thread() into asm/a.out-core.h and makes it inline. This
    is then included only where needed. This means that this bit of arch
    code will be stored in the appropriate A.OUT binfmt module rather than
    the core kernel.

    (4) Drops A.OUT support for Blackfin (according to Mike Frysinger it's not
    needed) and FRV.

    This patch depends on the previous patch to move STACK_TOP[_MAX] out of
    asm/a.out.h and into asm/processor.h as they're required whether or not A.OUT
    format is available.

    [jdike@addtoit.com: uml: re-remove accidentally restored code]
    Signed-off-by: David Howells
    Cc:
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Move STACK_TOP[_MAX] out of asm/a.out.h and into asm/processor.h as they're
    required whether or not A.OUT format is available.

    Signed-off-by: David Howells
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

06 Feb, 2008

19 commits

  • The ldt.semaphore conforms to the new struct mutex requirments, so I converted
    it to use the new API and changed the name.

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

    Daniel Walker
     
  • avoid-overflows-in-kernel-timec.patch makes CONFIG_HZ necessary for a
    successful build. UML lacks a definition, so this patch adds one. It also
    changes the hard-wired definition of HZ to CONFIG_HZ.

    Note: this patch is a good idea even in the absence of hpa's time fixes.

    Cc: "H. Peter Anvin"
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Get rid of some syscall counters which haven't been useful in ages.

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

    Jeff Dike
     
  • Customize the hooks in tlb.h to optimize TLB flushing some more.

    Add start and end fields to tlb_gather_mmu, which are used to limit
    the address space range scanned when a region is unmapped.

    The interfaces which just free page tables, without actually changing
    mappings, don't need to cause a TLB flush.

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

    Jeff Dike
     
  • Some 64-bit tlb fixes -
    moved pmd_page_vaddr to pgtable.h since it's the same for both
    2-level and 3-level page tables
    fixed a bogus cast on pud_page_vaddr
    made the address checking in update_*_range more careful

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

    Jeff Dike
     
  • Give the stubs a VMA. This allows the removal of a truly nasty kludge to make
    sure that mm->nr_ptes was correct in exit_mmap. The underlying problem was
    always that the stubs, which have ptes, and thus allocated a page table,
    weren't covered by a VMA.

    This patch fixes that by using install_special_mapping in arch_dup_mmap and
    activate_context to create the VMA. The stubs have to be moved, since
    shift_arg_pages seems to assume that the stack is the only VMA present at that
    point during exec, and uses vma_adjust to fiddle its VMA. However, that
    extends the stub VMA by the amount removed from the stack VMA.

    To avoid this problem, the stubs were moved to a different fixed location at
    the start of the address space.

    The init_stub_pte calls were moved from init_new_context to arch_dup_mmap
    because I was occasionally seeing arch_dup_mmap not being called, causing
    exit_mmap to die. Rather than figure out what was really happening, I decided
    it was cleaner to just move the calls so that there's no doubt that both the
    pte and VMA creation happen, no matter what. arch_exit_mmap is used to clear
    the stub ptes at exit time.

    The STUB_* constants in as-layout.h no longer depend on UM_TASK_SIZE, that
    that definition is removed, along with the comments complaining about gcc.

    Because the stubs are no longer at the top of the address space, some care is
    needed while flushing TLBs. update_pte_range checks for addresses in the stub
    range and skips them. flush_thread now issues two unmaps, one for the range
    before STUB_START and one for the range after STUB_END.

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

    Jeff Dike
     
  • 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
     
  • Turn um_virt_to_phys into virt_to_pte, cleaning up a horrid interface.

    It's also made non-static and declared in pgtable.h because it'll be
    needed when the stubs get a vma.

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

    Jeff Dike
     
  • Get the sizes of various pieces of data right when using three-level
    page tables. pgd and pmd entries remain at 32 bits in a 32-bit
    compilation because page tables will remain in low memory. So,
    PGDIR_SHIFT, the PTRS_PER_* values, set_pud, set_pmd are conditional
    on 64BIT.

    More use of phys_t is made when there are physical memory addresses
    floating around.

    ObCheckpatchViolationJustification - the new typedef is an alternate
    definition of pmd_t, which I can't really live without.

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

    Jeff Dike
     
  • Tidy current-related stuff. There was a comment in current.h saying
    that current_thread was obsolete, so this patch turns all instances of
    current_thread into current_thread_info(). There's some simplifying
    of the result in arch/um/sys-i386/signal.c.

    current.h and thread_info also get style cleanups.

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

    Jeff Dike
     
  • Style fixes in elf-i386.h and arch/um/kernel/mem.c.
    update the copyright
    get rid of an emacs formatting comment
    some formatting fixes
    inclusion trimming
    whitespace fixes

    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
     
  • This patchset makes UML build and run with three-level page tables on
    32-bit hosts. This is an uncommon use case, but the code here needed
    fixing and cleaning up, so 32-bit three-level pages tables were tested
    to make sure the changes are good.

    Patch 1 - code movement
    Patch 2 - header untangling
    Patch 3 - style fixups in files affected so far
    Patch 4 - clean up use of current.h
    Patch 5 - fix sizes of types that are different between 2 and 3-level
    page tables - three-level page table support should build at
    this point
    Patch 6 - tidy (i.e. eliminate much of) the code that figures out how
    big the address space is
    Patch 7 - change um_virt_to_phys into virt_to_pte, clean its
    interface, and clean its (so far) one caller
    Patch 8 - the stub pages are covered with a VMA, allowing some nasty
    code to be thrown out - three-level page tables now work

    This patch:

    um_virt_to_phys only has one user, so it can be moved to the same file
    and made static. Its declarations in pgtable.h and ksyms.c are also
    gone.

    current_cmd was another apparent user, but it itself isn't used, so it
    is deleted.

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

    Jeff Dike
     
  • The earlier pgtable.h tidying patch made things a bit too tidy. Add
    back a header which is needed in VMALLOC_START and friend. Also add
    back a definition of pmd_page_vaddr, which is needed on x86_64.

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

    Jeff Dike
     
  • Large pieces of include/asm/pgtable.h were unused cruft.

    This uncovered arch/um/kernel/trap.c needing skas.h in order to get
    ptrace_faultinfo.

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

    Jeff Dike
     
  • Get rid of asmlinkage and remove some old cruft from asm/linkage.h.

    [akpm@linux-foundation.org: coding-style fixes]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Implement get_wchan - the algorithm is similar to x86. It starts with the
    stack pointer of the process in question and looks above that for addresses
    that are kernel text. The second one which isn't in the scheduler is the one
    that's returned. The first one is ignored because that will be UML's own
    context switching routine.

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

    Jeff Dike
     
  • This patch removes some code which ran at every boot, but does not seem to do
    anything anymore. Please test. It works for me but mistakes can happen.

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

    Karol Swietlicki
     
  • (with Martin Schwidefsky )

    The pgd/pud/pmd/pte page table allocation functions get a mm_struct pointer as
    first argument. The free functions do not get the mm_struct argument. This
    is 1) asymmetrical and 2) to do mm related page table allocations the mm
    argument is needed on the free function as well.

    [kamalesh@linux.vnet.ibm.com: i386 fix]
    [akpm@linux-foundation.org: coding-syle fixes]
    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Martin Schwidefsky
    Cc:
    Signed-off-by: Kamalesh Babulal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

30 Jan, 2008

3 commits


15 Nov, 2007

1 commit

  • pud_clear wasn't setting the _PAGE_NEWPAGE bit, fooling tlb_flush into
    thinking that this area of the address space was up-to-date and not unmapping
    whatever was covered by the pud.

    This manifested itself as ldconfig on x86_64 complaining about the first
    library it looked at not being a valid ELF file. A config file is mapped at
    0x4000000, as the only thing mapped under its pud, and unmapped. The
    unmapping caused a pud_clear, which, due to this bug, didn't actually unmap
    the config file data on the host. The first library is then mapped at the
    same location, but is not actually mapped on the host because accesses to it
    cause no page faults. As a result, ldconfig sees the old config file data.

    [akpm@linux-foundation.org: coding-style cleanups]
    Signed-off-by: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     

29 Oct, 2007

1 commit

  • Don't undef __i386__/__x86_64__ in uml anymore, make sure that (few) places
    that required adjusting the ifdefs got those.

    Signed-off-by: Al Viro
    Signed-off-by: Linus Torvalds

    Al Viro
     

20 Oct, 2007

2 commits

  • forbid asm/bitops.h direct inclusion

    Because of compile errors that may occur after bit changes if asm/bitops.h is
    included directly without e.g. linux/kernel.h which includes linux/bitops.h,
    forbid direct inclusion of asm/bitops.h. Thanks to Adrian Bunk.

    Signed-off-by: Jiri Slaby
    Cc: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • Nobody uses flush_tlb_pgtables anymore, this patch removes all remaining
    traces of it from all archs.

    Signed-off-by: Benjamin Herrenschmidt
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     

18 Oct, 2007

1 commit

  • .i is an ending used for preprocessed stuff.

    This patch therefore renames assembler include files to .h and guards
    the contents with an #ifdef __ASSEMBLY__.

    [ tglx: arch/x86 adaptation ]

    Signed-off-by: Adrian Bunk
    Signed-off-by: Andi Kleen
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Adrian Bunk
     

17 Oct, 2007

4 commits

  • All asm/ipc.h files do only #include .

    This patch therefore removes all include/asm-*/ipc.h files and moves the
    contents of include/asm-generic/ipc.h to include/linux/ipc.h.

    Signed-off-by: Adrian Bunk
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • Tidy the code affected by the floating point fixes.

    A bunch of unused stuff is gone, including two sigcontext.c files,
    which turned out to be entirely unneeded.

    There are the usual fixes -
    whitespace and style cleanups
    copyright updates
    emacs formatting comments gone
    include cleanups
    adding severities to printks

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

    Jeff Dike
     
  • Fix core dumping of floating point state. ELF_CORE_COPY_FPREGS gets a
    definitions, and as a result, dump_fpu no longer needs to exist. Also,
    elf_fpregset_t needed a real definition.

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

    Jeff Dike
     
  • Handle floating point state better in ptrace. The code now correctly
    distinguishes between PTRACE_[GS]ETFPREGS and PTRACE_[GS]ETFPXREGS. The FPX
    requests get handed off to arch-specific code because that's not generic.

    get_fpregs, set_fpregs, set_fpregs, and set_fpxregs needed real
    implementations.

    Something here exposed a missing include in asm/page.h, which needed
    linux/types.h in order to get gfp_t, so that's fixed here.

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

    Jeff Dike