Kuan-Wei Chiu 233323f9b9 ACPI: processor_idle: Fix invalid comparison with insertion sort for latency
The acpi_cst_latency_cmp() comparison function currently used for
sorting C-state latencies does not satisfy transitivity, causing
incorrect sorting results.

Specifically, if there are two valid acpi_processor_cx elements A and B
and one invalid element C, it may occur that A < B, A = C, and B = C.
Sorting algorithms assume that if A < B and A = C, then C < B, leading
to incorrect ordering.

Given the small size of the array (<=8), we replace the library sort
function with a simple insertion sort that properly ignores invalid
elements and sorts valid ones based on latency. This change ensures
correct ordering of the C-state latencies.

Fixes: 65ea8f2c6e23 ("ACPI: processor idle: Fix up C-state latency if not ordered")
Reported-by: Julian Sikorski <belegdol@gmail.com>
Closes: https://lore.kernel.org/lkml/70674dc7-5586-4183-8953-8095567e73df@gmail.com
Signed-off-by: Kuan-Wei Chiu <visitorckw@gmail.com>
Tested-by: Julian Sikorski <belegdol@gmail.com>
Cc: All applicable <stable@vger.kernel.org>
Link: https://patch.msgid.link/20240701205639.117194-1-visitorckw@gmail.com
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2024-07-02 20:35:29 +02:00
..
2024-04-08 16:10:27 +02:00
2024-03-19 18:30:54 -07:00
2024-05-13 20:13:48 +02:00
2024-04-08 16:10:27 +02:00
2024-03-27 16:36:45 +01:00
2023-09-21 20:55:43 +02:00
2022-01-22 08:33:37 +02:00
2020-11-09 19:08:06 +01:00
2024-05-18 10:55:13 -07:00
2024-03-19 11:15:14 -07:00
2023-03-27 20:50:28 +02:00
2020-11-09 19:08:06 +01:00