User can change the size by passing the size after comma like
        "--call-graph dwarf,4096".
 
+       When "fp" recording is used, perf tries to save stack enties
+       up to the number specified in sysctl.kernel.perf_event_max_stack
+       by default.  User can change the number by passing it after comma
+       like "--call-graph fp,32".
+
 -q::
 --quiet::
        Don't print any message, useful for scripting.
 
 #include "callchain.h"
 #include "branch.h"
 #include "symbol.h"
+#include "util.h"
 #include "../perf.h"
 
 #define CALLCHAIN_PARAM_DEFAULT                        \
        do {
                /* Framepointer style */
                if (!strncmp(name, "fp", sizeof("fp"))) {
-                       if (!strtok_r(NULL, ",", &saveptr)) {
-                               param->record_mode = CALLCHAIN_FP;
-                               ret = 0;
-                       } else
-                               pr_err("callchain: No more arguments "
-                                      "needed for --call-graph fp\n");
+                       ret = 0;
+                       param->record_mode = CALLCHAIN_FP;
+
+                       tok = strtok_r(NULL, ",", &saveptr);
+                       if (tok) {
+                               unsigned long size;
+
+                               size = strtoul(tok, &name, 0);
+                               if (size < (unsigned) sysctl__max_stack())
+                                       param->max_stack = size;
+                       }
                        break;
 
                /* Dwarf style */