diff options
author | Gavin Shan <shangw@linux.vnet.ibm.com> | 2013-06-27 01:46:46 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2013-06-30 21:10:33 -0400 |
commit | 56ca4fde90009094b1a46971de3879d5f2dd724e (patch) | |
tree | 2a49909519e9e41e0dd8d13ecdc82bae6dbfd75e /arch/powerpc/platforms/powernv | |
parent | 88b6d14b2bb48ea4f66fedfe671f98544395b305 (diff) |
powerpc/eeh: Refactor the output message
We needn't the the whole backtrace other than one-line message in
the error reporting interrupt handler. For errors triggered by
access PCI config space or MMIO, we replace "WARN(1, ...)" with
pr_err() and dump_stack(). The patch also adds more output messages
to indicate what EEH core is doing. Besides, some printk() are
replaced with pr_warning().
Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/platforms/powernv')
-rw-r--r-- | arch/powerpc/platforms/powernv/eeh-ioda.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/arch/powerpc/platforms/powernv/eeh-ioda.c b/arch/powerpc/platforms/powernv/eeh-ioda.c index 85025d7e6396..0cd1c4a71755 100644 --- a/arch/powerpc/platforms/powernv/eeh-ioda.c +++ b/arch/powerpc/platforms/powernv/eeh-ioda.c | |||
@@ -853,11 +853,14 @@ static int ioda_eeh_next_error(struct eeh_pe **pe) | |||
853 | phb->eeh_state |= PNV_EEH_STATE_REMOVED; | 853 | phb->eeh_state |= PNV_EEH_STATE_REMOVED; |
854 | } | 854 | } |
855 | 855 | ||
856 | WARN(1, "EEH: dead IOC detected\n"); | 856 | pr_err("EEH: dead IOC detected\n"); |
857 | ret = 4; | 857 | ret = 4; |
858 | goto out; | 858 | goto out; |
859 | } else if (severity == OPAL_EEH_SEV_INF) | 859 | } else if (severity == OPAL_EEH_SEV_INF) { |
860 | pr_info("EEH: IOC informative error " | ||
861 | "detected\n"); | ||
860 | ioda_eeh_hub_diag(hose); | 862 | ioda_eeh_hub_diag(hose); |
863 | } | ||
861 | 864 | ||
862 | break; | 865 | break; |
863 | case OPAL_EEH_PHB_ERROR: | 866 | case OPAL_EEH_PHB_ERROR: |
@@ -865,8 +868,8 @@ static int ioda_eeh_next_error(struct eeh_pe **pe) | |||
865 | if (ioda_eeh_get_phb_pe(hose, pe)) | 868 | if (ioda_eeh_get_phb_pe(hose, pe)) |
866 | break; | 869 | break; |
867 | 870 | ||
868 | WARN(1, "EEH: dead PHB#%x detected\n", | 871 | pr_err("EEH: dead PHB#%x detected\n", |
869 | hose->global_number); | 872 | hose->global_number); |
870 | phb->eeh_state |= PNV_EEH_STATE_REMOVED; | 873 | phb->eeh_state |= PNV_EEH_STATE_REMOVED; |
871 | ret = 3; | 874 | ret = 3; |
872 | goto out; | 875 | goto out; |
@@ -874,20 +877,24 @@ static int ioda_eeh_next_error(struct eeh_pe **pe) | |||
874 | if (ioda_eeh_get_phb_pe(hose, pe)) | 877 | if (ioda_eeh_get_phb_pe(hose, pe)) |
875 | break; | 878 | break; |
876 | 879 | ||
877 | WARN(1, "EEH: fenced PHB#%x detected\n", | 880 | pr_err("EEH: fenced PHB#%x detected\n", |
878 | hose->global_number); | 881 | hose->global_number); |
879 | ret = 2; | 882 | ret = 2; |
880 | goto out; | 883 | goto out; |
881 | } else if (severity == OPAL_EEH_SEV_INF) | 884 | } else if (severity == OPAL_EEH_SEV_INF) { |
885 | pr_info("EEH: PHB#%x informative error " | ||
886 | "detected\n", | ||
887 | hose->global_number); | ||
882 | ioda_eeh_phb_diag(hose); | 888 | ioda_eeh_phb_diag(hose); |
889 | } | ||
883 | 890 | ||
884 | break; | 891 | break; |
885 | case OPAL_EEH_PE_ERROR: | 892 | case OPAL_EEH_PE_ERROR: |
886 | if (ioda_eeh_get_pe(hose, frozen_pe_no, pe)) | 893 | if (ioda_eeh_get_pe(hose, frozen_pe_no, pe)) |
887 | break; | 894 | break; |
888 | 895 | ||
889 | WARN(1, "EEH: Frozen PE#%x on PHB#%x detected\n", | 896 | pr_err("EEH: Frozen PE#%x on PHB#%x detected\n", |
890 | (*pe)->addr, (*pe)->phb->global_number); | 897 | (*pe)->addr, (*pe)->phb->global_number); |
891 | ret = 1; | 898 | ret = 1; |
892 | goto out; | 899 | goto out; |
893 | } | 900 | } |