<div dir="ltr">Hi<div>The background:</div><div>Interrupts are disabled just before stopping other cores during handling restart:</div><div>See example from:</div><div>/arch/arm/kernel/reboot.c:</div><div>/*<br> * Restart requires that the secondary CPUs stop performing any activity<br> * while the primary CPU resets the system. <br> */<br>void machine_restart(char *cmd)<br>{<br>    local_irq_disable();<br>  smp_send_stop();<br><br>    do_kernel_restart(cmd);<br><br>     /* Give a grace period for failure to restart of 1s */<br>        mdelay(1000);<br><br>       /* Whoops - the platform was unable to reboot. Tell the user! */<br>      printk("Reboot failed -- System halted\n");<br> while (1);<br>}<br></div><div><br></div><div>where function do_kernel_restart() invoke restart handlers:</div><div>void do_kernel_restart(char *cmd)<br>{<br>     atomic_notifier_call_chain(&restart_handler_list, reboot_mode, cmd);<br>}<br></div><div><br></div><div>One and the only one! restart handler is mine where I do i2c transaction in order to reset the board. i2c transaction requires interrupts to be enabled.</div><div>Can I safely do: local_irq_enable on my handler entry and local_irq_disable just before exit? In the meantime I will do i2c_smbus transaction and add some 500ms delay before disable back irq just to make sure transaction is succeed.</div><div>I know that it is strange question, but in company in which I work I received subtask to get to know. The other alternative is to get response by execute test with for example loop of 10 thousands of restarts.</div><div><br></div><div><br></div></div>