ACPI: processor idle: Practically limit "Dummy wait" workaround to old Intel systems
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
In Progress
|
Medium
|
Jeff Lane | ||
Bionic |
Fix Released
|
Medium
|
Jeff Lane | ||
Focal |
Fix Released
|
Medium
|
Jeff Lane | ||
Jammy |
Fix Released
|
Medium
|
Jeff Lane | ||
Kinetic |
Fix Released
|
Medium
|
Jeff Lane |
Bug Description
IMPACT:
Old, circa 2002 chipsets have a bug: they don't go idle when they are
supposed to. So, a workaround was added to slow the CPU down and
ensure that the CPU waits a bit for the chipset to actually go idle.
This workaround is ancient and has been in place in some form since
the original kernel ACPI implementation.
But, this workaround is very painful on modern systems. The "inl()"
can take thousands of cycles (see Link: for some more detailed
numbers and some fun kernel archaeology).
First and foremost, modern systems should not be using this code.
Typical Intel systems have not used it in over a decade because it is
horribly inferior to MWAIT-based idle.
Despite this, people do seem to be tripping over this workaround on
AMD system today.
Limit the "dummy wait" workaround to Intel systems. Keep Modern AMD
systems from tripping over the workaround. Remotely modern Intel
systems use intel_idle instead of this code and will, in practice,
remain unaffected by the dummy wait.
Reported-by: K Prateek Nayak <email address hidden>
Suggested-by: Rafael J. Wysocki <email address hidden>
Signed-off-by: Dave Hansen <email address hidden>
Reviewed-by: Mario Limonciello <email address hidden>
Tested-by: K Prateek Nayak <email address hidden>
Link: https://<email address hidden>/
Link: https://<email address hidden>
FIX:
This issue pertains to all Zen based processors starting with Naples(Zen1). All LTS releases will need this fix:
https:/
TESTCASE:
CVE References
Changed in linux (Ubuntu): | |
status: | Incomplete → Confirmed |
tags: | added: servcert-550 |
Changed in linux (Ubuntu Jammy): | |
status: | New → In Progress |
Changed in linux (Ubuntu Focal): | |
status: | New → In Progress |
Changed in linux (Ubuntu Bionic): | |
status: | New → In Progress |
Changed in linux (Ubuntu Jammy): | |
assignee: | nobody → Jeff Lane (bladernr) |
Changed in linux (Ubuntu Focal): | |
assignee: | nobody → Jeff Lane (bladernr) |
Changed in linux (Ubuntu Bionic): | |
assignee: | nobody → Jeff Lane (bladernr) |
Changed in linux (Ubuntu Jammy): | |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Focal): | |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Bionic): | |
importance: | Undecided → Medium |
Changed in linux (Ubuntu Jammy): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Focal): | |
status: | In Progress → Fix Committed |
Changed in linux (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
tags: | added: verification-done-jammy |
tags: | added: verification-done-bionic verification-done-focal |
tags: | removed: servcert-550 verification-done-bionic verification-done-jammy |
tags: | added: verification-done-jammy |
tags: |
added: verification-done-bionic removed: verification-done-focal verification-done-jammy |
Changed in linux (Ubuntu Kinetic): | |
status: | In Progress → Fix Committed |
tags: |
added: verification- verification-done-jammy removed: kernel-spammed-bionic-linux-azure-4.15 kernel-spammed-jammy-linux-bluefield kernel-spammed-kinetic-linux verification-needed-bionic verification-needed-jammy verification-needed-kinetic |
tags: | removed: verification- |
tags: | added: verification-done-bionic |
tags: |
added: kernel-spammed-bionic-linux-azure-4.15 verification-needed-bionic removed: verification-done-bionic |
tags: |
added: verification-done-bionic verification-done-jammy verification-done-kinetic removed: kernel-spammed-bionic-linux-azure-4.15 kernel-spammed-jammy-linux-bluefield kernel-spammed-kinetic-linux verification-needed-bionic verification-needed-jammy verification-needed-kinetic |
tags: |
added: kernel-spammed-kinetic-linux verification-needed-kinetic removed: verification-done-kinetic |
This bug is missing log files that will aid in diagnosing the problem. While running an Ubuntu kernel (not a mainline or third-party kernel) please enter the following command in a terminal window:
apport-collect 1990985
and then change the status of the bug to 'Confirmed'.
If, due to the nature of the issue you have encountered, you are unable to run this command, please add a comment stating that fact and change the bug status to 'Confirmed'.
This change has been made by an automated script, maintained by the Ubuntu Kernel Team.