All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <tj@kernel.org>
To: "Yu, Fenghua" <fenghua.yu@intel.com>
Cc: "Luck, Tony" <tony.luck@intel.com>,
	'lkml' <linux-kernel@vger.kernel.org>,
	"'linux-arch@vger.kernel.org'" <linux-arch@vger.kernel.org>,
	"'linux-ia64@vger.kernel.org'" <linux-ia64@vger.kernel.org>
Subject: Re: [RFC PATCH] ia64: convert to dynamic percpu allocator
Date: Wed, 12 Aug 2009 15:56:05 +0900	[thread overview]
Message-ID: <4A826785.4000509@kernel.org> (raw)
In-Reply-To: <A6AD88C3F2289247BE726C37303E1EB8B3A85355@orsmsx505.amr.corp.intel.com>

Yu, Fenghua wrote:
>> Yu, Fenghua wrote:
>>
>>> After cloning from
>>> git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git, kernel
>>> built with CONFIG_DISCONTIGMEM=y boots ok.
>>>
>>> After pulling from review-ia64, kernel built with
>>> CONFIG_DISCONTIGMEM=y can not boot on ia64. After loading kernel and
>>> initrd, system hangs and doesn't show anything on serial port.
>> Heh, I didn't really expect it to work that easily either.  The code
>> builds but is completely untested (I can't test them).  Can you try to
>> track it down?  Serial console should be up and running at that point,
>> no?
>>
>> Thanks.
> 
> IA64 kernel boots hit this in mm/percpu.c
> BUG_ON(ai->unit_size < size_sum);
> ai->unit_size is PERCPU_PAGE_SIZE which is 64K on IA64. size_sum is
> relatively smaller than 64K.
> 
> Will you define PERCPU_DYNAMIC_RESERVE and PERCPU_MODULE_RESERVE as
> PAGE_SIZE or the bigger one between the current definition and
> PAGE_SIZE?

Hmmm...

* Is ai->reserved_size necessary for ia64?  This is necessary if
  there's linking range restriction when loading modules.
  ai->reserved_size guarantees that all static module percpu variables
  are allocated in the first chunk which will be in the linear address
  range and very close to __per_cpu_start.  If ai->reserved_size is
  not set, these areas are likely to end up high in the vmalloc area.

  For example, x86_64 assumes 32bit relocations should be enough to
  link module symbols and thus needs to set reserved_size but x86_32
  can link to the whole 32bit space and thus can leave reserved_size
  at zero.

* After determining the above, we can set ai->dyn_size to be

  ai->dyn_size = min(ai->unit_size - ai->static_size - ai->reserved_size,
		     PERCPU_DYNAMIC_RESERVE);

Would the above work?

> Even with the above PAGE_SIZE changes, the kernel still reports
> warning from 952: WARN_ON(chunk->immutable) and then panic.

Hah... strange.  Can you please attach full boot log?  This is
dicontig configuration, right?

Thanks.

-- 
tejun

WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org>
To: "Yu, Fenghua" <fenghua.yu@intel.com>
Cc: "Luck, Tony" <tony.luck@intel.com>,
	'lkml' <linux-kernel@vger.kernel.org>,
	"'linux-arch@vger.kernel.org'" <linux-arch@vger.kernel.org>,
	"'linux-ia64@vger.kernel.org'" <linux-ia64@vger.kernel.org>
Subject: Re: [RFC PATCH] ia64: convert to dynamic percpu allocator
Date: Wed, 12 Aug 2009 06:56:05 +0000	[thread overview]
Message-ID: <4A826785.4000509@kernel.org> (raw)
In-Reply-To: <A6AD88C3F2289247BE726C37303E1EB8B3A85355@orsmsx505.amr.corp.intel.com>

Yu, Fenghua wrote:
>> Yu, Fenghua wrote:
>>
>>> After cloning from
>>> git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu.git, kernel
>>> built with CONFIG_DISCONTIGMEM=y boots ok.
>>>
>>> After pulling from review-ia64, kernel built with
>>> CONFIG_DISCONTIGMEM=y can not boot on ia64. After loading kernel and
>>> initrd, system hangs and doesn't show anything on serial port.
>> Heh, I didn't really expect it to work that easily either.  The code
>> builds but is completely untested (I can't test them).  Can you try to
>> track it down?  Serial console should be up and running at that point,
>> no?
>>
>> Thanks.
> 
> IA64 kernel boots hit this in mm/percpu.c
> BUG_ON(ai->unit_size < size_sum);
> ai->unit_size is PERCPU_PAGE_SIZE which is 64K on IA64. size_sum is
> relatively smaller than 64K.
> 
> Will you define PERCPU_DYNAMIC_RESERVE and PERCPU_MODULE_RESERVE as
> PAGE_SIZE or the bigger one between the current definition and
> PAGE_SIZE?

Hmmm...

* Is ai->reserved_size necessary for ia64?  This is necessary if
  there's linking range restriction when loading modules.
  ai->reserved_size guarantees that all static module percpu variables
  are allocated in the first chunk which will be in the linear address
  range and very close to __per_cpu_start.  If ai->reserved_size is
  not set, these areas are likely to end up high in the vmalloc area.

  For example, x86_64 assumes 32bit relocations should be enough to
  link module symbols and thus needs to set reserved_size but x86_32
  can link to the whole 32bit space and thus can leave reserved_size
  at zero.

* After determining the above, we can set ai->dyn_size to be

  ai->dyn_size = min(ai->unit_size - ai->static_size - ai->reserved_size,
		     PERCPU_DYNAMIC_RESERVE);

Would the above work?

> Even with the above PAGE_SIZE changes, the kernel still reports
> warning from 952: WARN_ON(chunk->immutable) and then panic.

Hah... strange.  Can you please attach full boot log?  This is
dicontig configuration, right?

Thanks.

-- 
tejun

  reply	other threads:[~2009-08-12  6:56 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-21 12:12 [RFC PATCH] ia64: convert to dynamic percpu allocator Tejun Heo
2009-07-21 12:12 ` Tejun Heo
2009-07-21 18:17 ` Yu, Fenghua
2009-07-21 18:17   ` Yu, Fenghua
2009-07-21 18:17   ` Yu, Fenghua
2009-07-21 22:14   ` Tejun Heo
2009-07-21 22:14     ` Tejun Heo
2009-07-24  5:07     ` Yu, Fenghua
2009-07-24  5:07       ` Yu, Fenghua
2009-07-24  6:45       ` Tejun Heo
2009-07-24  6:45         ` Tejun Heo
2009-08-11 18:12         ` Yu, Fenghua
2009-08-11 18:12           ` Yu, Fenghua
2009-08-12  6:56           ` Tejun Heo [this message]
2009-08-12  6:56             ` Tejun Heo
2009-08-19 14:36             ` Tejun Heo
2009-08-19 14:36               ` 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=4A826785.4000509@kernel.org \
    --to=tj@kernel.org \
    --cc=fenghua.yu@intel.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tony.luck@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.