Commit 404cbbd5 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'x86-fixes-for-linus' of...

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

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  x86: Clear irqstack thread_info
  x86: Make relocatable kernel work with new binutils
parents 5d7e8af3 7b698ea3
...@@ -129,8 +129,7 @@ void __cpuinit irq_ctx_init(int cpu) ...@@ -129,8 +129,7 @@ void __cpuinit irq_ctx_init(int cpu)
irqctx = page_address(alloc_pages_node(cpu_to_node(cpu), irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
THREAD_FLAGS, THREAD_FLAGS,
THREAD_ORDER)); THREAD_ORDER));
irqctx->tinfo.task = NULL; memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
irqctx->tinfo.exec_domain = NULL;
irqctx->tinfo.cpu = cpu; irqctx->tinfo.cpu = cpu;
irqctx->tinfo.preempt_count = HARDIRQ_OFFSET; irqctx->tinfo.preempt_count = HARDIRQ_OFFSET;
irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
...@@ -140,10 +139,8 @@ void __cpuinit irq_ctx_init(int cpu) ...@@ -140,10 +139,8 @@ void __cpuinit irq_ctx_init(int cpu)
irqctx = page_address(alloc_pages_node(cpu_to_node(cpu), irqctx = page_address(alloc_pages_node(cpu_to_node(cpu),
THREAD_FLAGS, THREAD_FLAGS,
THREAD_ORDER)); THREAD_ORDER));
irqctx->tinfo.task = NULL; memset(&irqctx->tinfo, 0, sizeof(struct thread_info));
irqctx->tinfo.exec_domain = NULL;
irqctx->tinfo.cpu = cpu; irqctx->tinfo.cpu = cpu;
irqctx->tinfo.preempt_count = 0;
irqctx->tinfo.addr_limit = MAKE_MM_SEG(0); irqctx->tinfo.addr_limit = MAKE_MM_SEG(0);
per_cpu(softirq_ctx, cpu) = irqctx; per_cpu(softirq_ctx, cpu) = irqctx;
......
...@@ -34,11 +34,9 @@ OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT) ...@@ -34,11 +34,9 @@ OUTPUT_FORMAT(CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT, CONFIG_OUTPUT_FORMAT)
#ifdef CONFIG_X86_32 #ifdef CONFIG_X86_32
OUTPUT_ARCH(i386) OUTPUT_ARCH(i386)
ENTRY(phys_startup_32) ENTRY(phys_startup_32)
jiffies = jiffies_64;
#else #else
OUTPUT_ARCH(i386:x86-64) OUTPUT_ARCH(i386:x86-64)
ENTRY(phys_startup_64) ENTRY(phys_startup_64)
jiffies_64 = jiffies;
#endif #endif
#if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA) #if defined(CONFIG_X86_64) && defined(CONFIG_DEBUG_RODATA)
...@@ -142,6 +140,15 @@ SECTIONS ...@@ -142,6 +140,15 @@ SECTIONS
CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
DATA_DATA 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 CONSTRUCTORS
/* rarely changed data like cpu maps */ /* rarely changed data like cpu maps */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment