cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

think-lmi.h (2194B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2
      3#ifndef _THINK_LMI_H_
      4#define _THINK_LMI_H_
      5
      6#include <linux/types.h>
      7
      8#define TLMI_SETTINGS_COUNT  256
      9#define TLMI_SETTINGS_MAXLEN 512
     10#define TLMI_PWD_BUFSIZE     129
     11#define TLMI_LANG_MAXLEN       4
     12#define TLMI_INDEX_MAX        32
     13
     14/* Possible error values */
     15struct tlmi_err_codes {
     16	const char *err_str;
     17	int err_code;
     18};
     19
     20enum encoding_option {
     21	TLMI_ENCODING_ASCII,
     22	TLMI_ENCODING_SCANCODE,
     23};
     24
     25enum level_option {
     26	TLMI_LEVEL_USER,
     27	TLMI_LEVEL_MASTER,
     28};
     29
     30/* password configuration details */
     31struct tlmi_pwdcfg_core {
     32	uint32_t password_mode;
     33	uint32_t password_state;
     34	uint32_t min_length;
     35	uint32_t max_length;
     36	uint32_t supported_encodings;
     37	uint32_t supported_keyboard;
     38};
     39
     40struct tlmi_pwdcfg_ext {
     41	uint32_t hdd_user_password;
     42	uint32_t hdd_master_password;
     43	uint32_t nvme_user_password;
     44	uint32_t nvme_master_password;
     45};
     46
     47struct tlmi_pwdcfg {
     48	struct tlmi_pwdcfg_core core;
     49	struct tlmi_pwdcfg_ext ext;
     50};
     51
     52/* password setting details */
     53struct tlmi_pwd_setting {
     54	struct kobject kobj;
     55	bool valid;
     56	char password[TLMI_PWD_BUFSIZE];
     57	const char *pwd_type;
     58	const char *role;
     59	int minlen;
     60	int maxlen;
     61	enum encoding_option encoding;
     62	char kbdlang[TLMI_LANG_MAXLEN];
     63	int index; /*Used for HDD and NVME auth */
     64	enum level_option level;
     65	bool cert_installed;
     66	char *signature;
     67	char *save_signature;
     68};
     69
     70/* Attribute setting details */
     71struct tlmi_attr_setting {
     72	struct kobject kobj;
     73	int index;
     74	char display_name[TLMI_SETTINGS_MAXLEN];
     75	char *possible_values;
     76};
     77
     78struct think_lmi {
     79	struct wmi_device *wmi_device;
     80
     81	bool can_set_bios_settings;
     82	bool can_get_bios_selections;
     83	bool can_set_bios_password;
     84	bool can_get_password_settings;
     85	bool pending_changes;
     86	bool can_debug_cmd;
     87	bool opcode_support;
     88	bool certificate_support;
     89
     90	struct tlmi_attr_setting *setting[TLMI_SETTINGS_COUNT];
     91	struct device *class_dev;
     92	struct kset *attribute_kset;
     93	struct kset *authentication_kset;
     94
     95	struct tlmi_pwdcfg pwdcfg;
     96	struct tlmi_pwd_setting *pwd_admin;
     97	struct tlmi_pwd_setting *pwd_power;
     98	struct tlmi_pwd_setting *pwd_system;
     99	struct tlmi_pwd_setting *pwd_hdd;
    100	struct tlmi_pwd_setting *pwd_nvme;
    101};
    102
    103#endif /* !_THINK_LMI_H_ */