* oops on resume
@ 2004-08-05 19:02 Brian J. Murrell
2004-08-05 19:26 ` Dominik Brodowski
0 siblings, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-05 19:02 UTC (permalink / raw)
To: cpufreq
Distribution: Fedora Core/Rawhide
Hardware Environment: Dell Inspiron 4150
Software Environment: Fedora Core 2/Rawhide
Problem Description: when returning from a sleep, the kernel oopses
Steps to reproduce:
- boot kernel (fedora kernel 2.6.7-1.503 currently which is
2.6.8-rc2-bk11 according to the changelog in the kernel package)
- as root: "echo mem >/sys/power/state" and watch as it goes to sleep
Stopping tasks: ===============================================|
PM: Entering state.
- press power button to wake it up and watch on the console as it does:
Back to C!
zapping low mappings.
Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 1200000, i.divide error: 0000 [#1]
Modules linked in: parport_pc(U) lp(U) parport(U) autofs4(U) ds(U) yenta_socket)CPU: 0
EIP: 0060:[<02111d75>] Not tainted
EFLAGS: 00000216 (2.6.7-1.503custom)
EIP is at time_cpufreq_notifier+0x29c/0x2a3
eax: 0233f4e8 ebx: 00000891 ecx: 0021794a edx: 0000080e
esi: 000003ea edi: 002191c0 ebp: 00000000 esp: 2108cec0
ds: 0068 es: 007b ss: 0068
Process bash (pid: 14500, threadinfo=2108c000 task=1f3b6030)
Stack: 0233ccc0 2108cef0 00000008 00000004 0212c929 2108cef0 21fcb684 023c1828
02291741 02324a1e 00124f80 002191c0 00000000 00124f80 002191c0 0210ebc0
0235edb4 023548e0 0222c151 00000000 00000002 00000246 0222f17c 021390ae
Call Trace:
[<0212c929>] notifier_call_chain+0x17/0x2b
[<02291741>] cpufreq_resume+0xa9/0xd1
[<0210ebc0>] mtrr_restore+0x42/0x47
[<0222c151>] sysdev_resume+0x55/0xa5
[<0222f17c>] device_power_up+0x5/0xa
[<021390ae>] suspend_enter+0x25/0x2d
[<02139131>] enter_state+0x54/0x7f
[<02139239>] state_store+0x84/0x99
[<021391b5>] state_store+0x0/0x99
[<021a56df>] subsys_attr_store+0x19/0x21
[<021a5852>] flush_write_buffer+0x1d/0x22
[<021a5879>] sysfs_write_file+0x22/0x35
[<02160b77>] vfs_write+0xb6/0xe2
[<02160c11>] sys_write+0x2c/0x42
Code: 31 c0 5b 5e 5f 5d c3 55 bd a4 cc 33 02 57 56 53 83 ec 24 8b
Any ideas?
b.
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 19:02 oops on resume Brian J. Murrell
@ 2004-08-05 19:26 ` Dominik Brodowski
2004-08-05 19:34 ` Brian J. Murrell
0 siblings, 1 reply; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-05 19:26 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: cpufreq
On Thu, Aug 05, 2004 at 03:02:04PM -0400, Brian J. Murrell wrote:
> Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 1200000, i.divide error: 0000 [#1]
> Modules linked in: parport_pc(U) lp(U) parport(U) autofs4(U) ds(U) yenta_socket)CPU: 0
Oops. Can you do a
cat /sys/devices/system/cpu/cpu0/cpufreq/*
on a running system, please?
Thanks,
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 19:26 ` Dominik Brodowski
@ 2004-08-05 19:34 ` Brian J. Murrell
2004-08-05 19:52 ` Dave Jones
0 siblings, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-05 19:34 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 997 bytes --]
On Thu, 2004-08-05 at 21:26 +0200, Dominik Brodowski wrote:
> cat /sys/devices/system/cpu/cpu0/cpufreq/*
Just to be sure you knew which values where for which nodes I did a
grep ".*" /sys/devices/system/cpu/cpu0/cpufreq/*
and got:
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq:1200000
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq:2200000
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq:1200000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies:2200000 1200000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors:userspace performance
/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:1200000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver:speedstep-ich
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:userspace
/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:2200000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq:1200000
/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:1200000
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 19:34 ` Brian J. Murrell
@ 2004-08-05 19:52 ` Dave Jones
2004-08-05 20:02 ` Brian J. Murrell
0 siblings, 1 reply; 31+ messages in thread
From: Dave Jones @ 2004-08-05 19:52 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dominik Brodowski, cpufreq
On Thu, Aug 05, 2004 at 03:34:42PM -0400, Brian J. Murrell wrote:
> On Thu, 2004-08-05 at 21:26 +0200, Dominik Brodowski wrote:
> > cat /sys/devices/system/cpu/cpu0/cpufreq/*
>
> Just to be sure you knew which values where for which nodes I did a
>
> grep ".*" /sys/devices/system/cpu/cpu0/cpufreq/*
>
> and got:
>
> /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq:1200000
> /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq:2200000
> /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq:1200000
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies:2200000 1200000
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors:userspace performance
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:1200000
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver:speedstep-ich
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:userspace
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:2200000
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq:1200000
> /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:1200000
My guess is that speedstep_get_processor_frequency() is returning null
What does /proc/cpuinfo say ?
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 19:52 ` Dave Jones
@ 2004-08-05 20:02 ` Brian J. Murrell
2004-08-05 20:08 ` Dave Jones
0 siblings, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-05 20:02 UTC (permalink / raw)
To: Dave Jones; +Cc: Dominik Brodowski, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 2625 bytes --]
On Thu, 2004-08-05 at 20:52 +0100, Dave Jones wrote:
> On Thu, Aug 05, 2004 at 03:34:42PM -0400, Brian J. Murrell wrote:
> > On Thu, 2004-08-05 at 21:26 +0200, Dominik Brodowski wrote:
> > > cat /sys/devices/system/cpu/cpu0/cpufreq/*
> >
> > Just to be sure you knew which values where for which nodes I did a
> >
> > grep ".*" /sys/devices/system/cpu/cpu0/cpufreq/*
> >
> > and got:
> >
> > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq:1200000
> > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq:2200000
> > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq:1200000
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies:2200000 1200000
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors:userspace performance
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:1200000
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver:speedstep-ich
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:userspace
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:2200000
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq:1200000
> > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:1200000
>
>
> My guess is that speedstep_get_processor_frequency() is returning null
>
> What does /proc/cpuinfo say ?
Right now:
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Mobile Intel(R) Pentium(R) 4 - M CPU 2.20GHz
stepping : 7
cpu MHz : 1196.613
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips : 2359.29
After a bit of "cat </dev/urandom >/dev/null":
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Mobile Intel(R) Pentium(R) 4 - M CPU 2.20GHz
stepping : 7
cpu MHz : 2193.791
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe cid
bogomips : 4325.37
Do you want shall I enable SPEEDSTEP_DEBUG and see what comes out?
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 20:02 ` Brian J. Murrell
@ 2004-08-05 20:08 ` Dave Jones
2004-08-05 20:19 ` Brian J. Murrell
0 siblings, 1 reply; 31+ messages in thread
From: Dave Jones @ 2004-08-05 20:08 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dominik Brodowski, cpufreq
On Thu, Aug 05, 2004 at 04:02:50PM -0400, Brian J. Murrell wrote:
> On Thu, 2004-08-05 at 20:52 +0100, Dave Jones wrote:
> > On Thu, Aug 05, 2004 at 03:34:42PM -0400, Brian J. Murrell wrote:
> > > On Thu, 2004-08-05 at 21:26 +0200, Dominik Brodowski wrote:
> > > > cat /sys/devices/system/cpu/cpu0/cpufreq/*
> > >
> > > Just to be sure you knew which values where for which nodes I did a
> > >
> > > grep ".*" /sys/devices/system/cpu/cpu0/cpufreq/*
> > >
> > > and got:
> > >
> > > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq:1200000
> > > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq:2200000
> > > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq:1200000
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies:2200000 1200000
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors:userspace performance
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq:1200000
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver:speedstep-ich
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor:userspace
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq:2200000
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq:1200000
> > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed:1200000
> >
> >
> > My guess is that speedstep_get_processor_frequency() is returning null
> >
> > What does /proc/cpuinfo say ?
>
> Right now:
>
> processor : 0
> vendor_id : GenuineIntel
> cpu family : 15
> model : 2
> model name : Mobile Intel(R) Pentium(R) 4 - M CPU 2.20GHz
Interesting. http://processorfinder.intel.com/scripts/list.asp?ProcFam=826
shows that this has a 400MHz FSB. speedstep_get_processor_frequency()
doesn't support that, so that *could* be it. Although that should have
triggered this message..
if (!fsb)
printk(KERN_DEBUG "speedstep-lib: couldn't detect FSB speed. Please send an e-mail to <linux@brodo.de>\n");
Very odd.
> Do you want shall I enable SPEEDSTEP_DEBUG and see what comes out?
Might be useful, though right now, my bets are on an unknown FSB.
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 20:08 ` Dave Jones
@ 2004-08-05 20:19 ` Brian J. Murrell
2004-08-05 20:29 ` Dave Jones
2004-08-05 21:09 ` Dominik Brodowski
0 siblings, 2 replies; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-05 20:19 UTC (permalink / raw)
To: Dave Jones; +Cc: Dominik Brodowski, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 717 bytes --]
On Thu, 2004-08-05 at 21:08 +0100, Dave Jones wrote:
> Although that should have
> triggered this message..
>
> if (!fsb)
> printk(KERN_DEBUG "speedstep-lib: couldn't detect FSB speed. Please send an e-mail to <linux@brodo.de>\n");
At KERN_DEBUG though. My /proc/sys/kernel/printk is at:
$ cat /proc/sys/kernel/printk
6 4 1 7
I don't recall how those 4 fields work. Will I get KERN_DEBUG on the
console with those settings?
> Might be useful, though right now, my bets are on an unknown FSB.
Yeah, me too. Any (one have any) idea how to calculate fsb for that
sucker? I may as well throw that code in there too to see if it
alleviates the problem.
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 20:19 ` Brian J. Murrell
@ 2004-08-05 20:29 ` Dave Jones
2004-08-05 21:03 ` Dominik Brodowski
2004-08-05 21:26 ` Brian J. Murrell
2004-08-05 21:09 ` Dominik Brodowski
1 sibling, 2 replies; 31+ messages in thread
From: Dave Jones @ 2004-08-05 20:29 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dominik Brodowski, cpufreq
On Thu, Aug 05, 2004 at 04:19:30PM -0400, Brian J. Murrell wrote:
> Yeah, me too. Any (one have any) idea how to calculate fsb for that
> sucker?
Hunting for docs on developer.intel.com right now. So far I've turned
up nothing useful. Can you edit pentium4_get_frequency() in arch/i386/kernel/cpu/cpufreq/speedstep-lib.c
so that before the switch (fsb_code) { add a
printk ("FSB code = %d\n", fsb_code);
Hopefully, Intel are predictable and this is going to be '4'.
> I may as well throw that code in there too to see if it
> alleviates the problem.
reminds me, moving speedstep's dprintk over to the same style
as longhaul/powernow-k7 should happen sometime, then it's just a
module parameter away instead of a recompile.
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 20:29 ` Dave Jones
@ 2004-08-05 21:03 ` Dominik Brodowski
2004-08-05 21:26 ` Brian J. Murrell
1 sibling, 0 replies; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-05 21:03 UTC (permalink / raw)
To: Dave Jones; +Cc: Brian J. Murrell, cpufreq
On Thu, Aug 05, 2004 at 09:29:41PM +0100, Dave Jones wrote:
> On Thu, Aug 05, 2004 at 04:19:30PM -0400, Brian J. Murrell wrote:
>
> > Yeah, me too. Any (one have any) idea how to calculate fsb for that
> > sucker?
>
> Hunting for docs on developer.intel.com right now. So far I've turned
> up nothing useful. Can you edit pentium4_get_frequency() in arch/i386/kernel/cpu/cpufreq/speedstep-lib.c
> so that before the switch (fsb_code) { add a
> printk ("FSB code = %d\n", fsb_code);
_and_ enable SPEEDSTEP_DEBUG in both speedstep-ich.c and speedstep-lib.c
> Hopefully, Intel are predictable and this is going to be '4'.
>
> > I may as well throw that code in there too to see if it
> > alleviates the problem.
>
> reminds me, moving speedstep's dprintk over to the same style
> as longhaul/powernow-k7 should happen sometime, then it's just a
> module parameter away instead of a recompile.
... though I'd prefer if it'd be done at the cpufreq-core level, i.e.
cpufreq_dprintk(); with a sysfs-exported ( /sys/parameters/cpufreq/debug )
boot-time parameter cpufreq.debug=1
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 20:19 ` Brian J. Murrell
2004-08-05 20:29 ` Dave Jones
@ 2004-08-05 21:09 ` Dominik Brodowski
2004-08-05 21:45 ` Brian J. Murrell
2004-08-06 17:43 ` Brian J. Murrell
1 sibling, 2 replies; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-05 21:09 UTC (permalink / raw)
To: Brian J. Murrell, Dave Jones; +Cc: cpufreq
On Thu, Aug 05, 2004 at 04:19:30PM -0400, Brian J. Murrell wrote:
> > > > /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies:2200000 1200000
This means speedstep_get_processor_frequency() works in the beginning -- else
it wouldn't export these two (sane) values here.
> Interesting. http://processorfinder.intel.com/scripts/list.asp?ProcFam=826
> shows that this has a 400MHz FSB. speedstep_get_processor_frequency()
> doesn't support that, so that *could* be it. Although that should have
> triggered this message..
it's the quad-pumped 100MHz FSB which is as effictive as a 400MHz, so this
shouldn't be the problem.
> Might be useful, though right now, my bets are on an unknown FSB.
What do I win ;-) ?
My bet is that speedstep_get_processor_frequency() returns something
between one and 100000 kHz instead of the proper value _only_ _upon_
_resuming_. So it'd be great if you could enable SPEEDSTEP_DEBUG in both
files mentioned above, re-test the "resume process", and tell us what the
lines right before the oops say.
Thanks,
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 20:29 ` Dave Jones
2004-08-05 21:03 ` Dominik Brodowski
@ 2004-08-05 21:26 ` Brian J. Murrell
2004-08-05 21:27 ` Dave Jones
2004-08-05 21:29 ` Dave Jones
1 sibling, 2 replies; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-05 21:26 UTC (permalink / raw)
To: Dave Jones; +Cc: Dominik Brodowski, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 820 bytes --]
On Thu, 2004-08-05 at 21:29 +0100, Dave Jones wrote:
> Can you edit pentium4_get_frequency() in arch/i386/kernel/cpu/cpufreq/speedstep-lib.c
> so that before the switch (fsb_code) { add a
> printk ("FSB code = %d\n", fsb_code);
>
> Hopefully, Intel are predictable and this is going to be '4'.
You are not going to believe this. It's 0:
...
TC classifier action (bugs to netdev@oss.sgi.com cc hadi@cyberus.ca)
vesafb: probe of vesafb0 failed with error -6
Simple Boot Flag at 0x79 set to 0x1
FSB code = 0
FSB code = 0
FSB code = 0
FSB code = 0
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16ac)
apm: overridden by ACPI.
...
I put a bunch more debug in there too:
FSB code = 0, msr_lo = 372247062
fsb = 100000
mult = 372247062
pentium4_get_frequency() returns = 2200000
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 21:26 ` Brian J. Murrell
@ 2004-08-05 21:27 ` Dave Jones
2004-08-05 21:29 ` Dave Jones
1 sibling, 0 replies; 31+ messages in thread
From: Dave Jones @ 2004-08-05 21:27 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dominik Brodowski, cpufreq
On Thu, Aug 05, 2004 at 05:26:05PM -0400, Brian J. Murrell wrote:
> On Thu, 2004-08-05 at 21:29 +0100, Dave Jones wrote:
> > Can you edit pentium4_get_frequency() in arch/i386/kernel/cpu/cpufreq/speedstep-lib.c
> > so that before the switch (fsb_code) { add a
> > printk ("FSB code = %d\n", fsb_code);
> >
> > Hopefully, Intel are predictable and this is going to be '4'.
>
> You are not going to believe this. It's 0:
Ok, that matches Dominik's theory that it's a quad-pumped 100MHz bus.
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 21:26 ` Brian J. Murrell
2004-08-05 21:27 ` Dave Jones
@ 2004-08-05 21:29 ` Dave Jones
1 sibling, 0 replies; 31+ messages in thread
From: Dave Jones @ 2004-08-05 21:29 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dominik Brodowski, cpufreq
On Thu, Aug 05, 2004 at 05:26:05PM -0400, Brian J. Murrell wrote:
oops, I forgot to ask..
> I put a bunch more debug in there too:
>
> FSB code = 0, msr_lo = 372247062
> fsb = 100000
> mult = 372247062
> pentium4_get_frequency() returns = 2200000
What does this print when you resume ?
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 21:09 ` Dominik Brodowski
@ 2004-08-05 21:45 ` Brian J. Murrell
2004-08-06 17:14 ` Dominik Brodowski
2004-08-06 17:43 ` Brian J. Murrell
1 sibling, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-05 21:45 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: Dave Jones, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 2571 bytes --]
On Thu, 2004-08-05 at 23:09 +0200, Dominik Brodowski wrote:
> My bet is that speedstep_get_processor_frequency() returns something
> between one and 100000 kHz instead of the proper value _only_ _upon_
> _resuming_.
Yeah.
> So it'd be great if you could enable SPEEDSTEP_DEBUG in both
> files mentioned above, re-test the "resume process", and tell us what the
> lines right before the oops say.
OK. BTW: while building I got a compile error:
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c: In function `speedstep_set_state':arch/i386/kernel/cpu/cpufreq/speedstep-smi.c:183: error: `freqs' undeclared (first use in this function)
I worked around that to get it to build, but something needs fixing
there, obviously.
The messages I get before the oops (and the oops for posterity):
Back to C!
zapping low mappings.
speedstep-lib: P4 - MSR_EBC_FREQUENCY_ID: 0x16300a16 0x0
FSB code = 0, msr_lo = 372247062
fsb = 100000
mult = 372247062
speedstep-lib: P4 - FSB 100000 kHz; Multiplier 22
pentium4_get_frequency() returns = 2200000
Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 1200000, i.do_div(4757913600000, 2200000)
do_div(4826899000000, 2200000)
do_div(4306623200000, 2200000)
divide error: 0000 [#1]
Modules linked in: parport_pc(U) lp(U) parport(U) autofs4(U) ds(U) yenta_socket)CPU: 0
EIP: 0060:[<02111f15>] Not tainted
EFLAGS: 00000216 (2.6.7-1.503custom)
EIP is at time_cpufreq_notifier+0x29c/0x2a3
eax: 0233f4e8 ebx: 00000892 ecx: 00217a7d edx: 0000063c
esi: 000003ea edi: 002191c0 ebp: 00000000 esp: 20704ec0
ds: 0068 es: 007b ss: 0068
Process bash (pid: 3853, threadinfo=20704000 task=1f6b6630)
Stack: 0233ccc0 20704ef0 00000008 00000004 0212c929 20704ef0 21f6b684 023c1828
02291741 02324d42 00124f80 002191c0 00000000 00124f80 002191c0 0210ebc0
0235edb4 023548e0 0222c151 00000000 00000002 00000246 0222f17c 021390ae
Call Trace:
[<0212c929>] notifier_call_chain+0x17/0x2b
[<02291741>] cpufreq_resume+0xa9/0xd1
[<0210ebc0>] mtrr_restore+0x42/0x47
[<0222c151>] sysdev_resume+0x55/0xa5
[<0222f17c>] device_power_up+0x5/0xa
[<021390ae>] suspend_enter+0x25/0x2d
[<02139131>] enter_state+0x54/0x7f
[<02139239>] state_store+0x84/0x99
[<021391b5>] state_store+0x0/0x99
[<021a56df>] subsys_attr_store+0x19/0x21
[<021a5852>] flush_write_buffer+0x1d/0x22
[<021a5879>] sysfs_write_file+0x22/0x35
[<02160b77>] vfs_write+0xb6/0xe2
[<02160c11>] sys_write+0x2c/0x42
Code: 31 c0 5b 5e 5f 5d c3 55 bd a4 cc 33 02 57 56 53 83 ec 24 8b
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 21:45 ` Brian J. Murrell
@ 2004-08-06 17:14 ` Dominik Brodowski
0 siblings, 0 replies; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-06 17:14 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dave Jones, cpufreq
[Sidenote: hopefully this message won't be blocked by your blacklist.]
On Thu, Aug 05, 2004 at 05:45:37PM -0400, Brian J. Murrell wrote:
> On Thu, 2004-08-05 at 23:09 +0200, Dominik Brodowski wrote:
> > My bet is that speedstep_get_processor_frequency() returns something
> > between one and 100000 kHz instead of the proper value _only_ _upon_
> > _resuming_.
>
> Yeah.
But I lost my bet, too...
> OK. BTW: while building I got a compile error:
>
> arch/i386/kernel/cpu/cpufreq/speedstep-smi.c: In function `speedstep_set_state':arch/i386/kernel/cpu/cpufreq/speedstep-smi.c:183: error: `freqs' undeclared (first use in this function)
Thanks, it's fixed in the current version, which hopefully will get into 2.6.8.
> The messages I get before the oops (and the oops for posterity):
>
> Back to C!
> zapping low mappings.
> speedstep-lib: P4 - MSR_EBC_FREQUENCY_ID: 0x16300a16 0x0
> FSB code = 0, msr_lo = 372247062
> fsb = 100000
> mult = 372247062
> speedstep-lib: P4 - FSB 100000 kHz; Multiplier 22
> pentium4_get_frequency() returns = 2200000
... which is absolutely correct.
> Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 1200000, i.
> do_div(4757913600000, 2200000)
> do_div(4826899000000, 2200000)
> do_div(4306623200000, 2200000)
... these divides look sane to me, too.
1st (should) return(s) 2162688 loops per jiffies...
2nd (should) return(s) 2194045 kHz ~ 2.2 GHz
3rd (should) return(s) 1957556 as fast_gettimeoffset_quotient.
Next thing is:
set_cyc2ns_scale(cpu_khz/1000);
cpu_khz was set a few lines above to (hopefully) 2194045;
(inlined) set_cyc2ns_scale() consists of only one instruction:
cyc2ns_scale = (1000 << CYC2NS_SCALE_FACTOR)/cpu_mhz;
and then time_cpufreq_notifier() exits with one further instruction:
write_sequnlock_irq(&xtime_lock);
return 0;
So that's _really_ strange. Could you add a "debug trap" in the form of
printk("I got here!\n");
before set_cyc2ns_scale, the write_sequnlock_irq and the return statement?
Then we'll hopefully know for sure what breaks.
Thanks,
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-05 21:09 ` Dominik Brodowski
2004-08-05 21:45 ` Brian J. Murrell
@ 2004-08-06 17:43 ` Brian J. Murrell
2004-08-06 17:55 ` Dominik Brodowski
1 sibling, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-06 17:43 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: Dave Jones, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 4961 bytes --]
On Thu, 2004-08-05 at 23:09 +0200, Dominik Brodowski wrote:
>
> My bet is that speedstep_get_processor_frequency() returns something
> between one and 100000 kHz instead of the proper value _only_ _upon_
> _resuming_.
What do _I_ win? :-)
> So it'd be great if you could enable SPEEDSTEP_DEBUG in both
> files mentioned above, re-test the "resume process", and tell us what the
> lines right before the oops say.
OK, enabled, and a boatload of other debug that I inserted in there:
Back to C!
zapping low mappings.
speedstep-lib: P4 - MSR_EBC_FREQUENCY_ID: 0x16300a16 0x0
FSB code = 0, msr_lo = 372247062
fsb = 100000
mult = 372247062
speedstep-lib: P4 - FSB 100000 kHz; Multiplier 22
pentium4_get_frequency() returns = 2200000
Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 1200000, is 2200000 kHz.
here we are in time_cpufreq_notifier 0
here we are in time_cpufreq_notifier 1
here we are in cpufreq_scale 0, old = 2162688, div = 2200000, mult = 2200000
calling do_div(4757913600000, 2200000)
here we are in cpufreq_scale 1, returning 2162688
here we are in cpufreq_scale 0, old = 2193684, div = 2200000, mult = 2200000
calling do_div(4826104800000, 2200000)
here we are in cpufreq_scale 1, returning 2193684
here we are in time_cpufreq_notifier 2, cpu_khz = 2193684
here we are in cpufreq_scale 0, old = 1957878, div = 2200000, mult = 2200000
calling do_div(4307331600000, 2200000)
here we are in cpufreq_scale 1, returning 1957878
here we are in time_cpufreq_notifier 3, fast_gettimeoffset_quotient = 1957878
here we are in set_cyc2ns_scale 0, cpu_mhz = 2193
here we are in time_cpufreq_notifier 4
here we are in time_cpufreq_notifier 5
divide error: 0000 [#1]
Modules linked in: parport_pc(U) lp(U) parport(U) autofs4(U) ds(U) yenta_socket(U) pcmcia_core(U) sunrpc(U) 3c59x(U) floppy(U) sg(U) scsi_mod(U) dm_mod(U) uhci_hcd(U) button(U) battery(U) asus_acpi(U) ac(U) radeon(U) md5(U) ipv6(U) ext3(U)
jbd(U)
CPU: 0
EIP: 0060:[<02111fd6>] Not tainted
EFLAGS: 00000202 (2.6.7-1.503custom)
EIP is at time_cpufreq_notifier+0x35d/0x36c
eax: 0233f4e8 ebx: 00000891 ecx: 0233d480 edx: 00000000
esi: 00000891 edi: 02302986 ebp: 001ddff6 esp: 204f4eb4
ds: 0068 es: 007b ss: 0068
Process bash (pid: 4250, threadinfo=204f4000 task=1eca5830)
Stack: 02302a53 e0f84e80 00000000 0233ccc0 204f4ef0 00000008 00000004 0212c929
204f4ef0 21f6b684 023c1828 02291741 02324f2b 00124f80 002191c0 00000000
00124f80 002191c0 0210ebc0 0235edb4 023548e0 0222c151 00000000 00000002
Call Trace:
[<0212c929>] notifier_call_chain+0x17/0x2b
[<02291741>] cpufreq_resume+0xa9/0xd1
[<0210ebc0>] mtrr_restore+0x42/0x47
[<0222c151>] sysdev_resume+0x55/0xa5
[<0222f17c>] device_power_up+0x5/0xa
[<021390ae>] suspend_enter+0x25/0x2d
[<02139131>] enter_state+0x54/0x7f
[<02139239>] state_store+0x84/0x99
[<021391b5>] state_store+0x0/0x99
[<021a56df>] subsys_attr_store+0x19/0x21
[<021a5852>] flush_write_buffer+0x1d/0x22
[<021a5879>] sysfs_write_file+0x22/0x35
[<02160b77>] vfs_write+0xb6/0xe2
[<02160c11>] sys_write+0x2c/0x42
Code: e8 cd ce 00 00 83 c4 0c 31 c0 5b 5e 5f 5d c3 55 bd a4 cc 33
Here is my printk littered time_cpufreq_notifier to correlate all those
messages above:
static int
time_cpufreq_notifier(struct notifier_block *nb, unsigned long val,
void *data)
{
struct cpufreq_freqs *freq = data;
printk("here we are in time_cpufreq_notifier 0\n");
write_seqlock_irq(&xtime_lock);
if (!ref_freq) {
ref_freq = freq->old;
loops_per_jiffy_ref = cpu_data[freq->cpu].loops_per_jiffy;
#ifndef CONFIG_SMP
fast_gettimeoffset_ref = fast_gettimeoffset_quotient;
cpu_khz_ref = cpu_khz;
#endif
}
if ((val == CPUFREQ_PRECHANGE && freq->old < freq->new) ||
(val == CPUFREQ_POSTCHANGE && freq->old > freq->new) ||
(val == CPUFREQ_RESUMECHANGE)) {
printk("here we are in time_cpufreq_notifier 1\n");
if (!(freq->flags & CPUFREQ_CONST_LOOPS))
cpu_data[freq->cpu].loops_per_jiffy = cpufreq_scale(loops_per_jiffy_ref, ref_freq, freq->new);
#ifndef CONFIG_SMP
if (cpu_khz)
cpu_khz = cpufreq_scale(cpu_khz_ref, ref_freq, freq->new);
printk("here we are in time_cpufreq_notifier 2, cpu_khz = %lu\n", cpu_khz);
if (use_tsc) {
if (!(freq->flags & CPUFREQ_CONST_LOOPS)) {
fast_gettimeoffset_quotient = cpufreq_scale(fast_gettimeoffset_ref, freq->new, ref_freq);
printk("here we are in time_cpufreq_notifier 3, fast_gettimeoffset_quotient = %lu\n", fast_gettimeoffset_quotient);
set_cyc2ns_scale(cpu_khz/1000);
}
}
#endif
printk("here we are in time_cpufreq_notifier 4\n");
}
printk("here we are in time_cpufreq_notifier 5\n");
write_sequnlock_irq(&xtime_lock);
printk("here we are in time_cpufreq_notifier 6\n");
return 0;
}
Notice in the debug output, we never get the "here we are in
time_cpufreq_notifier 6" message.
Thots?
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 17:43 ` Brian J. Murrell
@ 2004-08-06 17:55 ` Dominik Brodowski
2004-08-06 21:13 ` Dave Jones
2004-08-07 13:24 ` Dominik Brodowski
0 siblings, 2 replies; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-06 17:55 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dave Jones, cpufreq
On Fri, Aug 06, 2004 at 01:43:34PM -0400, Brian J. Murrell wrote:
> printk("here we are in time_cpufreq_notifier 5\n");
> write_sequnlock_irq(&xtime_lock);
> printk("here we are in time_cpufreq_notifier 6\n");
So _this_ is where it fails... Davej, any idea?
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 17:55 ` Dominik Brodowski
@ 2004-08-06 21:13 ` Dave Jones
2004-08-06 21:18 ` Brian J. Murrell
2004-08-07 13:24 ` Dominik Brodowski
1 sibling, 1 reply; 31+ messages in thread
From: Dave Jones @ 2004-08-06 21:13 UTC (permalink / raw)
To: Brian J. Murrell, cpufreq
On Fri, Aug 06, 2004 at 07:55:30PM +0200, Dominik Brodowski wrote:
> On Fri, Aug 06, 2004 at 01:43:34PM -0400, Brian J. Murrell wrote:
> > printk("here we are in time_cpufreq_notifier 5\n");
> > write_sequnlock_irq(&xtime_lock);
> > printk("here we are in time_cpufreq_notifier 6\n");
>
> So _this_ is where it fails... Davej, any idea?
Why on _earth_ would that divide by zero ?!
I'd like to see an objdump -D output of that function.
What compiler was used?
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 21:13 ` Dave Jones
@ 2004-08-06 21:18 ` Brian J. Murrell
2004-08-06 21:44 ` Dave Jones
0 siblings, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-06 21:18 UTC (permalink / raw)
To: Dave Jones; +Cc: cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 550 bytes --]
On Fri, 2004-08-06 at 22:13 +0100, Dave Jones wrote:
> Why on _earth_ would that divide by zero ?!
You got me. :-)
> I'd like to see an objdump -D output of that function.
How do I do that?
> What compiler was used?
Whatever is on rawhide at the moment...
$ gcc --version
gcc (GCC) 3.4.1 20040714 (Red Hat 3.4.1-7)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 21:18 ` Brian J. Murrell
@ 2004-08-06 21:44 ` Dave Jones
2004-08-06 22:10 ` Brian J. Murrell
0 siblings, 1 reply; 31+ messages in thread
From: Dave Jones @ 2004-08-06 21:44 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: cpufreq
On Fri, Aug 06, 2004 at 05:18:29PM -0400, Brian J. Murrell wrote:
> On Fri, 2004-08-06 at 22:13 +0100, Dave Jones wrote:
> > Why on _earth_ would that divide by zero ?!
>
> You got me. :-)
>
> > I'd like to see an objdump -D output of that function.
>
> How do I do that?
no worries because..
> > What compiler was used?
> Whatever is on rawhide at the moment...
I have that locally.
Can you add some debug printk's just before the cpufreq_scale() calls
in time_cpufreq_notifier ? I'd like to know what's being passed there.
Might be worth a printk actually _in_ cpufreq_scale() too, to make
sure the args are getting through ok.
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 21:44 ` Dave Jones
@ 2004-08-06 22:10 ` Brian J. Murrell
2004-08-06 22:51 ` Dave Jones
0 siblings, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-06 22:10 UTC (permalink / raw)
To: Dave Jones; +Cc: cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 3060 bytes --]
On Fri, 2004-08-06 at 22:44 +0100, Dave Jones wrote:
>
> I have that locally.
Heh. Yeah, I guess so.
> Can you add some debug printk's just before the cpufreq_scale() calls
> in time_cpufreq_notifier ? I'd like to know what's being passed there.
> Might be worth a printk actually _in_ cpufreq_scale() too, to make
> sure the args are getting through ok.
Here it is:
Back to C!
zapping low mappings.
speedstep-lib: P4 - MSR_EBC_FREQUENCY_ID: 0x16300a16 0x0
FSB code = 0, msr_lo = 372247062
fsb = 100000
mult = 372247062
speedstep-lib: P4 - FSB 100000 kHz; Multiplier 22
pentium4_get_frequency() returns = 2200000
Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 1200000, i.here we are in time_cpufreq_notifier 0
here we are in time_cpufreq_notifier 1
calling cpufreq_scale(2162688, 2200000, 2200000)
here we are in cpufreq_scale 0, old = 2162688, div = 2200000, mult = 2200000
calling do_div(4757913600000, 2200000)
here we are in cpufreq_scale 1, returning 2162688
calling cpufreq_scale(2193684, 2200000, 2200000)
here we are in cpufreq_scale 0, old = 2193684, div = 2200000, mult = 2200000
calling do_div(4826104800000, 2200000)
here we are in cpufreq_scale 1, returning 2193684
here we are in time_cpufreq_notifier 2, cpu_khz = 2193684
calling cpufreq_scale(1957878, 2200000, 2200000)
here we are in cpufreq_scale 0, old = 1957878, div = 2200000, mult = 2200000
calling do_div(4307331600000, 2200000)
here we are in cpufreq_scale 1, returning 1957878
here we are in time_cpufreq_notifier 3, fast_gettimeoffset_quotient = 1957878
here we are in set_cyc2ns_scale 0, cpu_mhz = 2193
here we are in time_cpufreq_notifier 4
here we are in time_cpufreq_notifier 5
divide error: 0000 [#1]
Modules linked in: parport_pc(U) lp(U) parport(U) autofs4(U) ds(U) yenta_socket)CPU: 0
EIP: 0060:[<02112032>] Not tainted
EFLAGS: 00000202 (2.6.7-1.503custom)
EIP is at time_cpufreq_notifier+0x3b9/0x3c8
eax: 0233f4e8 ebx: 00000891 ecx: 0233d480 edx: 00000000
esi: 00000891 edi: 023029aa ebp: 001ddff6 esp: 21162eb4
ds: 0068 es: 007b ss: 0068
Process bash (pid: 4695, threadinfo=21162000 task=1ecde130)
Stack: 02302a77 e0f84e80 00000000 0233ccc0 21162ef0 00000008 00000004 0212c929
21162ef0 21f6b684 023c1828 02291741 02324f4f 00124f80 002191c0 00000000
00124f80 002191c0 0210ebc0 0235edb4 023548e0 0222c151 00000000 00000002
Call Trace:
[<0212c929>] notifier_call_chain+0x17/0x2b
[<02291741>] cpufreq_resume+0xa9/0xd1
[<0210ebc0>] mtrr_restore+0x42/0x47
[<0222c151>] sysdev_resume+0x55/0xa5
[<0222f17c>] device_power_up+0x5/0xa
[<021390ae>] suspend_enter+0x25/0x2d
[<02139131>] enter_state+0x54/0x7f
[<02139239>] state_store+0x84/0x99
[<021391b5>] state_store+0x0/0x99
[<021a56df>] subsys_attr_store+0x19/0x21
[<021a5852>] flush_write_buffer+0x1d/0x22
[<021a5879>] sysfs_write_file+0x22/0x35
[<02160b77>] vfs_write+0xb6/0xe2
[<02160c11>] sys_write+0x2c/0x42
Code: e8 71 ce 00 00 83 c4 0c 31 c0 5b 5e 5f 5d c3 55 bd a4 cc 33
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 22:10 ` Brian J. Murrell
@ 2004-08-06 22:51 ` Dave Jones
2004-08-06 23:00 ` Brian J. Murrell
0 siblings, 1 reply; 31+ messages in thread
From: Dave Jones @ 2004-08-06 22:51 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: cpufreq
On Fri, Aug 06, 2004 at 06:10:28PM -0400, Brian J. Murrell wrote:
> here we are in time_cpufreq_notifier 1
> calling cpufreq_scale(2162688, 2200000, 2200000)
> here we are in cpufreq_scale 0, old = 2162688, div = 2200000, mult = 2200000
> calling do_div(4757913600000, 2200000)
> here we are in cpufreq_scale 1, returning 2162688
> calling cpufreq_scale(2193684, 2200000, 2200000)
> here we are in cpufreq_scale 0, old = 2193684, div = 2200000, mult = 2200000
> calling do_div(4826104800000, 2200000)
> here we are in cpufreq_scale 1, returning 2193684
> here we are in time_cpufreq_notifier 2, cpu_khz = 2193684
> calling cpufreq_scale(1957878, 2200000, 2200000)
> here we are in cpufreq_scale 0, old = 1957878, div = 2200000, mult = 2200000
> calling do_div(4307331600000, 2200000)
> here we are in cpufreq_scale 1, returning 1957878
> here we are in time_cpufreq_notifier 3, fast_gettimeoffset_quotient = 1957878
> here we are in set_cyc2ns_scale 0, cpu_mhz = 2193
Did you get the 3rd cpufreq_scale() call too ? I think that might be
the one thats going awry.
(The one in the fast_gettimeoffset_quotient = .. line)
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 22:51 ` Dave Jones
@ 2004-08-06 23:00 ` Brian J. Murrell
2004-08-06 23:23 ` Dave Jones
0 siblings, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-06 23:00 UTC (permalink / raw)
To: Dave Jones; +Cc: cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 1451 bytes --]
On Fri, 2004-08-06 at 23:51 +0100, Dave Jones wrote:
> On Fri, Aug 06, 2004 at 06:10:28PM -0400, Brian J. Murrell wrote:
>
> > here we are in time_cpufreq_notifier 1
> 1> calling cpufreq_scale(2162688, 2200000, 2200000)
> 1> here we are in cpufreq_scale 0, old = 2162688, div = 2200000, mult = 2200000
> 1> calling do_div(4757913600000, 2200000)
> 1> here we are in cpufreq_scale 1, returning 2162688
> 2> calling cpufreq_scale(2193684, 2200000, 2200000)
> 2> here we are in cpufreq_scale 0, old = 2193684, div = 2200000, mult = 2200000
> 2> calling do_div(4826104800000, 2200000)
> 2> here we are in cpufreq_scale 1, returning 2193684
> > here we are in time_cpufreq_notifier 2, cpu_khz = 2193684
> 3> calling cpufreq_scale(1957878, 2200000, 2200000)
> 3> here we are in cpufreq_scale 0, old = 1957878, div = 2200000, mult = 2200000
> 3> calling do_div(4307331600000, 2200000)
> 3> here we are in cpufreq_scale 1, returning 1957878
> > here we are in time_cpufreq_notifier 3, fast_gettimeoffset_quotient = 1957878
> > here we are in set_cyc2ns_scale 0, cpu_mhz = 2193
>
> Did you get the 3rd cpufreq_scale() call too ? I think that might be
> the one thats going awry.
Those are the three up there aren't they? I've prefixed each block of
debug with the number of the cpufreq_scale() call. I could be mistaken.
> (The one in the fast_gettimeoffset_quotient = .. line)
Yup, that's #3 up there isn't it?
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 23:00 ` Brian J. Murrell
@ 2004-08-06 23:23 ` Dave Jones
0 siblings, 0 replies; 31+ messages in thread
From: Dave Jones @ 2004-08-06 23:23 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: cpufreq
On Fri, Aug 06, 2004 at 07:00:15PM -0400, Brian J. Murrell wrote:
> On Fri, 2004-08-06 at 23:51 +0100, Dave Jones wrote:
> > On Fri, Aug 06, 2004 at 06:10:28PM -0400, Brian J. Murrell wrote:
> >
> > > here we are in time_cpufreq_notifier 1
> > 1> calling cpufreq_scale(2162688, 2200000, 2200000)
> > 1> here we are in cpufreq_scale 0, old = 2162688, div = 2200000, mult = 2200000
> > 1> calling do_div(4757913600000, 2200000)
> > 1> here we are in cpufreq_scale 1, returning 2162688
> > 2> calling cpufreq_scale(2193684, 2200000, 2200000)
> > 2> here we are in cpufreq_scale 0, old = 2193684, div = 2200000, mult = 2200000
> > 2> calling do_div(4826104800000, 2200000)
> > 2> here we are in cpufreq_scale 1, returning 2193684
> > > here we are in time_cpufreq_notifier 2, cpu_khz = 2193684
> > 3> calling cpufreq_scale(1957878, 2200000, 2200000)
> > 3> here we are in cpufreq_scale 0, old = 1957878, div = 2200000, mult = 2200000
> > 3> calling do_div(4307331600000, 2200000)
> > 3> here we are in cpufreq_scale 1, returning 1957878
> > > here we are in time_cpufreq_notifier 3, fast_gettimeoffset_quotient = 1957878
> > > here we are in set_cyc2ns_scale 0, cpu_mhz = 2193
> >
> > Did you get the 3rd cpufreq_scale() call too ? I think that might be
> > the one thats going awry.
>
> Those are the three up there aren't they? I've prefixed each block of
> debug with the number of the cpufreq_scale() call. I could be mistaken.
>
> > (The one in the fast_gettimeoffset_quotient = .. line)
>
> Yup, that's #3 up there isn't it?
oops, couldnt see the wood for the trees.
hmm, puzzled.
Dave
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-06 17:55 ` Dominik Brodowski
2004-08-06 21:13 ` Dave Jones
@ 2004-08-07 13:24 ` Dominik Brodowski
2004-08-07 19:03 ` Brian J. Murrell
1 sibling, 1 reply; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-07 13:24 UTC (permalink / raw)
To: Brian J. Murrell, Dave Jones, cpufreq
On Fri, Aug 06, 2004 at 07:55:30PM +0200, Dominik Brodowski wrote:
> On Fri, Aug 06, 2004 at 01:43:34PM -0400, Brian J. Murrell wrote:
> > printk("here we are in time_cpufreq_notifier 5\n");
> > write_sequnlock_irq(&xtime_lock);
> > printk("here we are in time_cpufreq_notifier 6\n");
>
> So _this_ is where it fails... Davej, any idea?
Might it be that interrupts are still disabled during the RESUME
notification, and
#define write_sequnlock_irq(lock) \
do { write_sequnlock(lock); local_irq_enable(); } while(0)
tries to enable them?
Thanks,
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-07 13:24 ` Dominik Brodowski
@ 2004-08-07 19:03 ` Brian J. Murrell
2004-08-08 16:24 ` Dominik Brodowski
0 siblings, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-07 19:03 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: Dave Jones, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 575 bytes --]
On Sat, 2004-08-07 at 15:24 +0200, Dominik Brodowski wrote:
>
> Might it be that interrupts are still disabled during the RESUME
> notification, and
>
> #define write_sequnlock_irq(lock) \
> do { write_sequnlock(lock); local_irq_enable(); } while(0)
>
> tries to enable them?
But that sounds like such a fundamental issue that surely I would not be
the first person to find it, especially considering how long even I was
seeing it before I found the time to work it up into a bug report.
Am I wrong?
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-07 19:03 ` Brian J. Murrell
@ 2004-08-08 16:24 ` Dominik Brodowski
2004-08-09 13:37 ` Brian J. Murrell
2004-08-09 17:27 ` Brian J. Murrell
0 siblings, 2 replies; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-08 16:24 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dave Jones, cpufreq
On Sat, Aug 07, 2004 at 03:03:42PM -0400, Brian J. Murrell wrote:
> On Sat, 2004-08-07 at 15:24 +0200, Dominik Brodowski wrote:
> >
> > Might it be that interrupts are still disabled during the RESUME
> > notification, and
> >
> > #define write_sequnlock_irq(lock) \
> > do { write_sequnlock(lock); local_irq_enable(); } while(0)
> >
> > tries to enable them?
>
> But that sounds like such a fundamental issue that surely I would not be
> the first person to find it, especially considering how long even I was
> seeing it before I found the time to work it up into a bug report.
Problem is, I don't use the resume funcitonality on my notebook as that's
only available with the "vga" video driver instead of "i830"; and I can't
even try it now as my notebook is in quite a sick state [disk corruption!]
caused either by Ingo's voluntary-preempt patches or some experimenting by
myself, which accessed free'd data as if it were non-free'd...
Anyways, I've prepared a patch to work around the "local_irq_enable()" call.
Could you test it, please?
Dominik
diff -ruN linux-original/arch/i386/kernel/timers/timer_tsc.c linux/arch/i386/kernel/timers/timer_tsc.c
--- linux-original/arch/i386/kernel/timers/timer_tsc.c 2004-08-05 17:44:47.000000000 +0200
+++ linux/arch/i386/kernel/timers/timer_tsc.c 2004-08-08 18:23:27.791458408 +0200
@@ -265,7 +265,8 @@
{
struct cpufreq_freqs *freq = data;
- write_seqlock_irq(&xtime_lock);
+ if (val != CPUFREQ_RESUMECHANGE)
+ write_seqlock_irq(&xtime_lock);
if (!ref_freq) {
ref_freq = freq->old;
loops_per_jiffy_ref = cpu_data[freq->cpu].loops_per_jiffy;
@@ -291,7 +292,9 @@
}
#endif
}
- write_sequnlock_irq(&xtime_lock);
+
+ if (val != CPUFREQ_RESUMECHANGE)
+ write_sequnlock_irq(&xtime_lock);
return 0;
}
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-08 16:24 ` Dominik Brodowski
@ 2004-08-09 13:37 ` Brian J. Murrell
2004-08-09 14:53 ` Dominik Brodowski
2004-08-09 17:27 ` Brian J. Murrell
1 sibling, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-09 13:37 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: Dave Jones, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 636 bytes --]
On Sun, 2004-08-08 at 18:24 +0200, Dominik Brodowski wrote:
>
> Problem is, I don't use the resume funcitonality on my notebook
But surely lots of people are. If the patch below were necessary and
correct, would not a lot more people be having the same problem? Unless
I am mis-understanding the intent of the patch. Do you mean it as a
further test/confirmation that write_seqlock_irq() is the culprit or do
you mean the patch as the solution to my problem?
> Anyways, I've prepared a patch to work around the "local_irq_enable()" call.
> Could you test it, please?
Sure. I will let you know how it does.
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-09 13:37 ` Brian J. Murrell
@ 2004-08-09 14:53 ` Dominik Brodowski
0 siblings, 0 replies; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-09 14:53 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dave Jones, cpufreq
On Mon, Aug 09, 2004 at 09:37:46AM -0400, Brian J. Murrell wrote:
> On Sun, 2004-08-08 at 18:24 +0200, Dominik Brodowski wrote:
> >
> > Problem is, I don't use the resume funcitonality on my notebook
>
> But surely lots of people are. If the patch below were necessary and
> correct, would not a lot more people be having the same problem?
Not necessarily. Bugs are sometimes very difficult to trigger.
> Unless
> I am mis-understanding the intent of the patch. Do you mean it as a
> further test/confirmation that write_seqlock_irq() is the culprit or do
> you mean the patch as the solution to my problem?
It's actually a try for a solution.
Thanks,
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-08 16:24 ` Dominik Brodowski
2004-08-09 13:37 ` Brian J. Murrell
@ 2004-08-09 17:27 ` Brian J. Murrell
2004-08-09 19:38 ` Dominik Brodowski
1 sibling, 1 reply; 31+ messages in thread
From: Brian J. Murrell @ 2004-08-09 17:27 UTC (permalink / raw)
To: Dominik Brodowski; +Cc: Dave Jones, cpufreq
[-- Attachment #1.1: Type: text/plain, Size: 3293 bytes --]
On Sun, 2004-08-08 at 18:24 +0200, Dominik Brodowski wrote:
>
> Anyways, I've prepared a patch to work around the "local_irq_enable()" call.
> Could you test it, please?
No oops this time, but here is the console output:
Back to C!
zapping low mappings.
speedstep-lib: P4 - MSR_EBC_FREQUENCY_ID: 0x16300a16 0x0
FSB code = 0, msr_lo = 372247062
fsb = 100000
mult = 372247062
speedstep-lib: P4 - FSB 100000 kHz; Multiplier 22
pentium4_get_frequency() returns = 2200000
Warning: CPU frequency out of sync: cpufreq and timingcore thinks of 1200000, is 2200000 kHz.
here we are in time_cpufreq_notifier 0
here we are in time_cpufreq_notifier 1
calling cpufreq_scale(2162688, 2200000, 2200000)
here we are in cpufreq_scale 0, old = 2162688, div = 2200000, mult = 2200000
calling do_div(4757913600000, 2200000)
here we are in cpufreq_scale 1, returning 2162688
calling cpufreq_scale(2193778, 2200000, 2200000)
here we are in cpufreq_scale 0, old = 2193778, div = 2200000, mult = 2200000
calling do_div(4826311600000, 2200000)
here we are in cpufreq_scale 1, returning 2193778
here we are in time_cpufreq_notifier 2, cpu_khz = 2193778
calling cpufreq_scale(1957794, 2200000, 2200000)
here we are in cpufreq_scale 0, old = 1957794, div = 2200000, mult = 2200000
calling do_div(4307146800000, 2200000)
here we are in cpufreq_scale 1, returning 1957794
here we are in time_cpufreq_notifier 3, fast_gettimeoffset_quotient = 1957794
here we are in set_cyc2ns_scale 0, cpu_mhz = 2193
here we are in time_cpufreq_notifier 4
here we are in time_cpufreq_notifier 5
here we are in time_cpufreq_notifier 6
here we are in cpufreq_scale 0, old = 2162688, div = 2200000, mult = 2200000
calling do_div(4757913600000, 2200000)
here we are in cpufreq_scale 1, returning 2162688
PM: Finishing up.
PCI: Setting latency timer of device 0000:00:1d.0 to 64
PCI: Setting latency timer of device 0000:00:1d.0 to 64
ACPI: PCI interrupt 0000:00:1f.1[A] -> GSI 11 (level, low) -> IRQ 11
eth0: command 0x5800 did not complete! Status=0xffff
eth0: command 0x2804 did not complete! Status=0xffff
drivers/acpi/osl.c:737: spin_lock(drivers/acpi/osl.c:21fe0bf8) already locked by drivers/acpi/osl.c/737
drivers/acpi/osl.c:756: spin_unlock(drivers/acpi/osl.c:21fe0bf8) not locked
Restarting tasks... done
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x5800 did not complete! Status=0xffff
eth0: command 0x2804 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
eth0: command 0x3002 did not complete! Status=0xffff
So we do hit "time_cpufreq_notifier 6" now, but we also get some errors
about spinlocks. The screen is black and my ssh session is dead so I am
not so sure of the state of the machine. I should have put a getty on
that serial console. Wait, I just logged in "blindly" on the console
and did a shutdown, so it seems to have resumed ok, apart from the above
issues.
b.
[-- Attachment #1.2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
Cpufreq mailing list
Cpufreq@www.linux.org.uk
http://www.linux.org.uk/mailman/listinfo/cpufreq
^ permalink raw reply [flat|nested] 31+ messages in thread
* Re: oops on resume
2004-08-09 17:27 ` Brian J. Murrell
@ 2004-08-09 19:38 ` Dominik Brodowski
0 siblings, 0 replies; 31+ messages in thread
From: Dominik Brodowski @ 2004-08-09 19:38 UTC (permalink / raw)
To: Brian J. Murrell; +Cc: Dave Jones, cpufreq
On Mon, Aug 09, 2004 at 01:27:50PM -0400, Brian J. Murrell wrote:
> So we do hit "time_cpufreq_notifier 6" now, but we also get some errors
> about spinlocks.
... which is not cpufreq-related, AFAICS.
> The screen is black
Have you tried the different acpi_sleep options? Also, check out the
comments in this bug: http://bugzilla.kernel.org/show_bug.cgi?id=1877
> and my ssh session is dead
'cause there seems to be some problem with the eth driver and/or hardware.
Try building it as a module, rmmod it before resume, modprobe it afterwards.
> that serial console. Wait, I just logged in "blindly" on the console
> and did a shutdown, so it seems to have resumed ok, apart from the above
> issues.
Good luck in solving the other issues, I'll push the oops-avoiding patch
upstreams soon.
Thanks,
Dominik
^ permalink raw reply [flat|nested] 31+ messages in thread
end of thread, other threads:[~2004-08-09 19:38 UTC | newest]
Thread overview: 31+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-05 19:02 oops on resume Brian J. Murrell
2004-08-05 19:26 ` Dominik Brodowski
2004-08-05 19:34 ` Brian J. Murrell
2004-08-05 19:52 ` Dave Jones
2004-08-05 20:02 ` Brian J. Murrell
2004-08-05 20:08 ` Dave Jones
2004-08-05 20:19 ` Brian J. Murrell
2004-08-05 20:29 ` Dave Jones
2004-08-05 21:03 ` Dominik Brodowski
2004-08-05 21:26 ` Brian J. Murrell
2004-08-05 21:27 ` Dave Jones
2004-08-05 21:29 ` Dave Jones
2004-08-05 21:09 ` Dominik Brodowski
2004-08-05 21:45 ` Brian J. Murrell
2004-08-06 17:14 ` Dominik Brodowski
2004-08-06 17:43 ` Brian J. Murrell
2004-08-06 17:55 ` Dominik Brodowski
2004-08-06 21:13 ` Dave Jones
2004-08-06 21:18 ` Brian J. Murrell
2004-08-06 21:44 ` Dave Jones
2004-08-06 22:10 ` Brian J. Murrell
2004-08-06 22:51 ` Dave Jones
2004-08-06 23:00 ` Brian J. Murrell
2004-08-06 23:23 ` Dave Jones
2004-08-07 13:24 ` Dominik Brodowski
2004-08-07 19:03 ` Brian J. Murrell
2004-08-08 16:24 ` Dominik Brodowski
2004-08-09 13:37 ` Brian J. Murrell
2004-08-09 14:53 ` Dominik Brodowski
2004-08-09 17:27 ` Brian J. Murrell
2004-08-09 19:38 ` Dominik Brodowski
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.