From patchwork Fri Sep 2 14:59:05 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Valentin Longchamp X-Patchwork-Id: 113152 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 01451B6F6F for ; Sat, 3 Sep 2011 01:00:22 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id B4FD628185; Fri, 2 Sep 2011 16:59:55 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id S8zrkk9pzAxl; Fri, 2 Sep 2011 16:59:55 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 33D2C281C7; Fri, 2 Sep 2011 16:59:25 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id E19F62817F for ; Fri, 2 Sep 2011 16:59:20 +0200 (CEST) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id aPEcwXVsi4Ys for ; Fri, 2 Sep 2011 16:59:18 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from mail.ch.keymile.com (mail.ch.keymile.com [193.17.201.103]) by theia.denx.de (Postfix) with SMTP id D874C28189 for ; Fri, 2 Sep 2011 16:59:14 +0200 (CEST) Received: from SRVCHBER1212.ch.keymile.net ([172.31.32.9]) by eSafe SMTP Relay 1314887018; Fri, 02 Sep 2011 16:48:21 +0200 Received: from chber1-10533x.ch.keymile.net ([172.31.40.3]) by SRVCHBER1212.ch.keymile.net with Microsoft SMTPSVC(6.0.3790.4675); Fri, 2 Sep 2011 16:59:12 +0200 From: Valentin Longchamp To: u-boot@lists.denx.de Date: Fri, 2 Sep 2011 16:59:05 +0200 Message-Id: <1314975550-15766-4-git-send-email-valentin.longchamp@keymile.com> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1314975550-15766-1-git-send-email-valentin.longchamp@keymile.com> References: <1314975550-15766-1-git-send-email-valentin.longchamp@keymile.com> X-OriginalArrivalTime: 02 Sep 2011 14:59:12.0548 (UTC) FILETIME=[E0393E40:01CC6980] X-ESAFE-STATUS: Mail allowed X-ESAFE-DETAILS: Cc: Valentin Longchamp , Holger Brunck Subject: [U-Boot] [PATCH v3 3/8] POST: add post_log_res field for post results in global data X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.9 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de The current post_log_word in global data is currently split into 2x 16 bits: half for the test start, half for the test success. Since we alredy have more than 16 POST tests defined and more could be defined, this may result in an overflow and the post_output_backlog would not work for the tests defined further of these 16 positions. An additional field is added to global data so that we can now support up to 32 (depending of architecture) tests. The post_log_word is only used to record the start of the test and the new field post_log_res for the test success (or failure). The post_output_backlog is for this change also adapted. Signed-off-by: Valentin Longchamp Signed-off-by: Holger Brunck Acked-by: Mike Frysinger --- arch/arm/include/asm/global_data.h | 1 + arch/blackfin/include/asm/global_data.h | 1 + arch/nios2/include/asm/global_data.h | 1 + arch/powerpc/include/asm/global_data.h | 1 + arch/sparc/include/asm/global_data.h | 1 + post/post.c | 9 +++++---- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/arch/arm/include/asm/global_data.h b/arch/arm/include/asm/global_data.h index 4ab17ae..efcf652 100644 --- a/arch/arm/include/asm/global_data.h +++ b/arch/arm/include/asm/global_data.h @@ -77,6 +77,7 @@ typedef struct global_data { char env_buf[32]; /* buffer for getenv() before reloc. */ #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) unsigned long post_log_word; /* Record POST activities */ + unsigned long post_log_res; /* success of POST test */ unsigned long post_init_f_time; /* When post_init_f started */ #endif } gd_t; diff --git a/arch/blackfin/include/asm/global_data.h b/arch/blackfin/include/asm/global_data.h index eba5e93..62cd631 100644 --- a/arch/blackfin/include/asm/global_data.h +++ b/arch/blackfin/include/asm/global_data.h @@ -50,6 +50,7 @@ typedef struct global_data { unsigned long env_valid; /* Checksum of Environment valid? */ #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) unsigned long post_log_word; /* Record POST activities */ + unsigned long post_log_res; /* success of POST test */ unsigned long post_init_f_time; /* When post_init_f started */ #endif diff --git a/arch/nios2/include/asm/global_data.h b/arch/nios2/include/asm/global_data.h index 2c4a719..1f0bbe8 100644 --- a/arch/nios2/include/asm/global_data.h +++ b/arch/nios2/include/asm/global_data.h @@ -34,6 +34,7 @@ typedef struct global_data { unsigned long env_valid; /* Checksum of Environment valid */ #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) unsigned long post_log_word; /* Record POST activities */ + unsigned long post_log_res; /* success of POST test */ unsigned long post_init_f_time; /* When post_init_f started */ #endif void **jt; /* Standalone app jump table */ diff --git a/arch/powerpc/include/asm/global_data.h b/arch/powerpc/include/asm/global_data.h index a33ca2f..fbfe8c0 100644 --- a/arch/powerpc/include/asm/global_data.h +++ b/arch/powerpc/include/asm/global_data.h @@ -160,6 +160,7 @@ typedef struct global_data { #endif #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) unsigned long post_log_word; /* Record POST activities */ + unsigned long post_log_res; /* success of POST test */ unsigned long post_init_f_time; /* When post_init_f started */ #endif #ifdef CONFIG_BOARD_TYPES diff --git a/arch/sparc/include/asm/global_data.h b/arch/sparc/include/asm/global_data.h index 9b14674..4b62250 100644 --- a/arch/sparc/include/asm/global_data.h +++ b/arch/sparc/include/asm/global_data.h @@ -58,6 +58,7 @@ typedef struct global_data { #endif #if defined(CONFIG_POST) || defined(CONFIG_LOGBUFFER) unsigned long post_log_word; /* Record POST activities */ + unsigned long post_log_res; /* success of POST test */ unsigned long post_init_f_time; /* When post_init_f started */ #endif #ifdef CONFIG_BOARD_TYPES diff --git a/post/post.c b/post/post.c index 1b7f2aa..03c521f 100644 --- a/post/post.c +++ b/post/post.c @@ -100,6 +100,7 @@ void post_bootmode_init (void) /* Reset activity record */ gd->post_log_word = 0; + gd->post_log_res = 0; } int post_bootmode_get (unsigned int *last_test) @@ -123,12 +124,12 @@ int post_bootmode_get (unsigned int *last_test) /* POST tests run before relocation only mark status bits .... */ static void post_log_mark_start ( unsigned long testid ) { - gd->post_log_word |= (testid)<<16; + gd->post_log_word |= testid; } static void post_log_mark_succ ( unsigned long testid ) { - gd->post_log_word |= testid; + gd->post_log_res |= testid; } /* ... and the messages are output once we are relocated */ @@ -137,9 +138,9 @@ void post_output_backlog ( void ) int j; for (j = 0; j < post_list_size; j++) { - if (gd->post_log_word & (post_list[j].testid<<16)) { + if (gd->post_log_word & (post_list[j].testid)) { post_log ("POST %s ", post_list[j].cmd); - if (gd->post_log_word & post_list[j].testid) + if (gd->post_log_res & post_list[j].testid) post_log ("PASSED\n"); else { post_log ("FAILED\n");