)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
