cpufreq(4) panic on RELENG_7 (was: Re: Call for bfe(4) testers.)

John Baldwin jhb at freebsd.org
Wed Aug 6 22:12:09 UTC 2008


On Wednesday 06 August 2008 04:06:43 pm Ulrich Spoerlein wrote:
> On Mon, 04.08.2008 at 16:07:55 -0400, John Baldwin wrote:
> > On Monday 04 August 2008 02:29:19 pm Ulrich Spoerlein wrote:
> > > Fatal trap 12: page fault while in kernel mode
> > > cpuid = 0; apic id = 00
> > > fault virtual address   = 0x38
> > > fault code              = supervisor read, page not present
> > > instruction pointer     = 0x20:0xc058ec16
> > > stack pointer           = 0x28:0xfb8b8ac8
> > > frame pointer           = 0x28:0xfb8b8ac8
> > > code segment            = base 0x0, limit 0xfffff, type 0x1b
> > >                         = DPL 0, pres 1, def32 1, gran 1
> > > processor eflags        = interrupt enabled, resume, IOPL = 0
> > > current process         = 1176 (powerd)
> > > db:0:kdb.enter.default>  show pcpu
> > > cpuid        = 0
> > > curthread    = 0xc4ec0aa0: pid 1176 "powerd"
> > > curpcb       = 0xfb8b8d90
> > > fpcurthread  = none
> > > idlethread   = 0xc3f80cc0: pid 10 "idle: cpu0"
> > > APIC ID      = 0
> > > currentldt   = 0x50
> > > db:0:kdb.enter.default>  bt
> > > Tracing pid 1176 tid 100103 td 0xc4ec0aa0
> > > device_is_attached(0,c87e6b40,fb8b8afc,0,101,...) at
> > > device_is_attached+0x6
> > > cf_set_method(c420b600,c87e6b40,64,fb8b8ba4,c87e33b4,...) at
> >
> > cf_set_method+0x6a3
> >
> > > cpufreq_curr_sysctl(c420d840,c4207000,0,fb8b8ba4,fb8b8ba4,...) at
> >
> > cpufreq_curr_sysctl+0x232
> >
> > > sysctl_root(fb8b8ba4,4,1,c4ec0aa0,c4501d38,...) at sysctl_root+0x137
> > > userland_sysctl(c4ec0aa0,fb8b8c14,4,0,0,...) at userland_sysctl+0x151
> > > __sysctl(c4ec0aa0,fb8b8cfc,18,fb8b8ca0,46,...) at __sysctl+0xec
> > > syscall(fb8b8d38) at syscall+0x345
> > > Xint0x80_syscall() at Xint0x80_syscall+0x20
> > > --- syscall (202, FreeBSD ELF32, __sysctl), eip = 0x28161bd3, esp =
> >
> > 0xbfbfe8cc, ebp = 0xbfbfe8f8 ---
> >
> > > db:0:kdb.enter.default>  capture off
> > >
> > > Seems like I caught RELENG_7 during a bad time. Will update again.
> >
> > What cpufreq drivers do you have loaded and attached?  This patch might
> > work around the issue, but I suspect there is a bug in one of the cpufreq
> > drivers.
>
> Hi John,
>
> sorry for the slow update, please bear with me.
>
> This is on a first generation Pentium-M (Banias core) with EST (and also
> p4tcc attached, as I just discovered):
>
> CPU: Intel(R) Pentium(R) M processor 1.50GHz (1495.15-MHz 686-class CPU)
>   Origin = "GenuineIntel"  Id = 0x6d6  Stepping = 6
>  
> Features=0xafe9f9bf<FPU,VME,DE,PSE,TSC,MSR,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PA
>T,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,TM,PBE> Features2=0x180<EST,TM2>
> ..
> cpu0: <ACPI CPU> on acpi0
> est0: <Enhanced SpeedStep Frequency Control> on cpu0
> p4tcc0: <CPU Frequency Thermal Control> on cpu0
>
>
> dev.cpu.0.%desc: ACPI CPU
> dev.cpu.0.%driver: cpu
> dev.cpu.0.%location: handle=\_PR_.CPU0
> dev.cpu.0.%pnpinfo: _HID=none _UID=0
> dev.cpu.0.%parent: acpi0
> dev.cpu.0.freq: 300
> dev.cpu.0.freq_levels: 1500/-1 1312/-1 1200/-1 1050/-1 1000/-1 875/-1
> 800/-1 700/-1 600/-1 525/-1 450/-1 375/-1 300/-1 225/-1 150/-1 75/-1
> dev.cpu.0.cx_supported: C1/1 C2/1 C3/85 C4/185
> dev.cpu.0.cx_lowest: C1
> dev.cpu.0.cx_usage: 100.00% 0.00% 0.00% 0.00%
> dev.acpi_perf.0.%parent: cpu0
> dev.est.0.%desc: Enhanced SpeedStep Frequency Control
> dev.est.0.%driver: est
> dev.est.0.%parent: cpu0
> dev.est.0.freq_settings: 1500/-1 1200/-1 1000/-1 800/-1 600/-1
> dev.cpufreq.0.%driver: cpufreq
> dev.cpufreq.0.%parent: cpu0
> dev.p4tcc.0.%desc: CPU Frequency Thermal Control
> dev.p4tcc.0.%driver: p4tcc
> dev.p4tcc.0.%parent: cpu0
> dev.p4tcc.0.freq_settings: 10000/-1 8750/-1 7500/-1 6250/-1 5000/-1 3750/-1
> 2500/-1 1250/-1
>
> a kernel from 2008-06-13 is the last known working one. I just had the
> same crash with a kernel from sources at 2008-07-01 and am new
> recompiling for 2008-06-24.
>
> Your MFC of est.c rev 180044 might be the problem, I'll try a backout
> once I confirmed that the 2008-06-24 kernel is running stable.

I doubt this will cause it.
> > Index: kern_cpu.c
> > ===================================================================
> > RCS file: /usr/cvs/src/sys/kern/kern_cpu.c,v
> > retrieving revision 1.27.2.2
> > diff -u -r1.27.2.2 kern_cpu.c
> > --- kern_cpu.c  9 May 2008 19:02:10 -0000       1.27.2.2
> > +++ kern_cpu.c  4 Aug 2008 20:07:41 -0000
> > @@ -329,6 +329,8 @@
> >         /* Next, set any/all relative frequencies via their drivers. */
> >         for (i = 0; i < level->rel_count; i++) {
> >                 set = &level->rel_set[i];
> > +               if (set->dev == NULL)
> > +                       continue;
> >                 if (!device_is_attached(set->dev)) {
> >                         error = ENXIO;
> >                         goto out;
>
> Will try that one too, hopefully tomorrow.
>
> Will also disable p4tcc. This was not attaching during the RELENG_6
> times but leads to ridiculous rates of 75 MHz.

If p4tcc attaching is new, that might point to the culprit.  A good quick test 
would be to disable individual cpufreq drivers to find out which one causes 
the panic.

-- 
John Baldwin


More information about the freebsd-stable mailing list