All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russ Anderson <rja@sgi.com>
To: Pekka J Enberg <penberg@cs.helsinki.fi>
Cc: linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Tony Luck <tony.luck@intel.com>,
	Christoph Lameter <clameter@sgi.com>,
	gregkh@suse.de
Subject: Re: [PATCH 3/3] ia64: Call migration code on correctable errors v2
Date: Fri, 02 May 2008 17:30:17 +0000	[thread overview]
Message-ID: <20080502173017.GF7246@sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0805021945001.3341@sbz-30.cs.Helsinki.FI>

On Fri, May 02, 2008 at 07:57:44PM +0300, Pekka J Enberg wrote:
> Hi Russ,
> 
> On Fri, 2 May 2008, Russ Anderson wrote:
> > > I think sparse and checkpatch would have caught most of these but here goes:
> > 
> > I did run checkpatch.pl.  The two warnings were a false positive and
> > the other I let slide.  I'll make the rest of your suggested changes.
> > 
> > WARNING: consider using strict_strtoul in preference to simple_strtoul
> > #340: FILE: arch/ia64/kernel/cpe_migrate.c:301:
> > +       opt = simple_strtoul(optstr, NULL, 0);
> 
> Why do you think this is a false positive?

The false positive is:
---
WARNING: Use #include <linux/mca.h> instead of <asm/mca.h>
#77: FILE: arch/ia64/kernel/cpe_migrate.c:40:
+#include <asm/mca.h>
---

linux/mca.h is a different file than asm-ia64/mca.h, so using
<linux/mca.h> instead of <asm/mca.h> will cause build problems.


>                       We just converted SLUB over to 
> use strict_stroul() as suggested by Andrew.

I'll use strict_stroul().

> > > >  +       if (cpe_paddr[cpe_head] = 0) {
> > > >  +               cpe_paddr[cpe_head] = paddr;
> > > >  +               cpe_node[cpe_head] = node;
> > > >  +
> > > >  +               if (++cpe_head >= CE_HISTORY_LENGTH)
> > > >  +                       cpe_head = 0;
> > > >  +       }
> > > >  +
> > > >  +       if (!work_scheduled) {
> > > >  +               work_scheduled = 1;
> > > >  +               schedule_work(&cpe_enable_work);
> > > 
> > > So you must not schedule cpe_enable_work if it's already in progress. Why?
> > 
> > If there is already a worker thread scheduled, it will process all
> > the addresses on the queue, including new entries.  So all ce_setup_migrate()
> > needs to do is add the new entry to the queue.  The CPE interrupt can come in faster
> > than the worker thread can migrate the pages.  Scheduling another worker 
> > thread on each CPE interrupt when there is already one scheduled/running
> > would be overkill.
> 
> Okay. Maybe a kthread would be cleaner here then (which sleeps when the 
> buffer is empty)? I didn't notice any locking for cpe_paddr and cpe_node. 
> Why is that?

Do you mean a lock so that cpe_paddr & cpe_node are updated atomicly?
The hole being the new page is allocated on a different node than the
old page.


-- 
Russ Anderson, OS RAS/Partitioning Project Lead  
SGI - Silicon Graphics Inc          rja@sgi.com

WARNING: multiple messages have this Message-ID (diff)
From: Russ Anderson <rja@sgi.com>
To: Pekka J Enberg <penberg@cs.helsinki.fi>
Cc: linux-kernel@vger.kernel.org, linux-ia64@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Tony Luck <tony.luck@intel.com>,
	Christoph Lameter <clameter@sgi.com>,
	gregkh@suse.de
Subject: Re: [PATCH 3/3] ia64: Call migration code on correctable errors v2
Date: Fri, 2 May 2008 12:30:17 -0500	[thread overview]
Message-ID: <20080502173017.GF7246@sgi.com> (raw)
In-Reply-To: <Pine.LNX.4.64.0805021945001.3341@sbz-30.cs.Helsinki.FI>

On Fri, May 02, 2008 at 07:57:44PM +0300, Pekka J Enberg wrote:
> Hi Russ,
> 
> On Fri, 2 May 2008, Russ Anderson wrote:
> > > I think sparse and checkpatch would have caught most of these but here goes:
> > 
> > I did run checkpatch.pl.  The two warnings were a false positive and
> > the other I let slide.  I'll make the rest of your suggested changes.
> > 
> > WARNING: consider using strict_strtoul in preference to simple_strtoul
> > #340: FILE: arch/ia64/kernel/cpe_migrate.c:301:
> > +       opt = simple_strtoul(optstr, NULL, 0);
> 
> Why do you think this is a false positive?

The false positive is:
---
WARNING: Use #include <linux/mca.h> instead of <asm/mca.h>
#77: FILE: arch/ia64/kernel/cpe_migrate.c:40:
+#include <asm/mca.h>
---

linux/mca.h is a different file than asm-ia64/mca.h, so using
<linux/mca.h> instead of <asm/mca.h> will cause build problems.


>                       We just converted SLUB over to 
> use strict_stroul() as suggested by Andrew.

I'll use strict_stroul().

> > > >  +       if (cpe_paddr[cpe_head] == 0) {
> > > >  +               cpe_paddr[cpe_head] = paddr;
> > > >  +               cpe_node[cpe_head] = node;
> > > >  +
> > > >  +               if (++cpe_head >= CE_HISTORY_LENGTH)
> > > >  +                       cpe_head = 0;
> > > >  +       }
> > > >  +
> > > >  +       if (!work_scheduled) {
> > > >  +               work_scheduled = 1;
> > > >  +               schedule_work(&cpe_enable_work);
> > > 
> > > So you must not schedule cpe_enable_work if it's already in progress. Why?
> > 
> > If there is already a worker thread scheduled, it will process all
> > the addresses on the queue, including new entries.  So all ce_setup_migrate()
> > needs to do is add the new entry to the queue.  The CPE interrupt can come in faster
> > than the worker thread can migrate the pages.  Scheduling another worker 
> > thread on each CPE interrupt when there is already one scheduled/running
> > would be overkill.
> 
> Okay. Maybe a kthread would be cleaner here then (which sleeps when the 
> buffer is empty)? I didn't notice any locking for cpe_paddr and cpe_node. 
> Why is that?

Do you mean a lock so that cpe_paddr & cpe_node are updated atomicly?
The hole being the new page is allocated on a different node than the
old page.


-- 
Russ Anderson, OS RAS/Partitioning Project Lead  
SGI - Silicon Graphics Inc          rja@sgi.com

  reply	other threads:[~2008-05-02 17:30 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-02  0:44 [PATCH 3/3] ia64: Call migration code on correctable errors v2 Russ Anderson
2008-05-02  0:44 ` Russ Anderson
2008-05-02  1:22 ` Christoph Lameter
2008-05-02  1:22   ` Christoph Lameter
2008-05-02  2:43   ` Russ Anderson
2008-05-02  2:43     ` Russ Anderson
2008-05-02  9:58 ` Pekka Enberg
2008-05-02  9:58   ` Pekka Enberg
2008-05-02 16:40   ` Russ Anderson
2008-05-02 16:40     ` Russ Anderson
2008-05-02 16:57     ` Pekka J Enberg
2008-05-02 16:57       ` Pekka J Enberg
2008-05-02 17:30       ` Russ Anderson [this message]
2008-05-02 17:30         ` Russ Anderson
2008-05-02 17:45 ` Andi Kleen
2008-05-02 17:45   ` Andi Kleen
2008-05-02 18:50   ` Russ Anderson
2008-05-02 18:50     ` Russ Anderson
2008-05-02 19:33     ` Andi Kleen
2008-05-02 19:33       ` Andi Kleen
2008-05-02 20:27       ` Russ Anderson
2008-05-02 20:27         ` Russ Anderson
2008-05-09 15:11 ` [PATCH 3/3] ia64: Call migration code on correctable errors v3 Russ Anderson
2008-05-09 15:11   ` Russ Anderson
2008-05-09 20:52   ` Andrew Morton
2008-05-09 20:52     ` Andrew Morton
2008-05-09 21:03   ` Christoph Lameter
2008-05-09 21:03     ` Christoph Lameter
2008-05-09 21:07     ` Russ Anderson
2008-05-09 21:07       ` Russ Anderson
2008-05-13 23:05 ` [PATCH 3/3] ia64: Call migration code on correctable errors v4 Russ Anderson
2008-05-13 23:05   ` Russ Anderson
2008-05-16 19:23 ` [PATCH 3/3] ia64: Call migration code on correctable errors v5 Russ Anderson
2008-05-16 19:23   ` Russ Anderson
2008-05-16 23:15   ` Christoph Lameter
2008-05-16 23:15     ` Christoph Lameter
2008-06-09 16:20 ` [PATCH 3/3] ia64: Call migration code on correctable errors v6 Russ Anderson
2008-06-09 16:20   ` Russ Anderson
2008-06-23  3:25   ` KOSAKI Motohiro
2008-06-23  3:25     ` KOSAKI Motohiro
2008-06-25 22:25     ` Russ Anderson
2008-06-25 22:25       ` Russ Anderson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080502173017.GF7246@sgi.com \
    --to=rja@sgi.com \
    --cc=akpm@linux-foundation.org \
    --cc=clameter@sgi.com \
    --cc=gregkh@suse.de \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=penberg@cs.helsinki.fi \
    --cc=tony.luck@intel.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.