From patchwork Sat Feb 7 07:23:52 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Miller X-Patchwork-Id: 22459 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 4F5F5DDDE3 for ; Sat, 7 Feb 2009 18:23:58 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753204AbZBGHX4 (ORCPT ); Sat, 7 Feb 2009 02:23:56 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753207AbZBGHX4 (ORCPT ); Sat, 7 Feb 2009 02:23:56 -0500 Received: from 74-93-104-97-Washington.hfc.comcastbusiness.net ([74.93.104.97]:53739 "EHLO sunset.davemloft.net" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1753204AbZBGHX4 (ORCPT ); Sat, 7 Feb 2009 02:23:56 -0500 Received: from localhost (localhost [127.0.0.1]) by sunset.davemloft.net (Postfix) with ESMTP id 68B82C8D8DA; Fri, 6 Feb 2009 23:23:52 -0800 (PST) Date: Fri, 06 Feb 2009 23:23:52 -0800 (PST) Message-Id: <20090206.232352.74134222.davem@davemloft.net> To: Hermann.Lauer@iwr.uni-heidelberg.de Cc: sparclinux@vger.kernel.org Subject: Re: Sunfire V880 and 480R 2.6.27.x startup hangs From: David Miller In-Reply-To: <20090206102825.GA6446@lemon.iwr.uni-heidelberg.de> References: <20090203212632.GA5514@lemon.iwr.uni-heidelberg.de> <20090203.151918.254599330.davem@davemloft.net> <20090206102825.GA6446@lemon.iwr.uni-heidelberg.de> X-Mailer: Mew version 6.1 on Emacs 22.1 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Sender: sparclinux-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: sparclinux@vger.kernel.org From: Hermann Lauer Date: Fri, 6 Feb 2009 11:28:25 +0100 > I bisected meanwhile the complete versions from 2.6.26 to 2.6.27 series: > > <2.6.26.8 boots > 2.6.27-rc1 compile fails (see below) > >2.6.27-rc2 hangs at boot > > Any chance that one of the last memory related patches will fix > this problem ? Thanks. It is possible. Here are two seperate things you can try: 1) Boot with "mem=512m" on the kernel boot command line. 2) Try booting with the patch below. Thanks! --- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 51daae5..c9ab51a 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -707,7 +708,26 @@ static int move_freepages(struct zone *zone, * Remove at a later date when no bug reports exist related to * grouping pages by mobility */ - BUG_ON(page_zone(start_page) != page_zone(end_page)); + if (unlikely(page_zone(start_page) != page_zone(end_page))) { + printk(KERN_ERR "move_freepages: Bogus zones: " + "start_page[%p] end_page[%p] zone[%p]\n", + start_page, end_page, zone); + printk(KERN_ERR "move_freepages: " + "start_zone[%p] end_zone[%p]\n", + page_zone(start_page), page_zone(end_page)); + printk(KERN_ERR "move_freepages: " + "start_pfn[0x%lx] end_pfn[0x%lx]\n", + page_to_pfn(start_page), page_to_pfn(end_page)); + printk(KERN_ERR "move_freepages: " + "start_nid[%d] end_nid[%d]\n", + page_to_nid(start_page), page_to_nid(end_page)); + spin_unlock(&zone->lock); + local_irq_enable(); + while (1) { + barrier(); + touch_nmi_watchdog(); + } + } #endif for (page = start_page; page <= end_page;) { @@ -2583,6 +2603,7 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, unsigned long end_pfn = start_pfn + size; unsigned long pfn; struct zone *z; + int tmp; z = &NODE_DATA(nid)->node_zones[zone]; for (pfn = start_pfn; pfn < end_pfn; pfn++) { @@ -2594,7 +2615,8 @@ void __meminit memmap_init_zone(unsigned long size, int nid, unsigned long zone, if (context == MEMMAP_EARLY) { if (!early_pfn_valid(pfn)) continue; - if (!early_pfn_in_nid(pfn, nid)) + tmp = early_pfn_to_nid(pfn); + if (tmp > -1 && tmp != nid) continue; } page = pfn_to_page(pfn); @@ -2961,8 +2983,9 @@ int __meminit early_pfn_to_nid(unsigned long pfn) return early_node_map[i].nid; } - return 0; + return -1; } + #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ /* Basic iterator support to walk early_node_map[] */