ghes               90 drivers/acpi/apei/ghes.c static inline bool is_hest_type_generic_v2(struct ghes *ghes)
ghes               92 drivers/acpi/apei/ghes.c 	return ghes->generic->header.type == ACPI_HEST_TYPE_GENERIC_ERROR_V2;
ghes              191 drivers/acpi/apei/ghes.c static int map_gen_v2(struct ghes *ghes)
ghes              193 drivers/acpi/apei/ghes.c 	return apei_map_generic_address(&ghes->generic_v2->read_ack_register);
ghes              196 drivers/acpi/apei/ghes.c static void unmap_gen_v2(struct ghes *ghes)
ghes              198 drivers/acpi/apei/ghes.c 	apei_unmap_generic_address(&ghes->generic_v2->read_ack_register);
ghes              216 drivers/acpi/apei/ghes.c static struct ghes *ghes_new(struct acpi_hest_generic *generic)
ghes              218 drivers/acpi/apei/ghes.c 	struct ghes *ghes;
ghes              222 drivers/acpi/apei/ghes.c 	ghes = kzalloc(sizeof(*ghes), GFP_KERNEL);
ghes              223 drivers/acpi/apei/ghes.c 	if (!ghes)
ghes              226 drivers/acpi/apei/ghes.c 	ghes->generic = generic;
ghes              227 drivers/acpi/apei/ghes.c 	if (is_hest_type_generic_v2(ghes)) {
ghes              228 drivers/acpi/apei/ghes.c 		rc = map_gen_v2(ghes);
ghes              244 drivers/acpi/apei/ghes.c 	ghes->estatus = kmalloc(error_block_length, GFP_KERNEL);
ghes              245 drivers/acpi/apei/ghes.c 	if (!ghes->estatus) {
ghes              250 drivers/acpi/apei/ghes.c 	return ghes;
ghes              255 drivers/acpi/apei/ghes.c 	if (is_hest_type_generic_v2(ghes))
ghes              256 drivers/acpi/apei/ghes.c 		unmap_gen_v2(ghes);
ghes              258 drivers/acpi/apei/ghes.c 	kfree(ghes);
ghes              262 drivers/acpi/apei/ghes.c static void ghes_fini(struct ghes *ghes)
ghes              264 drivers/acpi/apei/ghes.c 	kfree(ghes->estatus);
ghes              265 drivers/acpi/apei/ghes.c 	apei_unmap_generic_address(&ghes->generic->error_status_address);
ghes              266 drivers/acpi/apei/ghes.c 	if (is_hest_type_generic_v2(ghes))
ghes              267 drivers/acpi/apei/ghes.c 		unmap_gen_v2(ghes);
ghes              312 drivers/acpi/apei/ghes.c static int __ghes_check_estatus(struct ghes *ghes,
ghes              322 drivers/acpi/apei/ghes.c 	if (len > ghes->generic->error_block_length) {
ghes              336 drivers/acpi/apei/ghes.c static int __ghes_peek_estatus(struct ghes *ghes,
ghes              340 drivers/acpi/apei/ghes.c 	struct acpi_hest_generic *g = ghes->generic;
ghes              378 drivers/acpi/apei/ghes.c static int ghes_read_estatus(struct ghes *ghes,
ghes              384 drivers/acpi/apei/ghes.c 	rc = __ghes_peek_estatus(ghes, estatus, buf_paddr, fixmap_idx);
ghes              388 drivers/acpi/apei/ghes.c 	rc = __ghes_check_estatus(ghes, estatus);
ghes              396 drivers/acpi/apei/ghes.c static void ghes_clear_estatus(struct ghes *ghes,
ghes              413 drivers/acpi/apei/ghes.c 	if (is_hest_type_generic_v2(ghes))
ghes              414 drivers/acpi/apei/ghes.c 		ghes_ack_error(ghes->generic_v2);
ghes              493 drivers/acpi/apei/ghes.c static void ghes_do_proc(struct ghes *ghes,
ghes              706 drivers/acpi/apei/ghes.c static void __ghes_panic(struct ghes *ghes,
ghes              710 drivers/acpi/apei/ghes.c 	__ghes_print_estatus(KERN_EMERG, ghes->generic, estatus);
ghes              712 drivers/acpi/apei/ghes.c 	ghes_clear_estatus(ghes, estatus, buf_paddr, fixmap_idx);
ghes              720 drivers/acpi/apei/ghes.c static int ghes_proc(struct ghes *ghes)
ghes              722 drivers/acpi/apei/ghes.c 	struct acpi_hest_generic_status *estatus = ghes->estatus;
ghes              726 drivers/acpi/apei/ghes.c 	rc = ghes_read_estatus(ghes, estatus, &buf_paddr, FIX_APEI_GHES_IRQ);
ghes              731 drivers/acpi/apei/ghes.c 		__ghes_panic(ghes, estatus, buf_paddr, FIX_APEI_GHES_IRQ);
ghes              734 drivers/acpi/apei/ghes.c 		if (ghes_print_estatus(NULL, ghes->generic, estatus))
ghes              735 drivers/acpi/apei/ghes.c 			ghes_estatus_cache_add(ghes->generic, estatus);
ghes              737 drivers/acpi/apei/ghes.c 	ghes_do_proc(ghes, estatus);
ghes              740 drivers/acpi/apei/ghes.c 	ghes_clear_estatus(ghes, estatus, buf_paddr, FIX_APEI_GHES_IRQ);
ghes              745 drivers/acpi/apei/ghes.c static void ghes_add_timer(struct ghes *ghes)
ghes              747 drivers/acpi/apei/ghes.c 	struct acpi_hest_generic *g = ghes->generic;
ghes              756 drivers/acpi/apei/ghes.c 	ghes->timer.expires = round_jiffies_relative(expire);
ghes              757 drivers/acpi/apei/ghes.c 	add_timer(&ghes->timer);
ghes              762 drivers/acpi/apei/ghes.c 	struct ghes *ghes = from_timer(ghes, t, timer);
ghes              766 drivers/acpi/apei/ghes.c 	ghes_proc(ghes);
ghes              768 drivers/acpi/apei/ghes.c 	if (!(ghes->flags & GHES_EXITING))
ghes              769 drivers/acpi/apei/ghes.c 		ghes_add_timer(ghes);
ghes              774 drivers/acpi/apei/ghes.c 	struct ghes *ghes = data;
ghes              779 drivers/acpi/apei/ghes.c 	rc = ghes_proc(ghes);
ghes              790 drivers/acpi/apei/ghes.c 	struct ghes *ghes;
ghes              796 drivers/acpi/apei/ghes.c 	list_for_each_entry_rcu(ghes, &ghes_hed, list) {
ghes              797 drivers/acpi/apei/ghes.c 		if (!ghes_proc(ghes))
ghes              845 drivers/acpi/apei/ghes.c 		ghes_do_proc(estatus_node->ghes, estatus);
ghes              880 drivers/acpi/apei/ghes.c static int ghes_in_nmi_queue_one_entry(struct ghes *ghes,
ghes              892 drivers/acpi/apei/ghes.c 	rc = __ghes_peek_estatus(ghes, &tmp_header, &buf_paddr, fixmap_idx);
ghes              894 drivers/acpi/apei/ghes.c 		ghes_clear_estatus(ghes, &tmp_header, buf_paddr, fixmap_idx);
ghes              898 drivers/acpi/apei/ghes.c 	rc = __ghes_check_estatus(ghes, &tmp_header);
ghes              900 drivers/acpi/apei/ghes.c 		ghes_clear_estatus(ghes, &tmp_header, buf_paddr, fixmap_idx);
ghes              910 drivers/acpi/apei/ghes.c 	estatus_node->ghes = ghes;
ghes              911 drivers/acpi/apei/ghes.c 	estatus_node->generic = ghes->generic;
ghes              915 drivers/acpi/apei/ghes.c 		ghes_clear_estatus(ghes, estatus, buf_paddr, fixmap_idx);
ghes              923 drivers/acpi/apei/ghes.c 		__ghes_panic(ghes, estatus, buf_paddr, fixmap_idx);
ghes              926 drivers/acpi/apei/ghes.c 	ghes_clear_estatus(ghes, &tmp_header, buf_paddr, fixmap_idx);
ghes              947 drivers/acpi/apei/ghes.c 	struct ghes *ghes;
ghes              950 drivers/acpi/apei/ghes.c 	list_for_each_entry_rcu(ghes, rcu_list, list) {
ghes              951 drivers/acpi/apei/ghes.c 		if (!ghes_in_nmi_queue_one_entry(ghes, fixmap_idx))
ghes              981 drivers/acpi/apei/ghes.c static void ghes_sea_add(struct ghes *ghes)
ghes              984 drivers/acpi/apei/ghes.c 	list_add_rcu(&ghes->list, &ghes_sea);
ghes              988 drivers/acpi/apei/ghes.c static void ghes_sea_remove(struct ghes *ghes)
ghes              991 drivers/acpi/apei/ghes.c 	list_del_rcu(&ghes->list);
ghes              996 drivers/acpi/apei/ghes.c static inline void ghes_sea_add(struct ghes *ghes) { }
ghes              997 drivers/acpi/apei/ghes.c static inline void ghes_sea_remove(struct ghes *ghes) { }
ghes             1026 drivers/acpi/apei/ghes.c static void ghes_nmi_add(struct ghes *ghes)
ghes             1031 drivers/acpi/apei/ghes.c 	list_add_rcu(&ghes->list, &ghes_nmi);
ghes             1035 drivers/acpi/apei/ghes.c static void ghes_nmi_remove(struct ghes *ghes)
ghes             1038 drivers/acpi/apei/ghes.c 	list_del_rcu(&ghes->list);
ghes             1049 drivers/acpi/apei/ghes.c static inline void ghes_nmi_add(struct ghes *ghes) { }
ghes             1050 drivers/acpi/apei/ghes.c static inline void ghes_nmi_remove(struct ghes *ghes) { }
ghes             1058 drivers/acpi/apei/ghes.c static int __ghes_sdei_callback(struct ghes *ghes,
ghes             1061 drivers/acpi/apei/ghes.c 	if (!ghes_in_nmi_queue_one_entry(ghes, fixmap_idx)) {
ghes             1074 drivers/acpi/apei/ghes.c 	struct ghes *ghes = arg;
ghes             1078 drivers/acpi/apei/ghes.c 	err = __ghes_sdei_callback(ghes, FIX_APEI_GHES_SDEI_NORMAL);
ghes             1088 drivers/acpi/apei/ghes.c 	struct ghes *ghes = arg;
ghes             1092 drivers/acpi/apei/ghes.c 	err = __ghes_sdei_callback(ghes, FIX_APEI_GHES_SDEI_CRITICAL);
ghes             1098 drivers/acpi/apei/ghes.c static int apei_sdei_register_ghes(struct ghes *ghes)
ghes             1103 drivers/acpi/apei/ghes.c 	return sdei_register_ghes(ghes, ghes_sdei_normal_callback,
ghes             1107 drivers/acpi/apei/ghes.c static int apei_sdei_unregister_ghes(struct ghes *ghes)
ghes             1112 drivers/acpi/apei/ghes.c 	return sdei_unregister_ghes(ghes);
ghes             1118 drivers/acpi/apei/ghes.c 	struct ghes *ghes = NULL;
ghes             1175 drivers/acpi/apei/ghes.c 	ghes = ghes_new(generic);
ghes             1176 drivers/acpi/apei/ghes.c 	if (IS_ERR(ghes)) {
ghes             1177 drivers/acpi/apei/ghes.c 		rc = PTR_ERR(ghes);
ghes             1178 drivers/acpi/apei/ghes.c 		ghes = NULL;
ghes             1184 drivers/acpi/apei/ghes.c 		timer_setup(&ghes->timer, ghes_poll_func, TIMER_DEFERRABLE);
ghes             1185 drivers/acpi/apei/ghes.c 		ghes_add_timer(ghes);
ghes             1189 drivers/acpi/apei/ghes.c 		rc = acpi_gsi_to_irq(generic->notify.vector, &ghes->irq);
ghes             1195 drivers/acpi/apei/ghes.c 		rc = request_irq(ghes->irq, ghes_irq_func, IRQF_SHARED,
ghes             1196 drivers/acpi/apei/ghes.c 				 "GHES IRQ", ghes);
ghes             1210 drivers/acpi/apei/ghes.c 		list_add_rcu(&ghes->list, &ghes_hed);
ghes             1215 drivers/acpi/apei/ghes.c 		ghes_sea_add(ghes);
ghes             1218 drivers/acpi/apei/ghes.c 		ghes_nmi_add(ghes);
ghes             1221 drivers/acpi/apei/ghes.c 		rc = apei_sdei_register_ghes(ghes);
ghes             1229 drivers/acpi/apei/ghes.c 	platform_set_drvdata(ghes_dev, ghes);
ghes             1231 drivers/acpi/apei/ghes.c 	ghes_edac_register(ghes, &ghes_dev->dev);
ghes             1235 drivers/acpi/apei/ghes.c 	ghes_proc(ghes);
ghes             1241 drivers/acpi/apei/ghes.c 	if (ghes) {
ghes             1242 drivers/acpi/apei/ghes.c 		ghes_fini(ghes);
ghes             1243 drivers/acpi/apei/ghes.c 		kfree(ghes);
ghes             1251 drivers/acpi/apei/ghes.c 	struct ghes *ghes;
ghes             1254 drivers/acpi/apei/ghes.c 	ghes = platform_get_drvdata(ghes_dev);
ghes             1255 drivers/acpi/apei/ghes.c 	generic = ghes->generic;
ghes             1257 drivers/acpi/apei/ghes.c 	ghes->flags |= GHES_EXITING;
ghes             1260 drivers/acpi/apei/ghes.c 		del_timer_sync(&ghes->timer);
ghes             1263 drivers/acpi/apei/ghes.c 		free_irq(ghes->irq, ghes);
ghes             1270 drivers/acpi/apei/ghes.c 		list_del_rcu(&ghes->list);
ghes             1278 drivers/acpi/apei/ghes.c 		ghes_sea_remove(ghes);
ghes             1281 drivers/acpi/apei/ghes.c 		ghes_nmi_remove(ghes);
ghes             1284 drivers/acpi/apei/ghes.c 		rc = apei_sdei_unregister_ghes(ghes);
ghes             1293 drivers/acpi/apei/ghes.c 	ghes_fini(ghes);
ghes             1295 drivers/acpi/apei/ghes.c 	ghes_edac_unregister(ghes);
ghes             1297 drivers/acpi/apei/ghes.c 	kfree(ghes);
ghes               20 drivers/edac/ghes_edac.c 	struct ghes *ghes;
ghes              474 drivers/edac/ghes_edac.c int ghes_edac_register(struct ghes *ghes, struct device *dev)
ghes              524 drivers/edac/ghes_edac.c 	pvt->ghes	= ghes;
ghes              584 drivers/edac/ghes_edac.c void ghes_edac_unregister(struct ghes *ghes)
ghes              892 drivers/firmware/arm_sdei.c int sdei_register_ghes(struct ghes *ghes, sdei_event_callback *normal_cb,
ghes              903 drivers/firmware/arm_sdei.c 	event_num = ghes->generic->notify.vector;
ghes              922 drivers/firmware/arm_sdei.c 	err = sdei_event_register(event_num, cb, ghes);
ghes              929 drivers/firmware/arm_sdei.c int sdei_unregister_ghes(struct ghes *ghes)
ghes              933 drivers/firmware/arm_sdei.c 	u32 event_num = ghes->generic->notify.vector;
ghes               35 include/acpi/ghes.h 	struct ghes *ghes;
ghes               60 include/acpi/ghes.h int ghes_edac_register(struct ghes *ghes, struct device *dev);
ghes               62 include/acpi/ghes.h void ghes_edac_unregister(struct ghes *ghes);
ghes               70 include/acpi/ghes.h static inline int ghes_edac_register(struct ghes *ghes, struct device *dev)
ghes               75 include/acpi/ghes.h static inline void ghes_edac_unregister(struct ghes *ghes)
ghes               47 include/linux/arm_sdei.h int sdei_register_ghes(struct ghes *ghes, sdei_event_callback *normal_cb,
ghes               49 include/linux/arm_sdei.h int sdei_unregister_ghes(struct ghes *ghes);