linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] mm: setup pageblock_order before it's used by sparse
       [not found]     ` <CAE9FiQXpeGFfWvUHHW_GjgTg+4Op7agsht5coZbcmn2W=f9bqw@mail.gmail.com>
@ 2012-07-03  2:54       ` Jiang Liu
  2012-07-03  3:25         ` Yinghai Lu
  0 siblings, 1 reply; 5+ messages in thread
From: Jiang Liu @ 2012-07-03  2:54 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tony Luck, linux-mm, linux-kernel, stable, Minchan Kim,
	Keping Chen, Mel Gorman, KOSAKI Motohiro, David Rientjes,
	Xishi Qiu, Andrew Morton, David Gibson, linuxppc-dev,
	KAMEZAWA Hiroyuki, Jiang Liu

On 2012-7-3 4:43, Yinghai Lu wrote:
> On Sun, Jul 1, 2012 at 7:01 PM, Jiang Liu <jiang.liu@huawei.com> wrote:
>> Hi Yinghai,
>>         The patch fails compilation as below:
>> mm/page_alloc.c:151: error: initializer element is not constant
>> mm/page_alloc.c:151: error: expected ‘,’ or ‘;’ before ‘__attribute__’
>>
>> On IA64, HUGETLB_PAGE_ORDER has dependency on variable hpage_shift.
>> # define HUGETLB_PAGE_ORDER        (HPAGE_SHIFT - PAGE_SHIFT)
>> # define HPAGE_SHIFT               hpage_shift
>>
>> And hpage_shift could be changed by early parameter "hugepagesz".
>> So seems will still need to keep function set_pageblock_order().
> 
> ah,  then use use _DEFAULT instead and later could update that in earlyparam.
> 
> So attached -v2 should  work.
Hi Yinghai,

I'm afraid the v2 will break powerpc. Currently only IA64 and PowerPC
supports variable hugetlb size. 

HPAGE_SHIFT is a variable default to 0 on powerpc. But seems PowerPC 
is doing something wrong here, according to it's mm initialization 
sequence as below:
start_kernel()
	setup_arch()
		paging_init()
			free_area_init_node()
				set_pageblock_order()
					refer to HPAGE_SHIFT (still 0)
	init_rest()	
		do_initcalls()
			hugetlbpage_init()
				setup HPAGE_SHIFT
That means pageblock_order is always set to "MAX_ORDER - 1", not sure
whether this is intended. And it has the same issue as IA64 of wasting
memory if CONFIG_SPARSE is enabled.

So it would be better to keep function set_pageblock_order(), it will
fix the memory wasting on both IA64 and PowerPC.

Thanks!
Gerry

> 
> Thanks
> 
> Yinghai

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm: setup pageblock_order before it's used by sparse
  2012-07-03  2:54       ` [PATCH] mm: setup pageblock_order before it's used by sparse Jiang Liu
@ 2012-07-03  3:25         ` Yinghai Lu
  2012-07-03  3:29           ` Jiang Liu
  2012-07-18  7:15           ` Benjamin Herrenschmidt
  0 siblings, 2 replies; 5+ messages in thread
From: Yinghai Lu @ 2012-07-03  3:25 UTC (permalink / raw)
  To: Jiang Liu, Benjamin Herrenschmidt
  Cc: Tony Luck, linux-mm, linux-kernel, stable, Minchan Kim,
	Keping Chen, Mel Gorman, KOSAKI Motohiro, David Rientjes,
	Xishi Qiu, Andrew Morton, David Gibson, linuxppc-dev,
	KAMEZAWA Hiroyuki, Jiang Liu

On Mon, Jul 2, 2012 at 7:54 PM, Jiang Liu <jiang.liu@huawei.com> wrote:
> On 2012-7-3 4:43, Yinghai Lu wrote:
>> On Sun, Jul 1, 2012 at 7:01 PM, Jiang Liu <jiang.liu@huawei.com> wrote:
>>> Hi Yinghai,
>>>         The patch fails compilation as below:
>>> mm/page_alloc.c:151: error: initializer element is not constant
>>> mm/page_alloc.c:151: error: expected =91,=92 or =91;=92 before =91__att=
ribute__=92
>>>
>>> On IA64, HUGETLB_PAGE_ORDER has dependency on variable hpage_shift.
>>> # define HUGETLB_PAGE_ORDER        (HPAGE_SHIFT - PAGE_SHIFT)
>>> # define HPAGE_SHIFT               hpage_shift
>>>
>>> And hpage_shift could be changed by early parameter "hugepagesz".
>>> So seems will still need to keep function set_pageblock_order().
>>
>> ah,  then use use _DEFAULT instead and later could update that in earlyp=
aram.
>>
>> So attached -v2 should  work.
> Hi Yinghai,
>
> I'm afraid the v2 will break powerpc. Currently only IA64 and PowerPC
> supports variable hugetlb size.
>
> HPAGE_SHIFT is a variable default to 0 on powerpc. But seems PowerPC
> is doing something wrong here, according to it's mm initialization
> sequence as below:
> start_kernel()
>         setup_arch()
>                 paging_init()
>                         free_area_init_node()
>                                 set_pageblock_order()
>                                         refer to HPAGE_SHIFT (still 0)
>         init_rest()
>                 do_initcalls()
>                         hugetlbpage_init()
>                                 setup HPAGE_SHIFT
> That means pageblock_order is always set to "MAX_ORDER - 1", not sure
> whether this is intended. And it has the same issue as IA64 of wasting
> memory if CONFIG_SPARSE is enabled.

adding BenH, need to know if it is powerpc intended.

>
> So it would be better to keep function set_pageblock_order(), it will
> fix the memory wasting on both IA64 and PowerPC.

Should setup pageblock_order as early as possible to avoid confusing.

Thanks

Yinghai

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm: setup pageblock_order before it's used by sparse
  2012-07-03  3:25         ` Yinghai Lu
@ 2012-07-03  3:29           ` Jiang Liu
  2012-07-18  7:17             ` Benjamin Herrenschmidt
  2012-07-18  7:15           ` Benjamin Herrenschmidt
  1 sibling, 1 reply; 5+ messages in thread
From: Jiang Liu @ 2012-07-03  3:29 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tony Luck, linux-mm, linux-kernel, stable, Minchan Kim,
	Keping Chen, Mel Gorman, KOSAKI Motohiro, David Rientjes,
	Xishi Qiu, Andrew Morton, David Gibson, linuxppc-dev,
	KAMEZAWA Hiroyuki, Jiang Liu

>> Hi Yinghai,
>>
>> I'm afraid the v2 will break powerpc. Currently only IA64 and PowerPC
>> supports variable hugetlb size.
>>
>> HPAGE_SHIFT is a variable default to 0 on powerpc. But seems PowerPC
>> is doing something wrong here, according to it's mm initialization
>> sequence as below:
>> start_kernel()
>>         setup_arch()
>>                 paging_init()
>>                         free_area_init_node()
>>                                 set_pageblock_order()
>>                                         refer to HPAGE_SHIFT (still 0)
>>         init_rest()
>>                 do_initcalls()
>>                         hugetlbpage_init()
>>                                 setup HPAGE_SHIFT
>> That means pageblock_order is always set to "MAX_ORDER - 1", not sure
>> whether this is intended. And it has the same issue as IA64 of wasting
>> memory if CONFIG_SPARSE is enabled.
> 
> adding BenH, need to know if it is powerpc intended.
> 
>>
>> So it would be better to keep function set_pageblock_order(), it will
>> fix the memory wasting on both IA64 and PowerPC.
> 
> Should setup pageblock_order as early as possible to avoid confusing.
OK, waiting response from PPC. If we could find some ways to set HPAGE_SIZE
early on PPC too, we can setup pageblock_order in arch instead of page_alloc.c
as early as possible.

Thanks!
Gerry

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm: setup pageblock_order before it's used by sparse
  2012-07-03  3:25         ` Yinghai Lu
  2012-07-03  3:29           ` Jiang Liu
@ 2012-07-18  7:15           ` Benjamin Herrenschmidt
  1 sibling, 0 replies; 5+ messages in thread
From: Benjamin Herrenschmidt @ 2012-07-18  7:15 UTC (permalink / raw)
  To: Yinghai Lu
  Cc: Tony Luck, Jiang Liu, linux-mm, linux-kernel, stable, Minchan Kim,
	Keping Chen, Mel Gorman, KOSAKI Motohiro, David Rientjes,
	Xishi Qiu, Andrew Morton, David Gibson, linuxppc-dev,
	KAMEZAWA Hiroyuki, Jiang Liu

On Mon, 2012-07-02 at 20:25 -0700, Yinghai Lu wrote:
> > That means pageblock_order is always set to "MAX_ORDER - 1", not sure
> > whether this is intended. And it has the same issue as IA64 of wasting
> > memory if CONFIG_SPARSE is enabled.
> 
> adding BenH, need to know if it is powerpc intended.
> 
> >
> > So it would be better to keep function set_pageblock_order(), it will
> > fix the memory wasting on both IA64 and PowerPC.
> 
> Should setup pageblock_order as early as possible to avoid confusing.

Hrm, HPAGE_SHIFT is initially 0 because we only know at runtime what
huge page sizes are going to be supported (if any).

The business with pageblock_order is new to me and does look bogus today
indeed. But not a huge deal either. Our MAX_ORDER is typically 9 (64K
pages) or 13 (4K pages) and our standard huge page size is generally 16M
so there isn't a big difference here.

Still, maybe something worth looking into...

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mm: setup pageblock_order before it's used by sparse
  2012-07-03  3:29           ` Jiang Liu
@ 2012-07-18  7:17             ` Benjamin Herrenschmidt
  0 siblings, 0 replies; 5+ messages in thread
From: Benjamin Herrenschmidt @ 2012-07-18  7:17 UTC (permalink / raw)
  To: Jiang Liu
  Cc: Tony Luck, linux-mm, linuxppc-dev, linux-kernel, stable,
	Minchan Kim, Keping Chen, Mel Gorman, KOSAKI Motohiro,
	David Rientjes, Xishi Qiu, Andrew Morton, David Gibson,
	Yinghai Lu, KAMEZAWA Hiroyuki, Jiang Liu

On Tue, 2012-07-03 at 11:29 +0800, Jiang Liu wrote:
> OK, waiting response from PPC. If we could find some ways to set
> HPAGE_SIZE
> early on PPC too, we can setup pageblock_order in arch instead of
> page_alloc.c
> as early as possible. 

We could split our hugetlbpage_init() into two, with the bit that sets
HPAGE_SHIFT called earlier if it's really an issue.

Cheers,
Ben.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-07-18  7:17 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <1341047274-5616-1-git-send-email-jiang.liu@huawei.com>
     [not found] ` <CAE9FiQWzfLkeQs8O22MUEmuGUx=jPi5s=wZt2fcpFMcwrzt3uA@mail.gmail.com>
     [not found]   ` <4FF100F0.9050501@huawei.com>
     [not found]     ` <CAE9FiQXpeGFfWvUHHW_GjgTg+4Op7agsht5coZbcmn2W=f9bqw@mail.gmail.com>
2012-07-03  2:54       ` [PATCH] mm: setup pageblock_order before it's used by sparse Jiang Liu
2012-07-03  3:25         ` Yinghai Lu
2012-07-03  3:29           ` Jiang Liu
2012-07-18  7:17             ` Benjamin Herrenschmidt
2012-07-18  7:15           ` Benjamin Herrenschmidt

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).