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);