You may get the below mentioned Machine check errors similar to the below ones, while running the X220 on a maximum load,both in Windows and Linux
2062.384597] CPU1: Core temperature/speed normal
[ 2062.384600] CPU2: Package temperature/speed normal
[ 2062.384602] CPU0: Core temperature/speed normal
[ 2062.384603] CPU3: Package temperature/speed normal
[ 2062.384605] CPU0: Package temperature/speed normal
[ 2062.384607] CPU1: Package temperature/speed normal
[ 2098.375910] [Hardware Error]: Machine check events logged
[ 2362.011683] CPU0: Core temperature above threshold, cpu clock throttled (total events = 32474)
[ 2362.011687] CPU3: Package temperature above threshold, cpu clock throttled (total events = 35277)
[ 2362.011689] CPU1: Core temperature above threshold, cpu clock throttled (total events = 32474)
[ 2362.011692] CPU2: Package temperature above threshold, cpu clock throttled (total events = 35277)
[ 2362.011694] CPU1: Package temperature above threshold, cpu clock throttled (total events = 35277)
[ 2362.011697] CPU0: Package temperature above threshold, cpu clock throttled (total events = 35277)
[ 2362.013644] CPU0: Core temperature/speed normal
[ 2362.013647] CPU3: Package temperature/speed normal
[ 2362.013649] CPU1: Core temperature/speed normal
[ 2362.013651] CPU2: Package temperature/speed normal
[ 2362.013653] CPU1: Package temperature/speed normal
[ 2362.013655] CPU0: Package temperature/speed normal
[ 2398.018594] [Hardware Error]: Machine check events logged
Thinkpad X220's running Linux under maximum load.
If I clamp down scaling_max_freq to 2.4Ghz the errors disappear. As a bonus I don't get the infrequent throttling related MCEs - ie no overheating. Sounds like the the machine is not designed to really work out the CPU/GPU at it's maximum capacity.
For anyone with X220 running Linux and having MCE errors logged (package power limit) - do this -
for i in 0 1 2 3; do echo 2400000 > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_max_