1234567891011121314151617181920212223242526272829303132333435363738 |
- #!/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()
|