Messages in this thread | | | From | KOSAKI Motohiro <> | Subject | Re: mmotm 2009-09-03-16-35 uploaded | Date | Thu, 10 Sep 2009 09:02:59 +0900 (JST) |
| |
> /me slaps self > > I think I see the problem. Can you try this patch please?
After the patch apply, the system boot successful.
Thanks, Mel!
Andrew, Could you please pick this patch?
> --- > Calculate the number of pageblocks within a range properly > > Patch > page-allocator-change-migratetype-for-all-pageblocks-within-a-high-order-page-during-__rmqueue_fallback > is meant to change the pageblock ownership of each pageblock within a > given range. This is necessary when the buddy to be split is of higher > order than the pageblock_order. However, the calculation was wrong > leading to crashes on ia-64 and slightly incorrect behaviour on x86. > This patch corrects the calculation. > > Signed-off-by: Mel Gorman <mel@csn.ul.ie> > --- > mm/page_alloc.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/page_alloc.c b/mm/page_alloc.c > index 4e0ec94..4326280 100644 > --- a/mm/page_alloc.c > +++ b/mm/page_alloc.c > @@ -830,7 +830,7 @@ static int move_freepages_block(struct zone *zone, struct page *page, > static void change_pageblock_range(struct page *pageblock_page, > int start_order, int migratetype) > { > - int nr_pageblocks = 1 << (MAX_ORDER - 1 - start_order); > + int nr_pageblocks = 1 << (start_order - pageblock_order); > > while (nr_pageblocks--) { > set_pageblock_migratetype(pageblock_page, migratetype);
| |