}
        t = list_entry(rnp->gp_tasks->prev,
                       struct task_struct, rcu_node_entry);
-       list_for_each_entry_continue(t, &rnp->blkd_tasks, rcu_node_entry)
+       list_for_each_entry_continue(t, &rnp->blkd_tasks, rcu_node_entry) {
+               /*
+                * We could be printing a lot while holding a spinlock.
+                * Avoid triggering hard lockup.
+                */
+               touch_nmi_watchdog();
                sched_show_task(t);
+       }
        raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
 }
 
        char *ticks_title;
        unsigned long ticks_value;
 
+       /*
+        * We could be printing a lot while holding a spinlock.  Avoid
+        * triggering hard lockup.
+        */
+       touch_nmi_watchdog();
+
        if (rsp->gpnum == rdp->gpnum) {
                ticks_title = "ticks this GP";
                ticks_value = rdp->ticks_this_gp;