linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Michael Ellerman <michael@ellerman.id.au>
To: mohan@in.ibm.com
Cc: ppcdev <linuxppc-dev@ozlabs.org>,
	fastboot@lists.osdl.org, Milton Miller <miltonm@bga.com>,
	Paul Mackerras <paulus@samba.org>,
	Anton Blanchard <anton@samba.org>
Subject: Re: [PATCH] Fix interrupt distribution in ppc970
Date: Tue, 10 Apr 2007 17:06:03 +1000	[thread overview]
Message-ID: <1176188763.9836.16.camel@concordia.ozlabs.ibm.com> (raw)
In-Reply-To: <20070409085732.GC4281@in.ibm.com>

On Mon, 2007-04-09 at 14:27 +0530, Mohan Kumar M wrote:
> On Wed, Mar 07, 2007 at 11:52:32AM +0100, Michael Ellerman wrote:
> > There's already maxcpus in init/main.c, that would probably be better,
> > though still ugly.
> >
> Based on Mike's suggestions, I modified the patch. The attached patch
> refers max_cpus variable to check whether the kernel is booted with
> maxcpus=1 parameter and if maxcpus=1 is specified the patch assigns only
> the current boot cpu to be the default distribution server.
> 
> Patch is generated over 2.6.20 kernel, cleanly applies to 2.6.21-rc5
> kernel.
> 
> Any suggestion, comment?

So the core of the problem is that if we haven't onlined all cpus then
we can't use the default_distrib_server value given to us by firmware,
because some of the cpus in that queue won't be online.

We can detect this situation by comparing the number of cpus that are
online vs the number that are present (not possible). This might even
work if you boot with maxcpus=1 and then hotplug the rest in.

How about this:

Index: powerpc/arch/powerpc/platforms/pseries/xics.c
===================================================================
--- powerpc.orig/arch/powerpc/platforms/pseries/xics.c
+++ powerpc/arch/powerpc/platforms/pseries/xics.c
@@ -167,7 +167,10 @@ static int get_irq_server(unsigned int v
 		return default_server;
 
 	if (cpus_equal(cpumask, CPU_MASK_ALL)) {
-		server = default_distrib_server;
+		if (num_online_cpus() == num_present_cpus())
+			server = default_distrib_server;
+		else
+			server = default_server;
 	} else {
 		cpus_and(tmp, cpu_online_map, cpumask);
 
@@ -415,7 +418,10 @@ static void xics_set_affinity(unsigned i
 
 	/* For the moment only implement delivery to all cpus or one cpu */
 	if (cpus_equal(cpumask, CPU_MASK_ALL)) {
-		newmask = default_distrib_server;
+		if (num_online_cpus() == num_present_cpus())
+			newmask = default_distrib_server;
+		else
+			newmask = default_server;
 	} else {
 		cpus_and(tmp, cpu_online_map, cpumask);
 		if (cpus_empty(tmp))

  reply	other threads:[~2007-04-10  7:06 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-12-08  4:55 [PATCH] Fix interrupt distribution in ppc970 Mohan Kumar M
2006-12-18  4:37 ` Paul Mackerras
2006-12-18  5:14   ` Mohan Kumar M
2006-12-18 10:57   ` Mohan Kumar M
2007-01-02 11:42     ` [Fastboot] " Mohan Kumar M
2007-01-02 15:07       ` Doug Maxey
2007-03-06 13:57     ` Mohan Kumar M
2007-03-06 14:16       ` Michael Ellerman
2007-03-06 16:55         ` Mohan Kumar M
2007-03-06 17:37           ` Michael Ellerman
2007-03-07  4:53             ` Mohan Kumar M
2007-03-07 10:52               ` Michael Ellerman
2007-04-09  8:57                 ` Mohan Kumar M
2007-04-10  7:06                   ` Michael Ellerman [this message]
2007-04-10 12:54                     ` Mohan Kumar M
2007-04-10 16:59                     ` Milton Miller
2007-04-11  1:16                       ` Michael Ellerman
2007-04-19 11:52                         ` Mohan Kumar M
2007-04-20  5:45                           ` Milton Miller
2007-04-26  9:24                             ` Mohan Kumar M
2007-04-26 14:42                               ` Milton Miller
2007-05-03 14:47                                 ` Mohan Kumar M
2007-05-06  6:52                                   ` Milton Miller
2007-06-04 10:54                                     ` Mohan Kumar M
2007-06-06  9:43                                       ` Milton Miller
2007-06-06 11:31                                         ` Mohan Kumar M
2007-06-11  1:58                                           ` Milton Miller
2007-06-11 18:07                                             ` Mohan Kumar M
2007-06-12 14:51                                             ` Mohan Kumar M
2007-06-15 16:35                                               ` Milton Miller
2007-03-07  6:06         ` [Fastboot] " Vivek Goyal
2007-03-07 10:46           ` Michael Ellerman
2007-03-06 22:05       ` Nathan Lynch
2007-03-07  5:01         ` Mohan Kumar M
2007-03-07  8:52         ` Benjamin Herrenschmidt
2007-03-07  9:10           ` Mohan Kumar M

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=1176188763.9836.16.camel@concordia.ozlabs.ibm.com \
    --to=michael@ellerman.id.au \
    --cc=anton@samba.org \
    --cc=fastboot@lists.osdl.org \
    --cc=linuxppc-dev@ozlabs.org \
    --cc=miltonm@bga.com \
    --cc=mohan@in.ibm.com \
    --cc=paulus@samba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).