Charles Sprickman wrote:
On Tue, 22 Nov 2005, Uwe Doering wrote:
Charles Sprickman wrote:
[...]
So it certainly looks easy enough for me to change the first two sections of the diff referenced above, but I'm having issues finding that last one in cpu_initclocks(). It looks like that section really has changed quite a bit. (see v.1.206)

Just look for all instances of

 writertc(RTC_STATUSB, rtc_statusb);

and put

 rtcin(RTC_INTR);
directly behind them (into the next line). There should be three of them, in 4.8 as well as RELENG_4 and CURRENT.

I found the first two (line 721 and 979) and I see third at line 1064.

One other question, looking at the initial patch (http://www.freebsd.org/cgi/query-pr.cgi?pr=17800), I see that they followed a slightly different line:

    /* Initialize RTC. */
     writertc(RTC_STATUSA, rtc_statusa);
     writertc(RTC_STATUSB, RTCSB_24HR);  <<<---
+    rtcin(RTC_INTR); /* clear any pending interrupt */

Should I worry about that at all?

No. User supplied patches in PRs aren't necessarily 100% correct. In this case the PR submitter clears pending interrupts while interrupt generation is disabled. However, the committer of 1.214 (John Baldwin, in fact) thought that this is wrong because you have to clear pending interrupts after interrupt generation has been re-enabled, or else you'd get a race condition. And I agree with that.

Is there any interest in moving this back to 4-STABLE?

Interest there is, I suppose. Plenty of people still run 4.x. The question is rather whether there is any committer willing to do the backport. As far as I can tell, most of them are more focused on newer branches. Perhaps we need special backporting committers for legacy branches. Just a thought. ;-)

Yeah, I work on a total of about 32 boxes, all still at either 4.8 or 4.11. Committers have to know C, right? :)

Not only that. In case of kernel issues they also have to have quite a lot of knowledge and experience in kernel hacking. If you botch a kernel patch and don't notice in time you'll likely cause quite a lot of grief for the users.

[...]
If anyone wants to satisfy my curiousity about this whole clock issue, I'd be grateful. A few questions:

RTC = "CMOS clock"?

Right.

Does the RTC supply all timing in a system, or just "time of day"?

Just the latter (once at boot time) and also the RTC interrupt ('stathz'). Perhaps 'profhz' too, if you enable profiling. Can't tell offhand.

How does this line relate to things? kern.clockrate: { hz = 100, tick = 10000, tickadj = 5, profhz = 1024, stathz = 128 } If the RTC doesn't supply the base timing for things like all the I/O busses, processor, what does?

There's another clock device, which 'hz' is derived of, for example. Perhaps one can call it the CPU clock. It drives the CPU, memory, PCI bus etc. Also, while the system is running it drives the kernel's time-of-day clock. However, the CPU clock's frequency isn't overly accurate. That's why the kernel's time-of-day clock usually deviates pretty much from the wall clock unless you apply some form of continuous adjustment, for instance NTP.

   Uwe
--
Uwe Doering         |  EscapeBox - Managed On-Demand UNIX Servers
[EMAIL PROTECTED]  |  http://www.escapebox.net
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to