lkml.org 
[lkml]   [2009]   [Oct]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Commit 34d76c41 causes linker errors on ia64 with NR_CPUS=4096
On 10/20/2009 02:35 AM, Ingo Molnar wrote:
>
> * Jiri Kosina <jkosina@suse.cz> wrote:
>
>> On Tue, 20 Oct 2009, Ingo Molnar wrote:
>>
>>>> Commit 34d76c41 introduced percpu array update_shares_data, size of which
>>>> being proportional to NR_CPUS. Unfortunately this blows up ia64 for large
>>>> NR_CPUS configuration, as ia64 allows only 64k for .percpu section.
>>>>
>>>> Fix this by allocating this array dynamically and keep only pointer to it
>>>> percpu.
>>>>
>>>> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
>>>> ---
>>>> kernel/sched.c | 15 +++++++--------
>>>> 1 files changed, 7 insertions(+), 8 deletions(-)
>>>
>>> Seems like an IA64 bug to me.
>>
>> IA64 guys actually use that as some kind of optimization for fast
>> access to the percpu data in their pagefault handler, as far as I
>> know.
>
> Still looks like a bug if it causes a breakage (linker error) on IA64,
> and if the 'fix' (i'd call it a workaround) causes a (small but nonzero)
> performance regression on other architectures.

The linker error isn't a bug, it's enforcement. The ia64 linker script
explicitly rewinds the location pointer back to the start of
.data.percpu + 64k to start the .data section to cause the error if
.data.percpu is larger than 64k.

-Jeff

--
Jeff Mahoney
SUSE Labs


\
 
 \ /
  Last update: 2009-10-20 15:11    [W:0.109 / U:0.360 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site