From: Paul E. McKenney Date: Fri, 22 Jun 2018 13:22:20 +0000 (-0700) Subject: doc: Add design documentation on interruption of NMI handlers X-Git-Tag: v4.20-rc1~172^2^2~5 X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=commitdiff_plain;h=e77cb32558a7bd0e996b7e203158a7fbf1a663fb;p=linux.git doc: Add design documentation on interruption of NMI handlers Make Requirements.html talk about how NMI handlers can take what appear to RCU to be normal interrupts. Signed-off-by: Paul E. McKenney --- diff --git a/Documentation/RCU/Design/Requirements/Requirements.html b/Documentation/RCU/Design/Requirements/Requirements.html index 49690228b1c6..089a8e8faac1 100644 --- a/Documentation/RCU/Design/Requirements/Requirements.html +++ b/Documentation/RCU/Design/Requirements/Requirements.html @@ -2275,6 +2275,17 @@ he also kindly surprised me with an algorithm that meets this requirement. +

+Furthermore, NMI handlers can be interrupted by what appear to RCU +to be normal interrupts. +One way that this can happen is for code that directly invokes +rcu_irq_enter() and rcu_irq_exit() to be called +from an NMI handler. +This astonishing fact of life prompted the current code structure, +which has rcu_irq_enter() invoking rcu_nmi_enter() +and rcu_irq_exit() invoking rcu_nmi_exit(). +And yes, I also learned of this requirement the hard way. +

Loadable Modules