)]}'
{
  "log": [
    {
      "commit": "b21c07040304b8716e38a4a0e4ab60f386357e61",
      "tree": "eb2cf03ec35b9a5090c0adaab659a766e02c3b10",
      "parents": [
        "4e58fb7305449cf8c5a86dd97dfc1812221be77c",
        "fb7ae981cb9fe8665b9da97e8734745e030c151d"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 31 11:52:01 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Dec 31 11:52:01 2009 -0800"
      },
      "message": "Merge branch \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  tracing: Fix sign fields in ftrace_define_fields_##call()\n  tracing/syscalls: Fix typo in SYSCALL_DEFINE0\n  tracing/kprobe: Show sign of fields in trace_kprobe format files\n  ksym_tracer: Remove trace_stat\n  ksym_tracer: Fix race when incrementing count\n  ksym_tracer: Fix to allow writing newline to ksym_trace_filter\n  ksym_tracer: Fix to make the tracer work\n  tracing: Kconfig spelling fixes and cleanups\n  tracing: Fix setting tracer specific options\n  Documentation: Update ftrace-design.txt\n  Documentation: Update tracepoint-analysis.txt\n  Documentation: Update mmiotrace.txt\n"
    },
    {
      "commit": "88f7a890d74137ab0d126a5d65679cd620f1a289",
      "tree": "93f6a908ae6eca32dd7b06be5a0cfb856c7877ac",
      "parents": [
        "40892367bc893f3abf6f5ca8ac2ed1c98ba26a77"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Dec 30 14:22:22 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 30 07:50:47 2009 +0100"
      },
      "message": "ksym_tracer: Fix to make the tracer work\n\nksym tracer doesn\u0027t work:\n\n # echo tasklist_lock:rw- \u003e ksym_trace_filter\n -bash: echo: write error: No such device\n\nIt\u0027s because we pass to perf_event_create_kernel_counter()\na cpu number which is not present.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c4B3AF19E.1010201@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e625cce1b73fb38b74e5387226534f7bcbfc36fe",
      "tree": "cfdecc4326845d0601d1447aad334e78d92d3316",
      "parents": [
        "ecb49d1a639acbacfc3771cae5ec07bed5df3847"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 18:02:06 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:34 2009 +0100"
      },
      "message": "perf_event: Convert to raw_spinlock\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "44234adcdce38f83c56e05f808ce656175b4beeb",
      "tree": "caff2ca7bbf4bf7c0b12652caf739bcc6db5f4d3",
      "parents": [
        "c937fe20cb6d9e24c6ad5f9f0c64d64c78411057"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 09 09:25:48 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 09 09:48:20 2009 +0100"
      },
      "message": "hw-breakpoints: Modify breakpoints without unregistering them\n\nCurrently, when ptrace needs to modify a breakpoint, like disabling\nit, changing its address, type or len, it calls\nmodify_user_hw_breakpoint(). This latter will perform the heavy and\nracy task of unregistering the old breakpoint and registering a new\none.\n\nThis is racy as someone else might steal the reserved breakpoint\nslot under us, which is undesired as the breakpoint is only\nsupposed to be modified, sometimes in the middle of a debugging\nworkflow. We don\u0027t want our slot to be stolen in the middle.\n\nSo instead of unregistering/registering the breakpoint, just\ndisable it while we modify its breakpoint fields and re-enable it\nafter if necessary.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c1260347148-5519-1-git-send-regression-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6ab8886326a1b9a3a8d164d8174e3c20703a03a2",
      "tree": "dab951be5106d9e4350916af6a9281045e6b2f80",
      "parents": [
        "2ff6cfd70720780234fdfea636218c2a62b31287"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Tue Dec 08 18:25:15 2009 +1100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 08 09:34:43 2009 +0100"
      },
      "message": "perf: hw_breakpoints: Fix percpu namespace clash\n\nToday\u0027s linux-next build failed with:\n\n  kernel/hw_breakpoint.c:86: error: \u0027task_bp_pinned\u0027 redeclared as different kind of symbol\n  ...\n\nCaused by commit dd17c8f72993f9461e9c19250e3f155d6d99df22 (\"percpu:\nremove per_cpu__ prefix\") from the percpu tree interacting with\ncommit 56053170ea2a2c0dc17420e9b94aa3ca51d80408 (\"hw-breakpoints:\nFix task-bound breakpoint slot allocation\") from the tip tree.\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003c20091208182515.bb6dda4a.sfr@canb.auug.org.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "56053170ea2a2c0dc17420e9b94aa3ca51d80408",
      "tree": "af54e4816e53a8bd0fb5852236c381ce53fadcf6",
      "parents": [
        "ed872d09effd54aa8ecb4ceedbc4dbab9592f337"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 07 06:46:48 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 07 07:05:28 2009 +0100"
      },
      "message": "hw-breakpoints: Fix task-bound breakpoint slot allocation\n\nWhatever the context nature of a breakpoint, we always perform the\nfollowing constraint checks before allocating it a slot:\n\n- Check the number of pinned breakpoint bound the concerned cpus\n- Check the max number of task-bound breakpoints that are belonging\n  to a task.\n- Add both and see if we have a reamining slot for the new breakpoint\n\nThis is the right thing to do when we are about to register a cpu-only\nbound breakpoint. But not if we are dealing with a task bound\nbreakpoint. What we want in this case is:\n\n- Check the number of pinned breakpoint bound the concerned cpus\n- Check the number of breakpoints that already belong to the task\n  in which the breakpoint to register is bound to.\n- Add both\n\nThis fixes a regression that makes the \"firefox -g\" command fail to\nregister breakpoints once we deal with a secondary thread.\n\nReported-by: Walt \u003cw41ter@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "b326e9560a28fc3e950637ef51847ed8f05c1335",
      "tree": "0804c8c4f28d4ae152d5e9205ce5a958f0d26b79",
      "parents": [
        "2f0993e0fb663c49e4d1e02654f6203246be4817"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Dec 05 09:44:31 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 06 08:27:18 2009 +0100"
      },
      "message": "hw-breakpoints: Use overflow handler instead of the event callback\n\nstruct perf_event::event callback was called when a breakpoint\ntriggers. But this is a rather opaque callback, pretty\ntied-only to the breakpoint API and not really integrated into perf\nas it triggers even when we don\u0027t overflow.\n\nWe prefer to use overflow_handler() as it fits into the perf events\nrules, being called only when we overflow.\n\nReported-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: \"K. Prasad\" \u003cprasad@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "2f0993e0fb663c49e4d1e02654f6203246be4817",
      "tree": "90d34048d453c25364b8ea41e6c2028a8621bd39",
      "parents": [
        "9cef30815b0f5b76e94a58d7674fcbf824d95579"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Dec 05 07:06:10 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 06 08:27:17 2009 +0100"
      },
      "message": "hw-breakpoints: Drop callback and task parameters from modify helper\n\nDrop the callback and task parameters from modify_user_hw_breakpoint().\nFor now we have no user that need to modify a breakpoint to the point\nof changing its handler or its task context.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: \"K. Prasad\" \u003cprasad@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "dd1853c3f493f6d22d9e5390b192a07b73d2ac0a",
      "tree": "af87226bcdc254ce2ab656530263e61f6552322b",
      "parents": [
        "5fa10b28e57f94a90535cfeafe89dcee9f47d540"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 27 04:55:54 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 27 06:22:59 2009 +0100"
      },
      "message": "hw-breakpoints: Use struct perf_event_attr to define kernel breakpoints\n\nKernel breakpoints are created using functions in which we pass\nbreakpoint parameters as individual variables: address, length\nand type.\n\nAlthough it fits well for x86, this just does not scale across\narchitectures that may support this api later as these may have\nmore or different needs. Pass in a perf_event_attr structure\ninstead because it is meant to evolve as much as possible into\na generic hardware breakpoint parameter structure.\n\nReported-by: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1259294154-5197-2-git-send-regression-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5fa10b28e57f94a90535cfeafe89dcee9f47d540",
      "tree": "951cf12a3b5b3a37546b4f6dd2994bebdac19dc0",
      "parents": [
        "b2e74a265ded1a185f762ebaab967e9e0d008dd8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Nov 27 04:55:53 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 27 06:22:58 2009 +0100"
      },
      "message": "hw-breakpoints: Use struct perf_event_attr to define user breakpoints\n\nIn-kernel user breakpoints are created using functions in which\nwe pass breakpoint parameters as individual variables: address,\nlength and type.\n\nAlthough it fits well for x86, this just does not scale across\narchictectures that may support this api later as these may have\nmore or different needs. Pass in a perf_event_attr structure\ninstead because it is meant to evolve as much as possible into\na generic hardware breakpoint parameter structure.\n\nReported-by: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1259294154-5197-1-git-send-regression-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "11e6635763bdc0e24b39a38876574660755acffc",
      "tree": "9020eb9a4a527803e42b5770ca7a2e81b29fe425",
      "parents": [
        "2c31b7958fd21df9fa04e5c36cda0f063ac70b27"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@linux-foundation.org",
        "time": "Wed Nov 25 23:01:50 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 26 09:34:04 2009 +0100"
      },
      "message": "kernel/hw_breakpoint.c: Fix local/global shadowing\n\nIf the new percpu tree is combined with the perf events tree\nthe following new warning triggers:\n\n kernel/hw_breakpoint.c: In function \u0027toggle_bp_task_slot\u0027:\n kernel/hw_breakpoint.c:151: warning: \u0027task_bp_pinned\u0027 is used uninitialized in this function\n\nBecause it\u0027s not valid anymore to define a local variable\nand a percpu variable (even if it\u0027s file scope local) with\nthe same name.\n\nRename the local variable to resolve this.\n\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nLKML-Reference: \u003c200911260701.nAQ71owx016356@imap1.linux-foundation.org\u003e\n[ v2: added changelog ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "605bfaee9078cd0b01d83402315389839ee4bb5c",
      "tree": "35c3af269b37347b689b3b212fc99d4ae9f719e5",
      "parents": [
        "c6567f642e20bcc79abed030f44be5b0d6da2ded"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Nov 26 05:35:42 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 26 09:29:21 2009 +0100"
      },
      "message": "hw-breakpoints: Simplify error handling in breakpoint creation requests\n\nThis simplifies the error handling when we create a breakpoint.\nWe don\u0027t need to check the NULL return value corner case anymore\nsince we have improved perf_event_create_kernel_counter() to\nalways return an error code in the failure case.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c1259210142-5714-3-git-send-regression-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fdf6bc95229821e3d9405eba28925b76e92b74d0",
      "tree": "be414077495ac0ef3b71abd163dc35d0e96b1318",
      "parents": [
        "e6db4876575f3fdd5b1df2cbff826df95ab9af6a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Nov 23 15:42:33 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 23 18:18:30 2009 +0100"
      },
      "message": "hw-breakpoints: Check the breakpoint params from perf tools\n\nPerf tools create perf events as disabled in the beginning.\nBreakpoints are then considered like ptrace temporary\nbreakpoints, only meant to reserve a breakpoint slot until we\nget all the necessary informations from the user.\n\nIn this case, we don\u0027t check the address that is breakpointed as\nit is NULL in the ptrace case.\n\nBut perf tools don\u0027t have the same purpose, events are created\ndisabled to wait for all events to be created before enabling\nall of them. We want to check the breakpoint parameters in this\ncase.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c1258987355-8751-2-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ba6909b719a5ccc0c8100d2895bb7ff557b2eeae",
      "tree": "b5658e01b10693a29a6e4b4fcf3a164b089a0ac2",
      "parents": [
        "acd1d7c1f8f3d848a3c5327dc09f8c1efb971678"
      ],
      "author": {
        "name": "K.Prasad",
        "email": "prasad@linux.vnet.ibm.com",
        "time": "Mon Nov 23 21:17:13 2009 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 23 18:18:29 2009 +0100"
      },
      "message": "hw-breakpoint: Attribute authorship of hw-breakpoint related files\n\nAttribute authorship to developers of hw-breakpoint related\nfiles.\n\nSigned-off-by: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c20091123154713.GA5593@in.ibm.com\u003e\n[ v2: moved it to latest -tip ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b3a75542d329ce4e1c66b293cefeb4429a2af043",
      "tree": "1b9398078ce51278f01752efc57a0040d2a16163",
      "parents": [
        "28889bf9e2db29747d58cd47a92d727f927c3aee"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 22 05:21:34 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 22 09:03:43 2009 +0100"
      },
      "message": "hw-breakpoints: Remove x86 specific headers from core file\n\nRemove asm/processor.h and asm/debugreg.h as these headers are\nnot used anymore in the hw-breakpoints core file.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c1258863695-10464-3-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f60d24d2ad04977b0bd9e3eb35dba2d2fa569af9",
      "tree": "b9335a41bce33a05985634a382a5adcf837dec43",
      "parents": [
        "9f6b3c2c30cfbb1166ce7e74a8f9fd93ae19d2de"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 10 10:17:07 2009 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 10 11:23:29 2009 +0100"
      },
      "message": "hw-breakpoints: Fix broken hw-breakpoint sample module\n\nThe hw-breakpoint sample module has been broken during the\nhw-breakpoint internals refactoring. Propagate the changes\nto it.\n\nReported-by: \"K. Prasad\" \u003cprasad@linux.vnet.ibm.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "ba1c813a6b9a0ef14d7112daf51270eff326f037",
      "tree": "353bc9fc05714961b182200ea0fc27aaa03097aa",
      "parents": [
        "24f1e32c60c45c89a997c73395b69c8af6f0a84e"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Sep 10 09:26:21 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 08 16:20:47 2009 +0100"
      },
      "message": "hw-breakpoints: Arbitrate access to pmu following registers constraints\n\nAllow or refuse to build a counter using the breakpoints pmu following\ngiven constraints.\n\nWe keep track of the pmu users by using three per cpu variables:\n\n- nr_cpu_bp_pinned stores the number of pinned cpu breakpoints counters\n  in the given cpu\n\n- nr_bp_flexible stores the number of non-pinned breakpoints counters\n  in the given cpu.\n\n- task_bp_pinned stores the number of pinned task breakpoints in a cpu\n\nThe latter is not a simple counter but gathers the number of tasks that\nhave n pinned breakpoints.\nConsidering HBP_NUM the number of available breakpoint address\nregisters:\n   task_bp_pinned[0] is the number of tasks having 1 breakpoint\n   task_bp_pinned[1] is the number of tasks having 2 breakpoints\n   [...]\n   task_bp_pinned[HBP_NUM - 1] is the number of tasks having the\n   maximum number of registers (HBP_NUM).\n\nWhen a breakpoint counter is created and wants an access to the pmu,\nwe evaluate the following constraints:\n\n\u003d\u003d Non-pinned counter \u003d\u003d\n\n- If attached to a single cpu, check:\n\n    (per_cpu(nr_bp_flexible, cpu) || (per_cpu(nr_cpu_bp_pinned, cpu)\n         + max(per_cpu(task_bp_pinned, cpu)))) \u003c HBP_NUM\n\n       -\u003e If there are already non-pinned counters in this cpu, it\n          means there is already a free slot for them.\n          Otherwise, we check that the maximum number of per task\n          breakpoints (for this cpu) plus the number of per cpu\n          breakpoint (for this cpu) doesn\u0027t cover every registers.\n\n- If attached to every cpus, check:\n\n    (per_cpu(nr_bp_flexible, *) || (max(per_cpu(nr_cpu_bp_pinned, *))\n           + max(per_cpu(task_bp_pinned, *)))) \u003c HBP_NUM\n\n       -\u003e This is roughly the same, except we check the number of per\n          cpu bp for every cpu and we keep the max one. Same for the\n          per tasks breakpoints.\n\n\u003d\u003d Pinned counter \u003d\u003d\n\n- If attached to a single cpu, check:\n\n       ((per_cpu(nr_bp_flexible, cpu) \u003e 1)\n            + per_cpu(nr_cpu_bp_pinned, cpu)\n            + max(per_cpu(task_bp_pinned, cpu))) \u003c HBP_NUM\n\n       -\u003e Same checks as before. But now the nr_bp_flexible, if any,\n          must keep one register at least (or flexible breakpoints will\n          never be be fed).\n\n- If attached to every cpus, check:\n\n      ((per_cpu(nr_bp_flexible, *) \u003e 1)\n           + max(per_cpu(nr_cpu_bp_pinned, *))\n           + max(per_cpu(task_bp_pinned, *))) \u003c HBP_NUM\n\nChanges in v2:\n\n- Counter -\u003e event rename\n\nChanges in v5:\n\n- Fix unreleased non-pinned task-bound-only counters. We only released\n  it in the first cpu. (Thanks to Paul Mackerras for reporting that)\n\nChanges in v6:\n\n- Currently, events scheduling are done in this order: cpu context\n  pinned + cpu context non-pinned + task context pinned + task context\n  non-pinned events. Then our current constraints are right theoretically\n  but not in practice, because non-pinned counters may be scheduled\n  before we can apply every possible pinned counters. So consider\n  non-pinned counters as pinned for now.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "24f1e32c60c45c89a997c73395b69c8af6f0a84e",
      "tree": "4f30f16e18cb4abbcf96b3b331e6a3f01bfa26e6",
      "parents": [
        "2da3e160cb3d226d87b907fab26850d838ed8d7c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 09 19:22:48 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 08 15:34:42 2009 +0100"
      },
      "message": "hw-breakpoints: Rewrite the hw-breakpoints layer on top of perf events\n\nThis patch rebase the implementation of the breakpoints API on top of\nperf events instances.\n\nEach breakpoints are now perf events that handle the\nregister scheduling, thread/cpu attachment, etc..\n\nThe new layering is now made as follows:\n\n       ptrace       kgdb      ftrace   perf syscall\n          \\          |          /         /\n           \\         |         /         /\n                                        /\n            Core breakpoint API        /\n                                      /\n                     |               /\n                     |              /\n\n              Breakpoints perf events\n\n                     |\n                     |\n\n               Breakpoints PMU ---- Debug Register constraints handling\n                                    (Part of core breakpoint API)\n                     |\n                     |\n\n             Hardware debug registers\n\nReasons of this rewrite:\n\n- Use the centralized/optimized pmu registers scheduling,\n  implying an easier arch integration\n- More powerful register handling: perf attributes (pinned/flexible\n  events, exclusive/non-exclusive, tunable period, etc...)\n\nImpact:\n\n- New perf ABI: the hardware breakpoints counters\n- Ptrace breakpoints setting remains tricky and still needs some per\n  thread breakpoints references.\n\nTodo (in the order):\n\n- Support breakpoints perf counter events for perf tools (ie: implement\n  perf_bpcounter_event())\n- Support from perf tools\n\nChanges in v2:\n\n- Follow the perf \"event \" rename\n- The ptrace regression have been fixed (ptrace breakpoint perf events\n  weren\u0027t released when a task ended)\n- Drop the struct hw_breakpoint and store generic fields in\n  perf_event_attr.\n- Separate core and arch specific headers, drop\n  asm-generic/hw_breakpoint.h and create linux/hw_breakpoint.h\n- Use new generic len/type for breakpoint\n- Handle off case: when breakpoints api is not supported by an arch\n\nChanges in v3:\n\n- Fix broken CONFIG_KVM, we need to propagate the breakpoint api\n  changes to kvm when we exit the guest and restore the bp registers\n  to the host.\n\nChanges in v4:\n\n- Drop the hw_breakpoint_restore() stub as it is only used by KVM\n- EXPORT_SYMBOL_GPL hw_breakpoint_restore() as KVM can be built as a\n  module\n- Restore the breakpoints unconditionally on kvm guest exit:\n  TIF_DEBUG_THREAD doesn\u0027t anymore cover every cases of running\n  breakpoints and vcpu-\u003earch.switch_db_regs might not always be\n  set when the guest used debug registers.\n  (Waiting for a reliable optimization)\n\nChanges in v5:\n\n- Split-up the asm-generic/hw-breakpoint.h moving to\n  linux/hw_breakpoint.h into a separate patch\n- Optimize the breakpoints restoring while switching from kvm guest\n  to host. We only want to restore the state if we have active\n  breakpoints to the host, otherwise we don\u0027t care about messed-up\n  address registers.\n- Add asm/hw_breakpoint.h to Kbuild\n- Fix bad breakpoint type in trace_selftest.c\n\nChanges in v6:\n\n- Fix wrong header inclusion in trace.h (triggered a build\n  error with CONFIG_FTRACE_SELFTEST\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jan Kiszka \u003cjan.kiszka@web.de\u003e\nCc: Jiri Slaby \u003cjirislaby@gmail.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\n"
    },
    {
      "commit": "62a038d34db26771756cf3689e36de638bedd2c4",
      "tree": "4b435b34474a889d8a5c82b687e981d9e09abc91",
      "parents": [
        "b332828c39326b1dca617f387dd15d12e81cd5f0"
      ],
      "author": {
        "name": "K.Prasad",
        "email": "prasad@linux.vnet.ibm.com",
        "time": "Mon Jun 01 23:43:33 2009 +0530"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 22:46:58 2009 +0200"
      },
      "message": "hw-breakpoints: introducing generic hardware breakpoint handler interfaces\n\nThis patch introduces the generic Hardware Breakpoint interfaces for both user\nand kernel space requests.\nThis core Api handles the hardware breakpoints through new helpers. It\nhandles the user-space breakpoints and kernel breakpoints in front of\narch implementation.\n\nOne can choose kernel wide breakpoints using the following helpers\nand passing them a generic struct hw_breakpoint:\n\n- register_kernel_hw_breakpoint()\n- unregister_kernel_hw_breakpoint()\n- modify_kernel_hw_breakpoint()\n\nOn the other side, you can choose per task breakpoints.\n\n- register_user_hw_breakpoint()\n- unregister_user_hw_breakpoint()\n- modify_user_hw_breakpoint()\n\n[ fweisbec@gmail.com: fix conflict against perfcounter ]\n\nOriginal-patch-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nReviewed-by: Alan Stern \u003cstern@rowland.harvard.edu\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    }
  ]
}
