Messages in this thread Patch in this message | | | From | "Rafael J. Wysocki" <> | Subject | Re: Fw: 2.6.9-rc1-mm4: swsusp + AMD64 = LOCKUP on CPU0 | Date | Wed, 8 Sep 2004 16:52:43 +0200 |
| |
On Wednesday 08 of September 2004 15:00, Andi Kleen wrote: > On Wed, Sep 08, 2004 at 02:51:55PM +0200, Rafael J. Wysocki wrote: > > On Wednesday 08 of September 2004 14:01, Andi Kleen wrote: > > > Pavel Machek <pavel@ucw.cz> writes: > > > > > > > Hi! > > > > > > > > > One for you guys on lkml ;) > > > > > > > > It simply takes long to count pages (O(n^2) algorithm), so watchdog > > > > triggers. I have better algorithm locally, but would like merge to > > > > linus first. (I posted it to lkml some days ago, I can attach the > > > > bigdiff). > > > > > > > > Just disable the watchdog. Suspend *is* going to take time with > > > > disabled interrupts. > > > > > > > > > As a short term workaround you could also add touch_nmi_watchdog()s > > > in that loop. > > > > You mean like that: > > I doubt this will help, because the number of zones is quite small. > > Better check every N pages, e.g. N=100
I've done something like that:
--- swsusp.c.orig 2004-09-08 14:30:29.000000000 +0200 +++ swsusp.c 2004-09-08 15:56:55.000000000 +0200 @@ -38,6 +38,7 @@ #include <linux/module.h> #include <linux/mm.h> +#include <linux/nmi.h> #include <linux/suspend.h> #include <linux/smp_lock.h> #include <linux/file.h> @@ -556,14 +557,19 @@ { struct zone *zone; unsigned long zone_pfn; + unsigned nmi_cnt = 0; nr_copy_pages = 0; for_each_zone(zone) { - if (!is_highmem(zone)) { - for (zone_pfn = 0; zone_pfn < zone->spanned_pages; ++zone_pfn) + if (!is_highmem(zone)) + for (zone_pfn = 0; zone_pfn < zone->spanned_pages; ++zone_pfn) { nr_copy_pages += saveable(zone, &zone_pfn); - } + if (nmi_cnt++ >= 100) { + touch_nmi_watchdog(); + nmi_cnt = 0; + } + } } } and it works, but it seems to me that something similar is necessary for resuming (I get an NMI watchdog report if it's not disabled). Greets, RJW
-- - Would you tell me, please, which way I ought to go from here? - That depends a good deal on where you want to get to. -- Lewis Carroll "Alice's Adventures in Wonderland" - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |