)]}'
{
  "commit": "a2ceff5e555e664751bc653a4d9b133efa18c742",
  "tree": "07ec73c8b105b50f3f3363c3dd80a5b39f200d19",
  "parents": [
    "5c29934de29ddd7ecd913d83cad28e872f2e8c78"
  ],
  "author": {
    "name": "Michael Ellerman",
    "email": "michael@ellerman.id.au",
    "time": "Fri Mar 28 19:11:48 2008 +1100"
  },
  "committer": {
    "name": "Paul Mackerras",
    "email": "paulus@samba.org",
    "time": "Fri Mar 28 22:51:02 2008 +1100"
  },
  "message": "[POWERPC] Fix missed hardware breakpoints across multiple threads\n\nThere is a bug in the powerpc DABR (data access breakpoint) handling,\nwhich can result in us missing breakpoints if several threads are trying\nto break on the same address.\n\nThe circumstances are that do_page_fault() calls do_dabr(), this clears\nthe DABR (sets it to 0) and sets up the signal which will report to\nuserspace that the DABR was hit. The do_signal() code will restore the DABR\nvalue on the way out to userspace.\n\nIf we reschedule before calling do_signal(), __switch_to() will check the\ncached DABR value and compare it to the new thread\u0027s value, if they match\nwe don\u0027t set the DABR in hardware.\n\nSo if two threads have the same DABR value, and we schedule from one to\nthe other after taking the interrupt for the first thread hitting the DABR,\nthe second thread will run without the DABR set in hardware.\n\nThe cleanest fix is to move the cache update into set_dabr(), that way we\ncan\u0027t forget to do it.\n\nReported-by: Jan Kratochvil \u003cjan.kratochvil@redhat.com\u003e\nSigned-off-by: Michael Ellerman \u003cmichael@ellerman.id.au\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "59311ec0d422d3eca2f94b358808bde287765fbc",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/process.c",
      "new_id": "4ec605521504d0e4ef8a01bc9902504d57908e7f",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/process.c"
    }
  ]
}
