Subject: Re: [PATCH] 2.6.18-rt7: fix more issues with 32-bit cycles_t in latency_trace.c (take 3)

From: Sergei Shtylyov <[email-masked]>
Date: Mon, 04 Dec 2006 20:09:56 +0300

Hello.

Ingo Molnar wrote:

>>>	/* check for buggy clocks, handling wrap for 32-bit clocks */
>>>-	if (TYPE_EQUAL(cycles_t, unsigned long)) {
>>>+	if (TYPE_EQUAL(cycle_t, unsigned long)) {
>>>		if (time_after((unsigned long)T1, (unsigned long)T2))
>>>			printk("bug: %08lx < %08lx!\n",
>>>				(unsigned long)T2, (unsigned long)T1);

>>   This earlier fix by Kevin woulnd't have sense anymore with cycle_t...

> yeah, indeed - i've zapped this one too.

    Moreover, it was somewhat incorrect from the very start since 'unsigned 
long' is 64-bit on 64-bit machines, and cycles_t is 'unsigned long' on both 
PPC32 and PPC64, so else branch would've *never* be executed...

> basically, what i'd like is the 32-bit clocks/cycles be handled 
> intelligently, and not adding to the cruft that already is in 
> kernel/latency_tracing.c.

    Yeah, I've looked at 2.6.19-rt2 and saw the new approach. But what's left 
to fix there, only the case of using PPC32 raw cycles? I guess you only need 
to cast a result of get_cycles() to cycle_t... wait, it'll be explicitly cast 
in the return stmt, won't it?

> 	Ingo

WBR, Sergei