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>
(cherry picked from commit e400ad8b7e6a1b9102123c6240289a811501f7d9)
Signed-off-by: Jeff Lane <email address hidden>
Revert "UBUNTU: [Packaging]: always use fully qualified <triplet>-gcc-VER toolchain"
Move to the default gcc to avoid using different versions of gcc for
the dkms and kernel, that seems to cause random breakage across the
different dkms.
Signed-off-by: Andrea Righi <email address hidden>