summaryrefslogtreecommitdiffstats
path: root/core/opal.c
diff options
context:
space:
mode:
authorStewart Smith <stewart@linux.vnet.ibm.com>2016-11-16 16:04:59 +1100
committerStewart Smith <stewart@linux.vnet.ibm.com>2016-11-24 17:22:00 +1100
commitb6a729e118f42dae88ebf70a09a7e2aa4f788fdc (patch)
tree3ddceeedbd0046a6a80945335f11b5f1ad5f55f6 /core/opal.c
parent6c077e9ed08c7af7db56ef6f334d204f78e6de8d (diff)
downloadtalos-skiboot-b6a729e118f42dae88ebf70a09a7e2aa4f788fdc.tar.gz
talos-skiboot-b6a729e118f42dae88ebf70a09a7e2aa4f788fdc.zip
Limit number of "Poller recursion detected" errors to display
In some error conditions, we could spiral out of control on this and spend all of our time printing the exact same backtrace. Limit it to 16 times, because 16 is a nice number. Cc: stable Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com> Reviewed-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com> Signed-off-by: Stewart Smith <stewart@linux.vnet.ibm.com>
Diffstat (limited to 'core/opal.c')
-rw-r--r--core/opal.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/opal.c b/core/opal.c
index 61a2adb1..269ab80d 100644
--- a/core/opal.c
+++ b/core/opal.c
@@ -313,9 +313,10 @@ void opal_run_pollers(void)
{
struct opal_poll_entry *poll_ent;
static int pollers_with_lock_warnings = 0;
+ static int poller_recursion = 0;
/* Don't re-enter on this CPU */
- if (this_cpu()->in_poller) {
+ if (this_cpu()->in_poller && poller_recursion < 16) {
/**
* @fwts-label OPALPollerRecursion
* @fwts-advice Recursion detected in opal_run_pollers(). This
@@ -324,6 +325,9 @@ void opal_run_pollers(void)
*/
prlog(PR_ERR, "OPAL: Poller recursion detected.\n");
backtrace();
+ poller_recursion++;
+ if (poller_recursion == 16)
+ prlog(PR_ERR, "OPAL: Squashing future poller recursion warnings (>16).\n");
return;
}
this_cpu()->in_poller = true;
OpenPOWER on IntegriCloud