Since you are running Linux, do you see anything interesting in the output of dmesg? You could filter for warnings and errors by running "dmesg -l warn,err", but it might be better to provide the full log.
Recently, I have started experiencing a similar issue with a i7-3720QM and T420. The CPU is being stuck at 1,2GHz, which seems to be the lowest CPU frequency detected by the kernel. Sometimes I feel like I have to disconnect some peripherals, e.g. external monitor connected through a DP, in order to fix it.
Changing the CPU governor from powersave to performance and vice-versa typically works, but not in that case. I believe that my issue could be related to the 65W PSU I have been using and I might have to upgrade at least to 90W PSU.