DragonFly-2.3.0.864.gc5b83 master sys/platform/pc32/apic mpapic.c sys/platform/pc32/isa clock.c sys/platform/pc64/isa clock.c sys/platform/vkernel/platform systimer.c sys/sys systimer.h

Sepherosa Ziehau sepherosa at gmail.com
Sun May 3 20:16:42 PDT 2009


On Mon, May 4, 2009 at 12:00 AM, Matthew Dillon
<dillon at apollo.backplane.com> wrote:
> :I am thinking about it too.  However, I am more interested in per-cpu
> :rate instead of the total rate (I am not saying total rate is not
> :useful :).  So how about add another systat item?  I would like it to
> :show per-cpu lapic timer rate and possibly ipi rate.
>
>    V_INTR is per-cpu already.  We could add a V_IPI field for Xipiq
>    interrupts.  We could also add a separate V_TIMER as well and have systat
>    report it independantly of the normal interrupt list.

OK

>
>    systat currently aggregates them (or the kernel does when you do the
>    sysctl to report the vmstats, I forget).

I will take a look at it.

>
>    --
>
>    Are you sure you want to call i8254_intr_reload(0) in
>    cputimer_intr_switch() ?  Won't that generate an almost immediate
>    interrupt?  I figure we might want to just unconditionally set it

Hoho, I think "ASAP" is best here.  However, hasso's experience shows
the opposite :)

>    to e.g. 1ms (TIMER_FREQ / 1000), or a better way: Any cpu entering
>    the sleep state can snoop the next systimer timeout and actually

Yeah, I will try snoop systimer timeout value.

>    pass the correct value to it.
>
>    I have an even better idea.  We don't have to switch timers for C3/C1E,
>    there is no reason why BOTH couldn't call into the same systimer
>    infrastructure. I'd prefer a new API function block for sleep-state
>    interrupt queueing, e.g.  (cputimer_intr_sleep_reload).
>    (cputimer_intr_reload could) then be permanently set to the LAPIC
>    (though keep the sysctl logic to switch it), and
>    (cputimer_intr_sleep_reload) could be permanently set to the 8254.
>
>    Then on entry to C3/C1E the ACPI code could explicitly call
>    cputimer_intr_sleep_reload(), and on exit it could explicitly

Implicitly?

>    resynchronize the LAPIC like it does already (I think).

Sounds good.

>
>    We can thus leave the LAPIC timer interrupt logic alone when going into
>    and out of the deep sleep state.  i.e. a double interrupt is ok if
>    the LAPIC timer happens to not get disabled by the ACPI logic.
>    That would make the API a lot cleaner.

Yeah.

Best Regards,
sephe

-- 
Live Free or Die





More information about the Commits mailing list