On Tue, Apr 10, 2007 at 05:06:03PM +1000, Michael Ellerman wrote: > 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: >
Right, This also solves the problem. > 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)) > _______________________________________________ fastboot mailing list fastboot@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/fastboot