platform/x86: think-lmi: Correct System password interface
authorMark Pearson <mpearson-lenovo@squebb.ca>
Thu, 1 Jun 2023 20:05:47 +0000 (16:05 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 19 Jul 2023 14:21:36 +0000 (16:21 +0200)
[ Upstream commit 97eef5983372d7aee6549d644d788fd0c10d2b6e ]

The system password identification was incorrect. This means that if
the password was enabled it wouldn't be detected correctly; and setting
it would not work.
Also updated code to use TLMI_SMP_PWD instead of TLMI_SYS_PWD to be in
sync with Lenovo documentation.

Fixes: 640a5fa50a42 ("platform/x86: think-lmi: Opcode support")
Signed-off-by: Mark Pearson <mpearson-lenovo@squebb.ca>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20230601200552.4396-3-mpearson-lenovo@squebb.ca
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/platform/x86/think-lmi.c

index 4e6040c..3a511c0 100644 (file)
@@ -172,7 +172,7 @@ MODULE_PARM_DESC(debug_support, "Enable debug command support");
 #define TLMI_POP_PWD (1 << 0)
 #define TLMI_PAP_PWD (1 << 1)
 #define TLMI_HDD_PWD (1 << 2)
-#define TLMI_SYS_PWD (1 << 3)
+#define TLMI_SMP_PWD (1 << 6) /* System Management */
 #define TLMI_CERT    (1 << 7)
 
 #define to_tlmi_pwd_setting(kobj)  container_of(kobj, struct tlmi_pwd_setting, kobj)
@@ -1522,11 +1522,11 @@ static int tlmi_analyze(void)
                tlmi_priv.pwd_power->valid = true;
 
        if (tlmi_priv.opcode_support) {
-               tlmi_priv.pwd_system = tlmi_create_auth("sys", "system");
+               tlmi_priv.pwd_system = tlmi_create_auth("smp", "system");
                if (!tlmi_priv.pwd_system)
                        goto fail_clear_attr;
 
-               if (tlmi_priv.pwdcfg.core.password_state & TLMI_SYS_PWD)
+               if (tlmi_priv.pwdcfg.core.password_state & TLMI_SMP_PWD)
                        tlmi_priv.pwd_system->valid = true;
 
                tlmi_priv.pwd_hdd = tlmi_create_auth("hdd", "hdd");