* Re: time.c CP0_COMPARE [not found] ` <3D6E5C58.405@mvista.com> @ 2002-09-02 16:30 ` Ralf Baechle 2002-09-03 16:59 ` time.c CP0_COMPARE (and SMP IPI rambling) Jun Sun 0 siblings, 1 reply; 3+ messages in thread From: Ralf Baechle @ 2002-09-02 16:30 UTC (permalink / raw) To: Jun Sun; +Cc: Matthew Dharm, Linux-MIPS On Thu, Aug 29, 2002 at 10:39:36AM -0700, Jun Sun wrote: > Ralf Baechle wrote: > > c0_compare = c0_count + mips_counter_frequency / HZ. > > > > That's what the individual boards are currently doing themselves though that > > should be done in generic code. > > > > Good idea. > > The attached patch attempts to set the first interrupt. It should be benign > even if a system is not using CPU counter as timer interrupt. > > I also updated the time.README, including a new section about implementation > on a SMP machine. Applied though I think that this should also be done via start_secondary that is we'll need some per_cpu_time_init analog to per_cpu_trap_init. Also of course your change makes some cleanup possible as the initialization no happens twice for a bunch of platforms. Ralf ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: time.c CP0_COMPARE (and SMP IPI rambling) 2002-09-02 16:30 ` time.c CP0_COMPARE Ralf Baechle @ 2002-09-03 16:59 ` Jun Sun 2002-09-04 10:50 ` Maciej W. Rozycki 0 siblings, 1 reply; 3+ messages in thread From: Jun Sun @ 2002-09-03 16:59 UTC (permalink / raw) To: Ralf Baechle; +Cc: Matthew Dharm, Linux-MIPS Ralf Baechle wrote: > On Thu, Aug 29, 2002 at 10:39:36AM -0700, Jun Sun wrote: > > >>Ralf Baechle wrote: > > >>> c0_compare = c0_count + mips_counter_frequency / HZ. >>> >>>That's what the individual boards are currently doing themselves though that >>>should be done in generic code. >>> >> >>Good idea. >> >>The attached patch attempts to set the first interrupt. It should be benign >>even if a system is not using CPU counter as timer interrupt. >> >>I also updated the time.README, including a new section about implementation >>on a SMP machine. > > > Applied though I think that this should also be done via start_secondary > that is we'll need some per_cpu_time_init analog to per_cpu_trap_init. Right now setting per-cpu timers is totally left to the board-dependent code. Once we see more SMP boxes using this approach, I think it starts to be interesting to make some abstraction and support it in a systematic way, including support for using CPU counter as the per-cpu timer interrupt. Using local_timer_emulation sounds like an attractive alternative to me, as we only need to set up one system-wide timer interrupt. Conceptually it probably takes a little longer to run through timer_interrupt (due to IPI calls). But if the hit on performance is very negligible, the simplicity might make it worthwile. BTW, since I am here, I like to ramble on a little bit further. Currently Linux supports two kinds of IPI (inter-processor interrupt) deliveries: 1) sender waiting for the interrupt handler to start 2) sender waiting for the interrupt handler to start and complete I think we really should the third kind: 3) sender does not wait at all. Just delivers the interrupt. With this support, the emulated local timer approach would have no performance penalty at all. Jun ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: time.c CP0_COMPARE (and SMP IPI rambling) 2002-09-03 16:59 ` time.c CP0_COMPARE (and SMP IPI rambling) Jun Sun @ 2002-09-04 10:50 ` Maciej W. Rozycki 0 siblings, 0 replies; 3+ messages in thread From: Maciej W. Rozycki @ 2002-09-04 10:50 UTC (permalink / raw) To: Jun Sun; +Cc: Ralf Baechle, Matthew Dharm, Linux-MIPS On Tue, 3 Sep 2002, Jun Sun wrote: > Right now setting per-cpu timers is totally left to the board-dependent code. > Once we see more SMP boxes using this approach, I think it starts to be > interesting to make some abstraction and support it in a systematic way, > including support for using CPU counter as the per-cpu timer interrupt. > > Using local_timer_emulation sounds like an attractive alternative to me, as we > only need to set up one system-wide timer interrupt. Conceptually it probably > takes a little longer to run through timer_interrupt (due to IPI calls). But > if the hit on performance is very negligible, the simplicity might make it > worthwile. Well, the i386 approach (with a grain of salt, of course, but it's about the most mature, anyway) seems reasonable. A per-CPU local timer for scheduling (no need to stability or high precision) and an external timer interrupt for timekeeping (this one precise) that's delivered to a single CPU at a time. I hope there are no MIPS SMP systems that lack an external timer IRQ source. -- + Maciej W. Rozycki, Technical University of Gdansk, Poland + +--------------------------------------------------------------+ + e-mail: macro@ds2.pg.gda.pl, PGP key available + ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-09-04 10:50 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <NEBBLJGMNKKEEMNLHGAIEEKHCIAA.mdharm@momenco.com>
[not found] ` <20020829142133.A3905@bacchus.dhis.org>
[not found] ` <3D6E5C58.405@mvista.com>
2002-09-02 16:30 ` time.c CP0_COMPARE Ralf Baechle
2002-09-03 16:59 ` time.c CP0_COMPARE (and SMP IPI rambling) Jun Sun
2002-09-04 10:50 ` Maciej W. Rozycki
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox