initial push
This commit is contained in:
38
lenovo_fix.py
Executable file
38
lenovo_fix.py
Executable file
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python2
|
||||
|
||||
import glob
|
||||
import os
|
||||
import struct
|
||||
|
||||
from periphery import MMIO
|
||||
from time import sleep
|
||||
|
||||
UPDATE_RATE_SEC = 15
|
||||
|
||||
|
||||
def writemsr(msr, val):
|
||||
n = glob.glob('/dev/cpu/[0-9]*/msr')
|
||||
for c in n:
|
||||
f = os.open(c, os.O_WRONLY)
|
||||
os.lseek(f, msr, os.SEEK_SET)
|
||||
os.write(f, struct.pack('Q', val))
|
||||
os.close(f)
|
||||
if not n:
|
||||
raise OSError("msr module not loaded (run modprobe msr)")
|
||||
|
||||
|
||||
def main():
|
||||
mchbar_mmio = MMIO(0xfed159a0, 8)
|
||||
while True:
|
||||
# set temperature trip point to 97 C
|
||||
writemsr(0x1a2, 0x3000000)
|
||||
# set MSR to PL1 45W, max duration - PL2 45W, 2ms
|
||||
writemsr(0x610, 0x42816800fe8168)
|
||||
# set MCHBAR register to the same PL1/2 values
|
||||
mchbar_mmio.write32(0, 0x00fe8168)
|
||||
mchbar_mmio.write32(4, 0x00428168)
|
||||
sleep(UPDATE_RATE_SEC)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user