2

I have a HP Pavilion g7 running elementary OS (based on Ubuntu) which is known to be loud and overheat.Mine doesn't shutdown but it does get loud which is very annoying (and 91°C with both Prime95 and Furmark).I searched the internet and found some people under-volt CPUs and get 5 - 20°C lower temperatures.Here's what I tried to install Linux PHC.

I downloaded PHC for AMD K8 (my CPU is K10) from here http://www.linux-phc.org/forum/viewtopic.php?f=13&t=2 (the top one).Unzipped it and ran sudo make dkms_install.Then I added cpufreq_driver=phc-k8 to the boot command line and rebooted.

I pressed Esc so I can view the boot messages and I saw a kernel panic although the system booted (most likely the PHC module) without the CPUFreq driver.When it had booted the PHC module was not loaded so that did not work.

How can I install PHC on Ubunut Ubuntu 14.04 with AMD K10 CPU.

Panic Message :

[   46.670211] kernel BUG at /var/lib/dkms/phc-k8/0.4.6/build/phc-k8.c:667!
[   46.670253] invalid opcode: 0000 [#1] SMP 
[   46.670281] Modules linked in: phc_k8(OE+) kvm_amd(+) dm_multipath scsi_dh kvm crct10dif_pclmul crc32_pclmul aesni_intel aes_x86_64 lrw gf128mul glue_helper ablk_helper cryptd snd_seq_midi snd_seq_midi_event snd_rawmidi snd_hda_codec_hdmi snd_hda_codec_idt snd_hda_codec_generic arc4 psmouse snd_hda_intel bnep snd_hda_controller snd_seq snd_hda_codec snd_hwdep rt2800pci serio_raw rt2800mmio snd_seq_device rt2800lib rt2x00pci rt2x00mmio rt2x00lib k10temp mac80211 rtbth(OE) snd_pcm r8169 rfcomm rtsx_pci mii cfg80211 i2c_piix4 snd_timer bluetooth eeprom_93cx6 crc_ccitt snd shpchp soundcore amd_iommu_v2 hp_accel lis3lv02d input_polldev hp_wireless mac_hid parport_pc ppdev lp parport binfmt_misc nls_iso8859_1 ahci libahci wmi video
[   46.670758] CPU: 2 PID: 548 Comm: systemd-udevd Tainted: G           OE  3.19.0-59-generic #66~14.04.1-Ubuntu
[   46.670817] Hardware name: Hewlett-Packard HP Pavilion g7 Notebook PC/184B, BIOS F.15 10/04/2012
[   46.670871] task: ffff8800aecc89d0 ti: ffff88018b9a0000 task.ti: ffff88018b9a0000
[   46.670916] RIP: 0010:[<ffffffffc080ea14>]  [<ffffffffc080ea14>] freq_from_fid_did+0x44/0x50 [phc_k8]
[   46.670975] RSP: 0018:ffff88018b9a3b28  EFLAGS: 00010202
[   46.671009] RAX: 0000000000000015 RBX: 0000000000006800 RCX: 000000000000000f
[   46.671053] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 000000000000000c
[   46.671096] RBP: ffff88018b9a3b28 R08: ffff88019ec0a108 R09: ffff880198801a00
[   46.671140] R10: ffffffffc0810c21 R11: 0000000000000005 R12: 0000000000000004
[   46.671183] R13: ffff88018b97b300 R14: ffff88018b9a3bc8 R15: ffff88018b9ba200
[   46.671227] FS:  00007f2a08f56880(0000) GS:ffff88019ed00000(0000) knlGS:0000000000000000
[   46.671275] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[   46.671311] CR2: 00007f2a08f14360 CR3: 000000018b9e5000 CR4: 00000000000407e0
[   46.671353] Stack:
[   46.673098]  ffff88018b9a3b58 ffffffffc080eb23 00000000ffffffed ffff88018b97b300
[   46.674891]  0000000000000004 000000000000a100 ffff88018b9a3c08 ffffffffc08116ad
[   46.676686]  0000000000000096 ffffffff81c546d0 ffff88018b9ba200 ffff88018b9a3bc8
[   46.678498] Call Trace:
[   46.680308]  [<ffffffffc080eb23>] print_basics+0x103/0x130 [phc_k8]
[   46.682152]  [<ffffffffc08116ad>] powernowk8_cpu_init+0x12bd/0x14e0 [phc_k8]
[   46.682158]  [<ffffffff8164b1d2>] __cpufreq_add_dev.isra.24+0x312/0xa10
[   46.682162]  [<ffffffff817a613e>] ? klist_next+0x7e/0xf0
[   46.682167]  [<ffffffffc08118d0>] ? powernowk8_cpu_init+0x14e0/0x14e0 [phc_k8]
[   46.682170]  [<ffffffff8164b8de>] cpufreq_add_dev+0xe/0x10
[   46.682175]  [<ffffffff814f82c9>] subsys_interface_register+0xa9/0xf0
[   46.682178]  [<ffffffff8164bdb8>] cpufreq_register_driver+0x118/0x330
[   46.682182]  [<ffffffffc0811a78>] powernowk8_init+0x1a8/0x20f [phc_k8]
[   46.682187]  [<ffffffffc08118d0>] ? powernowk8_cpu_init+0x14e0/0x14e0 [phc_k8]
[   46.682191]  [<ffffffff81002144>] do_one_initcall+0xd4/0x210
[   46.682200]  [<ffffffff811d1085>] ? kmem_cache_alloc_trace+0x1d5/0x270
[   46.682204]  [<ffffffff810f9c5c>] ? load_module+0x164c/0x1ce0
[   46.682207]  [<ffffffff810f9c95>] load_module+0x1685/0x1ce0
[   46.682209]  [<ffffffff810f55a0>] ? store_uevent+0x40/0x40
[   46.682215]  [<ffffffff810fa466>] SyS_finit_module+0x86/0xb0
[   46.682220]  [<ffffffff817bdbcd>] system_call_fastpath+0x16/0x1b
[   46.682247] Code: c7 64 89 f1 5d 05 20 03 00 00 d3 e8 69 c0 e8 03 00 00 c3 0f 1f 40 00 6b c7 64 89 f1 5d 05 40 06 00 00 d3 e8 69 c0 e8 03 00 00 c3 <0f> 0b 66 2e 0f 1f 84 00 00 00 00 00 66 66 66 66 90 55 48 89 e5 
[   46.682252] RIP  [<ffffffffc080ea14>] freq_from_fid_did+0x44/0x50 [phc_k8]
[   46.682253]  RSP <ffff88018b9a3b28>
Suici Doga
  • 2,217

2 Answers2

2

I think you are likely trying to use the wrong tool for the job.

There is a project called TurionPowerControl which specifically supports underclocking (and undervolting) AMD K10 processors on linux. The project has been active for a number of years.

From their project site:

TurionPowerControl, despite its name, allows to view and control many parameters of modern AMD processors. It can manipulate power states, frequencies, DRAM timings, power settings and can report temperatures, monitor pstate changes and precise cpu usage. It is available for Windows and Linux, for both 32 bit and 64 bit architectures and fully supports multiprocessor machines.

Currently supported processors are:

Family 10h: All Phenom, Phenom II, Athlon II, Turion Mxxx and Pxxx processors

<\snip>

Which covers most of the K10 Family

They state that it compiles fine on recent versions of Ubuntu (Ubuntu Use Case), and has some very thorough documentation..

A basic overview of it's usage / capabilities is in this document, excerpted here:

Change frequency and voltage

If you want to change voltage or frequency in a easy manner, you have to use the -set command switch. It is really easy to use and pretty user friendly.

Let's see a simple example. If you want to set the frequency of your pstate 0 to 2000 Mhz to all cores you just have to launch such a command:

TurionPowerControl -­set core all pstate 0 frequency 2000

The program will warn you if there isn't a perfect combination that matches the frequency you requested, and will round the result.

If you wish to set core voltage too, let's say 1.200 volts, then the command will become like this:

TurionPowerControl -­set core all pstate 0 frequency 2000 vcore 1.200

<\snip>

I think this the tool that you need to use to achieve your goal; it actually sounds better suited than what you are currently trying to get working. It is possible that it won't work for you, but based on the information in your question it seems like a solid fit to me.

Link:

Primary Project Page (Github)

Update

Default pstates for AMD A8-4500M (source):

#1: 1800 MHz, 0.375V
#2: 1700 MHz, 0.275V
#3: 1600 MHz, 0.225V
#4: 1400 MHz, 0.175V
#5: 900 MHz, 0.175V

In the context of your question, I wouldn't use the same voltage - try a minor decrease to 0.165 or 0.170 to start.

Argonauts
  • 4,490
0

You need to use an OS, kernel of which has an up to date ACPI module to benefit from CPU package C states. Otherwise, your CPU will not receive HALT instructions from the OS, waste power and produce heat.