diff options
-rw-r--r-- | .SRCINFO | 60 | ||||
-rw-r--r-- | 0001-hid-asus-use-hid-for-brightness-control-on-keyboard.patch | 123 | ||||
-rw-r--r-- | 0001-linux6.8.y-bore4.5.0.patch | 904 | ||||
-rw-r--r-- | 0001-platform-x86-asus-wmi-add-support-for-vivobook-fan-p.patch | 266 | ||||
-rw-r--r-- | 0001-v4-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch (renamed from 0001-v2-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch) | 110 | ||||
-rw-r--r-- | 0002-v4-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch (renamed from 0002-v2-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch) | 40 | ||||
-rw-r--r-- | 0003-v4-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch (renamed from 0003-v2-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch) | 34 | ||||
-rw-r--r-- | 0004-v4-platform-x86-asus-wmi-support-toggling-POST-sound.patch (renamed from 0004-v2-platform-x86-asus-wmi-support-toggling-POST-sound.patch) | 20 | ||||
-rw-r--r-- | 0005-v4-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch (renamed from 0005-v2-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch) | 45 | ||||
-rw-r--r-- | 0006-v4-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch (renamed from 0006-v2-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch) | 25 | ||||
-rw-r--r-- | 0007-v4-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch (renamed from 0007-v2-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch) | 17 | ||||
-rw-r--r-- | 0008-v4-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch (renamed from 0008-v2-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch) | 30 | ||||
-rw-r--r-- | 0009-v4-platform-x86-asus-wmi-add-clean-up-structs.patch (renamed from 0009-v2-platform-x86-asus-wmi-add-clean-up-structs.patch) | 23 | ||||
-rw-r--r-- | PKGBUILD | 68 | ||||
-rwxr-xr-x | chroot-build.sh | 1 | ||||
-rw-r--r-- | config | 155 |
16 files changed, 752 insertions, 1169 deletions
@@ -1,6 +1,6 @@ pkgbase = linux-g14 pkgdesc = Linux-g14 - pkgver = 6.8.6.arch1 + pkgver = 6.9.1.arch1 pkgrel = 1 url = https://gitlab.com/dragonn/linux-g14.git arch = x86_64 @@ -17,18 +17,18 @@ pkgbase = linux-g14 makedepends = xz options = !strip options = !debug - source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.6.tar.xz - source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.6.tar.sign - source = https://github.com/archlinux/linux/releases/download/v6.8.6-arch1/linux-v6.8.6-arch1.patch.zst - source = https://github.com/archlinux/linux/releases/download/v6.8.6-arch1/linux-v6.8.6-arch1.patch.zst.sig + source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.9.1.tar.xz + source = https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.9.1.tar.sign + source = https://github.com/archlinux/linux/releases/download/v6.9.1-arch1/linux-v6.9.1-arch1.patch.zst + source = https://github.com/archlinux/linux/releases/download/v6.9.1-arch1/linux-v6.9.1-arch1.patch.zst.sig source = config source = choose-gcc-optimization.sh source = sys-kernel_arch-sources-g14-6.8+--more-uarches-for-kernel.patch::https://raw.githubusercontent.com/graysky2/kernel_compiler_patch/master/more-uarches-for-kernel-6.8-rc4%2B.patch source = 0001-acpi-proc-idle-skip-dummy-wait.patch source = 0027-mt76_-mt7921_-Disable-powersave-features-by-default.patch - source = 0001-linux6.8.y-bore4.5.0.patch source = 0032-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0f6-for-MT7922.patch source = 0035-Add_quirk_for_polling_the_KBD_port.patch + source = 0001-hid-asus-use-hid-for-brightness-control-on-keyboard.patch source = 0001-ACPI-resource-Skip-IRQ-override-on-ASUS-TUF-Gaming-A.patch source = 0002-ACPI-resource-Skip-IRQ-override-on-ASUS-TUF-Gaming-A.patch source = v2-0005-platform-x86-asus-wmi-don-t-allow-eGPU-switching-.patch @@ -36,16 +36,17 @@ pkgbase = linux-g14 source = 0040-workaround_hardware_decoding_amdgpu.patch source = 0001-platform-x86-asus-wmi-Support-2023-ROG-X16-tablet-mo.patch source = amd-tablet-sfh.patch - source = 0001-v2-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch - source = 0002-v2-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch - source = 0003-v2-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch - source = 0004-v2-platform-x86-asus-wmi-support-toggling-POST-sound.patch - source = 0005-v2-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch - source = 0006-v2-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch - source = 0007-v2-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch - source = 0008-v2-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch - source = 0009-v2-platform-x86-asus-wmi-add-clean-up-structs.patch + source = 0001-v4-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch + source = 0002-v4-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch + source = 0003-v4-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch + source = 0004-v4-platform-x86-asus-wmi-support-toggling-POST-sound.patch + source = 0005-v4-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch + source = 0006-v4-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch + source = 0007-v4-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch + source = 0008-v4-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch + source = 0009-v4-platform-x86-asus-wmi-add-clean-up-structs.patch source = 0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch + source = 0001-platform-x86-asus-wmi-add-support-for-vivobook-fan-p.patch source = 0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch source = 0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch source = 0004-HID-asus-add-ROG-Z13-lightbar.patch @@ -54,18 +55,18 @@ pkgbase = linux-g14 validpgpkeys = ABAF11C65A2970B130ABE3C479BE3E4300411886 validpgpkeys = 647F28654894E3BD457199BE38DBBDC86092693E validpgpkeys = 83BC8889351B5DEBBB68416EB8AC08600F108CDF - sha256sums = 9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995 + sha256sums = 01b414ba98fd189ecd544435caf3860ae2a790e3ec48f5aa70fdf42dc4c5c04a sha256sums = SKIP - sha256sums = db03a8ea8ba5bb3f337c72812831dade02643b481148d3cce3a3855c9d82e53c + sha256sums = 8cb3d0a2769d1471c38fb5f1bdd1395333790453a399767c3af8673bc6a714b5 sha256sums = SKIP - sha256sums = 2fc20cbd7c4f7f3eeeba73b8e354cecb8757050d2c774992959f93ccde16d667 + sha256sums = 5f8a4de3f17d6d1b624e70514327b05fafffe8af913f95829b9c6830b4a8a4e3 sha256sums = 278118011d7a2eeca9971ac97b31bf0c55ab55e99c662ab9ae4717b55819c9a2 - sha256sums = d69232afd0dd6982ae941cf2d1f577f4be2011e3bb847d1db37952acf416b5d3 + sha256sums = f4e7fcd011f2691840d2c8c2361dca850a78ea33cc5c24d2e27c3e0294fd1dc5 sha256sums = 0a7ea482fe20c403788d290826cec42fe395e5a6eab07b88845f8b9a9829998d sha256sums = ed242f4be3f8eaade2a1d42157c5c6c86281917a08ae43221b088fafdc775ee7 - sha256sums = 09883311108d461da63a04012d7a2b7f6a4165ee0c4e9cb7a5dc3f9ade326fc7 sha256sums = a8e1e11a4ab1995cc4975c9b134a43ddfe7054ef0c965e52a7d8f9223e15c3e0 sha256sums = 315d1839630b37894a626bbc2aea012618b2e1ccb6f9d8aa27c0a3ce5e90e99c + sha256sums = dfa24a178cf3d533e09892bdae9365784771bf10fa7f771f559f54026dee92e4 sha256sums = a00b952d53df9d3617d93e8fba4146a4d6169ebe79f029b3a55cca68f738d8ea sha256sums = 4912b1319e46ddd6670147f5e878b4aca8bcfbd7b5c852fe11e434e424666365 sha256sums = 9f98765b43f5f31b33ed05f3611508113b02518e680ee82b251de80dae2e141d @@ -73,16 +74,17 @@ pkgbase = linux-g14 sha256sums = e41198b29cee4de7a5132d8df606f48c2d0f9c9076fe4230b00a33c7e0b22c71 sha256sums = 1edb362a762c8858374027e30ff58ae0014e117fdc05cc7db6da50f80e7aab87 sha256sums = 508f90cbe81a9a145cc540703470f1e6b5d21c7a7b9166d2ce6e56b401262b04 - sha256sums = 06375fa2bcc6fefd8d57c0d8a13b5af02d08318f3721c58fc0354970656f3b64 - sha256sums = f64fbf3b7e817edd7267612531d5aba3d17b727d5151b5b9e620d616797cf3da - sha256sums = 270fe67b07e8138be848958e9fa28ee8fecffd2e146ea68444c5200a9b09c2ed - sha256sums = 1b53d1914fb0186585125fcd9db2367697e4c265bfd38378aa0f59cc4e0fb46d - sha256sums = 9a5c4f2cc956933abcb9e1bd652dfad382108dd1f22844d6e5c393861a9ba35d - sha256sums = 951fe0da7b7939665ffc5094a0d39641d4c73395c264237e082d8c54b2927dfb - sha256sums = 66c25f11f3fc2cc0db9a3392400f072f1c3ac9408328128f075a9260f4eb01ef - sha256sums = d31ba415c2b65e3485d74f0268f1020dc49f31a6fe3316cf6c74a0690e96c81f - sha256sums = 47ad6e0781f1df1f6a6d35b8f20c2bf9dbd7e8e0b92a332cb88145755afba77c + sha256sums = feaf5f5fb62e25e2369f92f77e8327dcd4cb4cf4bc6d0c91d9c7bc40c0f4de46 + sha256sums = b9866121c69ce22b4651b3ef2a1956e6d0547e40a14d1224e2f367a4f716ca1a + sha256sums = 6f2f248a5ac9b1a37324cbce8d29a65b22a2b20d4b3564c0dc6063789ae733ba + sha256sums = 28f2b9bf5a1f4993bdc77d4d8ac32c1905edfeb3f4cce476f0f85a31b573bcd0 + sha256sums = fa8de80231c933ca294315168d985ae18261e04e77ef17482c815a0703d6c5fb + sha256sums = 62b297619e500b4453e2f3e0305c4dfb92185f69ebbdb67f99e8f76dad139f7a + sha256sums = c2c89baaf134c0151c3f7a3861d16194e32c91c7abc87f870733cab8c5b88389 + sha256sums = f5b560d988c47033c44307da0b584599d1f59cc0028a594f4df87affffc219d5 + sha256sums = de85da760f6692b284e39aa78479904d6ee78b349f1e98d1d210777f9ef17581 sha256sums = 3be072ed798becd91bae66a75d09235c9cb5e84547b1f4eb7768e954ba109e92 + sha256sums = 93c9a77f6c25494cecbe6b236bd2179065d5f5db5589dabaa425134c1a8c3481 sha256sums = c1d96328d96964c2ce3ef7609fb7c07e97eb136dfab9f6d4efcce072a5739838 sha256sums = 2414dc71174c90b92f975a7d16cabc99ba509397d843132764ea9ee91b643dc0 sha256sums = 107a08aa610d3ba3c7ecec301df2ea8f345bc74107fcf4dac96fe9e89a23dcf1 diff --git a/0001-hid-asus-use-hid-for-brightness-control-on-keyboard.patch b/0001-hid-asus-use-hid-for-brightness-control-on-keyboard.patch new file mode 100644 index 000000000000..bbc80ce9d64a --- /dev/null +++ b/0001-hid-asus-use-hid-for-brightness-control-on-keyboard.patch @@ -0,0 +1,123 @@ +From 5ebde6eb9c149a9f1bc97c9bcc2a4512aaad36e8 Mon Sep 17 00:00:00 2001 +From: "Luke D. Jones" <luke@ljones.dev> +Date: Mon, 13 May 2024 19:20:04 +1200 +Subject: [PATCH] hid-asus: use hid for brightness control on keyboard + +Signed-off-by: Luke D. Jones <luke@ljones.dev> +--- + drivers/hid/hid-asus.c | 18 +++++++++++++++++- + drivers/platform/x86/asus-wmi.c | 3 ++- + include/linux/platform_data/x86/asus-wmi.h | 22 ++++++++++++++++++++++ + 3 files changed, 41 insertions(+), 2 deletions(-) + +diff --git a/drivers/hid/hid-asus.c b/drivers/hid/hid-asus.c +index 02de2bf4f790..abb9478c001d 100644 +--- a/drivers/hid/hid-asus.c ++++ b/drivers/hid/hid-asus.c +@@ -101,6 +101,7 @@ struct asus_kbd_leds { + unsigned int brightness; + spinlock_t lock; + bool removed; ++ int report_id; + }; + + struct asus_touchpad_info { +@@ -473,7 +474,7 @@ static enum led_brightness asus_kbd_backlight_get(struct led_classdev *led_cdev) + static void asus_kbd_backlight_work(struct work_struct *work) + { + struct asus_kbd_leds *led = container_of(work, struct asus_kbd_leds, work); +- u8 buf[] = { FEATURE_KBD_REPORT_ID, 0xba, 0xc5, 0xc4, 0x00 }; ++ u8 buf[] = { led->report_id, 0xba, 0xc5, 0xc4, 0x00 }; + int ret; + unsigned long flags; + +@@ -492,12 +493,18 @@ static void asus_kbd_backlight_work(struct work_struct *work) + */ + static bool asus_kbd_wmi_led_control_present(struct hid_device *hdev) + { ++ struct asus_drvdata *drvdata = hid_get_drvdata(hdev); + u32 value; + int ret; + + if (!IS_ENABLED(CONFIG_ASUS_WMI)) + return false; + ++ if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD) { ++ hid_info(hdev, "using hidraw for asus::kbd_backlight\n"); ++ return !asus_use_hidraw_led(); ++ } ++ + ret = asus_wmi_evaluate_method(ASUS_WMI_METHODID_DSTS, + ASUS_WMI_DEVID_KBD_BACKLIGHT, 0, &value); + hid_dbg(hdev, "WMI backlight check: rc %d value %x", ret, value); +@@ -507,6 +514,11 @@ static bool asus_kbd_wmi_led_control_present(struct hid_device *hdev) + return !!(value & ASUS_WMI_DSTS_PRESENCE_BIT); + } + ++static bool asus_kbd_is_input_led(void) { ++ return dmi_match(DMI_PRODUCT_NAME, "GU605") ++ || dmi_match(DMI_PRODUCT_NAME, "GA403"); ++} ++ + static int asus_kbd_register_leds(struct hid_device *hdev) + { + struct asus_drvdata *drvdata = hid_get_drvdata(hdev); +@@ -549,6 +561,10 @@ static int asus_kbd_register_leds(struct hid_device *hdev) + if (!drvdata->kbd_backlight) + return -ENOMEM; + ++ drvdata->kbd_backlight->report_id = FEATURE_KBD_REPORT_ID; ++ if (drvdata->quirks & QUIRK_ROG_NKEY_KEYBOARD && asus_kbd_is_input_led()) ++ drvdata->kbd_backlight->report_id = FEATURE_KBD_LED_REPORT_ID1; ++ + drvdata->kbd_backlight->removed = false; + drvdata->kbd_backlight->brightness = 0; + drvdata->kbd_backlight->hdev = hdev; +diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c +index 3f9b6285c9a6..a58df18a70ad 100644 +--- a/drivers/platform/x86/asus-wmi.c ++++ b/drivers/platform/x86/asus-wmi.c +@@ -1681,7 +1681,8 @@ static int asus_wmi_led_init(struct asus_wmi *asus) + goto error; + } + +- if (!kbd_led_read(asus, &led_val, NULL)) { ++ if (!kbd_led_read(asus, &led_val, NULL) && !asus_use_hidraw_led()) { ++ pr_info("using asus-wmi for asus::kbd_backlight\n"); + asus->kbd_led_wk = led_val; + asus->kbd_led.name = "asus::kbd_backlight"; + asus->kbd_led.flags = LED_BRIGHT_HW_CHANGED; +diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h +index 3eb5cd6773ad..33c5af4a0c9e 100644 +--- a/include/linux/platform_data/x86/asus-wmi.h ++++ b/include/linux/platform_data/x86/asus-wmi.h +@@ -160,4 +160,26 @@ static inline int asus_wmi_evaluate_method(u32 method_id, u32 arg0, u32 arg1, + } + #endif + ++/* To be used by both hid-asus and asus-wmi to determine which controls kbd_brightness */ ++#if IS_REACHABLE(CONFIG_ASUS_WMI) ++static bool asus_use_hidraw_led(void) { ++ const char *product, *board; ++ ++ product = dmi_get_system_info(DMI_PRODUCT_NAME); ++ board = dmi_get_system_info(DMI_PRODUCT_NAME); ++ return !product ++ || strcmp(product, "ROG Zephyrus") ++ || strcmp(product, "ROG Strix") ++ || strcmp(product, "ROG Flow") ++ || strcmp(product, "GA403") ++ || strcmp(product, "GU605") ++ || !board ++ || strcmp(board, "RC71L"); ++} ++#else ++static inline bool asus_use_hidraw_led(void) { ++ return true; ++} ++#endif ++ + #endif /* __PLATFORM_DATA_X86_ASUS_WMI_H */ +-- +2.45.0 + diff --git a/0001-linux6.8.y-bore4.5.0.patch b/0001-linux6.8.y-bore4.5.0.patch deleted file mode 100644 index 61db732d1be9..000000000000 --- a/0001-linux6.8.y-bore4.5.0.patch +++ /dev/null @@ -1,904 +0,0 @@ -From d8d9f2ff3cbf43b41269da34772b59bc9a11c5c2 Mon Sep 17 00:00:00 2001 -From: Masahito S <firelzrd@gmail.com> -Date: Sun, 3 Mar 2024 05:14:31 +0900 -Subject: [PATCH] linux6.8.y-bore4.5.0 - ---- - include/linux/sched.h | 12 ++ - init/Kconfig | 19 +++ - kernel/sched/core.c | 148 ++++++++++++++++++++ - kernel/sched/debug.c | 61 +++++++- - kernel/sched/fair.c | 302 ++++++++++++++++++++++++++++++++++++++-- - kernel/sched/features.h | 4 + - kernel/sched/sched.h | 7 + - 7 files changed, 538 insertions(+), 15 deletions(-) - -diff --git a/include/linux/sched.h b/include/linux/sched.h -index ffe8f618ab..7ac6163f90 100644 ---- a/include/linux/sched.h -+++ b/include/linux/sched.h -@@ -547,6 +547,18 @@ struct sched_entity { - u64 sum_exec_runtime; - u64 prev_sum_exec_runtime; - u64 vruntime; -+#ifdef CONFIG_SCHED_BORE -+ u64 burst_time; -+ u8 prev_burst_penalty; -+ u8 curr_burst_penalty; -+ u8 burst_penalty; -+ u8 burst_score; -+ u32 burst_load; -+ bool on_cfs_rq; -+ u8 child_burst; -+ u32 child_burst_cnt; -+ u64 child_burst_last_cached; -+#endif // CONFIG_SCHED_BORE - s64 vlag; - u64 slice; - -diff --git a/init/Kconfig b/init/Kconfig -index deda3d1413..9fa6b45c03 100644 ---- a/init/Kconfig -+++ b/init/Kconfig -@@ -1270,6 +1270,25 @@ config CHECKPOINT_RESTORE - - If unsure, say N here. - -+config SCHED_BORE -+ bool "Burst-Oriented Response Enhancer" -+ default y -+ help -+ In Desktop and Mobile computing, one might prefer interactive -+ tasks to keep responsive no matter what they run in the background. -+ -+ Enabling this kernel feature modifies the scheduler to discriminate -+ tasks by their burst time (runtime since it last went sleeping or -+ yielding state) and prioritize those that run less bursty. -+ Such tasks usually include window compositor, widgets backend, -+ terminal emulator, video playback, games and so on. -+ With a little impact to scheduling fairness, it may improve -+ responsiveness especially under heavy background workload. -+ -+ You can turn it off by setting the sysctl kernel.sched_bore = 0. -+ -+ If unsure, say Y here. -+ - config SCHED_AUTOGROUP - bool "Automatic process group scheduling" - select CGROUPS -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 9116bcc903..b4bd85b3bf 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -4507,6 +4507,143 @@ int wake_up_state(struct task_struct *p, unsigned int state) - return try_to_wake_up(p, state, 0); - } - -+#ifdef CONFIG_SCHED_BORE -+extern bool sched_bore; -+extern u8 sched_burst_fork_atavistic; -+extern uint sched_burst_cache_lifetime; -+ -+static void __init sched_init_bore(void) { -+ init_task.se.burst_time = 0; -+ init_task.se.prev_burst_penalty = 0; -+ init_task.se.curr_burst_penalty = 0; -+ init_task.se.burst_penalty = 0; -+ init_task.se.burst_score = 0; -+ init_task.se.on_cfs_rq = false; -+ init_task.se.child_burst_last_cached = 0; -+ init_task.se.burst_load = 0; -+} -+ -+void inline sched_fork_bore(struct task_struct *p) { -+ p->se.burst_time = 0; -+ p->se.curr_burst_penalty = 0; -+ p->se.burst_score = 0; -+ p->se.on_cfs_rq = false; -+ p->se.child_burst_last_cached = 0; -+ p->se.burst_load = 0; -+} -+ -+static u32 count_child_tasks(struct task_struct *p) { -+ struct task_struct *child; -+ u32 cnt = 0; -+ list_for_each_entry(child, &p->children, sibling) {cnt++;} -+ return cnt; -+} -+ -+static inline bool task_is_inheritable(struct task_struct *p) { -+ return (p->sched_class == &fair_sched_class); -+} -+ -+static inline bool child_burst_cache_expired(struct task_struct *p, u64 now) { -+ u64 expiration_time = -+ p->se.child_burst_last_cached + sched_burst_cache_lifetime; -+ return ((s64)(expiration_time - now) < 0); -+} -+ -+static void __update_child_burst_cache( -+ struct task_struct *p, u32 cnt, u32 sum, u64 now) { -+ u8 avg = 0; -+ if (cnt) avg = sum / cnt; -+ p->se.child_burst = max(avg, p->se.burst_penalty); -+ p->se.child_burst_cnt = cnt; -+ p->se.child_burst_last_cached = now; -+} -+ -+static inline void update_child_burst_direct(struct task_struct *p, u64 now) { -+ struct task_struct *child; -+ u32 cnt = 0; -+ u32 sum = 0; -+ -+ list_for_each_entry(child, &p->children, sibling) { -+ if (!task_is_inheritable(child)) continue; -+ cnt++; -+ sum += child->se.burst_penalty; -+ } -+ -+ __update_child_burst_cache(p, cnt, sum, now); -+} -+ -+static inline u8 __inherit_burst_direct(struct task_struct *p, u64 now) { -+ struct task_struct *parent = p->real_parent; -+ if (child_burst_cache_expired(parent, now)) -+ update_child_burst_direct(parent, now); -+ -+ return parent->se.child_burst; -+} -+ -+static void update_child_burst_topological( -+ struct task_struct *p, u64 now, u32 depth, u32 *acnt, u32 *asum) { -+ struct task_struct *child, *dec; -+ u32 cnt = 0, dcnt = 0; -+ u32 sum = 0; -+ -+ list_for_each_entry(child, &p->children, sibling) { -+ dec = child; -+ while ((dcnt = count_child_tasks(dec)) == 1) -+ dec = list_first_entry(&dec->children, struct task_struct, sibling); -+ -+ if (!dcnt || !depth) { -+ if (!task_is_inheritable(dec)) continue; -+ cnt++; -+ sum += dec->se.burst_penalty; -+ continue; -+ } -+ if (!child_burst_cache_expired(dec, now)) { -+ cnt += dec->se.child_burst_cnt; -+ sum += (u32)dec->se.child_burst * dec->se.child_burst_cnt; -+ continue; -+ } -+ update_child_burst_topological(dec, now, depth - 1, &cnt, &sum); -+ } -+ -+ __update_child_burst_cache(p, cnt, sum, now); -+ *acnt += cnt; -+ *asum += sum; -+} -+ -+static inline u8 __inherit_burst_topological(struct task_struct *p, u64 now) { -+ struct task_struct *anc = p->real_parent; -+ u32 cnt = 0, sum = 0; -+ -+ while (anc->real_parent != anc && count_child_tasks(anc) == 1) -+ anc = anc->real_parent; -+ -+ if (child_burst_cache_expired(anc, now)) -+ update_child_burst_topological( -+ anc, now, sched_burst_fork_atavistic - 1, &cnt, &sum); -+ -+ return anc->se.child_burst; -+} -+ -+static inline void inherit_burst(struct task_struct *p) { -+ u8 burst_cache; -+ u64 now = ktime_get_ns(); -+ -+ read_lock(&tasklist_lock); -+ burst_cache = likely(sched_burst_fork_atavistic)? -+ __inherit_burst_topological(p, now): -+ __inherit_burst_direct(p, now); -+ read_unlock(&tasklist_lock); -+ -+ p->se.prev_burst_penalty = max(p->se.prev_burst_penalty, burst_cache); -+} -+ -+static void sched_post_fork_bore(struct task_struct *p) { -+ if (p->sched_class == &fair_sched_class && likely(sched_bore)) -+ inherit_burst(p); -+ p->se.burst_penalty = p->se.prev_burst_penalty; -+} -+#endif // CONFIG_SCHED_BORE -+ - /* - * Perform scheduler related setup for a newly forked process p. - * p is forked by current. -@@ -4523,6 +4660,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) - p->se.prev_sum_exec_runtime = 0; - p->se.nr_migrations = 0; - p->se.vruntime = 0; -+#ifdef CONFIG_SCHED_BORE -+ sched_fork_bore(p); -+#endif // CONFIG_SCHED_BORE - p->se.vlag = 0; - p->se.slice = sysctl_sched_base_slice; - INIT_LIST_HEAD(&p->se.group_node); -@@ -4839,6 +4979,9 @@ void sched_cgroup_fork(struct task_struct *p, struct kernel_clone_args *kargs) - - void sched_post_fork(struct task_struct *p) - { -+#ifdef CONFIG_SCHED_BORE -+ sched_post_fork_bore(p); -+#endif // CONFIG_SCHED_BORE - uclamp_post_fork(p); - } - -@@ -9910,6 +10053,11 @@ void __init sched_init(void) - BUG_ON(&dl_sched_class != &stop_sched_class + 1); - #endif - -+#ifdef CONFIG_SCHED_BORE -+ sched_init_bore(); -+ printk(KERN_INFO "BORE (Burst-Oriented Response Enhancer) CPU Scheduler modification 4.5.0 by Masahito Suzuki"); -+#endif // CONFIG_SCHED_BORE -+ - wait_bit_init(); - - #ifdef CONFIG_FAIR_GROUP_SCHED -diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c -index 8d5d98a583..a565363fdd 100644 ---- a/kernel/sched/debug.c -+++ b/kernel/sched/debug.c -@@ -167,7 +167,52 @@ static const struct file_operations sched_feat_fops = { - }; - - #ifdef CONFIG_SMP -+#ifdef CONFIG_SCHED_BORE -+static ssize_t sched_min_base_slice_write(struct file *filp, const char __user *ubuf, -+ size_t cnt, loff_t *ppos) -+{ -+ char buf[16]; -+ unsigned int value; -+ -+ if (cnt > 15) -+ cnt = 15; -+ -+ if (copy_from_user(&buf, ubuf, cnt)) -+ return -EFAULT; -+ buf[cnt] = '\0'; -+ -+ if (kstrtouint(buf, 10, &value)) -+ return -EINVAL; - -+ if (!value) -+ return -EINVAL; -+ -+ sysctl_sched_min_base_slice = value; -+ sched_update_min_base_slice(); -+ -+ *ppos += cnt; -+ return cnt; -+} -+ -+static int sched_min_base_slice_show(struct seq_file *m, void *v) -+{ -+ seq_printf(m, "%d\n", sysctl_sched_min_base_slice); -+ return 0; -+} -+ -+static int sched_min_base_slice_open(struct inode *inode, struct file *filp) -+{ -+ return single_open(filp, sched_min_base_slice_show, NULL); -+} -+ -+static const struct file_operations sched_min_base_slice_fops = { -+ .open = sched_min_base_slice_open, -+ .write = sched_min_base_slice_write, -+ .read = seq_read, -+ .llseek = seq_lseek, -+ .release = single_release, -+}; -+#else // !CONFIG_SCHED_BORE - static ssize_t sched_scaling_write(struct file *filp, const char __user *ubuf, - size_t cnt, loff_t *ppos) - { -@@ -213,7 +258,7 @@ static const struct file_operations sched_scaling_fops = { - .llseek = seq_lseek, - .release = single_release, - }; -- -+#endif // CONFIG_SCHED_BORE - #endif /* SMP */ - - #ifdef CONFIG_PREEMPT_DYNAMIC -@@ -347,13 +392,20 @@ static __init int sched_init_debug(void) - debugfs_create_file("preempt", 0644, debugfs_sched, NULL, &sched_dynamic_fops); - #endif - -+#ifdef CONFIG_SCHED_BORE -+ debugfs_create_file("min_base_slice_ns", 0644, debugfs_sched, NULL, &sched_min_base_slice_fops); -+ debugfs_create_u32("base_slice_ns", 0400, debugfs_sched, &sysctl_sched_base_slice); -+#else // !CONFIG_SCHED_BORE - debugfs_create_u32("base_slice_ns", 0644, debugfs_sched, &sysctl_sched_base_slice); -+#endif // CONFIG_SCHED_BORE - - debugfs_create_u32("latency_warn_ms", 0644, debugfs_sched, &sysctl_resched_latency_warn_ms); - debugfs_create_u32("latency_warn_once", 0644, debugfs_sched, &sysctl_resched_latency_warn_once); - - #ifdef CONFIG_SMP -+#if !defined(CONFIG_SCHED_BORE) - debugfs_create_file("tunable_scaling", 0644, debugfs_sched, NULL, &sched_scaling_fops); -+#endif // CONFIG_SCHED_BORE - debugfs_create_u32("migration_cost_ns", 0644, debugfs_sched, &sysctl_sched_migration_cost); - debugfs_create_u32("nr_migrate", 0644, debugfs_sched, &sysctl_sched_nr_migrate); - -@@ -595,6 +647,9 @@ print_task(struct seq_file *m, struct rq *rq, struct task_struct *p) - SPLIT_NS(schedstat_val_or_zero(p->stats.sum_sleep_runtime)), - SPLIT_NS(schedstat_val_or_zero(p->stats.sum_block_runtime))); - -+#ifdef CONFIG_SCHED_BORE -+ SEQ_printf(m, " %2d", p->se.burst_score); -+#endif // CONFIG_SCHED_BORE - #ifdef CONFIG_NUMA_BALANCING - SEQ_printf(m, " %d %d", task_node(p), task_numa_group_id(p)); - #endif -@@ -1068,6 +1123,10 @@ void proc_sched_show_task(struct task_struct *p, struct pid_namespace *ns, - - P(se.load.weight); - #ifdef CONFIG_SMP -+#ifdef CONFIG_SCHED_BORE -+ P(se.burst_load); -+ P(se.burst_score); -+#endif // CONFIG_SCHED_BORE - P(se.avg.load_sum); - P(se.avg.runnable_sum); - P(se.avg.util_sum); -diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c -index 533547e3c9..429753c008 100644 ---- a/kernel/sched/fair.c -+++ b/kernel/sched/fair.c -@@ -19,6 +19,9 @@ - * - * Adaptive scheduling granularity, math enhancements by Peter Zijlstra - * Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra -+ * -+ * Burst-Oriented Response Enhancer (BORE) CPU Scheduler -+ * Copyright (C) 2021-2024 Masahito Suzuki <firelzrd@gmail.com> - */ - #include <linux/energy_model.h> - #include <linux/mmap_lock.h> -@@ -64,20 +67,129 @@ - * SCHED_TUNABLESCALING_LOG - scaled logarithmical, *1+ilog(ncpus) - * SCHED_TUNABLESCALING_LINEAR - scaled linear, *ncpus - * -- * (default SCHED_TUNABLESCALING_LOG = *(1+ilog(ncpus)) -+ * (BORE default SCHED_TUNABLESCALING_NONE = *1 constant) -+ * (EEVDF default SCHED_TUNABLESCALING_LOG = *(1+ilog(ncpus)) - */ -+#ifdef CONFIG_SCHED_BORE -+unsigned int sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_NONE; -+#else // !CONFIG_SCHED_BORE - unsigned int sysctl_sched_tunable_scaling = SCHED_TUNABLESCALING_LOG; -+#endif // CONFIG_SCHED_BORE - - /* - * Minimal preemption granularity for CPU-bound tasks: - * -- * (default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds) -+ * (BORE default: max(1 sec / HZ, min_base_slice) constant, units: nanoseconds) -+ * (EEVDF default: 0.75 msec * (1 + ilog(ncpus)), units: nanoseconds) - */ -+#ifdef CONFIG_SCHED_BORE -+unsigned int sysctl_sched_base_slice = 1000000000ULL / HZ; -+static unsigned int configured_sched_base_slice = 1000000000ULL / HZ; -+unsigned int sysctl_sched_min_base_slice = 2000000ULL; -+#else // !CONFIG_SCHED_BORE - unsigned int sysctl_sched_base_slice = 750000ULL; - static unsigned int normalized_sysctl_sched_base_slice = 750000ULL; -+#endif // CONFIG_SCHED_BORE - - const_debug unsigned int sysctl_sched_migration_cost = 500000UL; - -+#ifdef CONFIG_SCHED_BORE -+u8 __read_mostly sched_bore = 1; -+u8 __read_mostly sched_burst_score_rounding = 0; -+u8 __read_mostly sched_burst_smoothness_long = 1; -+u8 __read_mostly sched_burst_smoothness_short = 0; -+u8 __read_mostly sched_burst_fork_atavistic = 2; -+u8 __read_mostly sched_burst_penalty_offset = 22; -+uint __read_mostly sched_burst_penalty_scale = 1280; -+uint __read_mostly sched_burst_cache_lifetime = 60000000; -+u8 __read_mostly sched_vlag_deviation_limit = 8; -+static int __maybe_unused thirty_two = 32; -+static int __maybe_unused sixty_four = 64; -+static int __maybe_unused maxval_12_bits = 4095; -+ -+#define MAX_BURST_PENALTY (39U <<2) -+ -+static inline u32 log2plus1_u64_u32f8(u64 v) { -+ u32 msb = fls64(v); -+ s32 excess_bits = msb - 9; -+ u8 fractional = (0 <= excess_bits)? v >> excess_bits: v << -excess_bits; -+ return msb << 8 | fractional; -+} -+ -+static inline u32 calc_burst_penalty(u64 burst_time) { -+ u32 greed, tolerance, penalty, scaled_penalty; -+ -+ greed = log2plus1_u64_u32f8(burst_time); -+ tolerance = sched_burst_penalty_offset << 8; -+ penalty = max(0, (s32)greed - (s32)tolerance); -+ scaled_penalty = penalty * sched_burst_penalty_scale >> 16; -+ -+ return min(MAX_BURST_PENALTY, scaled_penalty); -+} -+ -+static inline u64 scale_slice(u64 delta, struct sched_entity *se) { -+ return mul_u64_u32_shr(delta, sched_prio_to_wmult[se->burst_score], 22); -+} -+ -+static inline u64 __unscale_slice(u64 delta, u8 score) { -+ return mul_u64_u32_shr(delta, sched_prio_to_weight[score], 10); -+} -+ -+static inline u64 unscale_slice(u64 delta, struct sched_entity *se) { -+ return __unscale_slice(delta, se->burst_score); -+} -+ -+static void avg_vruntime_add(struct cfs_rq *cfs_rq, struct sched_entity *se); -+static void avg_vruntime_sub(struct cfs_rq *cfs_rq, struct sched_entity *se); -+ -+static void update_burst_score(struct sched_entity *se) { -+ struct cfs_rq *cfs_rq = cfs_rq_of(se); -+ u8 prev_score = se->burst_score; -+ u32 penalty = se->burst_penalty; -+ if (sched_burst_score_rounding) penalty += 0x2U; -+ se->burst_score = penalty >> 2; -+ -+ if ((se->burst_score != prev_score) && se->on_cfs_rq) { -+ avg_vruntime_sub(cfs_rq, se); -+ avg_vruntime_add(cfs_rq, se); -+ } -+} -+ -+static void update_burst_penalty(struct sched_entity *se) { -+ se->curr_burst_penalty = calc_burst_penalty(se->burst_time); -+ se->burst_penalty = max(se->prev_burst_penalty, se->curr_burst_penalty); -+ update_burst_score(se); -+} -+ -+static inline u32 binary_smooth(u32 new, u32 old) { -+ int increment = new - old; -+ return (0 <= increment)? -+ old + ( increment >> (int)sched_burst_smoothness_long): -+ old - (-increment >> (int)sched_burst_smoothness_short); -+} -+ -+static void restart_burst(struct sched_entity *se) { -+ se->burst_penalty = se->prev_burst_penalty = -+ binary_smooth(se->curr_burst_penalty, se->prev_burst_penalty); -+ se->curr_burst_penalty = 0; -+ se->burst_time = 0; -+ update_burst_score(se); -+} -+ -+static void restart_burst_rescale_deadline(struct sched_entity *se) { -+ s64 vscaled, wremain, vremain = se->deadline - se->vruntime; -+ u8 prev_score = se->burst_score; -+ restart_burst(se); -+ if (prev_score > se->burst_score) { -+ wremain = __unscale_slice(abs(vremain), prev_score); -+ vscaled = scale_slice(wremain, se); -+ if (unlikely(vremain < 0)) -+ vscaled = -vscaled; -+ se->deadline = se->vruntime + vscaled; -+ } -+} -+#endif // CONFIG_SCHED_BORE -+ - int sched_thermal_decay_shift; - static int __init setup_sched_thermal_decay_shift(char *str) - { -@@ -137,6 +249,87 @@ static unsigned int sysctl_numa_balancing_promote_rate_limit = 65536; - - #ifdef CONFIG_SYSCTL - static struct ctl_table sched_fair_sysctls[] = { -+#ifdef CONFIG_SCHED_BORE -+ { -+ .procname = "sched_bore", -+ .data = &sched_bore, -+ .maxlen = sizeof(u8), -+ .mode = 0644, -+ .proc_handler = proc_dou8vec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = SYSCTL_ONE, -+ }, -+ { -+ .procname = "sched_burst_score_rounding", -+ .data = &sched_burst_score_rounding, -+ .maxlen = sizeof(u8), -+ .mode = 0644, -+ .proc_handler = proc_dou8vec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = SYSCTL_ONE, -+ }, -+ { -+ .procname = "sched_burst_smoothness_long", -+ .data = &sched_burst_smoothness_long, -+ .maxlen = sizeof(u8), -+ .mode = 0644, -+ .proc_handler = proc_dou8vec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = SYSCTL_ONE, -+ }, -+ { -+ .procname = "sched_burst_smoothness_short", -+ .data = &sched_burst_smoothness_short, -+ .maxlen = sizeof(u8), -+ .mode = 0644, -+ .proc_handler = proc_dou8vec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = SYSCTL_ONE, -+ }, -+ { -+ .procname = "sched_burst_fork_atavistic", -+ .data = &sched_burst_fork_atavistic, -+ .maxlen = sizeof(u8), -+ .mode = 0644, -+ .proc_handler = proc_dou8vec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = SYSCTL_THREE, -+ }, -+ { -+ .procname = "sched_burst_penalty_offset", -+ .data = &sched_burst_penalty_offset, -+ .maxlen = sizeof(u8), -+ .mode = 0644, -+ .proc_handler = proc_dou8vec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = &sixty_four, -+ }, -+ { -+ .procname = "sched_burst_penalty_scale", -+ .data = &sched_burst_penalty_scale, -+ .maxlen = sizeof(uint), -+ .mode = 0644, -+ .proc_handler = proc_douintvec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = &maxval_12_bits, -+ }, -+ { -+ .procname = "sched_burst_cache_lifetime", -+ .data = &sched_burst_cache_lifetime, -+ .maxlen = sizeof(uint), -+ .mode = 0644, -+ .proc_handler = proc_douintvec, -+ }, -+ { -+ .procname = "sched_vlag_deviation_limit", -+ .data = &sched_vlag_deviation_limit, -+ .maxlen = sizeof(u8), -+ .mode = 0644, -+ .proc_handler = proc_dou8vec_minmax, -+ .extra1 = SYSCTL_ZERO, -+ .extra2 = &thirty_two, -+ }, -+#endif // CONFIG_SCHED_BORE - #ifdef CONFIG_CFS_BANDWIDTH - { - .procname = "sched_cfs_bandwidth_slice_us", -@@ -195,6 +388,13 @@ static inline void update_load_set(struct load_weight *lw, unsigned long w) - * - * This idea comes from the SD scheduler of Con Kolivas: - */ -+#ifdef CONFIG_SCHED_BORE -+static void update_sysctl(void) { -+ sysctl_sched_base_slice = -+ max(sysctl_sched_min_base_slice, configured_sched_base_slice); -+} -+void sched_update_min_base_slice(void) { update_sysctl(); } -+#else // !CONFIG_SCHED_BORE - static unsigned int get_update_sysctl_factor(void) - { - unsigned int cpus = min_t(unsigned int, num_online_cpus(), 8); -@@ -225,6 +425,7 @@ static void update_sysctl(void) - SET_SYSCTL(sched_base_slice); - #undef SET_SYSCTL - } -+#endif // CONFIG_SCHED_BORE - - void __init sched_init_granularity(void) - { -@@ -298,6 +499,9 @@ static inline u64 calc_delta_fair(u64 delta, struct sched_entity *se) - if (unlikely(se->load.weight != NICE_0_LOAD)) - delta = __calc_delta(delta, NICE_0_LOAD, &se->load); - -+#ifdef CONFIG_SCHED_BORE -+ if (likely(sched_bore)) delta = scale_slice(delta, se); -+#endif // CONFIG_SCHED_BORE - return delta; - } - -@@ -624,10 +828,26 @@ static inline s64 entity_key(struct cfs_rq *cfs_rq, struct sched_entity *se) - * - * As measured, the max (key * weight) value was ~44 bits for a kernel build. - */ -+#if !defined(CONFIG_SCHED_BORE) -+#define entity_weight(se) scale_load_down(se->load.weight) -+#else // CONFIG_SCHED_BORE -+static unsigned long entity_weight(struct sched_entity *se) { -+ unsigned long weight = se->load.weight; -+ if (likely(sched_bore)) weight = unscale_slice(weight, se); -+#ifdef CONFIG_64BIT -+ weight >>= SCHED_FIXEDPOINT_SHIFT - 3; -+#endif // CONFIG_64BIT -+ return weight; -+} -+#endif // CONFIG_SCHED_BORE -+ - static void - avg_vruntime_add(struct cfs_rq *cfs_rq, struct sched_entity *se) - { -- unsigned long weight = scale_load_down(se->load.weight); -+ unsigned long weight = entity_weight(se); -+#ifdef CONFIG_SCHED_BORE -+ se->burst_load = weight; -+#endif // CONFIG_SCHED_BORE - s64 key = entity_key(cfs_rq, se); - - cfs_rq->avg_vruntime += key * weight; -@@ -637,7 +857,12 @@ avg_vruntime_add(struct cfs_rq *cfs_rq, struct sched_entity *se) - static void - avg_vruntime_sub(struct cfs_rq *cfs_rq, struct sched_entity *se) - { -- unsigned long weight = scale_load_down(se->load.weight); -+#if !defined(CONFIG_SCHED_BORE) -+ unsigned long weight = entity_weight(se); -+#else // CONFIG_SCHED_BORE -+ unsigned long weight = se->burst_load; -+ se->burst_load = 0; -+#endif // CONFIG_SCHED_BORE - s64 key = entity_key(cfs_rq, se); - - cfs_rq->avg_vruntime -= key * weight; -@@ -657,14 +882,14 @@ void avg_vruntime_update(struct cfs_rq *cfs_rq, s64 delta) - * Specifically: avg_runtime() + 0 must result in entity_eligible() := true - * For this to be so, the result of this function must have a left bias. - */ --u64 avg_vruntime(struct cfs_rq *cfs_rq) -+static u64 avg_key(struct cfs_rq *cfs_rq) - { - struct sched_entity *curr = cfs_rq->curr; - s64 avg = cfs_rq->avg_vruntime; - long load = cfs_rq->avg_load; - - if (curr && curr->on_rq) { -- unsigned long weight = scale_load_down(curr->load.weight); -+ unsigned long weight = entity_weight(curr); - - avg += entity_key(cfs_rq, curr) * weight; - load += weight; -@@ -674,12 +899,15 @@ u64 avg_vruntime(struct cfs_rq *cfs_rq) - /* sign flips effective floor / ceil */ - if (avg < 0) - avg -= (load - 1); -- avg = div_s64(avg, load); -+ avg = div64_s64(avg, load); - } - -- return cfs_rq->min_vruntime + avg; -+ return avg; - } - -+u64 avg_vruntime(struct cfs_rq *cfs_rq) { -+ return cfs_rq->min_vruntime + avg_key(cfs_rq); -+} - /* - * lag_i = S - s_i = w_i * (V - v_i) - * -@@ -704,6 +932,9 @@ static void update_entity_lag(struct cfs_rq *cfs_rq, struct sched_entity *se) - lag = avg_vruntime(cfs_rq) - se->vruntime; - - limit = calc_delta_fair(max_t(u64, 2*se->slice, TICK_NSEC), se); -+#ifdef CONFIG_SCHED_BORE -+ if (likely(sched_bore)) limit >>= 1; -+#endif // CONFIG_SCHED_BORE - se->vlag = clamp(lag, -limit, limit); - } - -@@ -731,7 +962,7 @@ static int vruntime_eligible(struct cfs_rq *cfs_rq, u64 vruntime) - long load = cfs_rq->avg_load; - - if (curr && curr->on_rq) { -- unsigned long weight = scale_load_down(curr->load.weight); -+ unsigned long weight = entity_weight(curr); - - avg += entity_key(cfs_rq, curr) * weight; - load += weight; -@@ -827,10 +1058,16 @@ static void __enqueue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) - se->min_vruntime = se->vruntime; - rb_add_augmented_cached(&se->run_node, &cfs_rq->tasks_timeline, - __entity_less, &min_vruntime_cb); -+#ifdef CONFIG_SCHED_BORE -+ se->on_cfs_rq = true; -+#endif // CONFIG_SCHED_BORE - } - - static void __dequeue_entity(struct cfs_rq *cfs_rq, struct sched_entity *se) - { -+#ifdef CONFIG_SCHED_BORE -+ se->on_cfs_rq = false; -+#endif // CONFIG_SCHED_BORE - rb_erase_augmented_cached(&se->run_node, &cfs_rq->tasks_timeline, - &min_vruntime_cb); - avg_vruntime_sub(cfs_rq, se); -@@ -955,6 +1192,7 @@ struct sched_entity *__pick_last_entity(struct cfs_rq *cfs_rq) - * Scheduling class statistics methods: - */ - #ifdef CONFIG_SMP -+#if !defined(CONFIG_SCHED_BORE) - int sched_update_scaling(void) - { - unsigned int factor = get_update_sysctl_factor(); -@@ -966,6 +1204,7 @@ int sched_update_scaling(void) - - return 0; - } -+#endif // CONFIG_SCHED_BORE - #endif - #endif - -@@ -1165,7 +1404,13 @@ static void update_curr(struct cfs_rq *cfs_rq) - if (unlikely(delta_exec <= 0)) - return; - -+#ifdef CONFIG_SCHED_BORE -+ curr->burst_time += delta_exec; -+ update_burst_penalty(curr); -+ curr->vruntime += max(1ULL, calc_delta_fair(delta_exec, curr)); -+#else // !CONFIG_SCHED_BORE - curr->vruntime += calc_delta_fair(delta_exec, curr); -+#endif // CONFIG_SCHED_BORE - update_deadline(cfs_rq, curr); - update_min_vruntime(cfs_rq); - -@@ -5157,8 +5402,8 @@ static inline void update_misfit_status(struct task_struct *p, struct rq *rq) {} - static void - place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) - { -- u64 vslice, vruntime = avg_vruntime(cfs_rq); -- s64 lag = 0; -+ s64 lag = 0, key = avg_key(cfs_rq); -+ u64 vslice, vruntime = cfs_rq->min_vruntime + key; - - se->slice = sysctl_sched_base_slice; - vslice = calc_delta_fair(se->slice, se); -@@ -5171,6 +5416,9 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) - * - * EEVDF: placement strategy #1 / #2 - */ -+#ifdef CONFIG_SCHED_BORE -+ if (unlikely(!sched_bore) || se->vlag) -+#endif // CONFIG_SCHED_BORE - if (sched_feat(PLACE_LAG) && cfs_rq->nr_running) { - struct sched_entity *curr = cfs_rq->curr; - unsigned long load; -@@ -5231,12 +5479,18 @@ place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags) - */ - load = cfs_rq->avg_load; - if (curr && curr->on_rq) -- load += scale_load_down(curr->load.weight); -+ load += entity_weight(curr); - -- lag *= load + scale_load_down(se->load.weight); -+ lag *= load + entity_weight(se); - if (WARN_ON_ONCE(!load)) - load = 1; -- lag = div_s64(lag, load); -+ lag = div64_s64(lag, load); -+#ifdef CONFIG_SCHED_BORE -+ if (likely(sched_bore)) { -+ s64 limit = vslice << sched_vlag_deviation_limit; -+ lag = clamp(lag, -limit, limit); -+ } -+#endif // CONFIG_SCHED_BORE - } - - se->vruntime = vruntime - lag; -@@ -6803,6 +7057,14 @@ static void dequeue_task_fair(struct rq *rq, struct task_struct *p, int flags) - bool was_sched_idle = sched_idle_rq(rq); - - util_est_dequeue(&rq->cfs, p); -+#ifdef CONFIG_SCHED_BORE -+ if (task_sleep) { -+ cfs_rq = cfs_rq_of(se); -+ if (cfs_rq->curr == se) -+ update_curr(cfs_rq); -+ restart_burst(se); -+ } -+#endif // CONFIG_SCHED_BORE - - for_each_sched_entity(se) { - cfs_rq = cfs_rq_of(se); -@@ -8552,16 +8814,25 @@ static void yield_task_fair(struct rq *rq) - /* - * Are we the only task in the tree? - */ -+#if !defined(CONFIG_SCHED_BORE) - if (unlikely(rq->nr_running == 1)) - return; - - clear_buddies(cfs_rq, se); -+#endif // CONFIG_SCHED_BORE - - update_rq_clock(rq); - /* - * Update run-time statistics of the 'current'. - */ - update_curr(cfs_rq); -+#ifdef CONFIG_SCHED_BORE -+ restart_burst_rescale_deadline(se); -+ if (unlikely(rq->nr_running == 1)) -+ return; -+ -+ clear_buddies(cfs_rq, se); -+#endif // CONFIG_SCHED_BORE - /* - * Tell update_rq_clock() that we've just updated, - * so we don't do microscopic update in schedule() -@@ -12651,6 +12922,9 @@ static void task_fork_fair(struct task_struct *p) - curr = cfs_rq->curr; - if (curr) - update_curr(cfs_rq); -+#ifdef CONFIG_SCHED_BORE -+ update_burst_score(se); -+#endif // CONFIG_SCHED_BORE - place_entity(cfs_rq, se, ENQUEUE_INITIAL); - rq_unlock(rq, &rf); - } -diff --git a/kernel/sched/features.h b/kernel/sched/features.h -index 143f55df89..3f0fe409f5 100644 ---- a/kernel/sched/features.h -+++ b/kernel/sched/features.h -@@ -6,7 +6,11 @@ - */ - SCHED_FEAT(PLACE_LAG, true) - SCHED_FEAT(PLACE_DEADLINE_INITIAL, true) -+#ifdef CONFIG_SCHED_BORE -+SCHED_FEAT(RUN_TO_PARITY, false) -+#else // !CONFIG_SCHED_BORE - SCHED_FEAT(RUN_TO_PARITY, true) -+#endif // CONFIG_SCHED_BORE - - /* - * Prefer to schedule the task we woke last (assuming it failed -diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h -index 001fe047bd..da3ad1d4e1 100644 ---- a/kernel/sched/sched.h -+++ b/kernel/sched/sched.h -@@ -1965,7 +1965,11 @@ static inline void dirty_sched_domain_sysctl(int cpu) - } - #endif - -+#ifdef CONFIG_SCHED_BORE -+extern void sched_update_min_base_slice(void); -+#else // !CONFIG_SCHED_BORE - extern int sched_update_scaling(void); -+#endif // CONFIG_SCHED_BORE - - static inline const struct cpumask *task_user_cpus(struct task_struct *p) - { -@@ -2552,6 +2556,9 @@ extern const_debug unsigned int sysctl_sched_nr_migrate; - extern const_debug unsigned int sysctl_sched_migration_cost; - - extern unsigned int sysctl_sched_base_slice; -+#ifdef CONFIG_SCHED_BORE -+extern unsigned int sysctl_sched_min_base_slice; -+#endif // CONFIG_SCHED_BORE - - #ifdef CONFIG_SCHED_DEBUG - extern int sysctl_resched_latency_warn_ms; --- -2.34.1 - diff --git a/0001-platform-x86-asus-wmi-add-support-for-vivobook-fan-p.patch b/0001-platform-x86-asus-wmi-add-support-for-vivobook-fan-p.patch new file mode 100644 index 000000000000..e4e3bf170841 --- /dev/null +++ b/0001-platform-x86-asus-wmi-add-support-for-vivobook-fan-p.patch @@ -0,0 +1,266 @@ +From 8cab59d3fb33f17e3b3fa4937c5d4bf0b59e6b12 Mon Sep 17 00:00:00 2001 +From: Mohamed Ghanmi <mohamed.ghanmi@supcom.tn> +Date: Fri, 12 Apr 2024 00:56:39 +0100 +Subject: [PATCH] platform/x86: asus-wmi: add support for vivobook fan profiles + +Add support for vivobook fan profiles wmi call on the ASUS VIVOBOOK +to adjust power limits. + +These fan profiles have a different device id than the ROG series. +and different order. This reorders the existing modes and adds a new +full speed mode available on these laptops. + +As part of keeping the patch clean the throttle_thermal_policy_available +boolean stored in the driver struct is removed and +throttle_thermal_policy_dev is used in place (as on init it is zeroed). + +Signed-off-by: Mohamed Ghanmi <mohamed.ghanmi@supcom.tn> +Co-developed-by: Luke D. Jones <luke@ljones.dev> +Signed-off-by: Luke D. Jones <luke@ljones.dev> +--- + drivers/platform/x86/asus-wmi.c | 100 +++++++++++---------- + include/linux/platform_data/x86/asus-wmi.h | 1 + + 2 files changed, 55 insertions(+), 46 deletions(-) + +diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c +index 2d2b4eca7fd8..439d330fb80b 100644 +--- a/drivers/platform/x86/asus-wmi.c ++++ b/drivers/platform/x86/asus-wmi.c +@@ -97,6 +97,11 @@ module_param(fnlock_default, bool, 0444); + #define ASUS_THROTTLE_THERMAL_POLICY_OVERBOOST 1 + #define ASUS_THROTTLE_THERMAL_POLICY_SILENT 2 + ++#define ASUS_THROTTLE_THERMAL_POLICY_DEFAULT_VIVO 0 ++#define ASUS_THROTTLE_THERMAL_POLICY_OVERBOOST_VIVO 2 ++#define ASUS_THROTTLE_THERMAL_POLICY_SILENT_VIVO 1 ++#define ASUS_THROTTLE_THERMAL_POLICY_FULLSPEED 3 ++ + #define USB_INTEL_XUSB2PR 0xD0 + #define PCI_DEVICE_ID_INTEL_LYNXPOINT_LP_XHCI 0x9c31 + +@@ -285,8 +290,8 @@ struct asus_wmi { + u32 kbd_rgb_dev; + bool kbd_rgb_state_available; + +- bool throttle_thermal_policy_available; + u8 throttle_thermal_policy_mode; ++ u32 throttle_thermal_policy_dev; + + bool cpu_fan_curve_available; + bool gpu_fan_curve_available; +@@ -3153,7 +3158,7 @@ static int fan_curve_get_factory_default(struct asus_wmi *asus, u32 fan_dev) + int err, fan_idx; + u8 mode = 0; + +- if (asus->throttle_thermal_policy_available) ++ if (asus->throttle_thermal_policy_dev) + mode = asus->throttle_thermal_policy_mode; + /* DEVID_<C/G>PU_FAN_CURVE is switched for OVERBOOST vs SILENT */ + if (mode == 2) +@@ -3360,7 +3365,7 @@ static ssize_t fan_curve_enable_store(struct device *dev, + * For machines with throttle this is the only way to reset fans + * to default mode of operation (does not erase curve data). + */ +- if (asus->throttle_thermal_policy_available) { ++ if (asus->throttle_thermal_policy_dev) { + err = throttle_thermal_policy_write(asus); + if (err) + return err; +@@ -3577,8 +3582,8 @@ static const struct attribute_group asus_fan_curve_attr_group = { + __ATTRIBUTE_GROUPS(asus_fan_curve_attr); + + /* +- * Must be initialised after throttle_thermal_policy_check_present() as +- * we check the status of throttle_thermal_policy_available during init. ++ * Must be initialised after throttle_thermal_policy_dev is set as ++ * we check the status of throttle_thermal_policy_dev during init. + */ + static int asus_wmi_custom_fan_curve_init(struct asus_wmi *asus) + { +@@ -3619,38 +3624,31 @@ static int asus_wmi_custom_fan_curve_init(struct asus_wmi *asus) + } + + /* Throttle thermal policy ****************************************************/ +- +-static int throttle_thermal_policy_check_present(struct asus_wmi *asus) +-{ +- u32 result; +- int err; +- +- asus->throttle_thermal_policy_available = false; +- +- err = asus_wmi_get_devstate(asus, +- ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY, +- &result); +- if (err) { +- if (err == -ENODEV) +- return 0; +- return err; +- } +- +- if (result & ASUS_WMI_DSTS_PRESENCE_BIT) +- asus->throttle_thermal_policy_available = true; +- +- return 0; +-} +- + static int throttle_thermal_policy_write(struct asus_wmi *asus) + { +- int err; +- u8 value; ++ u8 value = asus->throttle_thermal_policy_mode; + u32 retval; ++ bool vivo; ++ int err; + +- value = asus->throttle_thermal_policy_mode; ++ vivo = asus->throttle_thermal_policy_dev == ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO; ++ if (vivo) { ++ switch (value) { ++ case ASUS_THROTTLE_THERMAL_POLICY_DEFAULT: ++ value = ASUS_THROTTLE_THERMAL_POLICY_DEFAULT_VIVO; ++ break; ++ case ASUS_THROTTLE_THERMAL_POLICY_OVERBOOST: ++ value = ASUS_THROTTLE_THERMAL_POLICY_OVERBOOST_VIVO; ++ break; ++ case ASUS_THROTTLE_THERMAL_POLICY_SILENT: ++ value = ASUS_THROTTLE_THERMAL_POLICY_SILENT_VIVO; ++ break; ++ default: ++ break; ++ } ++ } + +- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY, ++ err = asus_wmi_set_devstate(asus->throttle_thermal_policy_dev, + value, &retval); + + sysfs_notify(&asus->platform_device->dev.kobj, NULL, +@@ -3680,7 +3678,7 @@ static int throttle_thermal_policy_write(struct asus_wmi *asus) + + static int throttle_thermal_policy_set_default(struct asus_wmi *asus) + { +- if (!asus->throttle_thermal_policy_available) ++ if (!asus->throttle_thermal_policy_dev) + return 0; + + asus->throttle_thermal_policy_mode = ASUS_THROTTLE_THERMAL_POLICY_DEFAULT; +@@ -3690,9 +3688,14 @@ static int throttle_thermal_policy_set_default(struct asus_wmi *asus) + static int throttle_thermal_policy_switch_next(struct asus_wmi *asus) + { + u8 new_mode = asus->throttle_thermal_policy_mode + 1; ++ bool vivo; + int err; + +- if (new_mode > ASUS_THROTTLE_THERMAL_POLICY_SILENT) ++ vivo = asus->throttle_thermal_policy_dev == ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO; ++ if (!vivo && new_mode > ASUS_THROTTLE_THERMAL_POLICY_SILENT) ++ new_mode = ASUS_THROTTLE_THERMAL_POLICY_DEFAULT; ++ ++ if (vivo && new_mode > ASUS_THROTTLE_THERMAL_POLICY_FULLSPEED) + new_mode = ASUS_THROTTLE_THERMAL_POLICY_DEFAULT; + + asus->throttle_thermal_policy_mode = new_mode; +@@ -3725,13 +3728,17 @@ static ssize_t throttle_thermal_policy_store(struct device *dev, + struct asus_wmi *asus = dev_get_drvdata(dev); + u8 new_mode; + int result; ++ bool vivo; + int err; + + result = kstrtou8(buf, 10, &new_mode); + if (result < 0) + return result; + +- if (new_mode > ASUS_THROTTLE_THERMAL_POLICY_SILENT) ++ vivo = asus->throttle_thermal_policy_dev == ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO; ++ if (vivo && new_mode > ASUS_THROTTLE_THERMAL_POLICY_FULLSPEED) ++ return -EINVAL; ++ else if (!vivo && new_mode > ASUS_THROTTLE_THERMAL_POLICY_SILENT) + return -EINVAL; + + asus->throttle_thermal_policy_mode = new_mode; +@@ -3748,7 +3755,10 @@ static ssize_t throttle_thermal_policy_store(struct device *dev, + return count; + } + +-// Throttle thermal policy: 0 - default, 1 - overboost, 2 - silent ++/* ++ * Throttle thermal policy: 0 - default, 1 - overboost, 2 - silent ++ * VIVOBOOK: 3 - fans full speed ++ */ + static DEVICE_ATTR_RW(throttle_thermal_policy); + + /* Platform profile ***********************************************************/ +@@ -3814,7 +3824,7 @@ static int platform_profile_setup(struct asus_wmi *asus) + * Not an error if a component platform_profile relies on is unavailable + * so early return, skipping the setup of platform_profile. + */ +- if (!asus->throttle_thermal_policy_available) ++ if (!asus->throttle_thermal_policy_dev) + return 0; + + dev_info(dev, "Using throttle_thermal_policy for platform_profile support\n"); +@@ -4229,7 +4239,7 @@ static void asus_wmi_handle_event_code(int code, struct asus_wmi *asus) + if (code == NOTIFY_KBD_FBM || code == NOTIFY_KBD_TTP) { + if (asus->fan_boost_mode_available) + fan_boost_mode_switch_next(asus); +- if (asus->throttle_thermal_policy_available) ++ if (asus->throttle_thermal_policy_dev) + throttle_thermal_policy_switch_next(asus); + return; + +@@ -4401,7 +4411,7 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, + else if (attr == &dev_attr_fan_boost_mode.attr) + ok = asus->fan_boost_mode_available; + else if (attr == &dev_attr_throttle_thermal_policy.attr) +- ok = asus->throttle_thermal_policy_available; ++ ok = asus->throttle_thermal_policy_dev != 0; + else if (attr == &dev_attr_ppt_pl2_sppt.attr) + devid = ASUS_WMI_DEVID_PPT_PL2_SPPT; + else if (attr == &dev_attr_ppt_pl1_spl.attr) +@@ -4693,16 +4703,15 @@ static int asus_wmi_add(struct platform_device *pdev) + else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE2)) + asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE2; + ++ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY)) ++ asus->throttle_thermal_policy_dev = ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY; ++ else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO)) ++ asus->throttle_thermal_policy_dev = ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO; ++ + err = fan_boost_mode_check_present(asus); + if (err) + goto fail_fan_boost_mode; + +- err = throttle_thermal_policy_check_present(asus); +- if (err) +- goto fail_throttle_thermal_policy; +- else +- throttle_thermal_policy_set_default(asus); +- + err = platform_profile_setup(asus); + if (err) + goto fail_platform_profile_setup; +@@ -4797,7 +4806,6 @@ static int asus_wmi_add(struct platform_device *pdev) + fail_input: + asus_wmi_sysfs_exit(asus->platform_device); + fail_sysfs: +-fail_throttle_thermal_policy: + fail_custom_fan_curve: + fail_platform_profile_setup: + if (asus->platform_profile_support) +diff --git a/include/linux/platform_data/x86/asus-wmi.h b/include/linux/platform_data/x86/asus-wmi.h +index 3eb5cd6773ad..982a637744ec 100644 +--- a/include/linux/platform_data/x86/asus-wmi.h ++++ b/include/linux/platform_data/x86/asus-wmi.h +@@ -64,6 +64,7 @@ + #define ASUS_WMI_DEVID_SCREENPAD_LIGHT 0x00050032 + #define ASUS_WMI_DEVID_FAN_BOOST_MODE 0x00110018 + #define ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY 0x00120075 ++#define ASUS_WMI_DEVID_THROTTLE_THERMAL_POLICY_VIVO 0x00110019 + + /* Misc */ + #define ASUS_WMI_DEVID_PANEL_OD 0x00050019 +-- +2.44.0 + diff --git a/0001-v2-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch b/0001-v4-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch index 3eb7367db05f..cc5026904dd3 100644 --- a/0001-v2-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch +++ b/0001-v4-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch @@ -3,21 +3,22 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 1/9] platform/x86: asus-wmi: add support for 2024 ROG Mini-LED -Date: Tue, 2 Apr 2024 14:34:45 +1300 [thread overview] -Message-ID: <20240402013453.18205-2-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 1/9] platform/x86: asus-wmi: add support for 2024 ROG Mini-LED +Date: Thu, 4 Apr 2024 13:16:44 +1300 [thread overview] +Message-ID: <20240404001652.86207-2-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Support the 2024 mini-led backlight and adjust the related functions to select the relevant dev-id. Also add `available_mini_led_mode` to the platform sysfs since the available mini-led levels can be different. -Signed-off-by: Luke D. Jones <luke@ljones.dev> +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> +signed-off-by: Luke D. Jones <luke@ljones.dev> --- .../ABI/testing/sysfs-platform-asus-wmi | 8 ++ - drivers/platform/x86/asus-wmi.c | 81 ++++++++++++++++--- + drivers/platform/x86/asus-wmi.c | 96 +++++++++++++++++-- include/linux/platform_data/x86/asus-wmi.h | 1 + - 3 files changed, 79 insertions(+), 11 deletions(-) + 3 files changed, 95 insertions(+), 10 deletions(-) diff --git a/Documentation/ABI/testing/sysfs-platform-asus-wmi b/Documentation/ABI/testing/sysfs-platform-asus-wmi index 8a7e25bde085..ef1ac1a20a71 100644 @@ -39,10 +40,28 @@ index 8a7e25bde085..ef1ac1a20a71 100644 What: /sys/devices/platform/<platform>/ppt_pl1_spl Date: Jun 2023 diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index 3f07bbf809ef..646f70c65097 100644 +index 3f07bbf809ef..aa2a3b402e33 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -288,7 +288,7 @@ struct asus_wmi { +@@ -126,6 +126,17 @@ module_param(fnlock_default, bool, 0444); + #define ASUS_SCREENPAD_BRIGHT_MAX 255 + #define ASUS_SCREENPAD_BRIGHT_DEFAULT 60 + ++#define ASUS_MINI_LED_MODE_MASK 0x03 ++/* Standard modes for devices with only on/off */ ++#define ASUS_MINI_LED_OFF 0x00 ++#define ASUS_MINI_LED_ON 0x01 ++/* New mode on some devices, define here to clarify remapping later */ ++#define ASUS_MINI_LED_STRONG_MODE 0x02 ++/* New modes for devices with 3 mini-led mode types */ ++#define ASUS_MINI_LED_2024_WEAK 0x00 ++#define ASUS_MINI_LED_2024_STRONG 0x01 ++#define ASUS_MINI_LED_2024_OFF 0x02 ++ + /* Controls the power state of the USB0 hub on ROG Ally which input is on */ + #define ASUS_USB0_PWR_EC0_CSEE "\\_SB.PCI0.SBRG.EC0.CSEE" + /* 300ms so far seems to produce a reliable result on AC and battery */ +@@ -288,7 +299,7 @@ struct asus_wmi { bool battery_rsoc_available; bool panel_overdrive_available; @@ -51,75 +70,81 @@ index 3f07bbf809ef..646f70c65097 100644 struct hotplug_slot hotplug_slot; struct mutex hotplug_lock; -@@ -2108,13 +2108,30 @@ static ssize_t mini_led_mode_show(struct device *dev, +@@ -2108,13 +2119,33 @@ static ssize_t mini_led_mode_show(struct device *dev, struct device_attribute *attr, char *buf) { struct asus_wmi *asus = dev_get_drvdata(dev); - int result; + u32 value; ++ int err; - result = asus_wmi_get_devstate_simple(asus, ASUS_WMI_DEVID_MINI_LED_MODE); - if (result < 0) - return result; -+ asus_wmi_get_devstate(asus, asus->mini_led_dev_id, &value); -+ value = value & 0x03; // only 3 modes on 2024 version ++ err = asus_wmi_get_devstate(asus, asus->mini_led_dev_id, &value); ++ if (err < 0) ++ return err; ++ value = value & ASUS_MINI_LED_MODE_MASK; - return sysfs_emit(buf, "%d\n", result); -+ /* Remap the mode values to match previous generation mini-led. -+ * Some BIOSes return -19 instead of 2, which is "mini-LED off", this -+ * appears to be a BIOS bug. ++ /* ++ * Remap the mode values to match previous generation mini-led. The last gen ++ * WMI 0 == off, while on this version WMI 2 ==off (flipped). + */ + if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { + switch (value) { -+ case 0: -+ value = 1; ++ case ASUS_MINI_LED_2024_WEAK: ++ value = ASUS_MINI_LED_ON; + break; -+ case 1: -+ value = 2; ++ case ASUS_MINI_LED_2024_STRONG: ++ value = ASUS_MINI_LED_STRONG_MODE; ++ break; ++ case ASUS_MINI_LED_2024_OFF: ++ value = ASUS_MINI_LED_OFF; + break; -+ case 2: -+ value = 0; + } -+ } else if (value < 0) { -+ return value; + } ++ + return sysfs_emit(buf, "%d\n", value); } static ssize_t mini_led_mode_store(struct device *dev, -@@ -2130,11 +2147,28 @@ static ssize_t mini_led_mode_store(struct device *dev, +@@ -2130,11 +2161,32 @@ static ssize_t mini_led_mode_store(struct device *dev, if (result) return result; - if (mode > 1) -+ if (mode > 1 && asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE) - return -EINVAL; -+ if (mode > 2 && asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) ++ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE && ++ mode > ASUS_MINI_LED_ON) + return -EINVAL; ++ if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2 && ++ mode > ASUS_MINI_LED_STRONG_MODE) + return -EINVAL; + +- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_MINI_LED_MODE, mode, &result); + /* + * Remap the mode values so expected behaviour is the same as the last -+ * generation of mini-LED ++ * generation of mini-LED with 0 == off, 1 == on. + */ + if (asus->mini_led_dev_id == ASUS_WMI_DEVID_MINI_LED_MODE2) { + switch (mode) { -+ case 0: -+ mode = 2; ++ case ASUS_MINI_LED_OFF: ++ mode = ASUS_MINI_LED_2024_OFF; + break; -+ case 1: -+ mode = 0; ++ case ASUS_MINI_LED_ON: ++ mode = ASUS_MINI_LED_2024_WEAK; ++ break; ++ case ASUS_MINI_LED_STRONG_MODE: ++ mode = ASUS_MINI_LED_2024_STRONG; + break; -+ case 2: -+ mode = 1; + } + } -- err = asus_wmi_set_devstate(ASUS_WMI_DEVID_MINI_LED_MODE, mode, &result); -- + err = asus_wmi_set_devstate(asus->mini_led_dev_id, mode, &result); if (err) { pr_warn("Failed to set mini-LED: %d\n", err); return err; -@@ -2151,6 +2185,23 @@ static ssize_t mini_led_mode_store(struct device *dev, +@@ -2151,6 +2203,23 @@ static ssize_t mini_led_mode_store(struct device *dev, } static DEVICE_ATTR_RW(mini_led_mode); @@ -143,7 +168,7 @@ index 3f07bbf809ef..646f70c65097 100644 /* Quirks *********************************************************************/ static void asus_wmi_set_xusb2pr(struct asus_wmi *asus) -@@ -4139,6 +4190,7 @@ static struct attribute *platform_attributes[] = { +@@ -4139,6 +4208,7 @@ static struct attribute *platform_attributes[] = { &dev_attr_nv_temp_target.attr, &dev_attr_panel_od.attr, &dev_attr_mini_led_mode.attr, @@ -151,7 +176,7 @@ index 3f07bbf809ef..646f70c65097 100644 NULL }; -@@ -4191,7 +4243,9 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, +@@ -4191,7 +4261,9 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, else if (attr == &dev_attr_panel_od.attr) ok = asus->panel_overdrive_available; else if (attr == &dev_attr_mini_led_mode.attr) @@ -162,7 +187,7 @@ index 3f07bbf809ef..646f70c65097 100644 if (devid != -1) ok = !(asus_wmi_get_devstate_simple(asus, devid) < 0); -@@ -4444,10 +4498,15 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -4444,10 +4516,14 @@ static int asus_wmi_add(struct platform_device *pdev) asus->nv_dyn_boost_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_DYN_BOOST); asus->nv_temp_tgt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_NV_THERM_TARGET); asus->panel_overdrive_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PANEL_OD); @@ -170,11 +195,10 @@ index 3f07bbf809ef..646f70c65097 100644 asus->ally_mcu_usb_switch = acpi_has_method(NULL, ASUS_USB0_PWR_EC0_CSEE) && dmi_match(DMI_BOARD_NAME, "RC71L"); -+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE)) { ++ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE)) + asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE; -+ } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE2)) { ++ else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE2)) + asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; -+ } + err = fan_boost_mode_check_present(asus); if (err) diff --git a/0002-v2-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch b/0002-v4-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch index d7f688ce8c22..276d041715d9 100644 --- a/0002-v2-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch +++ b/0002-v4-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch @@ -3,10 +3,10 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 2/9] platform/x86: asus-wmi: add support for Vivobook GPU MUX -Date: Tue, 2 Apr 2024 14:34:46 +1300 [thread overview] -Message-ID: <20240402013453.18205-3-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 2/9] platform/x86: asus-wmi: add support for Vivobook GPU MUX +Date: Thu, 4 Apr 2024 13:16:45 +1300 [thread overview] +Message-ID: <20240404001652.86207-3-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Add support for the Vivobook dgpu MUX available on the ASUS Viviobook and some of the other ranges (Zen). @@ -15,17 +15,18 @@ This MUX functions exactly the same as the existing ROG MUX support so the existing functionality now detects which MUX is available and uses that for control. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- - drivers/platform/x86/asus-wmi.c | 23 +++++++++++++--------- + drivers/platform/x86/asus-wmi.c | 22 +++++++++++++--------- include/linux/platform_data/x86/asus-wmi.h | 1 + - 2 files changed, 15 insertions(+), 9 deletions(-) + 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index 646f70c65097..7d7a9c8ee529 100644 +index aa2a3b402e33..1ab4380e9771 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -259,7 +259,7 @@ struct asus_wmi { +@@ -270,7 +270,7 @@ struct asus_wmi { bool egpu_enable_available; bool egpu_connect_available; bool dgpu_disable_available; @@ -34,7 +35,7 @@ index 646f70c65097..7d7a9c8ee529 100644 /* Tunables provided by ASUS for gaming laptops */ bool ppt_pl2_sppt_available; -@@ -682,8 +682,8 @@ static ssize_t dgpu_disable_store(struct device *dev, +@@ -693,8 +693,8 @@ static ssize_t dgpu_disable_store(struct device *dev, if (disable > 1) return -EINVAL; @@ -45,7 +46,7 @@ index 646f70c65097..7d7a9c8ee529 100644 if (result < 0) /* An error here may signal greater failure of GPU handling */ return result; -@@ -748,8 +748,8 @@ static ssize_t egpu_enable_store(struct device *dev, +@@ -759,8 +759,8 @@ static ssize_t egpu_enable_store(struct device *dev, return err; } @@ -56,7 +57,7 @@ index 646f70c65097..7d7a9c8ee529 100644 if (result < 0) { /* An error here may signal greater failure of GPU handling */ pr_warn("Failed to get gpu mux status: %d\n", result); -@@ -802,7 +802,7 @@ static ssize_t gpu_mux_mode_show(struct device *dev, +@@ -813,7 +813,7 @@ static ssize_t gpu_mux_mode_show(struct device *dev, struct asus_wmi *asus = dev_get_drvdata(dev); int result; @@ -65,7 +66,7 @@ index 646f70c65097..7d7a9c8ee529 100644 if (result < 0) return result; -@@ -848,7 +848,7 @@ static ssize_t gpu_mux_mode_store(struct device *dev, +@@ -859,7 +859,7 @@ static ssize_t gpu_mux_mode_store(struct device *dev, } } @@ -74,7 +75,7 @@ index 646f70c65097..7d7a9c8ee529 100644 if (err) { dev_err(dev, "Failed to set GPU MUX mode: %d\n", err); return err; -@@ -4221,7 +4221,7 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, +@@ -4239,7 +4239,7 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, else if (attr == &dev_attr_dgpu_disable.attr) ok = asus->dgpu_disable_available; else if (attr == &dev_attr_gpu_mux_mode.attr) @@ -83,7 +84,7 @@ index 646f70c65097..7d7a9c8ee529 100644 else if (attr == &dev_attr_fan_boost_mode.attr) ok = asus->fan_boost_mode_available; else if (attr == &dev_attr_throttle_thermal_policy.attr) -@@ -4487,7 +4487,6 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -4505,7 +4505,6 @@ static int asus_wmi_add(struct platform_device *pdev) asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); asus->egpu_connect_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU_CONNECTED); asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); @@ -91,15 +92,14 @@ index 646f70c65097..7d7a9c8ee529 100644 asus->kbd_rgb_mode_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE); asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); asus->ppt_pl2_sppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PL2_SPPT); -@@ -4507,6 +4506,12 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -4524,6 +4523,11 @@ static int asus_wmi_add(struct platform_device *pdev) + else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_MINI_LED_MODE2)) asus->mini_led_dev_id = ASUS_WMI_DEVID_MINI_LED_MODE2; - } -+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX)) { ++ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX)) + asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX; -+ } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX_VIVO)) { ++ else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX_VIVO)) + asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX_VIVO; -+ } + err = fan_boost_mode_check_present(asus); if (err) @@ -118,5 +118,3 @@ index 9cadce10ad9a..b48b024dd844 100644 #define ASUS_WMI_DEVID_TUF_RGB_MODE 0x00100056 -- 2.44.0 - - diff --git a/0003-v2-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch b/0003-v4-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch index e735ccdc233d..7e606acbae39 100644 --- a/0003-v2-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch +++ b/0003-v4-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch @@ -3,26 +3,27 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 3/9] platform/x86: asus-wmi: add support variant of TUF RGB -Date: Tue, 2 Apr 2024 14:34:47 +1300 [thread overview] -Message-ID: <20240402013453.18205-4-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 3/9] platform/x86: asus-wmi: add support variant of TUF RGB +Date: Thu, 4 Apr 2024 13:16:46 +1300 [thread overview] +Message-ID: <20240404001652.86207-4-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Adds support for a second TUF RGB wmi call that some versions of the TUF laptop come with. Also adjusts existing support to select whichever is available. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- - drivers/platform/x86/asus-wmi.c | 14 ++++++++++---- + drivers/platform/x86/asus-wmi.c | 13 +++++++++---- include/linux/platform_data/x86/asus-wmi.h | 1 + - 2 files changed, 11 insertions(+), 4 deletions(-) + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index 7d7a9c8ee529..fa5735af7675 100644 +index 1ab4380e9771..6896d056d227 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -270,7 +270,7 @@ struct asus_wmi { +@@ -281,7 +281,7 @@ struct asus_wmi { bool nv_dyn_boost_available; bool nv_temp_tgt_available; @@ -31,7 +32,7 @@ index 7d7a9c8ee529..fa5735af7675 100644 bool kbd_rgb_state_available; bool throttle_thermal_policy_available; -@@ -870,6 +870,7 @@ static ssize_t kbd_rgb_mode_store(struct device *dev, +@@ -881,6 +881,7 @@ static ssize_t kbd_rgb_mode_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -39,7 +40,7 @@ index 7d7a9c8ee529..fa5735af7675 100644 u32 cmd, mode, r, g, b, speed; int err; -@@ -906,7 +907,7 @@ static ssize_t kbd_rgb_mode_store(struct device *dev, +@@ -917,7 +918,7 @@ static ssize_t kbd_rgb_mode_store(struct device *dev, speed = 0xeb; } @@ -48,7 +49,7 @@ index 7d7a9c8ee529..fa5735af7675 100644 cmd | (mode << 8) | (r << 16) | (g << 24), b | (speed << 8), NULL); if (err) return err; -@@ -1549,7 +1550,7 @@ static int asus_wmi_led_init(struct asus_wmi *asus) +@@ -1560,7 +1561,7 @@ static int asus_wmi_led_init(struct asus_wmi *asus) { int rv = 0, num_rgb_groups = 0, led_val; @@ -57,7 +58,7 @@ index 7d7a9c8ee529..fa5735af7675 100644 kbd_rgb_mode_groups[num_rgb_groups++] = &kbd_rgb_mode_group; if (asus->kbd_rgb_state_available) kbd_rgb_mode_groups[num_rgb_groups++] = &kbd_rgb_state_group; -@@ -4487,7 +4488,6 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -4505,7 +4506,6 @@ static int asus_wmi_add(struct platform_device *pdev) asus->egpu_enable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU); asus->egpu_connect_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_EGPU_CONNECTED); asus->dgpu_disable_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_DGPU); @@ -65,15 +66,14 @@ index 7d7a9c8ee529..fa5735af7675 100644 asus->kbd_rgb_state_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_STATE); asus->ppt_pl2_sppt_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PL2_SPPT); asus->ppt_pl1_spl_available = asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_PPT_PL1_SPL); -@@ -4512,6 +4512,12 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -4528,6 +4528,11 @@ static int asus_wmi_add(struct platform_device *pdev) + else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_GPU_MUX_VIVO)) asus->gpu_mux_dev = ASUS_WMI_DEVID_GPU_MUX_VIVO; - } -+ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE)) { ++ if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE)) + asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE; -+ } else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE2)) { ++ else if (asus_wmi_dev_is_present(asus, ASUS_WMI_DEVID_TUF_RGB_MODE2)) + asus->kbd_rgb_dev = ASUS_WMI_DEVID_TUF_RGB_MODE2; -+ } + err = fan_boost_mode_check_present(asus); if (err) diff --git a/0004-v2-platform-x86-asus-wmi-support-toggling-POST-sound.patch b/0004-v4-platform-x86-asus-wmi-support-toggling-POST-sound.patch index e04126fd0802..4f0e085cc36f 100644 --- a/0004-v2-platform-x86-asus-wmi-support-toggling-POST-sound.patch +++ b/0004-v4-platform-x86-asus-wmi-support-toggling-POST-sound.patch @@ -3,13 +3,14 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 4/9] platform/x86: asus-wmi: support toggling POST sound -Date: Tue, 2 Apr 2024 14:34:48 +1300 [thread overview] -Message-ID: <20240402013453.18205-5-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 4/9] platform/x86: asus-wmi: support toggling POST sound +Date: Thu, 4 Apr 2024 13:16:47 +1300 [thread overview] +Message-ID: <20240404001652.86207-5-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Add support for toggling the BIOS POST sound on some ASUS laptops. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- .../ABI/testing/sysfs-platform-asus-wmi | 9 ++++ @@ -18,7 +19,7 @@ Signed-off-by: Luke D. Jones <luke@ljones.dev> 3 files changed, 63 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-platform-asus-wmi b/Documentation/ABI/testing/sysfs-platform-asus-wmi -index ef1ac1a20a71..41b92e53e88a 100644 +index ef1ac1a20a71..72933527d2e4 100644 --- a/Documentation/ABI/testing/sysfs-platform-asus-wmi +++ b/Documentation/ABI/testing/sysfs-platform-asus-wmi @@ -194,3 +194,12 @@ Contact: "Luke Jones" <luke@ljones.dev> @@ -34,12 +35,11 @@ index ef1ac1a20a71..41b92e53e88a 100644 + Set if the BIOS POST sound is played on boot. + * 0 - False, + * 1 - True -\ No newline at end of file diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index fa5735af7675..fcf976967325 100644 +index 6896d056d227..6c353b8e8da9 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -2104,6 +2104,54 @@ static ssize_t panel_od_store(struct device *dev, +@@ -2115,6 +2115,54 @@ static ssize_t panel_od_store(struct device *dev, } static DEVICE_ATTR_RW(panel_od); @@ -94,7 +94,7 @@ index fa5735af7675..fcf976967325 100644 /* Mini-LED mode **************************************************************/ static ssize_t mini_led_mode_show(struct device *dev, struct device_attribute *attr, char *buf) -@@ -4189,6 +4237,7 @@ static struct attribute *platform_attributes[] = { +@@ -4207,6 +4255,7 @@ static struct attribute *platform_attributes[] = { &dev_attr_ppt_platform_sppt.attr, &dev_attr_nv_dynamic_boost.attr, &dev_attr_nv_temp_target.attr, @@ -102,7 +102,7 @@ index fa5735af7675..fcf976967325 100644 &dev_attr_panel_od.attr, &dev_attr_mini_led_mode.attr, &dev_attr_available_mini_led_mode.attr, -@@ -4241,6 +4290,8 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, +@@ -4259,6 +4308,8 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, ok = asus->nv_dyn_boost_available; else if (attr == &dev_attr_nv_temp_target.attr) ok = asus->nv_temp_tgt_available; diff --git a/0005-v2-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch b/0005-v4-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch index 61d28d5a4bb1..13552ca342ef 100644 --- a/0005-v2-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch +++ b/0005-v4-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch @@ -3,10 +3,10 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 5/9] platform/x86: asus-wmi: store a min default for ppt options -Date: Tue, 2 Apr 2024 14:34:49 +1300 [thread overview] -Message-ID: <20240402013453.18205-6-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 5/9] platform/x86: asus-wmi: store a min default for ppt options +Date: Thu, 4 Apr 2024 13:16:48 +1300 [thread overview] +Message-ID: <20240404001652.86207-6-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Laptops with any of the ppt or nv tunables default to the minimum setting on boot so we can safely assume a stored value is correct. @@ -16,16 +16,17 @@ reading of those values back. To prevent creating a series of byte holes in the struct the "<name>_available" bool is removed and `asus_sysfs_is_visible()` uses the `ASUS_WMI_DEVID_<name>` directly. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- drivers/platform/x86/asus-wmi.c | 127 +++++++++++++++++++++++++------- 1 file changed, 99 insertions(+), 28 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index fcf976967325..0d304a04e7de 100644 +index 6c353b8e8da9..f13606fc62e6 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -262,13 +262,13 @@ struct asus_wmi { +@@ -273,13 +273,13 @@ struct asus_wmi { u32 gpu_mux_dev; /* Tunables provided by ASUS for gaming laptops */ @@ -46,7 +47,7 @@ index fcf976967325..0d304a04e7de 100644 u32 kbd_rgb_dev; bool kbd_rgb_state_available; -@@ -1020,11 +1020,21 @@ static ssize_t ppt_pl2_sppt_store(struct device *dev, +@@ -1031,11 +1031,21 @@ static ssize_t ppt_pl2_sppt_store(struct device *dev, return -EIO; } @@ -63,13 +64,13 @@ index fcf976967325..0d304a04e7de 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + -+ return sysfs_emit(buf, "%d\n", asus->ppt_pl2_sppt); ++ return sysfs_emit(buf, "%u\n", asus->ppt_pl2_sppt); +} +static DEVICE_ATTR_RW(ppt_pl2_sppt); /* Tunable: PPT, Intel=PL1, AMD=SPL ******************************************/ static ssize_t ppt_pl1_spl_store(struct device *dev, -@@ -1054,11 +1064,20 @@ static ssize_t ppt_pl1_spl_store(struct device *dev, +@@ -1065,11 +1075,20 @@ static ssize_t ppt_pl1_spl_store(struct device *dev, return -EIO; } @@ -85,13 +86,13 @@ index fcf976967325..0d304a04e7de 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + -+ return sysfs_emit(buf, "%d\n", asus->ppt_pl1_spl); ++ return sysfs_emit(buf, "%u\n", asus->ppt_pl1_spl); +} +static DEVICE_ATTR_RW(ppt_pl1_spl); /* Tunable: PPT APU FPPT ******************************************************/ static ssize_t ppt_fppt_store(struct device *dev, -@@ -1088,11 +1107,21 @@ static ssize_t ppt_fppt_store(struct device *dev, +@@ -1099,11 +1118,21 @@ static ssize_t ppt_fppt_store(struct device *dev, return -EIO; } @@ -108,13 +109,13 @@ index fcf976967325..0d304a04e7de 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + -+ return sysfs_emit(buf, "%d\n", asus->ppt_fppt); ++ return sysfs_emit(buf, "%u\n", asus->ppt_fppt); +} +static DEVICE_ATTR_RW(ppt_fppt); /* Tunable: PPT APU SPPT *****************************************************/ static ssize_t ppt_apu_sppt_store(struct device *dev, -@@ -1122,11 +1151,21 @@ static ssize_t ppt_apu_sppt_store(struct device *dev, +@@ -1133,11 +1162,21 @@ static ssize_t ppt_apu_sppt_store(struct device *dev, return -EIO; } @@ -131,13 +132,13 @@ index fcf976967325..0d304a04e7de 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + -+ return sysfs_emit(buf, "%d\n", asus->ppt_apu_sppt); ++ return sysfs_emit(buf, "%u\n", asus->ppt_apu_sppt); +} +static DEVICE_ATTR_RW(ppt_apu_sppt); /* Tunable: PPT platform SPPT ************************************************/ static ssize_t ppt_platform_sppt_store(struct device *dev, -@@ -1156,11 +1195,21 @@ static ssize_t ppt_platform_sppt_store(struct device *dev, +@@ -1167,11 +1206,21 @@ static ssize_t ppt_platform_sppt_store(struct device *dev, return -EIO; } @@ -154,13 +155,13 @@ index fcf976967325..0d304a04e7de 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + -+ return sysfs_emit(buf, "%d\n", asus->ppt_platform_sppt); ++ return sysfs_emit(buf, "%u\n", asus->ppt_platform_sppt); +} +static DEVICE_ATTR_RW(ppt_platform_sppt); /* Tunable: NVIDIA dynamic boost *********************************************/ static ssize_t nv_dynamic_boost_store(struct device *dev, -@@ -1190,11 +1239,21 @@ static ssize_t nv_dynamic_boost_store(struct device *dev, +@@ -1201,11 +1250,21 @@ static ssize_t nv_dynamic_boost_store(struct device *dev, return -EIO; } @@ -177,13 +178,13 @@ index fcf976967325..0d304a04e7de 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + -+ return sysfs_emit(buf, "%d\n", asus->nv_dynamic_boost); ++ return sysfs_emit(buf, "%u\n", asus->nv_dynamic_boost); +} +static DEVICE_ATTR_RW(nv_dynamic_boost); /* Tunable: NVIDIA temperature target ****************************************/ static ssize_t nv_temp_target_store(struct device *dev, -@@ -1224,11 +1283,21 @@ static ssize_t nv_temp_target_store(struct device *dev, +@@ -1235,11 +1294,21 @@ static ssize_t nv_temp_target_store(struct device *dev, return -EIO; } @@ -200,13 +201,13 @@ index fcf976967325..0d304a04e7de 100644 +{ + struct asus_wmi *asus = dev_get_drvdata(dev); + -+ return sysfs_emit(buf, "%d\n", asus->nv_temp_target); ++ return sysfs_emit(buf, "%u\n", asus->nv_temp_target); +} +static DEVICE_ATTR_RW(nv_temp_target); /* Battery ********************************************************************/ -@@ -4277,19 +4346,19 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, +@@ -4295,19 +4364,19 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, else if (attr == &dev_attr_throttle_thermal_policy.attr) ok = asus->throttle_thermal_policy_available; else if (attr == &dev_attr_ppt_pl2_sppt.attr) @@ -233,7 +234,7 @@ index fcf976967325..0d304a04e7de 100644 else if (attr == &dev_attr_boot_sound.attr) devid = ASUS_WMI_DEVID_BOOT_SOUND; else if (attr == &dev_attr_panel_od.attr) -@@ -4535,18 +4604,20 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -4553,18 +4622,20 @@ static int asus_wmi_add(struct platform_device *pdev) if (err) goto fail_platform; diff --git a/0006-v2-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch b/0006-v4-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch index 93c3e6ece467..0e0dd878a4f2 100644 --- a/0006-v2-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch +++ b/0006-v4-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch @@ -3,24 +3,25 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 6/9] platform/x86: asus-wmi: adjust formatting of ppt-<name>() functions -Date: Tue, 2 Apr 2024 14:34:50 +1300 [thread overview] -Message-ID: <20240402013453.18205-7-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 6/9] platform/x86: asus-wmi: adjust formatting of ppt-<name>() functions +Date: Thu, 4 Apr 2024 13:16:49 +1300 [thread overview] +Message-ID: <20240404001652.86207-7-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Shift the call to dev_get_drvdata() up to top of the function block in all of the ppt_<name>() functions as part of a minor cleanup. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- drivers/platform/x86/asus-wmi.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index 0d304a04e7de..2ff78e194801 100644 +index f13606fc62e6..976e26c82f80 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -997,11 +997,10 @@ static ssize_t ppt_pl2_sppt_store(struct device *dev, +@@ -1008,11 +1008,10 @@ static ssize_t ppt_pl2_sppt_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -33,7 +34,7 @@ index 0d304a04e7de..2ff78e194801 100644 result = kstrtou32(buf, 10, &value); if (result) return result; -@@ -1041,11 +1040,10 @@ static ssize_t ppt_pl1_spl_store(struct device *dev, +@@ -1052,11 +1051,10 @@ static ssize_t ppt_pl1_spl_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -46,7 +47,7 @@ index 0d304a04e7de..2ff78e194801 100644 result = kstrtou32(buf, 10, &value); if (result) return result; -@@ -1084,11 +1082,10 @@ static ssize_t ppt_fppt_store(struct device *dev, +@@ -1095,11 +1093,10 @@ static ssize_t ppt_fppt_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -59,7 +60,7 @@ index 0d304a04e7de..2ff78e194801 100644 result = kstrtou32(buf, 10, &value); if (result) return result; -@@ -1128,11 +1125,10 @@ static ssize_t ppt_apu_sppt_store(struct device *dev, +@@ -1139,11 +1136,10 @@ static ssize_t ppt_apu_sppt_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -72,7 +73,7 @@ index 0d304a04e7de..2ff78e194801 100644 result = kstrtou32(buf, 10, &value); if (result) return result; -@@ -1172,11 +1168,10 @@ static ssize_t ppt_platform_sppt_store(struct device *dev, +@@ -1183,11 +1179,10 @@ static ssize_t ppt_platform_sppt_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -85,7 +86,7 @@ index 0d304a04e7de..2ff78e194801 100644 result = kstrtou32(buf, 10, &value); if (result) return result; -@@ -1216,11 +1211,10 @@ static ssize_t nv_dynamic_boost_store(struct device *dev, +@@ -1227,11 +1222,10 @@ static ssize_t nv_dynamic_boost_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { @@ -98,7 +99,7 @@ index 0d304a04e7de..2ff78e194801 100644 result = kstrtou32(buf, 10, &value); if (result) return result; -@@ -1260,11 +1254,10 @@ static ssize_t nv_temp_target_store(struct device *dev, +@@ -1271,11 +1265,10 @@ static ssize_t nv_temp_target_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { diff --git a/0007-v2-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch b/0007-v4-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch index 555dad2c2d03..684263d500c6 100644 --- a/0007-v2-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch +++ b/0007-v4-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch @@ -3,10 +3,10 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 7/9] platform/x86: asus-wmi: ROG Ally increase wait time, allow MCU powersave -Date: Tue, 2 Apr 2024 14:34:51 +1300 [thread overview] -Message-ID: <20240402013453.18205-8-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 7/9] platform/x86: asus-wmi: ROG Ally increase wait time, allow MCU powersave +Date: Thu, 4 Apr 2024 13:16:50 +1300 [thread overview] +Message-ID: <20240404001652.86207-8-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> The previous work to allow the MCU to be resumed correctly after sleep and resume tried to take the shortest possible time. However as work @@ -24,16 +24,17 @@ to allow a proper disconnect and disable, and the same amount of time on resume is required to prevent a rapid disconnect/reconnect happening on seemingly random occasions. To be safe the time is now 1500ms for msleep. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- drivers/platform/x86/asus-wmi.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index 2ff78e194801..ec249eca0d94 100644 +index 976e26c82f80..ab98f91e573c 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -129,7 +129,7 @@ module_param(fnlock_default, bool, 0444); +@@ -140,7 +140,7 @@ module_param(fnlock_default, bool, 0444); /* Controls the power state of the USB0 hub on ROG Ally which input is on */ #define ASUS_USB0_PWR_EC0_CSEE "\\_SB.PCI0.SBRG.EC0.CSEE" /* 300ms so far seems to produce a reliable result on AC and battery */ @@ -42,7 +43,7 @@ index 2ff78e194801..ec249eca0d94 100644 static const char * const ashs_ids[] = { "ATK4001", "ATK4002", NULL }; -@@ -4814,6 +4814,7 @@ static int asus_hotk_resume_early(struct device *device) +@@ -4829,6 +4829,7 @@ static int asus_hotk_resume_early(struct device *device) struct asus_wmi *asus = dev_get_drvdata(device); if (asus->ally_mcu_usb_switch) { @@ -50,7 +51,7 @@ index 2ff78e194801..ec249eca0d94 100644 if (ACPI_FAILURE(acpi_execute_simple_method(NULL, ASUS_USB0_PWR_EC0_CSEE, 0xB8))) dev_err(device, "ROG Ally MCU failed to connect USB dev\n"); else -@@ -4825,17 +4826,8 @@ static int asus_hotk_resume_early(struct device *device) +@@ -4840,17 +4841,8 @@ static int asus_hotk_resume_early(struct device *device) static int asus_hotk_prepare(struct device *device) { struct asus_wmi *asus = dev_get_drvdata(device); diff --git a/0008-v2-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch b/0008-v4-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch index 11e0a346f685..7e94b8b6cd60 100644 --- a/0008-v2-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch +++ b/0008-v4-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch @@ -3,32 +3,30 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 8/9] platform/x86: asus-wmi: Add support for MCU powersave -Date: Tue, 2 Apr 2024 14:34:52 +1300 [thread overview] -Message-ID: <20240402013453.18205-9-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 8/9] platform/x86: asus-wmi: Add support for MCU powersave +Date: Thu, 4 Apr 2024 13:16:51 +1300 [thread overview] +Message-ID: <20240404001652.86207-9-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Add support for an MCU powersave WMI call. This is intended to set the MCU in to a low-power mode when sleeping. This mode can cut sleep power use by around half. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- - .../ABI/testing/sysfs-platform-asus-wmi | 11 +++- + .../ABI/testing/sysfs-platform-asus-wmi | 9 ++++ drivers/platform/x86/asus-wmi.c | 50 +++++++++++++++++++ - 2 files changed, 60 insertions(+), 1 deletion(-) + 2 files changed, 59 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-platform-asus-wmi b/Documentation/ABI/testing/sysfs-platform-asus-wmi -index 41b92e53e88a..28144371a0f1 100644 +index 72933527d2e4..28144371a0f1 100644 --- a/Documentation/ABI/testing/sysfs-platform-asus-wmi +++ b/Documentation/ABI/testing/sysfs-platform-asus-wmi -@@ -202,4 +202,13 @@ Contact: "Luke Jones" <luke@ljones.dev> - Description: +@@ -203,3 +203,12 @@ Description: Set if the BIOS POST sound is played on boot. * 0 - False, -- * 1 - True -\ No newline at end of file -+ * 1 - True + * 1 - True + +What: /sys/devices/platform/<platform>/mcu_powersave +Date: Apr 2024 @@ -39,10 +37,10 @@ index 41b92e53e88a..28144371a0f1 100644 + * 0 - False, + * 1 - True diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index ec249eca0d94..a6b648457908 100644 +index ab98f91e573c..d06d9e0c498c 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -1292,6 +1292,53 @@ static ssize_t nv_temp_target_show(struct device *dev, +@@ -1303,6 +1303,53 @@ static ssize_t nv_temp_target_show(struct device *dev, } static DEVICE_ATTR_RW(nv_temp_target); @@ -96,7 +94,7 @@ index ec249eca0d94..a6b648457908 100644 /* Battery ********************************************************************/ /* The battery maximum charging percentage */ -@@ -4299,6 +4346,7 @@ static struct attribute *platform_attributes[] = { +@@ -4317,6 +4364,7 @@ static struct attribute *platform_attributes[] = { &dev_attr_ppt_platform_sppt.attr, &dev_attr_nv_dynamic_boost.attr, &dev_attr_nv_temp_target.attr, @@ -104,7 +102,7 @@ index ec249eca0d94..a6b648457908 100644 &dev_attr_boot_sound.attr, &dev_attr_panel_od.attr, &dev_attr_mini_led_mode.attr, -@@ -4352,6 +4400,8 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, +@@ -4370,6 +4418,8 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, devid = ASUS_WMI_DEVID_NV_DYN_BOOST; else if (attr == &dev_attr_nv_temp_target.attr) devid = ASUS_WMI_DEVID_NV_THERM_TARGET; diff --git a/0009-v2-platform-x86-asus-wmi-add-clean-up-structs.patch b/0009-v4-platform-x86-asus-wmi-add-clean-up-structs.patch index 6d38151cdf0e..27ea10404d76 100644 --- a/0009-v2-platform-x86-asus-wmi-add-clean-up-structs.patch +++ b/0009-v4-platform-x86-asus-wmi-add-clean-up-structs.patch @@ -3,25 +3,26 @@ To: hdegoede@redhat.com Cc: corentin.chary@gmail.com, ilpo.jarvinen@linux.intel.com, platform-driver-x86@vger.kernel.org, linux-kernel@vger.kernel.org, "Luke D. Jones" <luke@ljones.dev> -Subject: [PATCH v1 9/9] platform/x86: asus-wmi: cleanup main struct to avoid some holes -Date: Tue, 2 Apr 2024 14:34:53 +1300 [thread overview] -Message-ID: <20240402013453.18205-10-luke@ljones.dev> (raw) -In-Reply-To: <20240402013453.18205-1-luke@ljones.dev> +Subject: [PATCH v4 9/9] platform/x86: asus-wmi: cleanup main struct to avoid some holes +Date: Thu, 4 Apr 2024 13:16:52 +1300 [thread overview] +Message-ID: <20240404001652.86207-10-luke@ljones.dev> (raw) +In-Reply-To: <20240404001652.86207-1-luke@ljones.dev> Reorganises some attr-available calls to remove a few unrequired booleans in the main driver struct which combined with some reorganisation prevents a series of large holes seen with pahole. +Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> Signed-off-by: Luke D. Jones <luke@ljones.dev> --- drivers/platform/x86/asus-wmi.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c -index a6b648457908..7163cce7079c 100644 +index d06d9e0c498c..2d2b4eca7fd8 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c -@@ -243,6 +243,9 @@ struct asus_wmi { +@@ -254,6 +254,9 @@ struct asus_wmi { u32 tablet_switch_dev_id; bool tablet_switch_inverted; @@ -31,7 +32,7 @@ index a6b648457908..7163cce7079c 100644 enum fan_type fan_type; enum fan_type gpu_fan_type; enum fan_type mid_fan_type; -@@ -255,9 +258,7 @@ struct asus_wmi { +@@ -266,9 +269,7 @@ struct asus_wmi { u8 fan_boost_mode_mask; u8 fan_boost_mode; @@ -41,7 +42,7 @@ index a6b648457908..7163cce7079c 100644 bool dgpu_disable_available; u32 gpu_mux_dev; -@@ -298,9 +299,6 @@ struct asus_wmi { +@@ -309,9 +310,6 @@ struct asus_wmi { bool fnlock_locked; @@ -51,7 +52,7 @@ index a6b648457908..7163cce7079c 100644 struct asus_wmi_debug debug; struct asus_wmi_driver *driver; -@@ -4373,11 +4371,11 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, +@@ -4391,11 +4389,11 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, else if (attr == &dev_attr_als_enable.attr) devid = ASUS_WMI_DEVID_ALS_ENABLE; else if (attr == &dev_attr_charge_mode.attr) @@ -65,7 +66,7 @@ index a6b648457908..7163cce7079c 100644 else if (attr == &dev_attr_dgpu_disable.attr) ok = asus->dgpu_disable_available; else if (attr == &dev_attr_gpu_mux_mode.attr) -@@ -4405,7 +4403,7 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, +@@ -4423,7 +4421,7 @@ static umode_t asus_sysfs_is_visible(struct kobject *kobj, else if (attr == &dev_attr_boot_sound.attr) devid = ASUS_WMI_DEVID_BOOT_SOUND; else if (attr == &dev_attr_panel_od.attr) @@ -74,7 +75,7 @@ index a6b648457908..7163cce7079c 100644 else if (attr == &dev_attr_mini_led_mode.attr) ok = asus->mini_led_dev_id != 0; else if (attr == &dev_attr_available_mini_led_mode.attr) -@@ -4656,12 +4654,9 @@ static int asus_wmi_add(struct platform_device *pdev) +@@ -4674,12 +4672,9 @@ static int asus_wmi_add(struct platform_device *pdev) asus->nv_dynamic_boost = 5; asus->nv_temp_target = 75; @@ -3,7 +3,7 @@ # Contributor: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com> pkgbase=linux-g14 -pkgver=6.8.6.arch1 +pkgver=6.9.1.arch1 pkgrel=1 pkgdesc='Linux-g14' url="https://gitlab.com/dragonn/linux-g14.git" @@ -34,15 +34,19 @@ source=( "choose-gcc-optimization.sh" "sys-kernel_arch-sources-g14-6.8+--more-uarches-for-kernel.patch"::"https://raw.githubusercontent.com/graysky2/kernel_compiler_patch/master/more-uarches-for-kernel-6.8-rc4%2B.patch" - + 0001-acpi-proc-idle-skip-dummy-wait.patch 0027-mt76_-mt7921_-Disable-powersave-features-by-default.patch - 0001-linux6.8.y-bore4.5.0.patch +# 0001-linux6.8.y-bore5.1.0.patch 0032-Bluetooth-btusb-Add-a-new-PID-VID-0489-e0f6-for-MT7922.patch 0035-Add_quirk_for_polling_the_KBD_port.patch + + 0001-hid-asus-use-hid-for-brightness-control-on-keyboard.patch + +# "0001-sched-ext.patch"::"https://raw.githubusercontent.com/cachyos/kernel-patches/master/6.8/sched/0001-sched-ext.patch" 0001-ACPI-resource-Skip-IRQ-override-on-ASUS-TUF-Gaming-A.patch 0002-ACPI-resource-Skip-IRQ-override-on-ASUS-TUF-Gaming-A.patch @@ -54,22 +58,24 @@ source=( 0001-platform-x86-asus-wmi-Support-2023-ROG-X16-tablet-mo.patch amd-tablet-sfh.patch -# fix_amd_eDP_HDR_flickering.patch - - 0001-v2-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch - 0002-v2-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch - 0003-v2-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch - 0004-v2-platform-x86-asus-wmi-support-toggling-POST-sound.patch - 0005-v2-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch - 0006-v2-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch - 0007-v2-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch - 0008-v2-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch - 0009-v2-platform-x86-asus-wmi-add-clean-up-structs.patch + + 0001-v4-platform-x86-asus-wmi-add-support-for-2024-ROG-Mini-LED.patch + 0002-v4-platform-x86-asus-wmi-add-support-for-Vivobook-GPU-MUX.patch + 0003-v4-platform-x86-asus-wmi-add-support-variant-of-TUF-RGB.patch + 0004-v4-platform-x86-asus-wmi-support-toggling-POST-sound.patch + 0005-v4-platform-x86-asus-wmi-store-a-min-default-for-ppt-op.patch + 0006-v4-platform-x86-asus-wmi-adjust-formatting-of-ppt-fcts.patch + 0007-v4-platform-x86-asus-wmi-ROG-Ally-increase-wait-time.patch + 0008-v4-platform-x86-asus-wmi-add-support-for-MCU-powersave.patch + 0009-v4-platform-x86-asus-wmi-add-clean-up-structs.patch 0001-HID-asus-fix-more-n-key-report-descriptors-if-n-key-.patch + 0001-platform-x86-asus-wmi-add-support-for-vivobook-fan-p.patch 0002-HID-asus-make-asus_kbd_init-generic-remove-rog_nkey_.patch 0003-HID-asus-add-ROG-Ally-N-Key-ID-and-keycodes.patch - 0004-HID-asus-add-ROG-Z13-lightbar.patch + 0004-HID-asus-add-ROG-Z13-lightbar.patch + + #0060-ALSA_hda-realtek_Add_quirks_for_ASUS_Laptops_using_CS35L56.patch "sys-kernel_arch-sources-g14_files-0047-asus-nb-wmi-Add-tablet_mode_sw-lid-flip.patch" "sys-kernel_arch-sources-g14_files-0048-asus-nb-wmi-fix-tablet_mode_sw_int.patch" @@ -80,18 +86,18 @@ validpgpkeys=( 83BC8889351B5DEBBB68416EB8AC08600F108CDF # Jan Alexander Steffens (heftig) ) -sha256sums=('9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995' +sha256sums=('01b414ba98fd189ecd544435caf3860ae2a790e3ec48f5aa70fdf42dc4c5c04a' 'SKIP' - 'db03a8ea8ba5bb3f337c72812831dade02643b481148d3cce3a3855c9d82e53c' + '8cb3d0a2769d1471c38fb5f1bdd1395333790453a399767c3af8673bc6a714b5' 'SKIP' - '2fc20cbd7c4f7f3eeeba73b8e354cecb8757050d2c774992959f93ccde16d667' + '5f8a4de3f17d6d1b624e70514327b05fafffe8af913f95829b9c6830b4a8a4e3' '278118011d7a2eeca9971ac97b31bf0c55ab55e99c662ab9ae4717b55819c9a2' - 'd69232afd0dd6982ae941cf2d1f577f4be2011e3bb847d1db37952acf416b5d3' + 'f4e7fcd011f2691840d2c8c2361dca850a78ea33cc5c24d2e27c3e0294fd1dc5' '0a7ea482fe20c403788d290826cec42fe395e5a6eab07b88845f8b9a9829998d' 'ed242f4be3f8eaade2a1d42157c5c6c86281917a08ae43221b088fafdc775ee7' - '09883311108d461da63a04012d7a2b7f6a4165ee0c4e9cb7a5dc3f9ade326fc7' 'a8e1e11a4ab1995cc4975c9b134a43ddfe7054ef0c965e52a7d8f9223e15c3e0' '315d1839630b37894a626bbc2aea012618b2e1ccb6f9d8aa27c0a3ce5e90e99c' + 'dfa24a178cf3d533e09892bdae9365784771bf10fa7f771f559f54026dee92e4' 'a00b952d53df9d3617d93e8fba4146a4d6169ebe79f029b3a55cca68f738d8ea' '4912b1319e46ddd6670147f5e878b4aca8bcfbd7b5c852fe11e434e424666365' '9f98765b43f5f31b33ed05f3611508113b02518e680ee82b251de80dae2e141d' @@ -99,16 +105,17 @@ sha256sums=('9e723232d603ab45ebf043c34714c48f277ab195c29abcb8472f2a4c3a5a1995' 'e41198b29cee4de7a5132d8df606f48c2d0f9c9076fe4230b00a33c7e0b22c71' '1edb362a762c8858374027e30ff58ae0014e117fdc05cc7db6da50f80e7aab87' '508f90cbe81a9a145cc540703470f1e6b5d21c7a7b9166d2ce6e56b401262b04' - '06375fa2bcc6fefd8d57c0d8a13b5af02d08318f3721c58fc0354970656f3b64' - 'f64fbf3b7e817edd7267612531d5aba3d17b727d5151b5b9e620d616797cf3da' - '270fe67b07e8138be848958e9fa28ee8fecffd2e146ea68444c5200a9b09c2ed' - '1b53d1914fb0186585125fcd9db2367697e4c265bfd38378aa0f59cc4e0fb46d' - '9a5c4f2cc956933abcb9e1bd652dfad382108dd1f22844d6e5c393861a9ba35d' - '951fe0da7b7939665ffc5094a0d39641d4c73395c264237e082d8c54b2927dfb' - '66c25f11f3fc2cc0db9a3392400f072f1c3ac9408328128f075a9260f4eb01ef' - 'd31ba415c2b65e3485d74f0268f1020dc49f31a6fe3316cf6c74a0690e96c81f' - '47ad6e0781f1df1f6a6d35b8f20c2bf9dbd7e8e0b92a332cb88145755afba77c' + 'feaf5f5fb62e25e2369f92f77e8327dcd4cb4cf4bc6d0c91d9c7bc40c0f4de46' + 'b9866121c69ce22b4651b3ef2a1956e6d0547e40a14d1224e2f367a4f716ca1a' + '6f2f248a5ac9b1a37324cbce8d29a65b22a2b20d4b3564c0dc6063789ae733ba' + '28f2b9bf5a1f4993bdc77d4d8ac32c1905edfeb3f4cce476f0f85a31b573bcd0' + 'fa8de80231c933ca294315168d985ae18261e04e77ef17482c815a0703d6c5fb' + '62b297619e500b4453e2f3e0305c4dfb92185f69ebbdb67f99e8f76dad139f7a' + 'c2c89baaf134c0151c3f7a3861d16194e32c91c7abc87f870733cab8c5b88389' + 'f5b560d988c47033c44307da0b584599d1f59cc0028a594f4df87affffc219d5' + 'de85da760f6692b284e39aa78479904d6ee78b349f1e98d1d210777f9ef17581' '3be072ed798becd91bae66a75d09235c9cb5e84547b1f4eb7768e954ba109e92' + '93c9a77f6c25494cecbe6b236bd2179065d5f5db5589dabaa425134c1a8c3481' 'c1d96328d96964c2ce3ef7609fb7c07e97eb136dfab9f6d4efcce072a5739838' '2414dc71174c90b92f975a7d16cabc99ba509397d843132764ea9ee91b643dc0' '107a08aa610d3ba3c7ecec301df2ea8f345bc74107fcf4dac96fe9e89a23dcf1' @@ -236,6 +243,9 @@ prepare() { # try to fix stuttering on some ROG laptops scripts/config --disable CONFIG_HW_RANDOM_TPM + # enable SCHED_CLASS_EXT + scripts/config --enable CONFIG_SCHED_CLASS_EXT + # HACK: forcibly fixup CONFIG_CMDLINE here as using scripts/config mangles escaped quotes sed -i 's#makepkgplaceholderyolo#ibt=off pm_debug_messages amd_pmc.dyndbg=\\"+p\\" acpi.dyndbg=\\"file drivers/acpi/x86/s2idle.c +p\\"#' .config diff --git a/chroot-build.sh b/chroot-build.sh index f6045161f2b5..1e575b72d17f 100755 --- a/chroot-build.sh +++ b/chroot-build.sh @@ -35,6 +35,7 @@ fi # use modprobed-db cp PKGBUILD .PKGBUILD +modprobed-db store cp $HOME/.config/modprobed.db "$(dirname "$(readlink -f -- "$0")")" sed 's|# modprobed-db| modprobed-db|g' -i PKGBUILD sed 's|# modprobed.db| modprobed.db|g' -i PKGBUILD @@ -1,10 +1,10 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/x86 6.8.5-arch1 Kernel Configuration +# Linux/x86 6.9.0-arch1 Kernel Configuration # -CONFIG_CC_VERSION_TEXT="gcc (GCC) 13.2.1 20230801" +CONFIG_CC_VERSION_TEXT="gcc (GCC) 14.1.1 20240507" CONFIG_CC_IS_GCC=y -CONFIG_GCC_VERSION=130201 +CONFIG_GCC_VERSION=140101 CONFIG_CLANG_VERSION=0 CONFIG_AS_IS_GNU=y CONFIG_AS_VERSION=24200 @@ -15,7 +15,6 @@ CONFIG_CC_CAN_LINK=y CONFIG_CC_CAN_LINK_STATIC=y CONFIG_CC_HAS_ASM_GOTO_OUTPUT=y CONFIG_CC_HAS_ASM_GOTO_TIED_OUTPUT=y -CONFIG_GCC_ASM_GOTO_OUTPUT_WORKAROUND=y CONFIG_TOOLS_SUPPORT_RELR=y CONFIG_CC_HAS_ASM_INLINE=y CONFIG_CC_HAS_NO_PROFILE_FN_ATTR=y @@ -90,6 +89,7 @@ CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y CONFIG_GENERIC_TIME_VSYSCALL=y CONFIG_GENERIC_CLOCKEVENTS=y CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST_IDLE=y CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y CONFIG_GENERIC_CMOS_UPDATE=y CONFIG_HAVE_POSIX_CPU_TIMERS_TASK_WORK=y @@ -182,6 +182,7 @@ CONFIG_RCU_NOCB_CPU=y # CONFIG_RCU_NOCB_CPU_CB_BOOST is not set # CONFIG_TASKS_TRACE_RCU_READ_MB is not set CONFIG_RCU_LAZY=y +# CONFIG_RCU_LAZY_DEFAULT_OFF is not set CONFIG_RCU_DOUBLE_CHECK_CB_TIME=y # end of RCU Subsystem @@ -318,7 +319,8 @@ CONFIG_TRACEPOINTS=y # # Kexec and crash features # -CONFIG_CRASH_CORE=y +CONFIG_CRASH_RESERVE=y +CONFIG_VMCORE_INFO=y CONFIG_KEXEC_CORE=y CONFIG_KEXEC=y CONFIG_KEXEC_FILE=y @@ -367,8 +369,8 @@ CONFIG_CC_HAS_SANE_STACKPROTECTOR=y CONFIG_SMP=y CONFIG_X86_X2APIC=y CONFIG_X86_MPPARSE=y -# CONFIG_GOLDFISH is not set CONFIG_X86_CPU_RESCTRL=y +CONFIG_X86_FRED=y # CONFIG_X86_EXTENDED_PLATFORM is not set CONFIG_X86_INTEL_LPSS=y CONFIG_X86_AMD_PLATFORM_DEVICE=y @@ -544,6 +546,8 @@ CONFIG_HAVE_LIVEPATCH=y # CONFIG_LIVEPATCH is not set # end of Processor type and features +CONFIG_CC_HAS_NAMED_AS=y +CONFIG_USE_X86_SEG_SUPPORT=y CONFIG_CC_HAS_SLS=y CONFIG_CC_HAS_RETURN_THUNK=y CONFIG_CC_HAS_ENTRY_PADDING=y @@ -553,22 +557,20 @@ CONFIG_CALL_PADDING=y CONFIG_HAVE_CALL_THUNKS=y CONFIG_CALL_THUNKS=y CONFIG_PREFIX_SYMBOLS=y -CONFIG_SPECULATION_MITIGATIONS=y -CONFIG_PAGE_TABLE_ISOLATION=y -CONFIG_RETPOLINE=y -CONFIG_RETHUNK=y -CONFIG_CPU_UNRET_ENTRY=y -CONFIG_CALL_DEPTH_TRACKING=y +CONFIG_CPU_MITIGATIONS=y +CONFIG_MITIGATION_PAGE_TABLE_ISOLATION=y +CONFIG_MITIGATION_RETPOLINE=y +CONFIG_MITIGATION_RETHUNK=y +CONFIG_MITIGATION_UNRET_ENTRY=y +CONFIG_MITIGATION_CALL_DEPTH_TRACKING=y # CONFIG_CALL_THUNKS_DEBUG is not set -CONFIG_CPU_IBPB_ENTRY=y -CONFIG_CPU_IBRS_ENTRY=y -CONFIG_CPU_SRSO=y -CONFIG_SLS=y -# CONFIG_GDS_FORCE_MITIGATION is not set +CONFIG_MITIGATION_IBPB_ENTRY=y +CONFIG_MITIGATION_IBRS_ENTRY=y +CONFIG_MITIGATION_SRSO=y +CONFIG_MITIGATION_SLS=y +# CONFIG_MITIGATION_GDS_FORCE is not set CONFIG_MITIGATION_RFDS=y -CONFIG_SPECTRE_BHI_ON=y -# CONFIG_SPECTRE_BHI_OFF is not set -# CONFIG_SPECTRE_BHI_AUTO is not set +CONFIG_MITIGATION_SPECTRE_BHI=y CONFIG_ARCH_HAS_ADD_PAGES=y # @@ -580,6 +582,9 @@ CONFIG_SUSPEND_FREEZER=y CONFIG_HIBERNATE_CALLBACKS=y CONFIG_HIBERNATION=y CONFIG_HIBERNATION_SNAPSHOT_DEV=y +CONFIG_HIBERNATION_COMP_LZO=y +# CONFIG_HIBERNATION_COMP_LZ4 is not set +CONFIG_HIBERNATION_DEF_COMP="lzo" CONFIG_PM_STD_PARTITION="" CONFIG_PM_SLEEP=y CONFIG_PM_SLEEP_SMP=y @@ -638,7 +643,6 @@ CONFIG_ACPI_HOTPLUG_MEMORY=y CONFIG_ACPI_HOTPLUG_IOAPIC=y CONFIG_ACPI_SBS=m CONFIG_ACPI_HED=y -CONFIG_ACPI_CUSTOM_METHOD=m CONFIG_ACPI_BGRT=y CONFIG_ACPI_NFIT=m # CONFIG_NFIT_SECURITY_DEBUG is not set @@ -651,6 +655,7 @@ CONFIG_ACPI_APEI_GHES=y CONFIG_ACPI_APEI_PCIEAER=y CONFIG_ACPI_APEI_MEMORY_FAILURE=y CONFIG_ACPI_APEI_EINJ=m +CONFIG_ACPI_APEI_EINJ_CXL=y CONFIG_ACPI_APEI_ERST_DEBUG=m CONFIG_ACPI_DPTF=y CONFIG_DPTF_POWER=m @@ -749,7 +754,6 @@ CONFIG_COMPAT=y CONFIG_COMPAT_FOR_U64_ALIGNMENT=y # end of Binary Emulations -CONFIG_HAVE_KVM=y CONFIG_KVM_COMMON=y CONFIG_HAVE_KVM_PFNCACHE=y CONFIG_HAVE_KVM_IRQCHIP=y @@ -760,6 +764,7 @@ CONFIG_HAVE_KVM_DIRTY_RING_ACQ_REL=y CONFIG_KVM_MMIO=y CONFIG_KVM_ASYNC_PF=y CONFIG_HAVE_KVM_MSI=y +CONFIG_HAVE_KVM_READONLY_MEM=y CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y CONFIG_KVM_VFIO=y CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y @@ -787,6 +792,7 @@ CONFIG_AS_SHA256_NI=y CONFIG_AS_TPAUSE=y CONFIG_AS_GFNI=y CONFIG_AS_WRUSS=y +CONFIG_ARCH_CONFIGURES_CPU_MITIGATIONS=y # # General architecture-dependent options @@ -895,8 +901,11 @@ CONFIG_ARCH_MMAP_RND_BITS=32 CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y CONFIG_ARCH_MMAP_RND_COMPAT_BITS=16 CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES=y +CONFIG_HAVE_PAGE_SIZE_4KB=y +CONFIG_PAGE_SIZE_4KB=y CONFIG_PAGE_SIZE_LESS_THAN_64KB=y CONFIG_PAGE_SIZE_LESS_THAN_256KB=y +CONFIG_PAGE_SHIFT=12 CONFIG_HAVE_OBJTOOL=y CONFIG_HAVE_JUMP_LABEL_HACK=y CONFIG_HAVE_NOINSTR_HACK=y @@ -949,6 +958,8 @@ CONFIG_GCC_PLUGINS=y CONFIG_FUNCTION_ALIGNMENT_4B=y CONFIG_FUNCTION_ALIGNMENT_16B=y CONFIG_FUNCTION_ALIGNMENT=16 +CONFIG_CC_HAS_MIN_FUNCTION_ALIGNMENT=y +CONFIG_CC_HAS_SANE_FUNCTION_ALIGNMENT=y # end of General architecture-dependent options CONFIG_RT_MUTEXES=y @@ -981,6 +992,7 @@ CONFIG_MODULE_COMPRESS_ZSTD=y CONFIG_MODULE_DECOMPRESS=y CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=y CONFIG_MODPROBE_PATH="/sbin/modprobe" +# CONFIG_TRIM_UNUSED_KSYMS is not set CONFIG_MODULES_TREE_LOOKUP=y CONFIG_BLOCK=y CONFIG_BLOCK_LEGACY_AUTOLOAD=y @@ -1086,7 +1098,6 @@ CONFIG_ZPOOL=y CONFIG_SWAP=y CONFIG_ZSWAP=y CONFIG_ZSWAP_DEFAULT_ON=y -# CONFIG_ZSWAP_EXCLUSIVE_LOADS_DEFAULT_ON is not set CONFIG_ZSWAP_SHRINKER_DEFAULT_ON=y # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_DEFLATE is not set # CONFIG_ZSWAP_COMPRESSOR_DEFAULT_LZO is not set @@ -1170,7 +1181,6 @@ CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK=y CONFIG_USE_PERCPU_NUMA_NODE_ID=y CONFIG_HAVE_SETUP_PER_CPU_AREA=y CONFIG_CMA=y -# CONFIG_CMA_DEBUG is not set CONFIG_CMA_DEBUGFS=y CONFIG_CMA_SYSFS=y CONFIG_CMA_AREAS=7 @@ -1220,7 +1230,7 @@ CONFIG_DAMON=y CONFIG_DAMON_VADDR=y CONFIG_DAMON_PADDR=y CONFIG_DAMON_SYSFS=y -CONFIG_DAMON_DBGFS=y +# CONFIG_DAMON_DBGFS_DEPRECATED is not set CONFIG_DAMON_RECLAIM=y CONFIG_DAMON_LRU_SORT=y # end of Data Access Monitoring @@ -1240,7 +1250,6 @@ CONFIG_SKB_EXTENSIONS=y CONFIG_PACKET=y CONFIG_PACKET_DIAG=m CONFIG_UNIX=y -CONFIG_UNIX_SCM=y CONFIG_AF_UNIX_OOB=y CONFIG_UNIX_DIAG=m CONFIG_TLS=m @@ -1622,6 +1631,7 @@ CONFIG_IP_VS_PE_SIP=m # IP: Netfilter Configuration # CONFIG_NF_DEFRAG_IPV4=m +CONFIG_IP_NF_IPTABLES_LEGACY=m CONFIG_NF_SOCKET_IPV4=m CONFIG_NF_TPROXY_IPV4=m CONFIG_NF_TABLES_IPV4=y @@ -1654,6 +1664,7 @@ CONFIG_IP_NF_TARGET_TTL=m CONFIG_IP_NF_RAW=m CONFIG_IP_NF_SECURITY=m CONFIG_IP_NF_ARPTABLES=m +CONFIG_NFT_COMPAT_ARP=m CONFIG_IP_NF_ARPFILTER=m CONFIG_IP_NF_ARP_MANGLE=m # end of IP: Netfilter Configuration @@ -1661,6 +1672,7 @@ CONFIG_IP_NF_ARP_MANGLE=m # # IPv6: Netfilter Configuration # +CONFIG_IP6_NF_IPTABLES_LEGACY=m CONFIG_NF_SOCKET_IPV6=m CONFIG_NF_TPROXY_IPV6=m CONFIG_NF_TABLES_IPV6=y @@ -1698,6 +1710,7 @@ CONFIG_NF_TABLES_BRIDGE=m CONFIG_NFT_BRIDGE_META=m CONFIG_NFT_BRIDGE_REJECT=m CONFIG_NF_CONNTRACK_BRIDGE=m +CONFIG_BRIDGE_NF_EBTABLES_LEGACY=m CONFIG_BRIDGE_NF_EBTABLES=m CONFIG_BRIDGE_EBT_BROUTE=m CONFIG_BRIDGE_EBT_T_FILTER=m @@ -1886,7 +1899,6 @@ CONFIG_NET_ACT_GACT=m CONFIG_GACT_PROB=y CONFIG_NET_ACT_MIRRED=m CONFIG_NET_ACT_SAMPLE=m -CONFIG_NET_ACT_IPT=m CONFIG_NET_ACT_NAT=m CONFIG_NET_ACT_PEDIT=m CONFIG_NET_ACT_SIMP=m @@ -2183,6 +2195,7 @@ CONFIG_ETHTOOL_NETLINK=y CONFIG_HAVE_EISA=y # CONFIG_EISA is not set CONFIG_HAVE_PCI=y +CONFIG_GENERIC_PCI_IOMAP=y CONFIG_PCI=y CONFIG_PCI_DOMAINS=y CONFIG_PCIEPORTBUS=y @@ -2275,7 +2288,6 @@ CONFIG_CXL_PORT=m CONFIG_CXL_SUSPEND=y CONFIG_CXL_REGION=y # CONFIG_CXL_REGION_INVALIDATION_TEST is not set -CONFIG_CXL_PMU=m CONFIG_PCCARD=m CONFIG_PCMCIA=m CONFIG_PCMCIA_LOAD_CIS=y @@ -2496,7 +2508,6 @@ CONFIG_MTD_ROM=m # # CONFIG_MTD_COMPLEX_MAPPINGS is not set # CONFIG_MTD_PHYSMAP is not set -# CONFIG_MTD_INTEL_VR_NOR is not set # CONFIG_MTD_PLATRAM is not set # end of Mapping drivers for chip access @@ -2574,6 +2585,7 @@ CONFIG_MTD_UBI_BEB_LIMIT=20 # CONFIG_MTD_UBI_FASTMAP is not set # CONFIG_MTD_UBI_GLUEBI is not set # CONFIG_MTD_UBI_BLOCK is not set +CONFIG_MTD_UBI_NVMEM=m # CONFIG_MTD_HYPERBUS is not set # CONFIG_OF is not set CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y @@ -3065,6 +3077,7 @@ CONFIG_DM_LOG_WRITES=m CONFIG_DM_INTEGRITY=m CONFIG_DM_ZONED=m CONFIG_DM_AUDIT=y +CONFIG_DM_VDO=m CONFIG_TARGET_CORE=m CONFIG_TCM_IBLOCK=m CONFIG_TCM_FILEIO=m @@ -3204,10 +3217,6 @@ CONFIG_NET_DSA_XRS700X=m CONFIG_NET_DSA_XRS700X_I2C=m CONFIG_NET_DSA_XRS700X_MDIO=m CONFIG_NET_DSA_REALTEK=m -# CONFIG_NET_DSA_REALTEK_MDIO is not set -# CONFIG_NET_DSA_REALTEK_SMI is not set -CONFIG_NET_DSA_REALTEK_RTL8365MB=m -CONFIG_NET_DSA_REALTEK_RTL8366RB=m CONFIG_NET_DSA_SMSC_LAN9303=m CONFIG_NET_DSA_SMSC_LAN9303_I2C=m CONFIG_NET_DSA_SMSC_LAN9303_MDIO=m @@ -3369,6 +3378,7 @@ CONFIG_ICE_SWITCHDEV=y CONFIG_ICE_HWTS=y CONFIG_FM10K=m CONFIG_IGC=m +CONFIG_IGC_LEDS=y CONFIG_IDPF=m CONFIG_JME=m CONFIG_NET_VENDOR_ADI=y @@ -3382,6 +3392,7 @@ CONFIG_SKGE_GENESIS=y CONFIG_SKY2=m # CONFIG_SKY2_DEBUG is not set CONFIG_OCTEON_EP=m +CONFIG_OCTEON_EP_VF=m CONFIG_PRESTERA=m CONFIG_PRESTERA_PCI=m CONFIG_NET_VENDOR_MELLANOX=y @@ -3621,7 +3632,10 @@ CONFIG_NXP_CBTX_PHY=m CONFIG_NXP_C45_TJA11XX_PHY=m CONFIG_NXP_TJA11XX_PHY=m CONFIG_NCN26000_PHY=m +CONFIG_QCOM_NET_PHYLIB=m CONFIG_AT803X_PHY=m +CONFIG_QCA83XX_PHY=m +CONFIG_QCA808X_PHY=m CONFIG_QSEMI_PHY=m CONFIG_REALTEK_PHY=m CONFIG_RENESAS_PHY=m @@ -3659,6 +3673,7 @@ CONFIG_CAN_CC770=m CONFIG_CAN_CC770_PLATFORM=m CONFIG_CAN_CTUCANFD=m CONFIG_CAN_CTUCANFD_PCI=m +CONFIG_CAN_ESD_402_PCI=m CONFIG_CAN_IFI_CANFD=m CONFIG_CAN_M_CAN=m CONFIG_CAN_M_CAN_PCI=m @@ -4354,6 +4369,9 @@ CONFIG_TOUCHSCREEN_EGALAX_SERIAL=m CONFIG_TOUCHSCREEN_EXC3000=m CONFIG_TOUCHSCREEN_FUJITSU=m CONFIG_TOUCHSCREEN_GOODIX=m +CONFIG_TOUCHSCREEN_GOODIX_BERLIN_CORE=m +CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C=m +CONFIG_TOUCHSCREEN_GOODIX_BERLIN_SPI=m CONFIG_TOUCHSCREEN_HIDEEP=m CONFIG_TOUCHSCREEN_HYCON_HY46XX=m CONFIG_TOUCHSCREEN_HYNITRON_CSTXXX=m @@ -4542,7 +4560,6 @@ CONFIG_VT=y CONFIG_CONSOLE_TRANSLATIONS=y CONFIG_VT_CONSOLE=y CONFIG_VT_CONSOLE_SLEEP=y -CONFIG_HW_CONSOLE=y CONFIG_VT_HW_CONSOLE_BINDING=y CONFIG_UNIX98_PTYS=y # CONFIG_LEGACY_PTYS is not set @@ -4617,7 +4634,7 @@ CONFIG_MOXA_INTELLIO=m CONFIG_MOXA_SMARTIO=m CONFIG_N_HDLC=m CONFIG_IPWIRELESS=m -CONFIG_N_GSM=m +# CONFIG_N_GSM is not set CONFIG_NOZOMI=m CONFIG_NULL_TTY=m CONFIG_HVC_DRIVER=y @@ -4880,6 +4897,7 @@ CONFIG_PTP_1588_CLOCK_INES=m CONFIG_PTP_1588_CLOCK_KVM=m CONFIG_PTP_1588_CLOCK_IDT82P33=m CONFIG_PTP_1588_CLOCK_IDTCM=m +CONFIG_PTP_1588_CLOCK_FC3W=m CONFIG_PTP_1588_CLOCK_MOCK=m CONFIG_PTP_1588_CLOCK_VMW=m CONFIG_PTP_1588_CLOCK_OCP=m @@ -4996,6 +5014,7 @@ CONFIG_GPIO_TPIC2810=m CONFIG_GPIO_ADP5520=m CONFIG_GPIO_ARIZONA=m CONFIG_GPIO_BD9571MWV=m +CONFIG_GPIO_CROS_EC=m CONFIG_GPIO_CRYSTAL_COVE=m CONFIG_GPIO_DA9052=m CONFIG_GPIO_DA9055=m @@ -5071,6 +5090,7 @@ CONFIG_W1_MASTER_DS2490=m CONFIG_W1_MASTER_DS2482=m CONFIG_W1_MASTER_GPIO=m CONFIG_W1_MASTER_SGI=m +CONFIG_W1_MASTER_UART=m # end of 1-wire Bus Masters # @@ -5215,6 +5235,7 @@ CONFIG_SENSORS_AHT10=m CONFIG_SENSORS_AQUACOMPUTER_D5NEXT=m CONFIG_SENSORS_AS370=m CONFIG_SENSORS_ASC7621=m +CONFIG_SENSORS_ASUS_ROG_RYUJIN=m CONFIG_SENSORS_AXI_FAN_CONTROL=m CONFIG_SENSORS_K8TEMP=m CONFIG_SENSORS_K10TEMP=m @@ -5222,6 +5243,7 @@ CONFIG_SENSORS_FAM15H_POWER=m CONFIG_SENSORS_APPLESMC=m CONFIG_SENSORS_ASB100=m CONFIG_SENSORS_ATXP1=m +CONFIG_SENSORS_CHIPCAP2=m CONFIG_SENSORS_CORSAIR_CPRO=m CONFIG_SENSORS_CORSAIR_PSU=m CONFIG_SENSORS_DRIVETEMP=m @@ -5268,6 +5290,7 @@ CONFIG_SENSORS_LTC4222=m CONFIG_SENSORS_LTC4245=m CONFIG_SENSORS_LTC4260=m CONFIG_SENSORS_LTC4261=m +CONFIG_SENSORS_LTC4282=m CONFIG_SENSORS_MAX1111=m CONFIG_SENSORS_MAX127=m CONFIG_SENSORS_MAX16065=m @@ -5319,6 +5342,7 @@ CONFIG_SENSORS_NCT7802=m CONFIG_SENSORS_NCT7904=m CONFIG_SENSORS_NPCM7XX=m CONFIG_SENSORS_NZXT_KRAKEN2=m +CONFIG_SENSORS_NZXT_KRAKEN3=m CONFIG_SENSORS_NZXT_SMART2=m CONFIG_SENSORS_OCC_P8_I2C=m CONFIG_SENSORS_OCC=m @@ -5365,6 +5389,7 @@ CONFIG_SENSORS_MP5023=m CONFIG_SENSORS_MP5990=m CONFIG_SENSORS_MPQ7932_REGULATOR=y CONFIG_SENSORS_MPQ7932=m +CONFIG_SENSORS_MPQ8785=m CONFIG_SENSORS_PIM4328=m CONFIG_SENSORS_PLI1209BC=m CONFIG_SENSORS_PLI1209BC_REGULATOR=y @@ -5383,6 +5408,7 @@ CONFIG_SENSORS_XDPE152=m CONFIG_SENSORS_XDPE122=m CONFIG_SENSORS_XDPE122_REGULATOR=y CONFIG_SENSORS_ZL6100=m +CONFIG_SENSORS_PT5161L=m CONFIG_SENSORS_SBTSI=m CONFIG_SENSORS_SBRMI=m CONFIG_SENSORS_SHT15=m @@ -5404,6 +5430,7 @@ CONFIG_SENSORS_SCH56XX_COMMON=m CONFIG_SENSORS_SCH5627=m CONFIG_SENSORS_SCH5636=m CONFIG_SENSORS_STTS751=m +CONFIG_SENSORS_SURFACE_FAN=m CONFIG_SENSORS_ADC128D818=m CONFIG_SENSORS_ADS7828=m CONFIG_SENSORS_ADS7871=m @@ -5455,7 +5482,6 @@ CONFIG_THERMAL_NETLINK=y # CONFIG_THERMAL_DEBUGFS is not set CONFIG_THERMAL_EMERGENCY_POWEROFF_DELAY_MS=100 CONFIG_THERMAL_HWMON=y -CONFIG_THERMAL_WRITABLE_TRIPS=y CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y # CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set # CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set @@ -5518,6 +5544,7 @@ CONFIG_WATCHDOG_PRETIMEOUT_DEFAULT_GOV_PANIC=y # CONFIG_SOFT_WATCHDOG=m # CONFIG_SOFT_WATCHDOG_PRETIMEOUT is not set +CONFIG_CROS_EC_WATCHDOG=m CONFIG_DA9052_WATCHDOG=m CONFIG_DA9055_WATCHDOG=m CONFIG_DA9063_WATCHDOG=m @@ -6744,8 +6771,8 @@ CONFIG_DVB_DUMMY_FE=m # Graphics support # CONFIG_APERTURE_HELPERS=y -CONFIG_VIDEO_CMDLINE=y -CONFIG_VIDEO_NOMODESET=y +CONFIG_SCREEN_INFO=y +CONFIG_VIDEO=y # CONFIG_AUXDISPLAY is not set # CONFIG_PANEL is not set CONFIG_AGP=y @@ -6765,6 +6792,7 @@ CONFIG_DRM_FBDEV_OVERALLOC=100 CONFIG_DRM_LOAD_EDID_FIRMWARE=y CONFIG_DRM_DISPLAY_HELPER=m CONFIG_DRM_DISPLAY_DP_HELPER=y +CONFIG_DRM_DISPLAY_DP_TUNNEL=y CONFIG_DRM_DISPLAY_HDCP_HELPER=y CONFIG_DRM_DISPLAY_HDMI_HELPER=y CONFIG_DRM_DP_AUX_CHARDEV=y @@ -6833,6 +6861,7 @@ CONFIG_DRM_I915_COMPRESS_ERROR=y CONFIG_DRM_I915_USERPTR=y CONFIG_DRM_I915_GVT_KVMGT=m CONFIG_DRM_I915_PXP=y +CONFIG_DRM_I915_DP_TUNNEL=y CONFIG_DRM_I915_REQUEST_TIMEOUT=20000 CONFIG_DRM_I915_FENCE_TIMEOUT=10000 CONFIG_DRM_I915_USERFAULT_AUTOSUSPEND=250 @@ -6871,6 +6900,7 @@ CONFIG_DRM_PANEL=y # Display Panels # CONFIG_DRM_PANEL_AUO_A030JTN01=m +CONFIG_DRM_PANEL_ILITEK_ILI9341=m CONFIG_DRM_PANEL_ORISETECH_OTA5601A=m CONFIG_DRM_PANEL_RASPBERRYPI_TOUCHSCREEN=m CONFIG_DRM_PANEL_WIDECHIPS_WS2401=m @@ -7001,6 +7031,7 @@ CONFIG_LCD_HX8357=m CONFIG_LCD_OTM3225A=m CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_KTD253=m +CONFIG_BACKLIGHT_KTD2801=m CONFIG_BACKLIGHT_KTZ8866=m CONFIG_BACKLIGHT_LM3533=m CONFIG_BACKLIGHT_PWM=m @@ -7214,6 +7245,7 @@ CONFIG_SND_HDA_PATCH_LOADER=y CONFIG_SND_HDA_CIRRUS_SCODEC=m CONFIG_SND_HDA_SCODEC_CS35L41=m CONFIG_SND_HDA_CS_DSP_CONTROLS=m +CONFIG_SND_HDA_SCODEC_COMPONENT=m CONFIG_SND_HDA_SCODEC_CS35L41_I2C=m CONFIG_SND_HDA_SCODEC_CS35L41_SPI=m CONFIG_SND_HDA_SCODEC_CS35L56=m @@ -7316,7 +7348,10 @@ CONFIG_SND_AMD_ASOC_ACP70=m CONFIG_SND_SOC_AMD_MACH_COMMON=m CONFIG_SND_SOC_AMD_LEGACY_MACH=m CONFIG_SND_SOC_AMD_SOF_MACH=m +CONFIG_SND_AMD_SOUNDWIRE_ACPI=m CONFIG_SND_SOC_AMD_RPL_ACP6x=m +CONFIG_SND_SOC_AMD_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_AMD_SOUNDWIRE=m CONFIG_SND_SOC_AMD_PS=m CONFIG_SND_SOC_AMD_PS_MACH=m CONFIG_SND_ATMEL_SOC=m @@ -7468,6 +7503,8 @@ CONFIG_SND_SOC_SOF_AMD_RENOIR=m CONFIG_SND_SOC_SOF_AMD_VANGOGH=m CONFIG_SND_SOC_SOF_AMD_REMBRANDT=m CONFIG_SND_SOC_SOF_ACP_PROBES=m +CONFIG_SND_SOC_SOF_AMD_SOUNDWIRE_LINK_BASELINE=m +CONFIG_SND_SOC_SOF_AMD_SOUNDWIRE=m CONFIG_SND_SOC_SOF_AMD_ACP63=m CONFIG_SND_SOC_SOF_INTEL_TOPLEVEL=y CONFIG_SND_SOC_SOF_INTEL_HIFI_EP_IPC=m @@ -7558,6 +7595,7 @@ CONFIG_SND_SOC_BD28623=m # CONFIG_SND_SOC_BT_SCO is not set CONFIG_SND_SOC_CHV3_CODEC=m CONFIG_SND_SOC_CROS_EC_CODEC=m +CONFIG_SND_SOC_CS_AMP_LIB=m CONFIG_SND_SOC_CS35L32=m CONFIG_SND_SOC_CS35L33=m CONFIG_SND_SOC_CS35L34=m @@ -7758,6 +7796,8 @@ CONFIG_SND_SOC_WCD_MBHC=m CONFIG_SND_SOC_WCD934X=m CONFIG_SND_SOC_WCD938X=m CONFIG_SND_SOC_WCD938X_SDW=m +CONFIG_SND_SOC_WCD939X=m +CONFIG_SND_SOC_WCD939X_SDW=m CONFIG_SND_SOC_WM5102=m CONFIG_SND_SOC_WM8510=m CONFIG_SND_SOC_WM8523=m @@ -8025,6 +8065,7 @@ CONFIG_USB_DEFAULT_PERSIST=y # CONFIG_USB_OTG_PRODUCTLIST is not set CONFIG_USB_LEDS_TRIGGER_USBPORT=m CONFIG_USB_AUTOSUSPEND_DELAY=2 +CONFIG_USB_DEFAULT_AUTHORIZATION_MODE=1 CONFIG_USB_MON=m # @@ -8412,6 +8453,7 @@ CONFIG_TYPEC_MUX_FSA4480=m CONFIG_TYPEC_MUX_GPIO_SBU=m CONFIG_TYPEC_MUX_PI3USB30532=m CONFIG_TYPEC_MUX_INTEL_PMC=m +CONFIG_TYPEC_MUX_IT5205=m CONFIG_TYPEC_MUX_NB7VPQ904M=m CONFIG_TYPEC_MUX_PTN36502=m CONFIG_TYPEC_MUX_WCD939X_USBSS=m @@ -8487,6 +8529,7 @@ CONFIG_MEMSTICK_JMICRON_38X=m CONFIG_MEMSTICK_R592=m CONFIG_MEMSTICK_REALTEK_PCI=m CONFIG_MEMSTICK_REALTEK_USB=m +CONFIG_LEDS_EXPRESSWIRE=y CONFIG_NEW_LEDS=y CONFIG_LEDS_CLASS=y CONFIG_LEDS_CLASS_FLASH=m @@ -8911,7 +8954,7 @@ CONFIG_VIRTIO_VFIO_PCI=m # end of VFIO support for PCI devices CONFIG_VFIO_MDEV=m -CONFIG_IRQ_BYPASS_MANAGER=m +CONFIG_IRQ_BYPASS_MANAGER=y CONFIG_VIRT_DRIVERS=y CONFIG_VMGENID=y CONFIG_VBOXGUEST=m @@ -9089,6 +9132,7 @@ CONFIG_KS7010=m CONFIG_PI433=m CONFIG_FIELDBUS_DEV=m # CONFIG_VME_BUS is not set +# CONFIG_GOLDFISH is not set CONFIG_CHROME_PLATFORMS=y CONFIG_CHROMEOS_ACPI=m CONFIG_CHROMEOS_LAPTOP=m @@ -9337,6 +9381,7 @@ CONFIG_IOMMU_DEFAULT_DMA_LAZY=y # CONFIG_IOMMU_DEFAULT_PASSTHROUGH is not set CONFIG_IOMMU_DMA=y CONFIG_IOMMU_SVA=y +CONFIG_IOMMU_IOPF=y CONFIG_AMD_IOMMU=y CONFIG_DMAR_TABLE=y CONFIG_INTEL_IOMMU=y @@ -9512,6 +9557,7 @@ CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 CONFIG_IIO_SW_DEVICE=m CONFIG_IIO_SW_TRIGGER=m CONFIG_IIO_TRIGGERED_EVENT=m +CONFIG_IIO_BACKEND=m # # Accelerometers @@ -9538,6 +9584,7 @@ CONFIG_BMC150_ACCEL=m CONFIG_BMC150_ACCEL_I2C=m CONFIG_BMC150_ACCEL_SPI=m CONFIG_BMI088_ACCEL=m +CONFIG_BMI088_ACCEL_I2C=m CONFIG_BMI088_ACCEL_SPI=m CONFIG_DA280=m CONFIG_DA311=m @@ -9605,6 +9652,8 @@ CONFIG_AD7887=m CONFIG_AD7923=m CONFIG_AD7949=m CONFIG_AD799X=m +CONFIG_AD9467=m +CONFIG_ADI_AXI_ADC=m CONFIG_AXP20X_ADC=m CONFIG_AXP288_ADC=m CONFIG_CC10001_ADC=m @@ -9640,6 +9689,7 @@ CONFIG_MEDIATEK_MT6370_ADC=m CONFIG_MEN_Z188_ADC=m CONFIG_MP2629_ADC=m CONFIG_NAU7802=m +CONFIG_PAC1934=m CONFIG_PALMAS_GPADC=m CONFIG_RICHTEK_RTQ6056=m CONFIG_SD_ADC_MODULATOR=m @@ -9653,6 +9703,7 @@ CONFIG_TI_ADC161S626=m CONFIG_TI_ADS1015=m CONFIG_TI_ADS7924=m CONFIG_TI_ADS1100=m +CONFIG_TI_ADS1298=m CONFIG_TI_ADS7950=m CONFIG_TI_ADS8344=m CONFIG_TI_ADS8688=m @@ -9827,6 +9878,7 @@ CONFIG_AD9523=m CONFIG_ADF4350=m CONFIG_ADF4371=m CONFIG_ADF4377=m +CONFIG_ADMFM2000=m CONFIG_ADMV1013=m CONFIG_ADMV1014=m CONFIG_ADMV4420=m @@ -10091,6 +10143,8 @@ CONFIG_MPL115_I2C=m CONFIG_MPL115_SPI=m CONFIG_MPL3115=m CONFIG_MPRLS0025PA=m +CONFIG_MPRLS0025PA_I2C=m +CONFIG_MPRLS0025PA_SPI=m CONFIG_MS5611=m CONFIG_MS5611_I2C=m CONFIG_MS5611_SPI=m @@ -10200,6 +10254,7 @@ CONFIG_IPACK_BUS=m CONFIG_BOARD_TPCI200=m CONFIG_SERIAL_IPOCTAL=m CONFIG_RESET_CONTROLLER=y +CONFIG_RESET_GPIO=m CONFIG_RESET_TI_SYSCON=m CONFIG_RESET_TI_TPS380X=m @@ -10240,11 +10295,14 @@ CONFIG_MCB_LPC=m # Performance monitor support # CONFIG_DWC_PCIE_PMU=m +CONFIG_CXL_PMU=m # end of Performance monitor support CONFIG_RAS=y CONFIG_RAS_CEC=y # CONFIG_RAS_CEC_DEBUG is not set +CONFIG_AMD_ATL=m +CONFIG_RAS_FMPM=m CONFIG_USB4=m # CONFIG_USB4_DEBUGFS_WRITE is not set # CONFIG_USB4_DMA_TEST is not set @@ -10387,6 +10445,9 @@ CONFIG_XFS_QUOTA=y CONFIG_XFS_POSIX_ACL=y CONFIG_XFS_RT=y CONFIG_XFS_DRAIN_INTENTS=y +CONFIG_XFS_LIVE_HOOKS=y +CONFIG_XFS_MEMORY_BUFS=y +CONFIG_XFS_BTREE_IN_MEM=y CONFIG_XFS_ONLINE_SCRUB=y # CONFIG_XFS_ONLINE_SCRUB_STATS is not set CONFIG_XFS_ONLINE_REPAIR=y @@ -10456,10 +10517,11 @@ CONFIG_QFMT_V1=m CONFIG_QFMT_V2=m CONFIG_QUOTACTL=y CONFIG_AUTOFS_FS=y -CONFIG_FUSE_FS=m +CONFIG_FUSE_FS=y CONFIG_CUSE=m -CONFIG_VIRTIO_FS=m +CONFIG_VIRTIO_FS=y CONFIG_FUSE_DAX=y +CONFIG_FUSE_PASSTHROUGH=y CONFIG_OVERLAY_FS=m CONFIG_OVERLAY_FS_REDIRECT_DIR=y # CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW is not set @@ -10502,11 +10564,11 @@ CONFIG_FAT_DEFAULT_IOCHARSET="ascii" CONFIG_FAT_DEFAULT_UTF8=y CONFIG_EXFAT_FS=m CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8" -# CONFIG_NTFS_FS is not set CONFIG_NTFS3_FS=m # CONFIG_NTFS3_64BIT_CLUSTER is not set CONFIG_NTFS3_LZX_XPRESS=y CONFIG_NTFS3_FS_POSIX_ACL=y +# CONFIG_NTFS_FS is not set # end of DOS/FAT/EXFAT/NT Filesystems # @@ -11025,7 +11087,7 @@ CONFIG_CRYPTO_CRC64_ROCKSOFT=y # Compression # CONFIG_CRYPTO_DEFLATE=m -CONFIG_CRYPTO_LZO=m +CONFIG_CRYPTO_LZO=y CONFIG_CRYPTO_842=m CONFIG_CRYPTO_LZ4=m CONFIG_CRYPTO_LZ4HC=m @@ -11127,6 +11189,7 @@ CONFIG_CRYPTO_DEV_QAT_420XX=m CONFIG_CRYPTO_DEV_QAT_DH895xCCVF=m CONFIG_CRYPTO_DEV_QAT_C3XXXVF=m CONFIG_CRYPTO_DEV_QAT_C62XVF=m +# CONFIG_CRYPTO_DEV_QAT_ERROR_INJECTION is not set CONFIG_CRYPTO_DEV_IAA_CRYPTO=m # CONFIG_CRYPTO_DEV_IAA_CRYPTO_STATS is not set CONFIG_CRYPTO_DEV_CHELSIO=m @@ -11177,7 +11240,6 @@ CONFIG_GENERIC_NET_UTILS=y CONFIG_CORDIC=m # CONFIG_PRIME_NUMBERS is not set CONFIG_RATIONAL=y -CONFIG_GENERIC_PCI_IOMAP=y CONFIG_GENERIC_IOMAP=y CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y CONFIG_ARCH_HAS_FAST_MULTIPLIER=y @@ -11415,7 +11477,7 @@ CONFIG_DEBUG_FS_ALLOW_ALL=y # CONFIG_DEBUG_FS_ALLOW_NONE is not set CONFIG_HAVE_ARCH_KGDB=y # CONFIG_KGDB is not set -CONFIG_ARCH_HAS_UBSAN_SANITIZE_ALL=y +CONFIG_ARCH_HAS_UBSAN=y # CONFIG_UBSAN is not set CONFIG_HAVE_ARCH_KCSAN=y CONFIG_HAVE_KCSAN_COMPILER=y @@ -11466,6 +11528,7 @@ CONFIG_ARCH_SUPPORTS_KMAP_LOCAL_FORCE_MAP=y CONFIG_HAVE_ARCH_KASAN=y CONFIG_HAVE_ARCH_KASAN_VMALLOC=y CONFIG_CC_HAS_KASAN_GENERIC=y +CONFIG_CC_HAS_KASAN_SW_TAGS=y CONFIG_CC_HAS_WORKING_NOSANITIZE_ADDRESS=y # CONFIG_KASAN is not set CONFIG_HAVE_ARCH_KFENCE=y @@ -11712,8 +11775,6 @@ CONFIG_RUNTIME_TESTING_MENU=y # CONFIG_ATOMIC64_SELFTEST is not set CONFIG_ASYNC_RAID6_TEST=m # CONFIG_TEST_HEXDUMP is not set -# CONFIG_STRING_SELFTEST is not set -# CONFIG_TEST_STRING_HELPERS is not set # CONFIG_TEST_KSTRTOX is not set # CONFIG_TEST_PRINTF is not set # CONFIG_TEST_SCANF is not set |