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

dmi.h (4372B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __DMI_H__
      3#define __DMI_H__
      4
      5#include <linux/list.h>
      6#include <linux/kobject.h>
      7#include <linux/mod_devicetable.h>
      8
      9/* enum dmi_field is in mod_devicetable.h */
     10
     11enum dmi_device_type {
     12	DMI_DEV_TYPE_ANY = 0,
     13	DMI_DEV_TYPE_OTHER,
     14	DMI_DEV_TYPE_UNKNOWN,
     15	DMI_DEV_TYPE_VIDEO,
     16	DMI_DEV_TYPE_SCSI,
     17	DMI_DEV_TYPE_ETHERNET,
     18	DMI_DEV_TYPE_TOKENRING,
     19	DMI_DEV_TYPE_SOUND,
     20	DMI_DEV_TYPE_PATA,
     21	DMI_DEV_TYPE_SATA,
     22	DMI_DEV_TYPE_SAS,
     23	DMI_DEV_TYPE_IPMI = -1,
     24	DMI_DEV_TYPE_OEM_STRING = -2,
     25	DMI_DEV_TYPE_DEV_ONBOARD = -3,
     26	DMI_DEV_TYPE_DEV_SLOT = -4,
     27};
     28
     29enum dmi_entry_type {
     30	DMI_ENTRY_BIOS = 0,
     31	DMI_ENTRY_SYSTEM,
     32	DMI_ENTRY_BASEBOARD,
     33	DMI_ENTRY_CHASSIS,
     34	DMI_ENTRY_PROCESSOR,
     35	DMI_ENTRY_MEM_CONTROLLER,
     36	DMI_ENTRY_MEM_MODULE,
     37	DMI_ENTRY_CACHE,
     38	DMI_ENTRY_PORT_CONNECTOR,
     39	DMI_ENTRY_SYSTEM_SLOT,
     40	DMI_ENTRY_ONBOARD_DEVICE,
     41	DMI_ENTRY_OEMSTRINGS,
     42	DMI_ENTRY_SYSCONF,
     43	DMI_ENTRY_BIOS_LANG,
     44	DMI_ENTRY_GROUP_ASSOC,
     45	DMI_ENTRY_SYSTEM_EVENT_LOG,
     46	DMI_ENTRY_PHYS_MEM_ARRAY,
     47	DMI_ENTRY_MEM_DEVICE,
     48	DMI_ENTRY_32_MEM_ERROR,
     49	DMI_ENTRY_MEM_ARRAY_MAPPED_ADDR,
     50	DMI_ENTRY_MEM_DEV_MAPPED_ADDR,
     51	DMI_ENTRY_BUILTIN_POINTING_DEV,
     52	DMI_ENTRY_PORTABLE_BATTERY,
     53	DMI_ENTRY_SYSTEM_RESET,
     54	DMI_ENTRY_HW_SECURITY,
     55	DMI_ENTRY_SYSTEM_POWER_CONTROLS,
     56	DMI_ENTRY_VOLTAGE_PROBE,
     57	DMI_ENTRY_COOLING_DEV,
     58	DMI_ENTRY_TEMP_PROBE,
     59	DMI_ENTRY_ELECTRICAL_CURRENT_PROBE,
     60	DMI_ENTRY_OOB_REMOTE_ACCESS,
     61	DMI_ENTRY_BIS_ENTRY,
     62	DMI_ENTRY_SYSTEM_BOOT,
     63	DMI_ENTRY_MGMT_DEV,
     64	DMI_ENTRY_MGMT_DEV_COMPONENT,
     65	DMI_ENTRY_MGMT_DEV_THRES,
     66	DMI_ENTRY_MEM_CHANNEL,
     67	DMI_ENTRY_IPMI_DEV,
     68	DMI_ENTRY_SYS_POWER_SUPPLY,
     69	DMI_ENTRY_ADDITIONAL,
     70	DMI_ENTRY_ONBOARD_DEV_EXT,
     71	DMI_ENTRY_MGMT_CONTROLLER_HOST,
     72	DMI_ENTRY_INACTIVE = 126,
     73	DMI_ENTRY_END_OF_TABLE = 127,
     74};
     75
     76struct dmi_header {
     77	u8 type;
     78	u8 length;
     79	u16 handle;
     80} __packed;
     81
     82struct dmi_device {
     83	struct list_head list;
     84	int type;
     85	const char *name;
     86	void *device_data;	/* Type specific data */
     87};
     88
     89#ifdef CONFIG_DMI
     90
     91struct dmi_dev_onboard {
     92	struct dmi_device dev;
     93	int instance;
     94	int segment;
     95	int bus;
     96	int devfn;
     97};
     98
     99extern struct kobject *dmi_kobj;
    100extern int dmi_check_system(const struct dmi_system_id *list);
    101const struct dmi_system_id *dmi_first_match(const struct dmi_system_id *list);
    102extern const char * dmi_get_system_info(int field);
    103extern const struct dmi_device * dmi_find_device(int type, const char *name,
    104	const struct dmi_device *from);
    105extern void dmi_setup(void);
    106extern bool dmi_get_date(int field, int *yearp, int *monthp, int *dayp);
    107extern int dmi_get_bios_year(void);
    108extern int dmi_name_in_vendors(const char *str);
    109extern int dmi_name_in_serial(const char *str);
    110extern int dmi_available;
    111extern int dmi_walk(void (*decode)(const struct dmi_header *, void *),
    112	void *private_data);
    113extern bool dmi_match(enum dmi_field f, const char *str);
    114extern void dmi_memdev_name(u16 handle, const char **bank, const char **device);
    115extern u64 dmi_memdev_size(u16 handle);
    116extern u8 dmi_memdev_type(u16 handle);
    117extern u16 dmi_memdev_handle(int slot);
    118
    119#else
    120
    121static inline int dmi_check_system(const struct dmi_system_id *list) { return 0; }
    122static inline const char * dmi_get_system_info(int field) { return NULL; }
    123static inline const struct dmi_device * dmi_find_device(int type, const char *name,
    124	const struct dmi_device *from) { return NULL; }
    125static inline void dmi_setup(void) { }
    126static inline bool dmi_get_date(int field, int *yearp, int *monthp, int *dayp)
    127{
    128	if (yearp)
    129		*yearp = 0;
    130	if (monthp)
    131		*monthp = 0;
    132	if (dayp)
    133		*dayp = 0;
    134	return false;
    135}
    136static inline int dmi_get_bios_year(void) { return -ENXIO; }
    137static inline int dmi_name_in_vendors(const char *s) { return 0; }
    138static inline int dmi_name_in_serial(const char *s) { return 0; }
    139#define dmi_available 0
    140static inline int dmi_walk(void (*decode)(const struct dmi_header *, void *),
    141	void *private_data) { return -ENXIO; }
    142static inline bool dmi_match(enum dmi_field f, const char *str)
    143	{ return false; }
    144static inline void dmi_memdev_name(u16 handle, const char **bank,
    145		const char **device) { }
    146static inline u64 dmi_memdev_size(u16 handle) { return ~0ul; }
    147static inline u8 dmi_memdev_type(u16 handle) { return 0x0; }
    148static inline u16 dmi_memdev_handle(int slot) { return 0xffff; }
    149static inline const struct dmi_system_id *
    150	dmi_first_match(const struct dmi_system_id *list) { return NULL; }
    151
    152#endif
    153
    154#endif	/* __DMI_H__ */