<div dir="ltr">> 

Where are you calling it from?  Don't call it from irq context, which is the context that USB urbs are called from.<div><br></div><div>I am currently calling it from an irq context, in the fusb302_irq_work() function of the in-tree fusb302.c driver. My relevant patch is below.</div><div><br><div> > Do you have a link to your driver code so it can be reviewed?<br><br></div></div><div>The relevant change is here: <a href="https://github.com/Abbotta4/linux/commit/fbfbb1db54d6bd1b10d56c9e86d08d0ecfe9abdc">https://github.com/Abbotta4/linux/commit/fbfbb1db54d6bd1b10d56c9e86d08d0ecfe9abdc</a><br></div><div>You mentioned that this shouldn't be called in an irq context, but the unplug event is detected with an irq. Where should I be calling kernel_power_off() if not in the irq context? I think one way of doing this would be to set a value that a heartbeat function reads in the irq, and then the heartbeat function calls the shutdown, but this driver doesn't use a heartbeat. Where else would I handle this?</div><div><br></div><div>Thank you,</div><div>Drew</div></div>