linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: David Howells <dhowells@redhat.com>
Cc: torvalds@osdl.org, akpm@linux-foundation.org,
	linux-am33-list@redhat.com, linux-kernel@vger.kernel.org,
	Akira Takeuchi <takeuchi.akr@jp.panasonic.com>,
	Mark Salter <msalter@redhat.com>
Subject: Re: [PATCH] MN10300: Fix the PERCPU() alignment to allow for workqueues
Date: Tue, 26 Oct 2010 14:14:39 +0200	[thread overview]
Message-ID: <4CC6C62F.1000804@kernel.org> (raw)
In-Reply-To: <12101.1288088542@redhat.com>

Hello,

On 10/26/2010 12:22 PM, David Howells wrote:
>> Can you please double check the bug doesn't trigger with the section
>> alignment updated?
> 
> It can be made to trigger consistently without the change, and simply updating
> that alignment makes it go away.  It seems unlikely that it's affecting
> subsequent stuff in the final link since the PERCPU() is immediately followed
> by an alignment to PAGE_SIZE:
> 
> 	PERCPU(PAGE_SIZE)
> 	. = ALIGN(PAGE_SIZE);
> 
> I've attached the kernel log below.  CPUID is 0 indicating this happened on
> CPU 0 (the boot CPU).

Ah, I see now.  The actual areas are properly aligned but the percpu
address is determined as offset from the percpu output section base so
the percpu pointers in the percpu address space end up misaligned with
the actual kernel addresses and the code in workqueue checks the
address in percpu AS, so, yeap, it's caused by the misalignment of the
percpu section.  Except for triggering BUG_ON(), it shouldn't cause a
real issue tho as work_data points to the translated addresses in the
kernel AS for specific CPU.  Needs to be fixed anyways.

>> That said, I think it might be better to just remove the alignment parameter
>> from the macro and force align to PAGE_SIZE.
> 
> That's not necessarily good.  Two arches to note:
> 
> 	arch/x86/kernel/vmlinux.lds.S:  PERCPU(THREAD_SIZE)

I don't think the current percpu allocator honors alignment larger
than PAGE_SIZE no matter how large the alignment for the percpu output
section is.  I'll look into it deeper but I think we might just have
been lucky and the alignment somehow didn't bite us yet.  The only
user of THREAD_SIZE mask at this point seems to be cpu_init().  Maybe
we can remove this requirement.  I'll look into it.

> which may be bigger than PAGE_SIZE and:
> 
> 	arch/frv/kernel/vmlinux.lds.S:  PERCPU(4096)
> 
> FRV's page size is 16KB, so on that we really don't want it to be PAGE_SIZE.

Why not?  It's in the init section which will be freed anyway and with
the kernel image compression it's not even gonna add any noticeable
amount to the kernel image size.  There isn't any benefit in using
anything smaller than PAGE_SIZE for alignment.  Also, percpu allocator
guarantees alignment requirement upto PAGE_SIZE is honored.  If the
output section uses smaller alignment, the percpu AS will end up being
misaligned.

Thanks.

-- 
tejun

  reply	other threads:[~2010-10-26 12:15 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-10-25 22:41 [PATCH] MN10300: Fix the PERCPU() alignment to allow for workqueues David Howells
2010-10-26  9:10 ` Tejun Heo
2010-10-26 10:22 ` David Howells
2010-10-26 12:14   ` Tejun Heo [this message]
2010-10-26 12:27     ` Tejun Heo
2010-10-26 12:45       ` [PATCH] x86, percpu: revert commit fe8e0c25 Tejun Heo
2010-10-26 13:25         ` Ingo Molnar
2010-10-26 13:34           ` Tejun Heo
2010-10-26 13:49             ` Brian Gerst
2010-10-26 15:08               ` Linus Torvalds
2010-10-27  5:43                 ` [PATCH] x86-32: Allocate irq stacks seperate from percpu area Brian Gerst
2010-10-27  6:07                   ` Eric Dumazet
2010-10-27  9:57                     ` Peter Zijlstra
2010-10-27 13:33                       ` Eric Dumazet
2010-10-27 13:42                         ` Tejun Heo
2010-10-27 13:57                           ` Eric Dumazet
2010-10-27 14:00                             ` Tejun Heo
2010-10-27 14:24                               ` Eric Dumazet
2010-10-27 14:39                                 ` Tejun Heo
2010-10-27 14:39                                 ` Eric Dumazet
2010-10-27 14:43                                   ` Tejun Heo
2010-10-27 15:21                                     ` Eric Dumazet
2010-10-27 15:35                                       ` Tejun Heo
2010-10-27 16:07                                         ` Eric Dumazet
2010-10-27 17:33                                           ` [PATCH] numa: fix slab_node(MPOL_BIND) Eric Dumazet
2010-10-28 15:59                                             ` Linus Torvalds
2010-10-28 16:27                                               ` Eric Dumazet
2010-10-28 16:45                                               ` Mel Gorman
2010-10-28 16:55                                               ` Christoph Lameter
2010-10-28 21:07                                                 ` Andrew Morton
2010-10-29 14:55                                                   ` Christoph Lameter
2010-10-27 20:55                                         ` [PATCH] x86-32: Allocate irq stacks seperate from percpu area Eric Dumazet
2010-10-28 12:01                                           ` Tejun Heo
2010-10-28 12:30                                             ` Eric Dumazet
2010-10-28 14:40                       ` [PATCH] x86-32: NUMA irq stacks allocations Eric Dumazet
2010-10-29  6:43                         ` [tip:x86/urgent] x86-32: Restore irq stacks NUMA-aware allocations tip-bot for Eric Dumazet
2010-10-29 18:32                           ` Peter Zijlstra
2010-10-29 20:09                             ` Cyrill Gorcunov
2010-10-29 20:28                             ` Cyrill Gorcunov
2010-10-29 20:53                               ` Eric Dumazet
2010-10-29 20:59                                 ` Cyrill Gorcunov
2010-10-29 20:58                               ` Eric Dumazet
2010-10-29 21:21                                 ` Cyrill Gorcunov
2010-10-27 15:19                   ` [PATCH] x86-32: Allocate irq stacks seperate from percpu area Linus Torvalds
2010-10-27 15:30                     ` Ingo Molnar
2010-10-27 15:33                       ` Ingo Molnar
2010-10-27 15:40                         ` Tejun Heo
2010-10-27 15:43                           ` Ingo Molnar
2010-10-27 16:03                   ` [tip:x86/urgent] " tip-bot for Brian Gerst
2010-10-27 16:04                   ` [tip:x86/urgent] percpu: Remove the multi-page alignment facility tip-bot for Ingo Molnar
2010-10-26 14:06         ` [RFC PATCH] percpu: always align percpu output section to PAGE_SIZE Tejun Heo
2011-03-24  6:46           ` [Uclinux-dist-devel] " Mike Frysinger
2011-03-24  8:25             ` Tejun Heo
2011-03-24  8:51               ` Tejun Heo
2011-03-24 13:46                 ` Mike Frysinger
2011-03-24 17:51                   ` Tejun Heo
2011-03-24  8:54           ` [PATCH UPDATED] " Tejun Heo
2010-10-26 14:50   ` [PATCH] MN10300: Fix the PERCPU() alignment to allow for workqueues David Howells
2010-10-26 14:56     ` Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CC6C62F.1000804@kernel.org \
    --to=tj@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=linux-am33-list@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=msalter@redhat.com \
    --cc=takeuchi.akr@jp.panasonic.com \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).