aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/acpi/apei/ghes.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 0d099a24f776..e53bef6cf53c 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -852,6 +852,8 @@ static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs)
852 if (ghes_read_estatus(ghes, 1)) { 852 if (ghes_read_estatus(ghes, 1)) {
853 ghes_clear_estatus(ghes); 853 ghes_clear_estatus(ghes);
854 continue; 854 continue;
855 } else {
856 ret = NMI_HANDLED;
855 } 857 }
856 858
857 sev = ghes_severity(ghes->estatus->error_severity); 859 sev = ghes_severity(ghes->estatus->error_severity);
@@ -863,12 +865,11 @@ static int ghes_notify_nmi(unsigned int cmd, struct pt_regs *regs)
863 865
864 __process_error(ghes); 866 __process_error(ghes);
865 ghes_clear_estatus(ghes); 867 ghes_clear_estatus(ghes);
866
867 ret = NMI_HANDLED;
868 } 868 }
869 869
870#ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG 870#ifdef CONFIG_ARCH_HAVE_NMI_SAFE_CMPXCHG
871 irq_work_queue(&ghes_proc_irq_work); 871 if (ret == NMI_HANDLED)
872 irq_work_queue(&ghes_proc_irq_work);
872#endif 873#endif
873 atomic_dec(&ghes_in_nmi); 874 atomic_dec(&ghes_in_nmi);
874 return ret; 875 return ret;