x86 fixes
Linus,
Please pull the latest x86-fixes-for-linus git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git x86-fixes-for-linus
Thanks,
Ingo
------------------>
Brian Gerst (1):
x86: Clear irqstack thread_info
Shaohua Li (1):
x86: Make relocatable kernel work with new binutils
arch/x86/kernel/irq_32.c | 7 ++----- arch/x86/kernel/vmlinux.lds.S | 11 +++++++++-- 2 files changed, 11 insertions(+), 7 deletions(-)
arch/x86/kernel/irq_32.c +2 -5
@@ -129,8 +129,7 @@ void __cpuinit irq_ctx_init(int cpu) irqctx =page_address (alloc_pages_node (cpu_to_node (cpu),THREAD_FLAGS ,THREAD_ORDER )); - irqctx->tinfo.task =NULL ; - irqctx->tinfo.exec_domain =NULL ; +memset (&irqctx->tinfo,0 ,sizeof (struct thread_info )); irqctx->tinfo.cpu = cpu; irqctx->tinfo.preempt_count =HARDIRQ_OFFSET ; irqctx->tinfo.addr_limit =MAKE_MM_SEG (0 );
@@ -140,10 +139,8 @@ void __cpuinit irq_ctx_init(int cpu) irqctx =page_address (alloc_pages_node (cpu_to_node (cpu),THREAD_FLAGS ,THREAD_ORDER )); - irqctx->tinfo.task =NULL ; - irqctx->tinfo.exec_domain =NULL ; +memset (&irqctx->tinfo,0 ,sizeof (struct thread_info )); irqctx->tinfo.cpu = cpu; - irqctx->tinfo.preempt_count =0 ; irqctx->tinfo.addr_limit =MAKE_MM_SEG (0 );per_cpu (softirq_ctx, cpu) = irqctx;
arch/x86/kernel/vmlinux.lds.S +9 -2
@@ -34,11 +34,9 @@ OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT) #ifdef CONFIG_X86_32 OUTPUT_ARCH(i386) ENTRY(phys_startup_32) -jiffies = jiffies_64; #else OUTPUT_ARCH(i386:x86-64) ENTRY(phys_startup_64) -jiffies_64 = jiffies; #endif #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
@@ -142,6 +140,15 @@ SECTIONS CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) DATA_DATA + /* + * Workaround a binutils (2.20.51.0.12 to 2.21.51.0.3) bug. + * This makes jiffies relocatable in such binutils + */ +#ifdef CONFIG_X86_32 + jiffies = jiffies_64; +#else + jiffies_64 = jiffies; +#endif CONSTRUCTORS /* rarely changed data like cpu maps */