eeepc-linux 0.39a1-2
http://code.google.com/p/eeepc-linux/
Eeepc-linux is a kernel module that allows control of the fan and fsb speeds.
unsupported :: modules
Maintainer: andreas_baumann
Votes: 26
License: GPL
Last Updated: Sat, 02 Jan 2010 17:02:41 +0000
First Submitted: Tue, 22 Jan 2008 04:05:37 +0000
I still see the FSB errors from before.. fan control works fine.
Ok, I decided to package the following version (after some testing): http://code.google.com/p/eeepc-linux/issues/detail?id=22
The module is called 'asus_eee' now and not just 'eee' anymore.
The source code I had to put into the package (not really nice, I now), but from the
issue system I can't really donwload it (suggestions how to solve this are welcome).
original SVN not updated, people update different patches in the issue tracking system. Not sure, which is the current working version..
Kernel 2.6.31.5: no /proc/eee anymore and a nice kernel panic in dmesg:
BUG: unable to handle kernel NULL pointer dereference at 0000000c
IP: [<e03c8870>] i2c_smbus_xfer+0x50/0x5e0 [i2c_core]
*pde = 00000000
Oops: 0000 [#1] PREEMPT SMP
last sysfs file: /sys/module/i2c_core/initstate
Modules linked in: eee(+) ipv6 snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device ath_pci wlan ath_hal(P) arc4 ecb snd_pcm_oss snd_mixer_oss snd_hda_codec_realtek snd_hda_intel joydev snd_hda_codec fan ath5k snd_hwdep snd_pcm mac80211 iTCO_wdt snd_timer led_class ath video output iTCO_vendor_support thermal cfg80211 button processor snd battery i2c_i801 soundcore snd_page_alloc intel_agp rfkill i2c_core evdev psmouse sg pcspkr ac agpgart serio_raw atl2 asus_acpi p4_clockmod freq_table speedstep_lib rtc_cmos rtc_core rtc_lib ext2 mbcache sd_mod ahci usb_storage ata_piix ata_generic pata_acpi libata uhci_hcd scsi_mod ehci_hcd usbcore
Pid: 2793, comm: modprobe Tainted: P (2.6.31-ARCH #1) 701
EIP: 0060:[<e03c8870>] EFLAGS: 00010246 CPU: 0
EIP is at i2c_smbus_xfer+0x50/0x5e0 [i2c_core]
EAX: 00000000 EBX: 00000000 ECX: 00000000 EDX: 00000069
ESI: 00000000 EDI: 00000000 EBP: de9cbf12 ESP: de9cbe5c
DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068
Process modprobe (pid: 2793, ti=de9ca000 task=de960840 task.ti=de9ca000)
Stack:
1c4828f5 de8345d0 1c4828f5 c1402070 00000069 1c480000 deb4e301 00000005
<0> de8345d0 c11510c1 de834570 de9cbeb4 00000002 1c4828f5 c1945000 00000000
<0> 40000000 00000000 00000286 00000292 00000000 1c4828f5 00000246 c1306e44
Call Trace:
[<c11510c1>] ? sysfs_addrm_finish+0x21/0x230
[<c1306e44>] ? __mutex_lock_slowpath+0x1f4/0x2e0
[<c1306f48>] ? mutex_lock+0x18/0x40
[<e0410230>] ? init_module+0x0/0x80 [eee]
[<e03c9060>] ? i2c_smbus_read_block_data+0x50/0xa0 [i2c_core]
[<e0410269>] ? init_module+0x39/0x80 [eee]
[<c100115b>] ? do_one_initcall+0x3b/0x1b0
[<c107e675>] ? sys_init_module+0xe5/0x230
[<c1003cb3>] ? sysenter_do_call+0x12/0x28
Code: 24 14 8b ac 24 b0 00 00 00 89 5c 24 1c 0f b6 9c 24 a4 00 00 00 89 c7 88 5c 24 18 65 8b 1d 14 00 00 00 89 9c 24 8c 00 00 00 31 db <8b> 4e 0c 8b 49 04 85 c9 0f 84 c2 00 00 00 8d 46 18 89 44 24 28
EIP: [<e03c8870>] i2c_smbus_xfer+0x50/0x5e0 [i2c_core] SS:ESP 0068:de9cbe5c
CR2: 000000000000000c
---[ end trace 28ddf9238843ceb1 ]---
No problems. Glad to hear it worked.. :-)
Hm. scripts/basic/fixdep is executable by everyone. I have the kernel source on an sdhc card in my Eee 701. I've executed stuff from the device before, I'm fairly certain, but I decided to explicitly state the exec mount option in the fstab, and it has now compiled successfully. Thank you for the help!
Can't reproduce this on my machine, but it looks like you should check the permissions of
/usr/src/linux-2.6.30-ARCH/scripts/basic/fixdep or
whether the partition containing the linux kernel sources is accidentally mounted with 'noexec'..
Build is failing with:
==> Starting build()...
patching file eee.c
patching file eee.c
make -C /lib/modules/2.6.30.5-eee/build M=/tmp/yaourt-tmp-benjamin/aur-eeepc-linux/eeepc-linux/src/eeepc-linux/module modules
make[1]: Entering directory `/media/SDHC/source/kernel/linux-2.6.30.5'
CC [M] /tmp/yaourt-tmp-benjamin/aur-eeepc-linux/eeepc-linux/src/eeepc-linux/module/eee.o
/bin/sh: scripts/basic/fixdep: Permission denied
make[2]: *** [/tmp/yaourt-tmp-benjamin/aur-eeepc-linux/eeepc-linux/src/eeepc-linux/module/eee.o] Error 1
make[1]: *** [_module_/tmp/yaourt-tmp-benjamin/aur-eeepc-linux/eeepc-linux/src/eeepc-linux/module] Error 2
make[1]: Leaving directory `/media/SDHC/source/kernel/linux-2.6.30.5'
make: *** [all] Error 2
==> ERROR: Build Failed.
Aborting...
Error: Makepkg was unable to build eeepc-linux package.
This stuff is beyond my skill, can anyone help?
kernel 2.6.30 update, apply the following patch:
diff -rauN eeepc-linux/module/eee.c eeepc-linux-proc-owner-patch/module/eee.c
--- eeepc-linux/module/eee.c 2008-01-15 05:47:24.000000000 +0100
+++ eeepc-linux-proc-owner-patch/module/eee.c 2009-06-24 18:56:13.000000000 +0200
@@ -30,6 +30,7 @@
#include <linux/module.h>
#include <linux/kernel.h>
+#include <linux/version.h>
#include <linux/proc_fs.h>
#include <asm/uaccess.h>
#include <asm/io.h> // For inb() and outb()
@@ -401,7 +402,9 @@
printk(KERN_ERR "eee: Unable to create /proc/eee\n");
return false;
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
eee_proc_rootdir->owner = THIS_MODULE;
+#endif
/* Create the individual proc files. */
for (i=0; eee_proc_files[i].name; i++) {
@@ -418,7 +421,9 @@
proc_file->write_proc = &eee_proc_writefunc;
}
proc_file->data = f;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,30)
proc_file->owner = THIS_MODULE;
+#endif
proc_file->mode = S_IFREG | f->mode;
proc_file->uid = 0;
proc_file->gid = 0;
My PKGBUILD looks currently like:
# Maintainer: Kitty Luckshot <secacat@gmail.com>
pkgname=eeepc-linux
pkgver=0.2
pkgrel=2
pkgdesc="Eeepc-linux is a kernel module that allows control of the fan and fsb speeds."
arch=('i686')
url="http://code.google.com/p/eeepc-linux/"
license=('GPL')
makedepends=('pkgconfig')
install=(eeepc-linux.install)
source=(http://eeepc-linux.googlecode.com/files/$pkgname-$pkgver.tar.gz
proc_rootdir.patch
proc_owner.patch)
md5sums=('7d13ee1f5f0a533ef4b7694823dda06f'
'3c3db882c09cbde4cbde94dd50d45c09'
'0679ae9c9d5f2a4b0ceec9a743567cfd')
build() {
cd $startdir/src/$pkgname/module
patch -p2 < $srcdir/proc_rootdir.patch
patch -p2 < $srcdir/proc_owner.patch
make || return 1
install -Dm644 $startdir/src/$pkgname/module/eee.ko $startdir/pkg/lib/modules/$(uname -r)/kernel/acpi/eee.ko
}
Compiles and works with the patch on my EEPC 701.
It would be nice of the current maintainer to
either integrate the patch or otherwise orphane
the package.
A note on problems when loading the module:
Doing so in /etc/rc.conf in the MODULES section
resulted in:
BUG: unable to handle kernel NULL pointer dereference at 0000000c
IP: [<e01c95c8>] :i2c_core:i2c_smbus_xfer+0x48/0x5c0
*pde = 00000000
Oops: 0000 [#1] PREEMPT SMP
Modules linked in: eee(+) i2c_core p4_clockmod speedstep_lib freq_table kqemu asus_acpi snd_hda_intel snd_hwdep snd_pcm_oss snd_pcm snd_timer snd_page_alloc snd_mixer_oss snd soundcore atl2 rtc_cmos rtc_core rtc_lib ext2 mbcache usb_storage uhci_hcd ehci_hcd sd_mod usbcore ata_piix ahci ata_generic pata_acpi libata scsi_mod dock
Pid: 807, comm: modprobe Not tainted (2.6.27-ARCH #1)
EIP: 0060:[<e01c95c8>] EFLAGS: 00010246 CPU: 0
EIP is at i2c_smbus_xfer+0x48/0x5c0 [i2c_core]
EAX: 00000001 EBX: 00000000 ECX: 00000000 EDX: 00000069
ESI: 00000069 EDI: 00000000 EBP: 00000069 ESP: df12be44
DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
Process modprobe (pid: 807, ti=df12a000 task=de93dc00 task.ti=df12a000)
Stack: 011ebfca 00000000 38bf5e54 0000388c 01000001 00000000 c13fa500 00000003
00000000 c03e3a84 000000a1 c04d5280 c031a595 c013605e 679e561f 00000003
676b8f16 00000003 00000001 00000000 c043b500 c13fa500 c0438160 c031a665
Call Trace:
[<c031a595>] _spin_unlock_irq+0x5/0x30
[<c013605e>] run_timer_softirq+0x16e/0x1f0
[<c031a665>] _spin_unlock+0x5/0x20
[<c015f8f3>] __rcu_process_callbacks+0xf3/0x230
[<c0131d2a>] __do_softirq+0x8a/0x110
[<e01c9d30>] i2c_smbus_read_block_data+0x40/0x80 [i2c_core]
[<e01c11b0>] init_module+0x0/0x60 [eee]
[<e01c11b0>] init_module+0x0/0x60 [eee]
[<e01c11df>] init_module+0x2f/0x60 [eee]
[<c01010f3>] do_one_initcall+0x3/0x160
[<c010111a>] do_one_initcall+0x2a/0x160
[<c01548cb>] sys_init_module+0x8b/0x1b0
[<c0103ef3>] sysenter_do_call+0x12/0x33
=======================
Code: 00 00 00 89 bc 24 88 00 00 00 89 cf 8b 4c 24 14 89 ac 24 8c 00 00 00 83 e7 14 89 d5 89 b4 24 84 00 00 00 88 44 24 13 88 5c 24 12 <8b> 41 0c 8b 40 04 85 c0 74 76 89 cb 83 c3 20 89 d8 e8 72 fa 14
EIP: [<e01c95c8>] i2c_smbus_xfer+0x48/0x5c0 [i2c_core] SS:ESP 0068:df12be44
---[ end trace 75411532214fd646 ]---
The module is apparently loaded, but /proc/eee
has not been mounted. Somehow the module misses
a prerequisite, no clue what.
A workaround seems to be to add
modprobe eee
to /etc/rc.local
Then the module loads and works fine.
Hi,
Since the module was last updated the kernel changed and the &proc_root used by the module is not working anymore, preventing the build...
Should apply a patch to the source replacing the references to &proc_root with NULL.
Good otherwise. :)
--- b/eee.c 2008-01-15 12:47:24.000000000 +0800
+++ a/eee.c 2008-12-26 18:19:14.000000000 +0800
@@ -396,7 +396,7 @@
int i;
/* Create the /proc/eee directory. */
- eee_proc_rootdir = proc_mkdir("eee", &proc_root);
+ eee_proc_rootdir = proc_mkdir("eee", NULL);
if (!eee_proc_rootdir) {
printk(KERN_ERR "eee: Unable to create /proc/eee\n");
return false;
@@ -430,7 +430,7 @@
for (; i >= 0; i--) {
remove_proc_entry(eee_proc_files[i].name, eee_proc_rootdir);
}
- remove_proc_entry("eee", &proc_root);
+ remove_proc_entry("eee", NULL);
return false;
}
@@ -439,7 +439,7 @@
for (i = 0; eee_proc_files[i].name; i++) {
remove_proc_entry(eee_proc_files[i].name, eee_proc_rootdir);
}
- remove_proc_entry("eee", &proc_root);
+ remove_proc_entry("eee", NULL);
}
This should have a dependency on make/some type of build tools.
Initial upload.
Kernel module for fan & fsb speed control for the Asus Eee PC. Source: http://code.google.com/p/eeepc-linux/
More info: http://wiki.eeeuser.com/howto:overclockfsb
v1.6.0