Extend CMOS POST code logging to store extra data
This can be used to indicate sub-state within a POST code range which can assist in debugging BIOS hangs. For example this can be used to indicate which device is about to be initialized so if the system hangs while talking to that device it can be identified. Change-Id: I2f8155155f09fe9e242ebb7204f0b5cba3a1fa1e Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: https://gerrit.chromium.org/gerrit/58104 Reviewed-on: http://review.coreboot.org/4229 Tested-by: build bot (Jenkins) Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Stefan Reinauer
						Stefan Reinauer
					
				
			
			
				
	
			
			
			
						parent
						
							e807c34a5e
						
					
				
				
					commit
					d5686fe23b
				
			| @@ -72,6 +72,11 @@ void console_init(void); | ||||
| void console_tx_byte(unsigned char byte); | ||||
| void console_tx_flush(void); | ||||
| void post_code(u8 value); | ||||
| #if CONFIG_CMOS_POST_EXTRA | ||||
| void post_log_extra(u32 value); | ||||
| #else | ||||
| #define post_log_extra(x) do {} while (0) | ||||
| #endif | ||||
| /* this function is weak and can be overridden by a mainboard function. */ | ||||
| void mainboard_post(u8 value); | ||||
| void __attribute__ ((noreturn)) die(const char *msg); | ||||
|   | ||||
| @@ -140,6 +140,7 @@ struct elog_event_data_me_extended { | ||||
|  | ||||
| /* Last post code from previous boot */ | ||||
| #define ELOG_TYPE_LAST_POST_CODE          0xa3 | ||||
| #define ELOG_TYPE_POST_EXTRA              0xa6 | ||||
|  | ||||
| /* EC Shutdown Reason */ | ||||
| #define ELOG_TYPE_EC_SHUTDOWN             0xa5 | ||||
|   | ||||
| @@ -202,11 +202,20 @@ static inline enum cb_err get_option(void *dest __attribute__((unused)), | ||||
| # endif | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  *    0 = Bank Select Magic | ||||
|  *    1 = Bank 0 POST | ||||
|  *    2 = Bank 1 POST | ||||
|  *  3-6 = BANK 0 Extra log | ||||
|  * 7-10 = BANK 1 Extra log | ||||
|  */ | ||||
| #define CMOS_POST_BANK_OFFSET     (CMOS_POST_OFFSET) | ||||
| #define CMOS_POST_BANK_0_MAGIC    0x80 | ||||
| #define CMOS_POST_BANK_0_OFFSET   (CMOS_POST_OFFSET + 1) | ||||
| #define CMOS_POST_BANK_0_EXTRA    (CMOS_POST_OFFSET + 3) | ||||
| #define CMOS_POST_BANK_1_MAGIC    0x81 | ||||
| #define CMOS_POST_BANK_1_OFFSET   (CMOS_POST_OFFSET + 2) | ||||
| #define CMOS_POST_BANK_1_EXTRA    (CMOS_POST_OFFSET + 7) | ||||
|  | ||||
| void cmos_post_log(void); | ||||
| #endif /* CONFIG_CMOS_POST */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user