The ACPI processor aggregator driver
NACKed-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
The merging of this patch has drawn some complaints: why should it have made it into the mainline when a core developer clearly has problems with it?
The story goes something like this. ACPI provides a mechanism by which it can ask the system to make processors go idle in emergency situations; these can include power problems or an overheating system. The ACPI folks had originally proposed putting some hacks into the scheduler to implement this functionality. These changes, it seems, were little loved; that was the patch that Peter Zijlstra blocked outright.
So Shaohua Li went back and implemented this functionality as a driver instead. If the ACPI hardware starts sounding the red alert, this driver will create a top-priority realtime thread and bind it to the CPU that is to be idled. That thread, when it "runs," will simply put the CPU into a relatively deep sleep state for a while. When the emergency passes, the thread will go away and normal life resumes. It's a bit of a hack, but it gets the job done, and it is not destructive to system state the way hot-unplugging the CPU would be.
The proper fix would be to enhance the scheduler (the right way) to provide this functionality. But that almost certainly requires the intervention of a real scheduler hacker, and they haven't yet gotten around to solving the problem. So the ACPI "driver" is in the mainline for now. And it may stay that way; Linus said:
In the meantime, I personally suspect we probably never want to even try to solve it in the scheduler, because why the hell should we care and add complex logic for something like that? At least not until we end up having the same issue on some other architecture too, and it turns from a hacky ACPI thing into something more.
And that's where things stand. The driver is little loved, but it will
also be little used, can be replaced with a better mechanism if the right
people care, and, in the mean time, it may solve a real problem for some
users.
| Index entries for this article | |
|---|---|
| Kernel | ACPI |
