]> git.karo-electronics.de Git - linux-beck.git/commitdiff
x86: Use common threadinfo allocator
authorThomas Gleixner <tglx@linutronix.de>
Sat, 5 May 2012 15:05:42 +0000 (15:05 +0000)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 8 May 2012 12:08:44 +0000 (14:08 +0200)
The only difference is the free_thread_info function, which frees
xstate.

Use the new arch_release_task_struct() function instead and switch
over to the core allocator.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/20120505150141.559556763@linutronix.de
Cc: x86@kernel.org
arch/x86/include/asm/boot.h
arch/x86/include/asm/page_32_types.h
arch/x86/include/asm/page_64_types.h
arch/x86/include/asm/thread_info.h
arch/x86/kernel/irq_32.c
arch/x86/kernel/process.c

index 5e1a2eef3e7cadc5333368ffa5be053692e33e3a..b13fe63bdc59c20b9548acd66cbef81b39579320 100644 (file)
@@ -19,7 +19,7 @@
 #ifdef CONFIG_X86_64
 #define MIN_KERNEL_ALIGN_LG2   PMD_SHIFT
 #else
-#define MIN_KERNEL_ALIGN_LG2   (PAGE_SHIFT + THREAD_ORDER)
+#define MIN_KERNEL_ALIGN_LG2   (PAGE_SHIFT + THREAD_SIZE_ORDER)
 #endif
 #define MIN_KERNEL_ALIGN       (_AC(1, UL) << MIN_KERNEL_ALIGN_LG2)
 
index ade619ff9e2a414c918c7ba3c38352ee72a79254..ef17af0134750203f803f5a665a86178abfa2107 100644 (file)
@@ -15,8 +15,8 @@
  */
 #define __PAGE_OFFSET          _AC(CONFIG_PAGE_OFFSET, UL)
 
-#define THREAD_ORDER   1
-#define THREAD_SIZE    (PAGE_SIZE << THREAD_ORDER)
+#define THREAD_SIZE_ORDER      1
+#define THREAD_SIZE            (PAGE_SIZE << THREAD_SIZE_ORDER)
 
 #define STACKFAULT_STACK 0
 #define DOUBLEFAULT_STACK 1
index 7639dbf5d223bda6c0e7537ae44858d6bef805df..320f7bb95f762d1b5383895b7152ff9385000148 100644 (file)
@@ -1,8 +1,8 @@
 #ifndef _ASM_X86_PAGE_64_DEFS_H
 #define _ASM_X86_PAGE_64_DEFS_H
 
-#define THREAD_ORDER   1
-#define THREAD_SIZE  (PAGE_SIZE << THREAD_ORDER)
+#define THREAD_SIZE_ORDER      1
+#define THREAD_SIZE  (PAGE_SIZE << THREAD_SIZE_ORDER)
 #define CURRENT_MASK (~(THREAD_SIZE - 1))
 
 #define EXCEPTION_STACK_ORDER 0
index 8692a166dd4e62652ca26254039b0845b5f39c60..73cfe0d309c9cfc5f84cd9d5da0d9b2b4d57a5cb 100644 (file)
@@ -155,24 +155,6 @@ struct thread_info {
 
 #define PREEMPT_ACTIVE         0x10000000
 
-/* thread information allocation */
-#ifdef CONFIG_DEBUG_STACK_USAGE
-#define THREAD_FLAGS (GFP_KERNEL | __GFP_NOTRACK | __GFP_ZERO)
-#else
-#define THREAD_FLAGS (GFP_KERNEL | __GFP_NOTRACK)
-#endif
-
-#define __HAVE_ARCH_THREAD_INFO_ALLOCATOR
-
-#define alloc_thread_info_node(tsk, node)                              \
-({                                                                     \
-       struct page *page = alloc_pages_node(node, THREAD_FLAGS,        \
-                                            THREAD_ORDER);             \
-       struct thread_info *ret = page ? page_address(page) : NULL;     \
-                                                                       \
-       ret;                                                            \
-})
-
 #ifdef CONFIG_X86_32
 
 #define STACK_WARN     (THREAD_SIZE/8)
@@ -282,7 +264,7 @@ static inline bool is_ia32_task(void)
 
 #ifndef __ASSEMBLY__
 extern void arch_task_cache_init(void);
-extern void free_thread_info(struct thread_info *ti);
 extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src);
+extern void arch_release_task_struct(struct task_struct *tsk);
 #endif
 #endif /* _ASM_X86_THREAD_INFO_H */
index 58b7f27cb3e9049472ea32776c9d691e77612a61..344faf8d0d62188b64d7b9dac28ab8982e9848f5 100644 (file)
@@ -127,8 +127,8 @@ void __cpuinit irq_ctx_init(int cpu)
                return;
 
        irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
-                                              THREAD_FLAGS,
-                                              THREAD_ORDER));
+                                              THREADINFO_GFP,
+                                              THREAD_SIZE_ORDER));
        memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
        irqctx->tinfo.cpu               = cpu;
        irqctx->tinfo.preempt_count     = HARDIRQ_OFFSET;
@@ -137,8 +137,8 @@ void __cpuinit irq_ctx_init(int cpu)
        per_cpu(hardirq_ctx, cpu) = irqctx;
 
        irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
-                                              THREAD_FLAGS,
-                                              THREAD_ORDER));
+                                              THREADINFO_GFP,
+                                              THREAD_SIZE_ORDER));
        memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
        irqctx->tinfo.cpu               = cpu;
        irqctx->tinfo.addr_limit        = MAKE_MM_SEG(0);
index 8215458f6af5a700476f9656c257f5d45ec44e5c..e8173154800d052514249119416ab8af9c0d23b5 100644 (file)
@@ -76,10 +76,9 @@ void free_thread_xstate(struct task_struct *tsk)
        fpu_free(&tsk->thread.fpu);
 }
 
-void free_thread_info(struct thread_info *ti)
+void arch_release_task_struct(struct task_struct *tsk)
 {
-       free_thread_xstate(ti->task);
-       free_pages((unsigned long)ti, THREAD_ORDER);
+       free_thread_xstate(tsk);
 }
 
 void arch_task_cache_init(void)