lkml.org 
[lkml]   [2004]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
SubjectRe: Fw: 2.6.9-rc1-mm4: swsusp + AMD64 = LOCKUP on CPU0
Date
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/

\
 
 \ /
  Last update: 2005-03-22 14:06    [W:0.035 / U:0.292 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site