История изменений
Исправление intelfx, (текущая версия) :
но как переключиться на WQ_UNBOUND - непонятно, как это сделать то? :)
Ну, ты всегда можешь попробовать сделать
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 02255795b800..331ba1b24881 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -2211,7 +2211,7 @@ static int acpi_ec_init_workqueues(void)
ec_wq = alloc_ordered_workqueue("kec", 0);
if (!ec_query_wq)
- ec_query_wq = alloc_workqueue("kec_query", 0, ec_max_queries);
+ ec_query_wq = alloc_workqueue("kec_query", WQ_UNBOUND, ec_max_queries);
if (!ec_wq || !ec_query_wq) {
acpi_ec_destroy_workqueues();
Но скорее всего не взлетит. А так можно начать с переписывания acpica, она cpu-bound наверняка не просто так :^)
Исходная версия intelfx, :
но как переключиться на WQ_UNBOUND - непонятно, как это сделать то? :)
Ну, ты всегда можешь попробовать сделать
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index 02255795b800..3061f7118ec0 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -14,6 +14,7 @@
/* Uncomment next line to get verbose printout */
/* #define DEBUG */
+#include "linux/workqueue.h"
#define pr_fmt(fmt) "ACPI: EC: " fmt
#include <linux/kernel.h>
@@ -2211,7 +2212,7 @@ static int acpi_ec_init_workqueues(void)
ec_wq = alloc_ordered_workqueue("kec", 0);
if (!ec_query_wq)
- ec_query_wq = alloc_workqueue("kec_query", 0, ec_max_queries);
+ ec_query_wq = alloc_workqueue("kec_query", WQ_UNBOUND, ec_max_queries);
if (!ec_wq || !ec_query_wq) {
acpi_ec_destroy_workqueues();
Но скорее всего не взлетит. А так можно начать с переписывания acpica, она cpu-bound наверняка не просто так :^)