Patchwork [4/4] acpi: s4: also check for WARN_ON messages found

login
register
mail settings
Submitter Colin King
Date Nov. 15, 2012, 12:05 p.m.
Message ID <1352981144-3586-5-git-send-email-colin.king@canonical.com>
Download mbox | patch
Permalink /patch/199263/
State Accepted
Headers show

Comments

Colin King - Nov. 15, 2012, 12:05 p.m.
From: Colin Ian King <colin.king@canonical.com>

The s4 test should test for any WARN_ON messages we find while
scanning for oops messages since these need to be checked too.

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/acpi/s4/s4.c |   22 +++++++++++++++++-----
 1 file changed, 17 insertions(+), 5 deletions(-)
Alex Hung - Nov. 22, 2012, 2:27 a.m.
On 11/15/2012 08:05 PM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> The s4 test should test for any WARN_ON messages we find while
> scanning for oops messages since these need to be checked too.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>   src/acpi/s4/s4.c |   22 +++++++++++++++++-----
>   1 file changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/src/acpi/s4/s4.c b/src/acpi/s4/s4.c
> index 2d0f548..1306582 100644
> --- a/src/acpi/s4/s4.c
> +++ b/src/acpi/s4/s4.c
> @@ -69,10 +69,11 @@ static int s4_init(fwts_framework *fw)
>   }
>
>   static void s4_check_log(fwts_framework *fw,
> -	fwts_list *klog, int *errors, int *oopses)
> +	fwts_list *klog, int *errors, int *oopses, int *warn_ons)
>   {
>   	int error;
>   	int oops;
> +	int warn_on;
>
>   	/* Check for kernel errors reported in the log */
>   	if (fwts_klog_pm_check(fw, NULL, klog, &error))
> @@ -87,9 +88,10 @@ static void s4_check_log(fwts_framework *fw,
>   		fwts_log_error(fw, "Error parsing kernel log.");
>   	*errors += error;
>
> -	if (fwts_oops_check(fw, klog, &oops))
> +	if (fwts_oops_check(fw, klog, &oops, &warn_on))
>   		fwts_log_error(fw, "Error parsing kernel log.");
>   	*oopses += oops;
> +	*warn_ons += warn_on;
>   }
>
>   static int s4_hibernate(fwts_framework *fw,
> @@ -97,6 +99,7 @@ static int s4_hibernate(fwts_framework *fw,
>   	int *hw_errors,
>   	int *pm_errors,
>   	int *klog_oopses,
> +	int *klog_warn_ons,
>   	int *failed_alloc_image,
>   	int percent)
>   {
> @@ -171,7 +174,7 @@ static int s4_hibernate(fwts_framework *fw,
>   		return FWTS_ERROR;
>   	}
>
> -	s4_check_log(fw, klog, klog_errors, klog_oopses);
> +	s4_check_log(fw, klog, klog_errors, klog_oopses, klog_warn_ons);
>
>   	fwts_progress_message(fw, percent, "(Checking for PM errors)");
>
> @@ -245,6 +248,7 @@ static int s4_test_multiple(fwts_framework *fw)
>   	int hw_errors = 0;
>   	int pm_errors = 0;
>   	int klog_oopses = 0;
> +	int klog_warn_ons = 0;
>   	int awake_delay = s4_min_delay * 1000;
>   	int delta = (int)(s4_delay_delta * 1000.0);
>   	int tracing_buffer_size = -1;
> @@ -263,7 +267,8 @@ static int s4_test_multiple(fwts_framework *fw)
>   		fwts_log_info(fw, "S4 cycle %d of %d\n",i+1,s4_multiple);
>
>   		if (s4_hibernate(fw,
> -			&klog_errors, &hw_errors, &pm_errors, &klog_oopses,
> +			&klog_errors, &hw_errors, &pm_errors,
> +			&klog_oopses, &klog_warn_ons,
>   			&failed_alloc_image, percent) != FWTS_OK) {
>   			fwts_log_error(fw, "Aborting S4 multiple tests.");
>   			return FWTS_ERROR;
> @@ -290,7 +295,8 @@ static int s4_test_multiple(fwts_framework *fw)
>   					failed_alloc_image = 0;
>
>   					if (s4_hibernate(fw,
> -						&klog_errors, &hw_errors, &pm_errors, &klog_oopses,
> +						&klog_errors, &hw_errors, &pm_errors,
> +						&klog_oopses, &klog_warn_ons,
>   						&failed_alloc_image, percent) != FWTS_OK) {
>   						fwts_log_error(fw, "Aborting S4 multiple tests.");
>   						ret = FWTS_ABORTED;
> @@ -351,6 +357,12 @@ static int s4_test_multiple(fwts_framework *fw)
>   	else
>   		fwts_passed(fw, "No kernel oopses detected.");
>
> +	if (klog_warn_ons > 0)
> +		fwts_log_info(fw, "Found %d kernel WARN_ON warnings.", klog_warn_ons);
> +	else
> +		fwts_passed(fw, "No kernel WARN_ON warnings detected.");
> +
> +
>   	/* Really passed or failed? */
>   	if ((klog_errors + pm_errors + hw_errors + klog_oopses) > 0) {
>                   fwts_log_info(fw, "Found %d errors and %d oopses doing %d hibernate/resume cycle(s).",
>
Acked-by: Alex Hung <alex.hung@canonical.com>
Keng-Yu Lin - Nov. 22, 2012, 5:57 a.m.
On Thu, Nov 15, 2012 at 8:05 PM, Colin King <colin.king@canonical.com> wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> The s4 test should test for any WARN_ON messages we find while
> scanning for oops messages since these need to be checked too.
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/acpi/s4/s4.c |   22 +++++++++++++++++-----
>  1 file changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/src/acpi/s4/s4.c b/src/acpi/s4/s4.c
> index 2d0f548..1306582 100644
> --- a/src/acpi/s4/s4.c
> +++ b/src/acpi/s4/s4.c
> @@ -69,10 +69,11 @@ static int s4_init(fwts_framework *fw)
>  }
>
>  static void s4_check_log(fwts_framework *fw,
> -       fwts_list *klog, int *errors, int *oopses)
> +       fwts_list *klog, int *errors, int *oopses, int *warn_ons)
>  {
>         int error;
>         int oops;
> +       int warn_on;
>
>         /* Check for kernel errors reported in the log */
>         if (fwts_klog_pm_check(fw, NULL, klog, &error))
> @@ -87,9 +88,10 @@ static void s4_check_log(fwts_framework *fw,
>                 fwts_log_error(fw, "Error parsing kernel log.");
>         *errors += error;
>
> -       if (fwts_oops_check(fw, klog, &oops))
> +       if (fwts_oops_check(fw, klog, &oops, &warn_on))
>                 fwts_log_error(fw, "Error parsing kernel log.");
>         *oopses += oops;
> +       *warn_ons += warn_on;
>  }
>
>  static int s4_hibernate(fwts_framework *fw,
> @@ -97,6 +99,7 @@ static int s4_hibernate(fwts_framework *fw,
>         int *hw_errors,
>         int *pm_errors,
>         int *klog_oopses,
> +       int *klog_warn_ons,
>         int *failed_alloc_image,
>         int percent)
>  {
> @@ -171,7 +174,7 @@ static int s4_hibernate(fwts_framework *fw,
>                 return FWTS_ERROR;
>         }
>
> -       s4_check_log(fw, klog, klog_errors, klog_oopses);
> +       s4_check_log(fw, klog, klog_errors, klog_oopses, klog_warn_ons);
>
>         fwts_progress_message(fw, percent, "(Checking for PM errors)");
>
> @@ -245,6 +248,7 @@ static int s4_test_multiple(fwts_framework *fw)
>         int hw_errors = 0;
>         int pm_errors = 0;
>         int klog_oopses = 0;
> +       int klog_warn_ons = 0;
>         int awake_delay = s4_min_delay * 1000;
>         int delta = (int)(s4_delay_delta * 1000.0);
>         int tracing_buffer_size = -1;
> @@ -263,7 +267,8 @@ static int s4_test_multiple(fwts_framework *fw)
>                 fwts_log_info(fw, "S4 cycle %d of %d\n",i+1,s4_multiple);
>
>                 if (s4_hibernate(fw,
> -                       &klog_errors, &hw_errors, &pm_errors, &klog_oopses,
> +                       &klog_errors, &hw_errors, &pm_errors,
> +                       &klog_oopses, &klog_warn_ons,
>                         &failed_alloc_image, percent) != FWTS_OK) {
>                         fwts_log_error(fw, "Aborting S4 multiple tests.");
>                         return FWTS_ERROR;
> @@ -290,7 +295,8 @@ static int s4_test_multiple(fwts_framework *fw)
>                                         failed_alloc_image = 0;
>
>                                         if (s4_hibernate(fw,
> -                                               &klog_errors, &hw_errors, &pm_errors, &klog_oopses,
> +                                               &klog_errors, &hw_errors, &pm_errors,
> +                                               &klog_oopses, &klog_warn_ons,
>                                                 &failed_alloc_image, percent) != FWTS_OK) {
>                                                 fwts_log_error(fw, "Aborting S4 multiple tests.");
>                                                 ret = FWTS_ABORTED;
> @@ -351,6 +357,12 @@ static int s4_test_multiple(fwts_framework *fw)
>         else
>                 fwts_passed(fw, "No kernel oopses detected.");
>
> +       if (klog_warn_ons > 0)
> +               fwts_log_info(fw, "Found %d kernel WARN_ON warnings.", klog_warn_ons);
> +       else
> +               fwts_passed(fw, "No kernel WARN_ON warnings detected.");
> +
> +
>         /* Really passed or failed? */
>         if ((klog_errors + pm_errors + hw_errors + klog_oopses) > 0) {
>                  fwts_log_info(fw, "Found %d errors and %d oopses doing %d hibernate/resume cycle(s).",
> --
> 1.7.10.4
>
Acked-by: Keng-Yu Lin <kengyu@canonical.com>

Patch

diff --git a/src/acpi/s4/s4.c b/src/acpi/s4/s4.c
index 2d0f548..1306582 100644
--- a/src/acpi/s4/s4.c
+++ b/src/acpi/s4/s4.c
@@ -69,10 +69,11 @@  static int s4_init(fwts_framework *fw)
 }
 
 static void s4_check_log(fwts_framework *fw,
-	fwts_list *klog, int *errors, int *oopses)
+	fwts_list *klog, int *errors, int *oopses, int *warn_ons)
 {
 	int error;
 	int oops;
+	int warn_on;
 
 	/* Check for kernel errors reported in the log */
 	if (fwts_klog_pm_check(fw, NULL, klog, &error))
@@ -87,9 +88,10 @@  static void s4_check_log(fwts_framework *fw,
 		fwts_log_error(fw, "Error parsing kernel log.");
 	*errors += error;
 
-	if (fwts_oops_check(fw, klog, &oops))
+	if (fwts_oops_check(fw, klog, &oops, &warn_on))
 		fwts_log_error(fw, "Error parsing kernel log.");
 	*oopses += oops;
+	*warn_ons += warn_on;
 }
 
 static int s4_hibernate(fwts_framework *fw,
@@ -97,6 +99,7 @@  static int s4_hibernate(fwts_framework *fw,
 	int *hw_errors,
 	int *pm_errors,
 	int *klog_oopses,
+	int *klog_warn_ons,
 	int *failed_alloc_image,
 	int percent)
 {
@@ -171,7 +174,7 @@  static int s4_hibernate(fwts_framework *fw,
 		return FWTS_ERROR;
 	}
 
-	s4_check_log(fw, klog, klog_errors, klog_oopses);
+	s4_check_log(fw, klog, klog_errors, klog_oopses, klog_warn_ons);
 
 	fwts_progress_message(fw, percent, "(Checking for PM errors)");
 
@@ -245,6 +248,7 @@  static int s4_test_multiple(fwts_framework *fw)
 	int hw_errors = 0;
 	int pm_errors = 0;
 	int klog_oopses = 0;
+	int klog_warn_ons = 0;
 	int awake_delay = s4_min_delay * 1000;
 	int delta = (int)(s4_delay_delta * 1000.0);
 	int tracing_buffer_size = -1;
@@ -263,7 +267,8 @@  static int s4_test_multiple(fwts_framework *fw)
 		fwts_log_info(fw, "S4 cycle %d of %d\n",i+1,s4_multiple);
 
 		if (s4_hibernate(fw,
-			&klog_errors, &hw_errors, &pm_errors, &klog_oopses,
+			&klog_errors, &hw_errors, &pm_errors,
+			&klog_oopses, &klog_warn_ons,
 			&failed_alloc_image, percent) != FWTS_OK) {
 			fwts_log_error(fw, "Aborting S4 multiple tests.");
 			return FWTS_ERROR;
@@ -290,7 +295,8 @@  static int s4_test_multiple(fwts_framework *fw)
 					failed_alloc_image = 0;
 
 					if (s4_hibernate(fw,
-						&klog_errors, &hw_errors, &pm_errors, &klog_oopses,
+						&klog_errors, &hw_errors, &pm_errors,
+						&klog_oopses, &klog_warn_ons,
 						&failed_alloc_image, percent) != FWTS_OK) {
 						fwts_log_error(fw, "Aborting S4 multiple tests.");
 						ret = FWTS_ABORTED;
@@ -351,6 +357,12 @@  static int s4_test_multiple(fwts_framework *fw)
 	else
 		fwts_passed(fw, "No kernel oopses detected.");
 
+	if (klog_warn_ons > 0)
+		fwts_log_info(fw, "Found %d kernel WARN_ON warnings.", klog_warn_ons);
+	else
+		fwts_passed(fw, "No kernel WARN_ON warnings detected.");
+
+
 	/* Really passed or failed? */
 	if ((klog_errors + pm_errors + hw_errors + klog_oopses) > 0) {
                 fwts_log_info(fw, "Found %d errors and %d oopses doing %d hibernate/resume cycle(s).",