Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec0d7f18 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull fpu state cleanups from Ingo Molnar:
 "This tree streamlines further aspects of FPU handling by eliminating
  the prepare_to_copy() complication and moving that logic to
  arch_dup_task_struct().

  It also fixes the FPU dumps in threaded core dumps, removes and old
  (and now invalid) assumption plus micro-optimizes the exit path by
  avoiding an FPU save for dead tasks."

Fixed up trivial add-add conflict in arch/sh/kernel/process.c that came
in because we now do the FPU handling in arch_dup_task_struct() rather
than the legacy (and now gone) prepare_to_copy().

* 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  x86, fpu: drop the fpu state during thread exit
  x86, xsave: remove thread_has_fpu() bug check in __sanitize_i387_state()
  coredump: ensure the fpu state is flushed for proper multi-threaded core dump
  fork: move the real prepare_to_copy() users to arch_dup_task_struct()
parents 269af9a1 1dcc8d7b
Loading
Loading
Loading
Loading
+0 −3
Original line number Original line Diff line number Diff line
@@ -49,9 +49,6 @@ extern void start_thread(struct pt_regs *, unsigned long, unsigned long);
/* Free all resources held by a thread. */
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
extern void release_thread(struct task_struct *);


/* Prepare to copy thread state - unlazy all lazy status */
#define prepare_to_copy(tsk)	do { } while (0)

/* Create a kernel thread without removing it from tasklists.  */
/* Create a kernel thread without removing it from tasklists.  */
extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
extern long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);


+0 −3
Original line number Original line Diff line number Diff line
@@ -77,9 +77,6 @@ struct task_struct;
/* Free all resources held by a thread. */
/* Free all resources held by a thread. */
extern void release_thread(struct task_struct *);
extern void release_thread(struct task_struct *);


/* Prepare to copy thread state - unlazy all lazy status */
#define prepare_to_copy(tsk)	do { } while (0)

unsigned long get_wchan(struct task_struct *p);
unsigned long get_wchan(struct task_struct *p);


#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
+0 −3
Original line number Original line Diff line number Diff line
@@ -145,9 +145,6 @@ extern void release_thread(struct task_struct *);
/* Create a kernel thread without removing it from tasklists */
/* Create a kernel thread without removing it from tasklists */
extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);


/* Prepare to copy thread state - unlazy all lazy status */
#define prepare_to_copy(tsk) do { } while(0)

/* Return saved PC of a blocked thread */
/* Return saved PC of a blocked thread */
#define thread_saved_pc(tsk)    ((tsk)->thread.cpu_context.pc)
#define thread_saved_pc(tsk)    ((tsk)->thread.cpu_context.pc)


+0 −2
Original line number Original line Diff line number Diff line
@@ -75,8 +75,6 @@ static inline void release_thread(struct task_struct *dead_task)
{
{
}
}


#define prepare_to_copy(tsk)	do { } while (0)

extern int kernel_thread(int (*fn) (void *), void *arg, unsigned long flags);
extern int kernel_thread(int (*fn) (void *), void *arg, unsigned long flags);


/*
/*
+0 −3
Original line number Original line Diff line number Diff line
@@ -92,9 +92,6 @@ static inline void release_thread(struct task_struct *dead_task)
{
{
}
}


/* Prepare to copy thread state - unlazy all lazy status */
#define prepare_to_copy(tsk)	do { } while (0)

extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
extern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);


#define copy_segments(tsk, mm)		do { } while (0)
#define copy_segments(tsk, mm)		do { } while (0)
Loading