Subject: Re: [PATCH] Fix interrupt distribution in ppc970

From: Mohan Kumar M <[email-masked]>
Date: Tue, 6 Mar 2007 22:25:29 +0530

On Tue, Mar 06, 2007 at 03:16:55PM +0100, Michael Ellerman wrote:
> On Tue, 2007-03-06 at 19:27 +0530, Mohan Kumar M wrote:
> > Hi,
> > 
> > Here comes the revised version of patch to fix the interrupt missing
> > problem when a kdump kernel is booted with "maxcpus=1" kernel parameter.
> > 
> > In the xics initialization code a check is made to detemine whether
> > maxcpus kernel parameter is present and if its present then
> > default_distrib_server variable is initialized to the current boot cpu
> > id (by default_server variable). So that when ever a kernel is booted
> > with maxcpus kernel parameter all interrupts are routed to the boot cpu
> > only.
> > 
> > Tested on POWER5 and JS20 systems.
> 
> First, I don't know why we keep telling people to use maxcpus=1 for
> kexec/kdump - it's causing bugs, and I don't know of any that it fixes?

Some distros want to use maxcpus=1 for kdump.

> 
> Second, the way you've written this is not so good. The xics code should
> not be checking that "maxcpus" exists on the command line, it should be
> checking that the distrib server points to a cpu that is online - using
> cpu_online() etc.
>

In get_irq_server function in xics.c, "noirqdistrib" command line
parameter is indirectly checked for routing the interrupts either to a
specific cpu or to all cpus. So I think checking for maxcpus= command
line parameter in xics.c is not a problem.

Also during the xics_init_IRQ function other cpus (secondary cpus) will
not be online, they are made online at a later stage. So using
cpu_online() function at xics_init_IRQ will return true only for boot
cpu id.
 
> cheers
> 
> -- 
> Michael Ellerman
> OzLabs, IBM Australia Development Lab
> 
> wwweb: http://michael.ellerman.id.au
> phone: +61 2 6212 1183 (tie line 70 21183)
> 
> We do not inherit the earth from our ancestors,
> we borrow it from our children. - S.M.A.R.T Person