patch: p4tcc and speedstep cpufreq drivers

Pawel Worach pawel.worach at telia.com
Thu Feb 17 19:24:15 PST 2005


Nate Lawson wrote:
> 
> Apologies.  I found 2 bugs, one was not calling cpufreq_register() and 
> the other was that the code to detect acpi_perf (in ichss and est) was 
> incorrect.  I've committed fixes for that and have updated the patch. 
> Please ues this version and test again.
> 

On boot pre-seed PRNG does 'sysctl -a' which panics like this.
  - only cpufreq.ko loaded
  - last line of 'sysctl -a' output is "dev.cpu.0.%parent: acpi0"

Fatal trap 12: page fault while in kernel mode
fault virtual address   = 0x63204b53
fault code              = supervisor read, page not present
instruction pointer     = 0x8:0xc08ac32b
stack pointer           = 0x10:0xe4d38ab8
frame pointer           = 0x10:0xe4d38ac4
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         = 56 (sysctl)
[thread pid 56 tid 100043 ]
Stopped at      est_settings+0x1b:      movzwl  0(%ecx),%eax
db> tr
Tracing pid 56 tid 100043 td 0xc2329450
est_settings(c2367880,c23c2e00,e4d38af4,c231b800,c23c2e00) at est_settings+0x1b
cf_levels_method(c2367980,c2590000,e4d38b50,5000,1) at cf_levels_method+0x18a
cf_get_method(c2367980,c258b000,c06d2c98,1,c228b960) at cf_get_method+0xb5
cpufreq_curr_sysctl(c236c740,c231b800,0,e4d38c08,e4d38c08) at 
cpufreq_curr_sysctl+0x96
sysctl_root(0,e4d38c78,4,e4d38c08,c2329450) at sysctl_root+0x134
userland_sysctl(c2329450,e4d38c78,4,0,bfbfdbac) at userland_sysctl+0x13c
__sysctl(c2329450,e4d38d14,18,0,e4d38d20) at __sysctl+0xdc
syscall(2f,2f,2f,bfbfdbac,bfbfe470) at syscall+0x330
Xint0x80_syscall() at Xint0x80_syscall+0x1f
--- syscall (202, FreeBSD ELF32, __sysctl), eip = 0x280bdc3f, esp = 0xbfbfdb2c, 
ebp = 0xbfbfdb58 ---
db> call doadump
Dumping 1023 MB
  16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 256 272 288 304 320 336 
352 368 384 400 416 432 448 464 480 496 512 528 544 560 576 592 608 624 640 656 
672 688 704 720 736 752 768 784 800 816 832 848 864 880 896 912 928 944 960 976 
992 1008

(kgdb) l *est_settings+0x1b
0x243b is in est_settings 
(/usr/src/sys/modules/cpufreq/../../i386/cpufreq/est.c:723).
718
719             if (*count < EST_MAX_SETTINGS)
720                     return (E2BIG);
721
722             i = 0;
723             for (f = sc->freq_list; f->freq != 0; f++) {
724                     sets[i].freq = f->freq;
725                     sets[i].volts = f->volts;
726                     sets[i].power = CPUFREQ_VAL_UNKNOWN;
727                     sets[i].lat = EST_TRANS_LAT;

-- 
Pawel


More information about the freebsd-acpi mailing list