panic: add TAINT_SOFTLOCKUP
This taint flag will be set if the system has ever entered a softlockup state. Similar to TAINT_WARN it is useful to know whether or not the system has been in a softlockup state when debugging. [akpm@linux-foundation.org: apply the taint before calling panic()] Signed-off-by: Josh Hunt <johunt@akamai.com> Cc: Jason Baron <jbaron@akamai.com> Cc: Randy Dunlap <rdunlap@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
					parent
					
						
							
								1da85fdff5
							
						
					
				
			
			
				commit
				
					
						69361eef90
					
				
			
		
					 5 changed files with 6 additions and 0 deletions
				
			
		|  | @ -268,6 +268,8 @@ characters, each representing a particular tainted value. | ||||||
|  14: 'E' if an unsigned module has been loaded in a kernel supporting |  14: 'E' if an unsigned module has been loaded in a kernel supporting | ||||||
|      module signature. |      module signature. | ||||||
| 
 | 
 | ||||||
|  |  15: 'L' if a soft lockup has previously occurred on the system. | ||||||
|  | 
 | ||||||
| The primary reason for the 'Tainted: ' string is to tell kernel | The primary reason for the 'Tainted: ' string is to tell kernel | ||||||
| debuggers if this is a clean kernel or if anything unusual has | debuggers if this is a clean kernel or if anything unusual has | ||||||
| occurred.  Tainting is permanent: even if an offending module is | occurred.  Tainting is permanent: even if an offending module is | ||||||
|  |  | ||||||
|  | @ -826,6 +826,7 @@ can be ORed together: | ||||||
| 4096 - An out-of-tree module has been loaded. | 4096 - An out-of-tree module has been loaded. | ||||||
| 8192 - An unsigned module has been loaded in a kernel supporting module | 8192 - An unsigned module has been loaded in a kernel supporting module | ||||||
|        signature. |        signature. | ||||||
|  | 16384 - A soft lockup has previously occurred on the system. | ||||||
| 
 | 
 | ||||||
| ============================================================== | ============================================================== | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -470,6 +470,7 @@ extern enum system_states { | ||||||
| #define TAINT_FIRMWARE_WORKAROUND	11 | #define TAINT_FIRMWARE_WORKAROUND	11 | ||||||
| #define TAINT_OOT_MODULE		12 | #define TAINT_OOT_MODULE		12 | ||||||
| #define TAINT_UNSIGNED_MODULE		13 | #define TAINT_UNSIGNED_MODULE		13 | ||||||
|  | #define TAINT_SOFTLOCKUP		14 | ||||||
| 
 | 
 | ||||||
| extern const char hex_asc[]; | extern const char hex_asc[]; | ||||||
| #define hex_asc_lo(x)	hex_asc[((x) & 0x0f)] | #define hex_asc_lo(x)	hex_asc[((x) & 0x0f)] | ||||||
|  |  | ||||||
|  | @ -224,6 +224,7 @@ static const struct tnt tnts[] = { | ||||||
| 	{ TAINT_FIRMWARE_WORKAROUND,	'I', ' ' }, | 	{ TAINT_FIRMWARE_WORKAROUND,	'I', ' ' }, | ||||||
| 	{ TAINT_OOT_MODULE,		'O', ' ' }, | 	{ TAINT_OOT_MODULE,		'O', ' ' }, | ||||||
| 	{ TAINT_UNSIGNED_MODULE,	'E', ' ' }, | 	{ TAINT_UNSIGNED_MODULE,	'E', ' ' }, | ||||||
|  | 	{ TAINT_SOFTLOCKUP,		'L', ' ' }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /**
 | /**
 | ||||||
|  |  | ||||||
|  | @ -368,6 +368,7 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer) | ||||||
| 			smp_mb__after_atomic(); | 			smp_mb__after_atomic(); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | 		add_taint(TAINT_SOFTLOCKUP, LOCKDEP_STILL_OK); | ||||||
| 		if (softlockup_panic) | 		if (softlockup_panic) | ||||||
| 			panic("softlockup: hung tasks"); | 			panic("softlockup: hung tasks"); | ||||||
| 		__this_cpu_write(soft_watchdog_warn, true); | 		__this_cpu_write(soft_watchdog_warn, true); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Josh Hunt
				Josh Hunt