FAILED: patch "[PATCH] platform/x86: hp-wmi: Fix board_params typo for 8DD6 board" failed to apply to 7.2-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 7.2-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-7.2.y
git checkout FETCH_HEAD
git cherry-pick -x ee02ed6308fbbd851c4e5c1f642d029617049a12
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026091627-nephew-drained-5a51@gregkh' --subject-prefix 'PATCH 7.2.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From ee02ed6308fbbd851c4e5c1f642d029617049a12 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Arda=20Do=C4=9Fu=20Ari?= <[email protected]>
Date: Fri, 28 Aug 2026 02:51:39 +0300
Subject: [PATCH] platform/x86: hp-wmi: Fix board_params typo for 8DD6 board
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
When adding support for board 8DD6, &omen_v1_no_ec_thermal_params was passed as driver_data instead of &omen_v1_no_ec_board_params.
Because active_board_params expects a pointer to struct hp_wmi_board_params, dereferencing active_board_params->thermal_profile results in a type confusion bug and invalid memory access. Update the entry to point to omen_v1_no_ec_board_params.
drivers/platform/x86/hp/hp-wmi.c +1 -1
@@ -337,7 +337,7 @@ static const struct dmi_system_id hp_wmi_feature_boards[] __initconst = { }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "8DD6") }, - .driver_data = (void *)&omen_v1_no_ec_thermal_params, + .driver_data = (void *)&omen_v1_no_ec_board_params, }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "8E35") },
Sasha Levin
maintainerPATCH 1/2 platform/x86: hp-wmi: Introduce board-specific feature data
From: Radhey Kalra <[email protected]>
[ Upstream commit 08ecf6d131f38595a1e7f5441c8e1d29302cc718 ]
The hp_wmi DMI table is about to carry more than thermal-profile data. Replace the direct thermal_profile_params .driver_data pointers with hp_wmi_board_params and rename the table/setup helper accordingly.
No functional changes intended.
Stable-dep-of: ee02ed6308fb ("platform/x86: hp-wmi: Fix board_params typo for 8DD6 board")
--- drivers/platform/x86/hp/hp-wmi.c | 127 +++++++++++++++++++------------ 1 file changed, 80 insertions(+), 47 deletions(-)
drivers/platform/x86/hp/hp-wmi.c +80 -47
@@ -133,11 +133,35 @@ static const struct thermal_profile_params omen_v1_no_ec_thermal_params = { .ec_tp_offset = HP_NO_THERMAL_PROFILE_OFFSET, }; -/* -* A generic pointer for the currently-active board's thermal profile -* parameters. -*/ -static struct thermal_profile_params *active_thermal_profile_params; +struct hp_wmi_board_params { +const struct thermal_profile_params *thermal_profile; +}; + +static const struct hp_wmi_board_params victus_s_board_params = { + .thermal_profile = &victus_s_thermal_params, +}; + +static const struct hp_wmi_board_params omen_v1_board_params = { + .thermal_profile = &omen_v1_thermal_params, +}; + +static const struct hp_wmi_board_params omen_v1_legacy_board_params = { + .thermal_profile = &omen_v1_legacy_thermal_params, +}; + +static const struct hp_wmi_board_params omen_v1_no_ec_board_params = { + .thermal_profile = &omen_v1_no_ec_thermal_params, +}; + +static const struct hp_wmi_board_params *active_board_params; + +static const struct thermal_profile_params *hp_wmi_thermal_profile (void ) +{ +if (!active_board_params) +return NULL ; + +return active_board_params->thermal_profile; +}/* DMI board names of devices that should use the omen specific path for * thermal profiles.
@@ -187,83 +211,83 @@ static const char * const victus_thermal_profile_boards[] = { "8A25", }; -/* DMI Board names of Victus 16-r and Victus 16-s laptops */ -static const struct dmi_system_id victus_s_thermal_profile_boards[]__initconst = { +/* DMI board-specific feature data for Omen and Victus laptops. */ +static const struct dmi_system_id hp_wmi_feature_boards[]__initconst = { { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8902" ) }, - .driver_data = (void *)&omen_v1_legacy_thermal_params, + .driver_data = (void *)&omen_v1_legacy_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8A44" ) }, - .driver_data = (void *)&omen_v1_legacy_thermal_params, + .driver_data = (void *)&omen_v1_legacy_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8A4D" ) }, - .driver_data = (void *)&omen_v1_legacy_thermal_params, + .driver_data = (void *)&omen_v1_legacy_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8BAB" ) }, - .driver_data = (void *)&omen_v1_thermal_params, + .driver_data = (void *)&omen_v1_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8B2F" ) }, - .driver_data = (void *)&victus_s_thermal_params, + .driver_data = (void *)&victus_s_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8BBE" ) }, - .driver_data = (void *)&victus_s_thermal_params, + .driver_data = (void *)&victus_s_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8BC2" ) }, - .driver_data = (void *)&omen_v1_thermal_params, + .driver_data = (void *)&omen_v1_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8BCA" ) }, - .driver_data = (void *)&omen_v1_thermal_params, + .driver_data = (void *)&omen_v1_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8BCD" ) }, - .driver_data = (void *)&omen_v1_thermal_params, + .driver_data = (void *)&omen_v1_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8BD4" ) }, - .driver_data = (void *)&victus_s_thermal_params, + .driver_data = (void *)&victus_s_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8BD5" ) }, - .driver_data = (void *)&victus_s_thermal_params, + .driver_data = (void *)&victus_s_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8C76" ) }, - .driver_data = (void *)&omen_v1_thermal_params, + .driver_data = (void *)&omen_v1_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8C77" ) }, - .driver_data = (void *)&omen_v1_thermal_params, + .driver_data = (void *)&omen_v1_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8C78" ) }, - .driver_data = (void *)&omen_v1_thermal_params, + .driver_data = (void *)&omen_v1_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8C99" ) }, - .driver_data = (void *)&victus_s_thermal_params, + .driver_data = (void *)&victus_s_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8C9C" ) }, - .driver_data = (void *)&victus_s_thermal_params, + .driver_data = (void *)&victus_s_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8D26" ) }, - .driver_data = (void *)&omen_v1_legacy_thermal_params, + .driver_data = (void *)&omen_v1_legacy_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8D41" ) }, - .driver_data = (void *)&omen_v1_no_ec_thermal_params, + .driver_data = (void *)&omen_v1_no_ec_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8D87" ) }, - .driver_data = (void *)&omen_v1_no_ec_thermal_params, + .driver_data = (void *)&omen_v1_no_ec_board_params, }, { .matches = {DMI_MATCH (DMI_BOARD_NAME ,"8DD6" ) },
@@ -271,7 +295,7 @@ static const struct dmi_system_id victus_s_thermal_profile_boards[] __initconst }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "8E35") }, - .driver_data = (void *)&omen_v1_legacy_thermal_params, + .driver_data = (void *)&omen_v1_legacy_board_params, }, {}, };
@@ -1878,7 +1902,10 @@ static int platform_profile_victus_s_get_ec(enum platform_profile_option *profilu8 current_dstate, current_gpu_slowdown_temp, tp;const struct thermal_profile_params *params; - params = active_thermal_profile_params; + params =hp_wmi_thermal_profile (); +if (!params) +return -ENODEV ; +if (params->ec_tp_offset ==HP_EC_OFFSET_UNKNOWN || params->ec_tp_offset ==HP_NO_THERMAL_PROFILE_OFFSET ) { *profile = active_platform_profile;
@@ -1890,10 +1917,10 @@ static int platform_profile_victus_s_get_ec(enum platform_profile_option *profilreturn ret;/* -* We cannot use active_thermal_profile_params here, because boards -* like 8C78 have tp == 0x0 || tp == 0x1 after cold boot, but logically -* it should have tp == 0x30 || tp == 0x31, as corrected by the Omen -* Gaming Hub on windows. Hence accept both of these values. +* Boards like 8C78 have tp == 0x0 || tp == 0x1 after cold boot, +* but logically it should have tp == 0x30 || tp == 0x31, as +* corrected by the Omen Gaming Hub on windows. Hence accept both +* of these values. */ if (tp == victus_s_thermal_params.performance || tp == omen_v1_thermal_params.performance) {
@@ -1928,12 +1955,12 @@ static int platform_profile_victus_s_get_ec(enum platform_profile_option *profilstatic int platform_profile_victus_s_set_ec (enum platform_profile_option profile) { -struct thermal_profile_params *params; +const struct thermal_profile_params *params;bool gpu_ctgp_enable, gpu_ppab_enable;u8 gpu_dstate;/* Test shows 1 = 100%, 2 = 50%, 3 = 25%, 4 = 12.5% */ int err, tp; - params = active_thermal_profile_params; + params =hp_wmi_thermal_profile ();if (!params)return -ENODEV ;
@@ -2199,6 +2226,7 @@ static const struct platform_profile_ops hp_wmi_platform_profile_ops = {static int thermal_profile_setup (struct platform_device *device) {const struct platform_profile_ops *ops; +const struct thermal_profile_params *params;int err, tp;if (is_omen_thermal_profile ()) {
@@ -2230,13 +2258,17 @@ static int thermal_profile_setup(struct platform_device *device) ops = &platform_profile_victus_ops; }else if (is_victus_s_thermal_profile ()) { + params =hp_wmi_thermal_profile (); +if (!params) +return -ENODEV ; +/* * For an unknown EC layout board, platform_profile_victus_s_get_ec(), * behaves like a wrapper around active_platform_profile, to avoid using * uninitialized data, we default to PLATFORM_PROFILE_BALANCED. */ -if (active_thermal_profile_params->ec_tp_offset ==HP_EC_OFFSET_UNKNOWN || - active_thermal_profile_params->ec_tp_offset ==HP_NO_THERMAL_PROFILE_OFFSET ) { +if (params->ec_tp_offset ==HP_EC_OFFSET_UNKNOWN || + params->ec_tp_offset ==HP_NO_THERMAL_PROFILE_OFFSET ) { active_platform_profile =PLATFORM_PROFILE_BALANCED ; }else { err =platform_profile_victus_s_get_ec (&active_platform_profile);
@@ -2697,24 +2729,25 @@ static int hp_wmi_hwmon_init(void)return 0 ; } -static void __init setup_active_thermal_profile_params (void ) +static void __init setup_active_board_params (void ) {const struct dmi_system_id *id; +const struct thermal_profile_params *params; -/* -* Currently only victus_s devices use the -* active_thermal_profile_params -*/ - id =dmi_first_match (victus_s_thermal_profile_boards); + id =dmi_first_match (hp_wmi_feature_boards);if (id) { + active_board_params = id->driver_data; + params =hp_wmi_thermal_profile (); +if (!params) +return ; +/* * Marking this boolean is required to ensure that * is_victus_s_thermal_profile() behaves like a valid * wrapper. */ is_victus_s_board = true; - active_thermal_profile_params = id->driver_data; -if (active_thermal_profile_params->ec_tp_offset ==HP_EC_OFFSET_UNKNOWN ) { +if (params->ec_tp_offset ==HP_EC_OFFSET_UNKNOWN ) {pr_warn ("Unknown EC layout for board %s. Thermal profile readback will be disabled. Please report this to [email protected]\n" ,dmi_get_system_info (DMI_BOARD_NAME )); }
@@ -2749,10 +2782,10 @@ static int __init hp_wmi_init(void) }/* -* Setup active board's thermal profile parameters before -* starting platform driver probe. +* Setup active board feature data before starting platform +* driver probe. */ -setup_active_thermal_profile_params (); +setup_active_board_params (); err =platform_driver_probe (&hp_wmi_driver, hp_wmi_bios_setup);if (err) goto err_unregister_device;
Signature · 1 line
2.53.0
Sasha Levin
maintainerPATCH 2/2 platform/x86: hp-wmi: Fix board_params typo for 8DD6 board
From: Arda Doğu Ari <[email protected]>
[ Upstream commit ee02ed6308fbbd851c4e5c1f642d029617049a12 ]
When adding support for board 8DD6, &omen_v1_no_ec_thermal_params was passed as driver_data instead of &omen_v1_no_ec_board_params.
Because active_board_params expects a pointer to struct hp_wmi_board_params, dereferencing active_board_params->thermal_profile results in a type confusion bug and invalid memory access. Update the entry to point to omen_v1_no_ec_board_params.
--- drivers/platform/x86/hp/hp-wmi.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/platform/x86/hp/hp-wmi.c +1 -1
@@ -291,7 +291,7 @@ static const struct dmi_system_id hp_wmi_feature_boards[] __initconst = { }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "8DD6") }, - .driver_data = (void *)&omen_v1_no_ec_thermal_params, + .driver_data = (void *)&omen_v1_no_ec_board_params, }, { .matches = { DMI_MATCH(DMI_BOARD_NAME, "8E35") },
Signature · 1 line
2.53.0