Portál AbcLinuxu, 15. května 2024 05:18


Dotaz: Asus F5R - C2D a cpu frequency scaling

12.1.2008 23:40 Matlák
Asus F5R - C2D a cpu frequency scaling
Přečteno: 713×
Odpovědět | Admin
Dobrý den. Se svým novým notebookem jsem již téměř spokojen, akorát mi vrtá hlavou škálování frekvence. Můj stroj prostě neškáluje a neškáluje... Používám relativně nové jádro (2.6.23.10) a .config ohledně scalingu vypadá takto:
# CPU Frequency scaling
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set

CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

# CPUFreq processor drivers
CONFIG_X86_ACPI_CPUFREQ=y
# CONFIG_X86_CPUFREQ_NFORCE2 is not set
CONFIG_X86_ACPI_CPUFREQ_PROC_INTF=y
CONFIG_X86_ACPI_CPUFREQ=y
# CONFIG_X86_POWERNOW_K6 is not set
# CONFIG_X86_POWERNOW_K7 is not set
# CONFIG_X86_POWERNOW_K8 is not set
# CONFIG_X86_GX_SUSPMOD is not set
CONFIG_X86_SPEEDSTEP_CENTRINO=y
CONFIG_X86_SPEEDSTEP_CENTRINO_TABLE=y
CONFIG_X86_SPEEDSTEP_ICH=y
CONFIG_X86_SPEEDSTEP_SMI=y
Vše (doufám že jsem na nic nezapoměl) je tedy natvrdo zakompilováno do jádra.
Adresář /sys/devices/system/cpu/cpu0/ obsahuje pouze cache,microcode a topology.

Podezřelá je ješte hláška při bootu:
ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU1._PSS] (Node f7eea1e0), AE_AML_PACKAGE_LIMIT
ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU2._PSS] (Node f7eea3d8), AE_AML_PACKAGE_LIMIT
BIOS mám ve verzi 5.03 - upgradoval jsem ho kvůli tomu, že při probouzení ze suspend to RAM starší verze 5.01 roztočila větráček na maximum a ten nezpomalil až do rebootu.

Máte někdo podobný problém? Máte někdo notebook s C2D a jede vám cpufreq v pohodě? Myslíte si že by to mohlo bejt BIOSem?
Předem děkuji za reakce.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.1.2008 10:03 Matlák
Rozbalit Rozbalit vše Re: Asus F5R - C2D a cpu frequency scaling
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ještě bych doplnil cpuinfo:
vendor_id       : GenuineIntel
cpu family      : 6
model           : 14
model name      : Genuine Intel(R) CPU           T2130  @ 1.86GHz
stepping        : 12
cpu MHz         : 1862.210
cache size      : 1024 KB
Výdrž na baterku je něco kolem dvou hodin (ale spíš méně), větráček hučí, zatížení jader okolo 5%..

Ptám se znovu: Funguje tady někomu škálování C2D ? Jak jste ho zprovoznili? Existuje u vás adresář /sys/devices/system/cpu/cpu0/cpufreq ?
13.1.2008 22:00 Matlák
Rozbalit Rozbalit vše Re: Asus F5R - C2D a cpu frequency scaling
Odpovědět | | Sbalit | Link | Blokovat | Admin
Sorry že to zase otevírám, ale chci nahlásit úspěch. Chyba je ve špatném výsledku funkce SizeOf v ACPI implementaci kernelu (aspoň jak jsem já při své angličtině pochopil) - problém je podrobně popsán zde.
Týpek jménem Ming Lin na to vytvořil jednoduchý patch do jádra, který vypadá asi takto:
diff --git a/drivers/acpi/executer/exoparg1.c b/drivers/acpi/executer/exoparg1.c
index 252f10a..fed6ddf 100644
--- a/drivers/acpi/executer/exoparg1.c
+++ b/drivers/acpi/executer/exoparg1.c
@@ -740,6 +740,9 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)
                        break;

                case ACPI_TYPE_BUFFER:
+                       if (!(temp_desc->common.flags & AOPOBJ_DATA_VALID)) {
+                               status = acpi_ds_get_buffer_arguments (temp_desc);
+                       }
                        value = temp_desc->buffer.length;
                        break;

@@ -748,6 +751,9 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)
                        break;

                case ACPI_TYPE_PACKAGE:
+                       if (!(temp_desc->common.flags & AOPOBJ_DATA_VALID)) {
+                               status = acpi_ds_get_package_arguments (temp_desc);
+                       }
                        value = temp_desc->package.count;
                        break;
Stačí aplikovat, zkompilovat kernel a voilá! Frekvence pěkně kolísá podle zatížení, podle druhu napájení, no co vás prostě napadne.
Funguje to pro všechny novější notebooky Asus s C2D a updatovaným BIOSem.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.