)]}'
{
  "commit": "097e4311cda952dfb047f2a49d35aa5de500d474",
  "tree": "9dc6dff0a1c21956573c584478be689113e72e0c",
  "parents": [
    "b2d6504761a50b9493eb4b20f6e188b673f20c32"
  ],
  "author": {
    "name": "Like Xu",
    "email": "like.xu@linux.intel.com",
    "time": "Sat Jun 13 16:09:49 2020 +0800"
  },
  "committer": {
    "name": "Peter Zijlstra",
    "email": "peterz@infradead.org",
    "time": "Thu Jul 02 15:51:46 2020 +0200"
  },
  "message": "perf/x86: Add constraint to create guest LBR event without hw counter\n\nThe hypervisor may request the perf subsystem to schedule a time window\nto directly access the LBR records msrs for its own use. Normally, it would\ncreate a guest LBR event with callstack mode enabled, which is scheduled\nalong with other ordinary LBR events on the host but in an exclusive way.\n\nTo avoid wasting a counter for the guest LBR event, the perf tracks its\nhw-\u003eidx via INTEL_PMC_IDX_FIXED_VLBR and assigns it with a fake VLBR\ncounter with the help of new vlbr_constraint. As with the BTS event,\nthere is actually no hardware counter assigned for the guest LBR event.\n\nSigned-off-by: Like Xu \u003clike.xu@linux.intel.com\u003e\nSigned-off-by: Peter Zijlstra (Intel) \u003cpeterz@infradead.org\u003e\nLink: https://lkml.kernel.org/r/20200514083054.62538-5-like.xu@linux.intel.com\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "15cb7af7db1821aa2245058e3c9cf9b15d1426e3",
      "old_mode": 33188,
      "old_path": "arch/x86/events/core.c",
      "new_id": "d740c861724cc7d717cd4061a887571c2c55f602",
      "new_mode": 33188,
      "new_path": "arch/x86/events/core.c"
    },
    {
      "type": "modify",
      "old_id": "8dac4c61bf7638f9edb0db394432791d64732294",
      "old_mode": 33188,
      "old_path": "arch/x86/events/intel/core.c",
      "new_id": "51e1fba7b1d119bb0cb63ec8bc72bd2830622df5",
      "new_mode": 33188,
      "new_path": "arch/x86/events/intel/core.c"
    },
    {
      "type": "modify",
      "old_id": "2ed3f2a51bdfd3a47374a58cb1117e6690fd9f6a",
      "old_mode": 33188,
      "old_path": "arch/x86/events/intel/lbr.c",
      "new_id": "d285d26c1578aab2b44aec213fed0574176b5432",
      "new_mode": 33188,
      "new_path": "arch/x86/events/intel/lbr.c"
    },
    {
      "type": "modify",
      "old_id": "eb37f6c43c964c65750944c93235b3dd51cab513",
      "old_mode": 33188,
      "old_path": "arch/x86/events/perf_event.h",
      "new_id": "77a6dd66bd9ae8c103759030929ee3c5f517ba1d",
      "new_mode": 33188,
      "new_path": "arch/x86/events/perf_event.h"
    },
    {
      "type": "modify",
      "old_id": "5d2c30f0df025ed006d7965308770d0313c4be69",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/perf_event.h",
      "new_id": "2df707311d1703a635edae6e7a4b7f6ba34e8b64",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/perf_event.h"
    }
  ]
}
