|
@@ -987,13 +987,21 @@ struct desc_ptr idt_descr = { 256 * 16 - 1, (unsigned long) idt_table };
|
|
|
DEFINE_PER_CPU_FIRST(union irq_stack_union,
|
|
|
irq_stack_union) __aligned(PAGE_SIZE);
|
|
|
|
|
|
-DEFINE_PER_CPU(char *, irq_stack_ptr) =
|
|
|
- init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64;
|
|
|
+/*
|
|
|
+ * The following four percpu variables are hot. Align current_task to
|
|
|
+ * cacheline size such that all four fall in the same cacheline.
|
|
|
+ */
|
|
|
+DEFINE_PER_CPU(struct task_struct *, current_task) ____cacheline_aligned =
|
|
|
+ &init_task;
|
|
|
+EXPORT_PER_CPU_SYMBOL(current_task);
|
|
|
|
|
|
DEFINE_PER_CPU(unsigned long, kernel_stack) =
|
|
|
(unsigned long)&init_thread_union - KERNEL_STACK_OFFSET + THREAD_SIZE;
|
|
|
EXPORT_PER_CPU_SYMBOL(kernel_stack);
|
|
|
|
|
|
+DEFINE_PER_CPU(char *, irq_stack_ptr) =
|
|
|
+ init_per_cpu_var(irq_stack_union.irq_stack) + IRQ_STACK_SIZE - 64;
|
|
|
+
|
|
|
DEFINE_PER_CPU(unsigned int, irq_count) = -1;
|
|
|
|
|
|
/*
|
|
@@ -1041,6 +1049,9 @@ DEFINE_PER_CPU(struct orig_ist, orig_ist);
|
|
|
|
|
|
#else /* CONFIG_X86_64 */
|
|
|
|
|
|
+DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;
|
|
|
+EXPORT_PER_CPU_SYMBOL(current_task);
|
|
|
+
|
|
|
#ifdef CONFIG_CC_STACKPROTECTOR
|
|
|
DEFINE_PER_CPU(unsigned long, stack_canary);
|
|
|
#endif
|