Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: Jun Sun <jsun@mvista.com>
To: Ralf Baechle <ralf@linux-mips.org>
Cc: Matthew Dharm <mdharm@momenco.com>,
	Linux-MIPS <linux-mips@linux-mips.org>
Subject: Re: time.c CP0_COMPARE (and SMP IPI rambling)
Date: Tue, 03 Sep 2002 09:59:18 -0700	[thread overview]
Message-ID: <3D74EA66.6020906@mvista.com> (raw)
In-Reply-To: 20020902183053.E15618@linux-mips.org

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

  reply	other threads:[~2002-09-03 17:13 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [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       ` Jun Sun [this message]
2002-09-04 10:50         ` time.c CP0_COMPARE (and SMP IPI rambling) Maciej W. Rozycki

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3D74EA66.6020906@mvista.com \
    --to=jsun@mvista.com \
    --cc=linux-mips@linux-mips.org \
    --cc=mdharm@momenco.com \
    --cc=ralf@linux-mips.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox