Opened 8 months ago

Last modified 7 months ago

#16504 new bug

My system with Intel J3455 runs always at 1.5 ghz

Reported by: LowTech Owned by: nobody
Priority: normal Milestone: Unscheduled
Component: System Version: R1/beta2
Keywords: Enhanced Intel SpeedStep J3455 Cc:
Blocked By: Blocking:
Platform: All

Description (last modified by LowTech)

Hi, installed Haiku R1/beta2 on my mini pc along with Windows and Linux. Haiku runs fine except a tiny boot glitch (https://discuss.haiku-os.org/t/r1-beta2-uefi-boot-issue/9915/7) and no audio.

The bug report is about a different issue: the cpu clock stucks at a single frequency. Not only programs run slower than on Windows/Linux, also the cpu gets hot and the fan spins most of the time. The cpu seems switching never to 600/800 mhz when idle. (https://discuss.haiku-os.org/t/why-do-chess-engines-run-slow-on-haiku/9929/14)


Issue supporting Enhanced Intel SpeedStep Technology

2543 KERN: no valid cpufreq module found

Because of the missing cpufreq module, Haiku can't change neither to lower clocks (down to 800mhz) when idle, nor higher (up to 2.3ghz) under load.

The cpu J3455 runs the whole time at it's default frequency of 1.5ghz. Windows and Linux don't have this problem on the same real hardware.

Attachments (3)

syslog.txt (407.7 KB ) - added by LowTech 8 months ago.
sysinfo.txt (3.9 KB ) - added by LowTech 8 months ago.
dmesg.txt (70.8 KB ) - added by LowTech 8 months ago.

Download all attachments as: .zip

Change History (27)

comment:1 by tqh, 8 months ago

Please describe hardware, exact model is preferable.

comment:2 by LowTech, 8 months ago

ACEPC AK2 (https://iacepc.com/Index/cases/caseinfo?case_id=213)

CPU: Intel Celeron J3455
GPU: Intel HD Graphics 500
RAM: 4GB DDR3L
Hard Disk 1: 64 GB EMMC
Hard Disk 2: 256GB mSATA SSD
Expansion options: Install 2.5-Inch HDD/SSD, SD Card
Wi-Fi: 2.4G/5G Built-in Wi-Fi
Bluetooth: BT 4.0

comment:3 by tqh, 8 months ago

They seem to have quite poor firmware handling. Here is the closest to official info, you need a BIOS update with an EC (embedded controller) that can control fans: https://www.iacepc.com/forum/viewtopic.php?p=1073#p1073

We are too small to handle bad manufacturer fw, so I recommend upgrading your fw first. Unless you can switch hardware.

comment:4 by LowTech, 8 months ago

Thanks for looking into!

The included EC firmware is for a different system (AK3 with cpu J4125). The fan on the AK2 has no problem with other os. It seems normal that it spins more on Haiku, because the cpu clock is stuck at 1.5ghz.

Isn't clocking managed by the cpu itself and the os via ACPI? But not by the embedded controller? Would it help to add some Linux log files?

comment:5 by LowTech, 8 months ago

Linux:

~> cat dmesg.txt | grep EC:

[    0.227017] ACPI: EC: EC started
[    0.227019] ACPI: EC: interrupt blocked
[    0.338580] ACPI: \_SB_.PCI0.SBRG.H_EC: Used as first EC
[    0.338584] ACPI: \_SB_.PCI0.SBRG.H_EC: GPE=0x2c, EC_CMD/EC_SC=0x66, EC_DATA=0x62
[    0.338586] ACPI: \_SB_.PCI0.SBRG.H_EC: Boot DSDT EC used to handle transactions
[    0.391832] ACPI: EC: interrupt unblocked
[    0.391901] ACPI: EC: event unblocked
[    0.391927] ACPI: \_SB_.PCI0.SBRG.H_EC: GPE=0x2c, EC_CMD/EC_SC=0x66, EC_DATA=0x62
[    0.391930] ACPI: \_SB_.PCI0.SBRG.H_EC: Boot DSDT EC used to handle transactions and events

~> cat dmesg.txt | grep error

[    6.651025] EDAC pnd2: Failed to register device with error -22.
[    6.735578] EDAC pnd2: Failed to register device with error -22.
[    6.779803] EDAC pnd2: Failed to register device with error -22.
[    6.866720] EDAC pnd2: Failed to register device with error -22.

comment:6 by tqh, 8 months ago

Windows (and often Linux) install hw specific drivers for fan control. Haiku doesn't, as it is a huge undertaking, so it relies on ACPI and EC to handle it. In almost all ACPI specs it is requirement that ACPI does handle fan control unless OS takes over so not sure if I'd trust this manufacturer.

If fw upgrade doesn't fix things I think your hardware is very unlikely to run Haiku well. You can try to figure out what drivers control CPU/fan in Linux and it might be possible for you to port those over.

comment:7 by LowTech, 8 months ago

Sorry for following up. I don't request some fan control for my pc, because it works perfect!

But, as the cpu runs at a single frequency, Intel Speedstep is broken on Haiku for this system.


From Intels website:

CPU - supported

Chipset - supported

Motherboard - supported

BIOS - supported, it does SpeedStep on Windows & Linux

Drivers - No specific software or driver updates are currently required.

OS - An OS must support Enhanced Intel SpeedStep Technology.

https://www.intel.com/content/www/us/en/support/articles/000007073/processors.html

What are the system requirements to support Enhanced Intel Speedstep® Technology?
The CPU, chipset, motherboard, BIOS, Operating System, and software/drivers must support Enhanced Intel SpeedStep Technology.

CPU:
Consult the product specifications and comparisons to see which processors support Enhanced Intel SpeedStep Technology.
Chipset:
A motherboard with one of the following chipsets is required to support Enhanced Intel SpeedStep Technology: Intel® 910 / 915x / 925X / XE Express Chipset Family or Intel® 945x / 946x / 955X / 975 / 965 / 963 Express Chipset Family, Intel® 3 Series Chipsets, Intel® 4 Series Chipsets, Intel® 5 Series Chipsets, or Intel® 6 Series Chipsets.
Motherboard:
The system board must support Dynamic Voltage Identification (Dynamic VID). All Intel® Desktop Boards support Dynamic VID. For all others, contact your motherboard manufacturer for specific Dynamic VID support.
BIOS:
A BIOS must support Enhanced Intel SpeedStep Technology. For Boxed Intel® Desktop Boards, see Intel® Desktop Boards For all others, contact your motherboard manufacturer.
Operating system:
An OS must support Enhanced Intel SpeedStep Technology. Current supporting operating systems include: Microsoft Windows Vista*, Microsoft Windows XP SP2*, and Microsoft Windows 7*. Linux* support is also available. Contact your OS vendor for more information.
Software/Drivers:
No specific software or driver updates are currently required. However, we recommend that you always have the latest drivers for your system hardware.

comment:8 by ttcoder, 8 months ago

This might or might not be relevant -- they seem to be studying a similar problem : https://github.com/genodelabs/genode/issues/3871

comment:9 by tqh, 8 months ago

Sorry I misread the description. Then it seems very likely that it is something like ttcoder suggests. We do have a driver for intel cpus, but maybe the celerons are special in some way.

comment:10 by tqh, 8 months ago

Also, please don't gzip text-attachments, it's not readable without downloading and unzipping then. So please re-upload uncompressed.

by LowTech, 8 months ago

Attachment: syslog.txt added

by LowTech, 8 months ago

Attachment: sysinfo.txt added

by LowTech, 8 months ago

Attachment: dmesg.txt added

comment:11 by LowTech, 8 months ago

Ups .. sorry .. done!

Last edited 8 months ago by LowTech (previous) (diff)

comment:12 by tqh, 8 months ago

Can't see anything in logs, so maybe check if there is any thread that is at 100% all the time? Here is Haiku cpu idle info:

2543	KERN: no valid cpufreq module found
2544	KERN: using Intel C-States: C0, C1, C3, C4, C5, C6, C7
2545	KERN: found cpuidle module: power/cpuidle/intel_cstates/v1

comment:13 by tqh, 8 months ago

And Linux:

312	[    0.183370] cpuidle: using governor ladder
313	[    0.183370] cpuidle: using governor menu
...
571	[    1.016541] intel_idle: MWAIT substates: 0x11242020
572	[    1.016543] intel_idle: v0.4.1 model 0x5C
573	[    1.017098] intel_idle: lapic_timer_reliable_states 0xffffffff

Not sure if there is more I can contribute.

comment:14 by LowTech, 8 months ago

Isn't the message

2543 KERN: no valid cpufreq module found

the key to the problem?

Haiku calls neither for lower clocks (down to 800mhz) when idle, nor higher (up to 2.3ghz) when under load. Because of the missing cpufreq module! So the J3455 runs the whole time at it's default frequency of 1.5ghz.

For proper working, I would have expected a Haiku log entry with something like

KERN: found cpufreq module: power/cpufreq/intel_pstates ...

comment:15 by LowTech, 7 months ago

Description: modified (diff)

comment:16 by LowTech, 7 months ago

With the help of @korli I could build a modified module intel_pstates with my cpu model number 92 (0x5c) added at line 141 in intel_pstates.cpp .

But this doesn't change anything. Get some strange results for Intel Celeron J3455 4-core cpu from function is_cpu_model_supported :

intel_pstates debug output:

    Cpu		Vendor		        Family		           Model
     0 	        0      		        9	                    	    48
     1	                1207495615	        5			            128
     2         	739248128		4		                    0
     3	                87			        4294967295     	    0

Vendor was only correct for cpu 0, family and model never.

sysinfo shows these values:

4 Intel Celeron® J3455, revision 506c9 running at 1497MHz

CPU #0: "Intel(R) Celeron(R) CPU J3455 @ 1.50GHz"
        Signature: 0x0506c9; Type 0, family 6, model 92, stepping 9

My added debug info in line 133 of function is_cpu_model_supported from haiku/src/add-ons/kernel/power/cpufreq/intel_pstates/intel_pstates.cpp :

dprintf("Debug: found model number %u\n", model);
dprintf("Debug: found vendor %u\n", cpu->arch.vendor);
dprintf("Debug: found family number %u\n", cpu->arch.family);

comment:17 by madmax, 7 months ago

Did you build just the module or the whole haiku.hpkg?

You should have some lines like these in the syslog:

KERN: Welcome to kernel debugger output!
KERN: Haiku revision: hrev54550+1+dirty, debug level: 2
KERN: CPU: no microcode provided
KERN: CPU 0: type 0 family 6 extended_family 0 model 5 extended_model 2 stepping 2, string 'GenuineIntel'
KERN: CPU 0: vendor 'Intel' model name 'Intel(R) Core(TM) i3 CPU       M 330  @ 2.13GHz'

Do they show the right info or crazy numbers?

Notice that, if I'm right with #16517, you won't get any benefit until that is solved, anyway.

comment:18 by LowTech, 7 months ago

Did you build just the module or the whole haiku.hpkg?

Just the module.


I patched function is_cpu_model_supported for my cpu. Now syslog has these lines:

KERN: using Intel P-States: min 8, max 15, boost 23
KERN: found cpufreq module: power/cpufreq/intel_pstates/v1
KERN: using Intel C-States: C0, C1, C3, C4, C5, C6, C7
KERN: found cpuidle module: power/cpuidle/intel_cstates/v1

But all bench testing witch chess engines still shows the same low results.

It seems, you are right with #16517. Other p-states are never activated and the cpu remains at it’s default clock 1.5ghz (p-state 15).

comment:19 by korli, 7 months ago

Please check with hrev54575 or newer.

comment:20 by LowTech, 7 months ago

Thanks, with hrev54579 higher p-states (like 23 in my case) are now choosen by the system. All benchmarks deliver now better scores!

But I'm not sure, if lowering p-states (down to 8) is working too. At least, after >15 minutes running idle, my fan is still spinning at max speed.

comment:21 by korli, 7 months ago

Is "Power saving" marked/enabled in the processcontroller menu? It should work with HWP active. Do you have HWP on this CPU?

comment:22 by LowTech, 7 months ago

With "Power saving" disabled, we run at 2.3 ghz. If it's enabled, than 1.5 ghz seems the limit. At least that's what the benchmark results suggest.

The cpu doesn't support HWP (hardware p-state).

comment:23 by korli, 7 months ago

OK I think this is the current behavior for non-hwp CPUs. What do you think would be better?

comment:24 by LowTech, 7 months ago

A solution, where idle threads run at the lowest found p-state (8), comes to mind. Leave other threads on the p-state according to the selected power saving mode (on/off), how it's now.

But I'm very glad. It's no issue on my desktop (except fan noise) for me. Laptop users, with non-hwp cpus, may suffer from higher power drain on Haiku.

Note: See TracTickets for help on using tickets.