__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef GHES_H
#define GHES_H
#include <acpi/apei.h>
#include <acpi/hed.h>
/*
* One struct ghes is created for each generic hardware error source.
* It provides the context for APEI hardware error timer/IRQ/SCI/NMI
* handler.
*
* estatus: memory buffer for error status block, allocated during
* HEST parsing.
*/
#define GHES_EXITING 0x0002
struct ghes {
union {
struct acpi_hest_generic *generic;
struct acpi_hest_generic_v2 *generic_v2;
};
struct acpi_hest_generic_status *estatus;
unsigned long flags;
union {
struct list_head list;
struct timer_list timer;
unsigned int irq;
};
struct device *dev;
struct list_head elist;
};
struct ghes_estatus_node {
struct llist_node llnode;
struct acpi_hest_generic *generic;
struct ghes *ghes;
int task_work_cpu;
struct callback_head task_work;
};
struct ghes_estatus_cache {
u32 estatus_len;
atomic_t count;
struct acpi_hest_generic *generic;
unsigned long long time_in;
struct rcu_head rcu;
};
enum {
GHES_SEV_NO = 0x0,
GHES_SEV_CORRECTED = 0x1,
GHES_SEV_RECOVERABLE = 0x2,
GHES_SEV_PANIC = 0x3,
};
#ifdef CONFIG_ACPI_APEI_GHES
/**
* ghes_register_vendor_record_notifier - register a notifier for vendor
* records that the kernel would otherwise ignore.
* @nb: pointer to the notifier_block structure of the event handler.
*
* return 0 : SUCCESS, non-zero : FAIL
*/
int ghes_register_vendor_record_notifier(struct notifier_block *nb);
/**
* ghes_unregister_vendor_record_notifier - unregister the previously
* registered vendor record notifier.
* @nb: pointer to the notifier_block structure of the vendor record handler.
*/
void ghes_unregister_vendor_record_notifier(struct notifier_block *nb);
struct list_head *ghes_get_devices(void);
void ghes_estatus_pool_region_free(unsigned long addr, u32 size);
#else
static inline struct list_head *ghes_get_devices(void) { return NULL; }
static inline void ghes_estatus_pool_region_free(unsigned long addr, u32 size) { return; }
#endif
int ghes_estatus_pool_init(unsigned int num_ghes);
static inline int acpi_hest_get_version(struct acpi_hest_generic_data *gdata)
{
return gdata->revision >> 8;
}
static inline void *acpi_hest_get_payload(struct acpi_hest_generic_data *gdata)
{
if (acpi_hest_get_version(gdata) >= 3)
return (void *)(((struct acpi_hest_generic_data_v300 *)(gdata)) + 1);
return gdata + 1;
}
static inline int acpi_hest_get_error_length(struct acpi_hest_generic_data *gdata)
{
return ((struct acpi_hest_generic_data *)(gdata))->error_data_length;
}
static inline int acpi_hest_get_size(struct acpi_hest_generic_data *gdata)
{
if (acpi_hest_get_version(gdata) >= 3)
return sizeof(struct acpi_hest_generic_data_v300);
return sizeof(struct acpi_hest_generic_data);
}
static inline int acpi_hest_get_record_size(struct acpi_hest_generic_data *gdata)
{
return (acpi_hest_get_size(gdata) + acpi_hest_get_error_length(gdata));
}
static inline void *acpi_hest_get_next(struct acpi_hest_generic_data *gdata)
{
return (void *)(gdata) + acpi_hest_get_record_size(gdata);
}
#define apei_estatus_for_each_section(estatus, section) \
for (section = (struct acpi_hest_generic_data *)(estatus + 1); \
(void *)section - (void *)(estatus + 1) < estatus->data_length; \
section = acpi_hest_get_next(section))
#ifdef CONFIG_ACPI_APEI_SEA
int ghes_notify_sea(void);
#else
static inline int ghes_notify_sea(void) { return -ENOENT; }
#endif
struct notifier_block;
extern void ghes_register_report_chain(struct notifier_block *nb);
extern void ghes_unregister_report_chain(struct notifier_block *nb);
#endif /* GHES_H */
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| platform | Folder | 0755 |
|
|
| acbuffer.h | File | 8.92 KB | 0644 |
|
| acconfig.h | File | 7.4 KB | 0644 |
|
| acexcep.h | File | 16.94 KB | 0644 |
|
| acnames.h | File | 2.22 KB | 0644 |
|
| acoutput.h | File | 16.67 KB | 0644 |
|
| acpi.h | File | 1.33 KB | 0644 |
|
| acpi_bus.h | File | 29.52 KB | 0644 |
|
| acpi_drivers.h | File | 2.65 KB | 0644 |
|
| acpi_io.h | File | 723 B | 0644 |
|
| acpi_lpat.h | File | 1.16 KB | 0644 |
|
| acpi_numa.h | File | 1.03 KB | 0644 |
|
| acpiosxf.h | File | 11.35 KB | 0644 |
|
| acpixf.h | File | 31.27 KB | 0644 |
|
| acrestyp.h | File | 19.5 KB | 0644 |
|
| actbl.h | File | 18.41 KB | 0644 |
|
| actbl1.h | File | 48.34 KB | 0644 |
|
| actbl2.h | File | 80.7 KB | 0644 |
|
| actbl3.h | File | 22.61 KB | 0644 |
|
| actypes.h | File | 42.36 KB | 0644 |
|
| acuuid.h | File | 3.59 KB | 0644 |
|
| apei.h | File | 1.4 KB | 0644 |
|
| battery.h | File | 768 B | 0644 |
|
| button.h | File | 401 B | 0644 |
|
| cppc_acpi.h | File | 6.21 KB | 0644 |
|
| ghes.h | File | 3.56 KB | 0644 |
|
| hed.h | File | 370 B | 0644 |
|
| nfit.h | File | 351 B | 0644 |
|
| nhlt.h | File | 5.3 KB | 0644 |
|
| pcc.h | File | 1.44 KB | 0644 |
|
| proc_cap_intel.h | File | 1.35 KB | 0644 |
|
| processor.h | File | 12.04 KB | 0644 |
|
| reboot.h | File | 201 B | 0644 |
|
| video.h | File | 3.74 KB | 0644 |
|