I too use Dell XPS 15 and have suffered from over-heating in past when I used open source nvidia-nouveau
(installed from additional drivers).
Problem got solved when I started using bumblebee
where you can manually switch between intel graphics and nvidia graphics. Nvidia graphics gives much better performance but is also power expensive which results into overheating. Bumblebee gives you option to use only graphic heavy applications with nvidia graphics thus reducing overheating.
Guide to Install Bumblebee
After installation you can run any application with nvidia graphics by using optirun <application-name>
from terminal.
Also you can try indicator-cpufreq
which lets you put your profile to conservative, also reduce CPU frequency from applet-icon to prevent overheating when computational load is low.
So if PHC (and therefore TLP?) can't be used to undervolt
… then no one is working to support it and it can't be done – yet, probably never. To my knowledge PHC and TLP are independent projects they just complement each other in some setups.
Here is a description from the Arch wiki about PHC:
PHC is an acpi-cpufreq patch built with the purpose of enabling undervolting on your processor.
Also note there has never been a guaranteed result, according to the PHC website:
This is possible because we utilize the production tolerance of a CPU.
CPUs have different production qualities so the vendor defines voltages every CPU -even those with low quality- will work with.
If your CPU is of higher quality you can easily run it with lower voltages without getting unstable.
Wikipedia explains what P-states are: a range of states that define clock frequency and power consumption, which includes voltage scaling, e.g. under or overvolting (boost).
These states are implementation-dependent.
Read this like: when Intel introduced "P-states" they implemented a design to take more control over dynamic frequency and voltage scaling, handing over control from the OS or user back to the CPU. Early implementations of this technology – if you remember – only allowed the OS to tell a "dumb" processor to not run at full clock speed all the time. Intel went further with Skylake introducing Speed Shift and with that taking away even more control over the processor from the OS/user in order minimize delays and squeeze as much performance and energy consumption out of their current designs with the state of the art.
Edit: This sounds like a praise of Intel and you might argue that a user should still have control over these parameters. Consider this from Intel's perspective: absolute control over the product. They also removed the option to choose a CPU clock multiplier on their mainstream models and only enable it on the expensive models.
Best Answer
Yes, with TLP you can scale you CPU frequency (Look at this post: TLP don't change CPU frequency). You can specify to reduce the CPU frequency.
More info here: http://linrunner.de/en/tlp/docs/tlp-configuration.html
However I found another article about CPU limiting
http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups
Although, it isn't about limit CPU frequency, you could reduce your CPU load/consumption with an application like cpulimit (https://github.com/opsengine/cpulimit)
Hope this helps.