• David Johnson's avatar
    Move emergency_restart call out of bh in Linux ipod module on aarch64/powerpc64. · 4a801b22
    David Johnson authored
    Calling emergency_restart directly from the softirq/bh ipod icmp handler
    has a history of causing panics prior to the intended shutdown on both
    aarch64 and powerpc64.  The panics didn't inhibit the intended reboot,
    but on OPAL-booted ppc64le, were very noisy, because each "hyperthread"
    cpu attempted a dealloc of the irq handler from within the handler, so
    the console got a noisy stack trace for each thread.
    
    So now if IPOD_QUEUE_RESTART is defined (and it is by default on aarch64
    and powerpc64), we move the call to emergency_restart into a dedicated,
    preallocated workqueue thread, whose sole purpose is to (eventually)
    reboot the machine.  Wasteful, but we don't want to need to initialize
    anything, or use a shared workqueue, if an IPOD is really necessary, at
    IPOD time.
    4a801b22
ipod.c 8.55 KB