Re: [PATCH] Extend mwait idle to optimize away CAL and RES interruptsto an idle CPU -v1

From: Venki Pallipadi
Date: Thu Mar 01 2012 - 21:01:29 EST


On Thu, Mar 1, 2012 at 5:37 PM, Suresh Siddha <suresh.b.siddha@xxxxxxxxx> wrote:
> On Thu, 2012-03-01 at 17:35 -0800, Venki Pallipadi wrote:
>> On Thu, Mar 1, 2012 at 5:28 PM, Suresh Siddha <suresh.b.siddha@xxxxxxxxx> wrote:
>> > On Thu, 2012-03-01 at 16:33 -0800, Venki Pallipadi wrote:
>> >> >
>> >> > fork_idle() should also make sure it does not schedule the child
>> >> > thread: thus we'd also be able to further simplify smpboot.c and
>> >> > get rid of all that extremely ugly 'struct create_idle'
>> >> > gymnastics in smpboot.c.
>> >>
>> >> But not this. I am not sure where fork_idle results in resched of the child.
>> >> As I saw it, fork_idle calls init_idle and that sets the affinity of
>> >> idle_task to target CPU. So, reschedule should not be a problem. What
>> >> am I missing here?
>> >
>> > I think Ingo is referring to the fact that we can't use kthread_create()
>> > here and hence we were relying on fork_idle().
>> >
>> >> Also, I tried this silly test patch (Cut and paste... Sorry) and it
>> >> seemed to work fine both with and without CPU hotplug.
>> >>
>> >
>> > I don't think we can do this today, as we need to make sure we have the
>> > correct current context. With dynamic cpu hotplug, current context can
>> > be any process and hence we were depending on the schedule_work()
>> > context.
>> >
>>
>> schedule_work() is only done at boot time. In case of dynamic cpu
>> hotplug, we skip the whole fork_idle as we already have the task
>> struct and just do init_idle().
>>
>
> What happens if we boot with "maxcpus=" and later online the remaining
> cpu's?

Yes. This case will be problematic. So, we still need struct
create_idle work stuff even after percpu idle_task. Or was Ingo's
suggestion to do something along the lines of - init any CPU's idle
task from CPU 0's idle task?

> same issue with the physical cpu-online case too right?
Any fresh online at runtime. Yes.

>
> thanks,
> suresh
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/