This commit is contained in:
cryobry
2020-02-27 11:10:58 -05:00
6 changed files with 66 additions and 2 deletions

View File

@@ -53,6 +53,13 @@ sudo systemctl enable --now lenovo_fix.service
```
Thanks to *felixonmars* for creating and maintaining this package.
### Artix Linux
```
makepkg -si
sudo rc-update add lenovo_fix default
sudo rc-service lenovo_fix start
```
### Debian/Ubuntu
```
sudo apt install git build-essential python3-dev libdbus-glib-1-dev libgirepository1.0-dev libcairo2-dev python3-venv python3-wheel
@@ -130,6 +137,12 @@ sv down lenovo_fix
rm /var/service/lenovo_fix
```
If you're using OpenRC instead of systemd:
```
rc-service lenovo_fix stop
rc-update del lenovo_fix default
```
If you also need to remove the tool from the system:
```
rm -rf /opt/lenovo_fix /etc/systemd/system/lenovo_fix.service
@@ -145,6 +158,7 @@ cd lenovo-throttling-fix
git pull
sudo ./install.sh
sudo systemctl restart lenovo_fix.service
OpenRC: sudo rc-service lenovo_fix restart
```
## Configuration

View File

@@ -44,6 +44,7 @@ cTDP: 0
# Disable BDPROCHOT (EXPERIMENTAL)
Disable_BDPROCHOT: False
# All voltage values are expressed in mV and *MUST* be negative (i.e. undervolt)!
[UNDERVOLT.BATTERY]
# CPU core voltage offset (mV)
CORE: 0
@@ -56,6 +57,7 @@ UNCORE: 0
# Analog I/O voltage offset (mV)
ANALOGIO: 0
# All voltage values are expressed in mV and *MUST* be negative (i.e. undervolt)!
[UNDERVOLT.AC]
# CPU core voltage offset (mV)
CORE: 0

View File

@@ -6,6 +6,8 @@ if pidof systemd 2>&1 1>/dev/null; then
systemctl stop lenovo_fix.service >/dev/null 2>&1
elif pidof runit 2>&1 1>/dev/null; then
sv down lenovo_fix >/dev/null 2>&1
elif pidof openrc 2>&1 1>/dev/null; then
rc-service lenovo_fix stop >/dev/null 2>&1
fi
mkdir -p "$INSTALL_DIR" >/dev/null 2>&1
@@ -26,6 +28,10 @@ if pidof systemd 2>&1 1>/dev/null; then
elif pidof runit 2>&1 1>/dev/null; then
echo "Copying runit service file"
cp -R runit/lenovo_fix /etc/sv/
elif pidof openrc-init 2>&1 1>/dev/null; then
echo "Copying OpenRC service file"
cp -R openrc/lenovo_fix /etc/init.d/lenovo_fix
chmod 755 /etc/init.d/lenovo_fix
fi
echo "Building virtualenv..."
@@ -44,6 +50,10 @@ elif pidof runit 2>&1 1>/dev/null; then
echo "Enabling and starting runit service..."
ln -sv /etc/sv/lenovo_fix /var/service/
sv up lenovo_fix
elif pidof openrc-init 2>&1 1>/dev/null; then
echo "Enabling and starting OpenRC service..."
rc-update add lenovo_fix default
rc-service lenovo_fix start
fi
echo "All done."

View File

@@ -77,6 +77,7 @@ supported_cpus = {
'Kaby Lake (R)': (0x8E, 0x9E),
'Coffee Lake': (0x9E,),
'Cannon Lake': (0x66,),
'Comet Lake': (0xA6,),
}
@@ -531,7 +532,7 @@ def set_hwp():
def set_disable_bdprochot():
# Disable BDPROCHOT
cur_val = readmsr(0x1FC, flatten=True)
new_val = (cur_val & 0xFFFFFFFFFFFFFFFE)
new_val = cur_val & 0xFFFFFFFFFFFFFFFE
writemsr(0x1FC, new_val)
if args.debug:
@@ -787,6 +788,7 @@ def main():
regs = calc_reg_values(platform_info, config)
if not config.getboolean('GENERAL', 'Enabled'):
log('[I] Throttled is disabled in config file... Quitting. :(')
return
exit_event = Event()

5
openrc/lenovo_fix Normal file
View File

@@ -0,0 +1,5 @@
#!/usr/bin/openrc-run
command="env python3 /usr/lib/throttled/lenovo_fix.py"
pidfile=${pidfile-/var/run/lenovo_fix.pid}
description="Stop Intel throttling"
command_background="yes"

31
package/PKGBUILD Normal file
View File

@@ -0,0 +1,31 @@
pkgname=throttled
pkgver=0.6
pkgrel=4
pkgdesc="Workaround for Intel throttling issues in Linux."
arch=('any')
url="https://github.com/erpalma/throttled"
license=('MIT')
depends=('python-dbus' 'python-psutil' 'python-gobject')
conflicts=('lenovo-throttling-fix-git' 'lenovo-throttling-fix')
replaces=('lenovo-throttling-fix')
backup=('etc/lenovo_fix.conf')
source=("git+https://github.com/Hyper-KVM/throttled.git#branch=openrc")
sha256sums=('SKIP')
build() {
cd "${srcdir}/throttled/"
python -m compileall *.py
}
package() {
cd "${srcdir}/throttled/"
install -Dm644 etc/lenovo_fix.conf "$pkgdir"/etc/lenovo_fix.conf
install -Dm644 systemd/lenovo_fix.service "$pkgdir"/usr/lib/systemd/system/lenovo_fix.service
install -Dm755 lenovo_fix.py "$pkgdir"/usr/lib/$pkgname/lenovo_fix.py
install -Dm755 openrc/lenovo_fix "$pkgdir/etc/init.d/lenovo_fix"
install -Dm755 mmio.py "$pkgdir"/usr/lib/$pkgname/mmio.py
cp -a __pycache__ "$pkgdir"/usr/lib/$pkgname/
install -Dm644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
}