public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: George Anzinger <george@mvista.com>
To: Mark Gross <mgross@linux.jf.intel.com>
Cc: ganzinger@mvista.com, Arjan van de Ven <arjanv@redhat.com>,
	Geoff Levand <geoffrey.levand@am.sony.com>,
	high-res-timers-discourse@lists.sourceforge.net,
	linux-kernel@vger.kernel.org
Subject: Re: [ANNOUNCE] high-res-timers patches for 2.6.6
Date: Mon, 14 Jun 2004 17:21:16 -0700	[thread overview]
Message-ID: <40CE40FC.1070404@mvista.com> (raw)
In-Reply-To: <200406141520.20971.mgross@linux.intel.com>

Mark Gross wrote:
> On Monday 14 June 2004 13:48, George Anzinger wrote:
> 
>>Mark Gross wrote:
>>
>>>On Friday 11 June 2004 15:33, George Anzinger wrote:
>>>
>>>>I have been thinking of a major rewrite which would leave this code
>>>>alone, but would introduce an additional list and, of course, overhead
>>>>for high-res timers. This will take some time and be sub optimal, so I
>>>>wonder if it is needed.
>>>
>>>What would your goal for the major rewrite be?
>>>Redesign the implementation?
>>>Clean up / re-factor the current design?
>>>Add features?
>>
>>Mostly I would like to make it "clean" enough to get the community to
>>accept it. As I look at the current implemtation, the biggest intrusion
>>into the "normal" kernel is in the timer list area.  Thus, my thinking is
>>to introduce a second or slave list which would only be used by HR timers. 
>>This list would be "checked" by putting a "normal" i.e. add_timer, timer in
>>place to mark the jiffie that a HR timer was to expire in.  The "check"
>>code would then set up the HR interrupt to expire the timer.
>>
>>I am also considering removing a lot of the ifdefs one way or another. 
>>AND, I think I can make the whole thing configureable at boot time just as
>>the pm/TSC/etc. timers are.
>>
> 
> 
> Sounds good to me.  The higher level code can use this type of clean up.
> 
> 
>>>I've been wondering lately if a significant restructuring of the
>>>implementation could be done.  Something bottom's up that enabled
>>>changing / using different time bases without rebooting and coexisted
>>>nicely with HPET.
>>>
>>>Something along the lines of;
>>>* abstracting the time base's, calibration and computation of the next
>>>interrupt time into a polymorphic interface along with the implementation
>>>of a few of your time bases (ACPI, TSC) as a stand allown patch.
>>
>>Uh, is this something like the current TSC/ pmtimer/ HPET/ PIT selection
>>code in the x86?  Or do you have something else in mind here.  Given the
>>goal of integration with and inclusion in the kernel.org kernel, I don't
>>want to wander too far from what they are doing now.
>>
> 
> 
> Sort of but implemented with a dynamic binding as opposed to the current 
> compile time binding via ifdefs.
> 
> The current HRT code implements a kind of static / compile time polymorphism 
> that is hard for me to read and keep straight.  It implements N time bases, 
> with M interrupt sources for K architectures.  Implementing the binding logic 
> between all these at compile time leads to a lot of ifdefs and hard to grok 
> code.
> 
What the 2.6 x86 timer code does is to "try" different clocks until they find 
one that "accepts" the job.  A boot time option can override this to force a 
given clock, but all are compile in.  (By the way, the first machine I wrote 
code for had a total of 8K bytes, so I really don't like to waste memory :))

I started to do this with the latest patch but stopped when I realized that I 
would have to redo the conversion code.  Still, this isn't too hard and I may 
finish this conversion.  This would eliminate the pm/ TSC configure option AND 
allow the user to completly eliminate the HR (buy choosing a non-HR option at 
boot time), which, by the way, he can do now.
> 
> 
>>>* implement yet another polymorphic interface for the interrupt source
>>>used by the patch, along with a few interrupt sources (PIT, APIC, HPET
>>><-- new ) * Implement a simple RTC-like charactor driver using the above
>>>for testing and integration.
>>
>>I am not sure what wants to be done here.  I have to keep in mind that x86
>>is only one of many archs.  I would like to keep it as simple as possible
>>in this area.  See the include/linux/hrtime.h file for the arch interface
>>we are now using.
>>
> 
> 
> yes but the code in the include/linux/hrtime.h file exports zero abstractions 
> to the architecture independent kernel.  
> 
> Its mostly a documentation header file, that includes the architecture 
> dependent exports, that then need to be used by the architecture independent 
> code.  Its all wrapped up in macros and what not to make it work across a 
> handful of architectures but its still a significant CTAGS work out to follow 
> the logic.
> 
> I think that re-working the lower level HRT code to be more object based (like 
> pci and net devices for example) with a layered design would significantly 
> simplify the code and improve the extensibility across architectures and 
> platform hardware time based interrupt sources.

I haven't looked at pci or net stuff lately, but my attmept to export the 
conversion_bits structure was dissed by the arch folks, so I went for just what 
was needed.  Some of them don't export a conversion to micro seconds conversion, 
for example.  I welcome more details...

George
> 
> The only performance hit would be that some of the in-lined and compile time 
> macro code would no longer be inline-able.
> 
> --mgross
> 

-- 
George Anzinger   george@mvista.com
High-res-timers:  http://sourceforge.net/projects/high-res-timers/
Preemption patch: http://www.kernel.org/pub/linux/kernel/people/rml


  reply	other threads:[~2004-06-15  0:22 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-06-10  1:49 [ANNOUNCE] high-res-timers patches for 2.6.6 Geoff Levand
2004-06-10  2:40 ` William Lee Irwin III
2004-06-10  8:40   ` eric.piel
2004-06-10  9:08     ` William Lee Irwin III
2004-06-10 10:04 ` Arjan van de Ven
2004-06-11  0:02   ` George Anzinger
2004-06-11  6:22     ` Arjan van de Ven
2004-06-11 22:11       ` George Anzinger
2004-06-11 22:33       ` George Anzinger
2004-06-12 14:01         ` Arjan van de Ven
2004-06-14 15:28         ` Mark Gross
2004-06-14 20:48           ` George Anzinger
2004-06-14 22:20             ` Mark Gross
2004-06-15  0:21               ` George Anzinger [this message]
2004-06-15 16:04                 ` Mark Gross
2004-06-16 22:33                   ` George Anzinger
2004-06-17 19:35                     ` Mark Gross
2004-06-21 22:50           ` Geoff Levand
2004-06-21 23:17             ` George Anzinger
2004-06-22 17:37               ` Geoff Levand
2004-06-22 18:05                 ` Stephen Hemminger
2004-06-22 23:07                 ` George Anzinger
2004-06-23  0:15                   ` Geoff Levand
     [not found]                   ` <40D8CF88.4050608@am.sony.com>
2004-09-03  1:35                     ` [ANNOUNCE] high-res-timers patch Geoff Levand
2004-11-04 20:41                     ` Geoff Levand
2004-06-23 16:23                 ` [ANNOUNCE] high-res-timers patches for 2.6.6 Mark Gross
2004-06-21 23:29             ` Mark Gross
2004-06-12  0:24 ` Karim Yaghmour
2004-06-14 20:57   ` George Anzinger
2004-06-21  3:14     ` Karim Yaghmour
2004-06-21 21:33       ` George Anzinger
2004-06-22  4:50         ` Karim Yaghmour
2004-06-21 23:13 ` Stephen Hemminger
2004-06-21 23:22   ` Randy.Dunlap
  -- strict thread matches above, loose matches on Subject: below --
2004-06-10 12:46 Dave Hylands

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=40CE40FC.1070404@mvista.com \
    --to=george@mvista.com \
    --cc=arjanv@redhat.com \
    --cc=ganzinger@mvista.com \
    --cc=geoffrey.levand@am.sony.com \
    --cc=high-res-timers-discourse@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mgross@linux.jf.intel.com \
    /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