)]}'
{
  "commit": "b63a2bbc0b9b106a93e11952ab057e2408f2eb02",
  "tree": "28dfb7722a7c974f9872a566905b441cf7f18190",
  "parents": [
    "d0c3be806a3fe7f4abdb0f7e7287addb55e73f35"
  ],
  "author": {
    "name": "John David Anglin",
    "email": "dave.anglin@bell.net",
    "time": "Mon May 20 16:42:53 2013 +0000"
  },
  "committer": {
    "name": "Helge Deller",
    "email": "deller@gmx.de",
    "time": "Fri May 24 22:35:36 2013 +0200"
  },
  "message": "parisc: make interrupt and interruption stack allocation reentrant\n\nThe get_stack_use_cr30 and get_stack_use_r30 macros allocate a stack\nframe for external interrupts and interruptions requiring a stack frame.\nThey are currently not reentrant in that they save register context\nbefore the stack is set or adjusted.\n\nI have observed a number of system crashes where there was clear\nevidence of stack corruption during interrupt processing, and as a\nresult register corruption. Some interruptions can still occur during\ninterruption processing, however external interrupts are disabled and\ndata TLB misses don\u0027t occur for absolute accesses. So, it\u0027s not entirely\nclear what triggers this issue. Also, if an interruption occurs when\nQ\u003d0, it is generally not possible to recover as the shadowed registers\nare not copied.\n\nThe attached patch reworks the get_stack_use_cr30 and get_stack_use_r30\nmacros to allocate stack before doing register saves. The new code is a\ncouple of instructions shorter than the old implementation. Thus, it\u0027s\nan improvement even if it doesn\u0027t fully resolve the stack corruption\nissue. Based on limited testing, it improves SMP system stability.\n\nSigned-off-by: John David Anglin \u003cdave.anglin@bell.net\u003e\nSigned-off-by: Helge Deller \u003cdeller@gmx.de\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "89fb40005e3f81e875ed0111952e7941282832cf",
      "old_mode": 33188,
      "old_path": "arch/parisc/include/asm/assembly.h",
      "new_id": "0da848232344fc41d9583cc10f8510a54a7d6a16",
      "new_mode": 33188,
      "new_path": "arch/parisc/include/asm/assembly.h"
    },
    {
      "type": "modify",
      "old_id": "ae27cb6ce19ab012e45c8eeadc77dec77846c526",
      "old_mode": 33188,
      "old_path": "arch/parisc/kernel/entry.S",
      "new_id": "e8f07dd2840186a934632104fdc3116fa7293506",
      "new_mode": 33188,
      "new_path": "arch/parisc/kernel/entry.S"
    }
  ]
}
