1. 06 May, 2022 1 commit
    • Guilherme G. Piccoli's avatar
      s390/consoles: improve panic notifiers reliability · 4ae46db9
      Guilherme G. Piccoli authored
      Currently many console drivers for s390 rely on panic/reboot notifiers
      to invoke callbacks on these events. The panic() function disables local
      IRQs, secondary CPUs and preemption, so callbacks invoked on panic are
      effectively running in atomic context.
      
      Happens that most of these console callbacks from s390 doesn't take the
      proper care with regards to atomic context, like taking spinlocks that
      might be taken in other function/CPU and hence will cause a lockup
      situation.
      
      The goal for this patch is to improve the notifiers reliability, acting
      on 4 console drivers, as detailed below:
      
      (1) con3215: changed a regular spinlock to the trylock alternative.
      
      (2) con3270: also changed a regular spinlock to its trylock counterpart,
      but here we also have another problem: raw3270_activate_view() takes a
      different spinlock. So, we worked a helper to validate if this other lock
      is safe to acquire, and if so, raw3270_activate_view() should be safe.
      
      Notice though that there is a functional change here: it's now possible
      to continue the notifier code [reaching con3270_wait_write() and
      con3270_rebuild_update()] without executing raw3270_activate_view().
      
      (3) sclp: a global lock is used heavily in the functions called from
      the notifier, so we added a check here - if the lock is taken already,
      we just bail-out, preventing the lockup.
      
      (4) sclp_vt220: same as (3), a lock validation was added to prevent the
      potential lockup problem.
      
      Besides (1)-(4), we also removed useless void functions, adding the
      code called from the notifier inside its own body, and changed the
      priority of such notifiers to execute late, since they are "heavyweight"
      for the panic environment, so we aim to reduce risks here.
      Changed return values to NOTIFY_DONE as well, the standard one.
      Signed-off-by: default avatarGuilherme G. Piccoli <gpiccoli@igalia.com>
      Link: https://lore.kernel.org/r/20220427224924.592546-14-gpiccoli@igalia.comSigned-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
      4ae46db9
  2. 27 Apr, 2022 1 commit
  3. 25 Apr, 2022 18 commits
  4. 24 Apr, 2022 8 commits
  5. 23 Apr, 2022 12 commits