)]}'
{
  "commit": "c0ce7d0886cf0c2579c604eac41a7e125bc0e96d",
  "tree": "f31448371b4295e98753f1551178fdddb8d18b0e",
  "parents": [
    "2cd90bc8fba8720ef7f3fdfd1e0c1a5397a18271"
  ],
  "author": {
    "name": "David Wilder",
    "email": "dwilder@us.ibm.com",
    "time": "Fri Jun 23 15:29:34 2006 -0700"
  },
  "committer": {
    "name": "Paul Mackerras",
    "email": "paulus@samba.org",
    "time": "Wed Jun 28 15:18:52 2006 +1000"
  },
  "message": "[POWERPC] Add the use of the firmware soft-reset-nmi to kdump.\n\nWith this patch, kdump uses the firmware soft-reset NMI for two purposes:\n1) Initiate the kdump (take a crash dump) by issuing a soft-reset.\n2) Break a CPU out of a deadlock condition that is detected during kdump\nprocessing.\n\nWhen a soft-reset is initiated each CPU will enter\nsystem_reset_exception() and set its corresponding bit in the global\nbit-array cpus_in_sr then call die(). When die() finds the CPU\u0027s bit set\nin cpu_in_sr crash_kexec() is called to initiate a crash dump. The first\nCPU to enter crash_kexec() is called the \"crashing CPU\". All other CPUs\nare \"secondary CPUs\". The secondary CPU\u0027s pass through to\ncrash_kexec_secondary() and sleep. The crashing CPU waits for all CPUs\nto enter via soft-reset then boots the kdump kernel (see\ncrash_soft_reset_check())\n\nWhen the system crashes due to a panic or exception, crash_kexec() is\ncalled by panic() or die(). The crashing CPU sends an IPI to all other\nCPUs to notify them of the pending shutdown. If a CPU is in a deadlock\nor hung state with interrupts disabled, the IPI will not be delivered.\nThe result being, that the kdump kernel is not booted. This problem is\nsolved with the use of a firmware generated soft-reset. After the\ncrashing_cpu has issued the IPI, it waits for 10 sec for all CPUs to\nenter crash_ipi_callback(). A CPU signifies its entry to\ncrash_ipi_callback() by setting its corresponding bit in the\ncpus_in_crash bit array. After 10 sec, if one or more CPUs have not set\ntheir bit in cpus_in_crash we assume that the CPU(s) is deadlocked. The\noperator is then prompted to generate a soft-reset to break the\ndeadlock. Each CPU enters the soft reset handler as described above.\n\nTwo conditions must be handled at this point:\n1) The system crashed because the operator generated a soft-reset. See\n2) The system had crashed before the soft-reset was generated ( in the\ncase of a Panic or oops).\n\nThe first CPU to enter crash_kexec() uses the state of the kexec_lock to\ndetermine this state. If kexec_lock is already held then condition 2 is\ntrue and crash_kexec_secondary() is called, else; this CPU is flagged as\nthe crashing CPU, the kexec_lock is acquired and crash_kexec() proceeds\nas described above.\n\nEach additional CPUs responding to the soft-reset will pass through\ncrash_kexec() to kexec_secondary(). All secondary CPUs call\ncrash_ipi_callback() readying them self\u0027s for the shutdown. When ready\nthey clear their bit in cpus_in_sr. The crashing CPU waits in\nkexec_secondary() until all other CPUs have cleared their bits in\ncpus_in_sr. The kexec kernel boot is then started.\n\nSigned-off-by: Haren Myneni \u003charen@us.ibm.com\u003e\nSigned-off-by: David Wilder \u003cdwilder@us.ibm.com\u003e\nSigned-off-by: Paul Mackerras \u003cpaulus@samba.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e253a45dcf10d62cb8c18b5faa028d3415c125c9",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/crash.c",
      "new_id": "b537cfa4e09b167d383cc8a908790dfd3560127f",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/crash.c"
    },
    {
      "type": "modify",
      "old_id": "52f5659534f48042da4f68ddaad02806f70a3a0c",
      "old_mode": 33188,
      "old_path": "arch/powerpc/kernel/traps.c",
      "new_id": "fa6bd97b6b9d59c30fd4897dd241c53064d28339",
      "new_mode": 33188,
      "new_path": "arch/powerpc/kernel/traps.c"
    },
    {
      "type": "modify",
      "old_id": "234bd684c7f04c7dcc677c3819ef208fceeb8bb0",
      "old_mode": 33188,
      "old_path": "include/asm-powerpc/kexec.h",
      "new_id": "8f7fd5cfec34f4c9fa0a39843ae443825f277fda",
      "new_mode": 33188,
      "new_path": "include/asm-powerpc/kexec.h"
    },
    {
      "type": "modify",
      "old_id": "58f0f382597cf4416e475c63c2fa3736462de7f2",
      "old_mode": 33188,
      "old_path": "kernel/kexec.c",
      "new_id": "50087ecf337ea17e5429188688187b6623a57f20",
      "new_mode": 33188,
      "new_path": "kernel/kexec.c"
    }
  ]
}
