sparc: Touch NMI watchdog when walking cpus and calling printk
With the increase in number of CPUs calls to functions that dump output to console (e.g., arch_trigger_all_cpu_backtrace) can take a long time to complete. If IRQs are disabled eventually the NMI watchdog kicks in and creates more havoc. Avoid by telling the NMI watchdog everything is ok. Signed-off-by: David Ahern <david.ahern@oracle.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
					parent
					
						
							
								b5aff55d89
							
						
					
				
			
			
				commit
				
					
						31aaa98c24
					
				
			
		
					 1 changed files with 4 additions and 0 deletions
				
			
		| 
						 | 
					@ -287,6 +287,8 @@ void arch_trigger_all_cpu_backtrace(bool include_self)
 | 
				
			||||||
			printk("             TPC[%lx] O7[%lx] I7[%lx] RPC[%lx]\n",
 | 
								printk("             TPC[%lx] O7[%lx] I7[%lx] RPC[%lx]\n",
 | 
				
			||||||
			       gp->tpc, gp->o7, gp->i7, gp->rpc);
 | 
								       gp->tpc, gp->o7, gp->i7, gp->rpc);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							touch_nmi_watchdog();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(global_cpu_snapshot, 0, sizeof(global_cpu_snapshot));
 | 
						memset(global_cpu_snapshot, 0, sizeof(global_cpu_snapshot));
 | 
				
			||||||
| 
						 | 
					@ -362,6 +364,8 @@ static void pmu_snapshot_all_cpus(void)
 | 
				
			||||||
		       (cpu == this_cpu ? '*' : ' '), cpu,
 | 
							       (cpu == this_cpu ? '*' : ' '), cpu,
 | 
				
			||||||
		       pp->pcr[0], pp->pcr[1], pp->pcr[2], pp->pcr[3],
 | 
							       pp->pcr[0], pp->pcr[1], pp->pcr[2], pp->pcr[3],
 | 
				
			||||||
		       pp->pic[0], pp->pic[1], pp->pic[2], pp->pic[3]);
 | 
							       pp->pic[0], pp->pic[1], pp->pic[2], pp->pic[3]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							touch_nmi_watchdog();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	memset(global_cpu_snapshot, 0, sizeof(global_cpu_snapshot));
 | 
						memset(global_cpu_snapshot, 0, sizeof(global_cpu_snapshot));
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue