)]}'
{
  "commit": "08dc2ca61e683e9119ff534dfcd0fd555401fcf7",
  "tree": "d891918b735a8896caf1a4cf193125cf01d0e520",
  "parents": [
    "4269b0d371c43bc8f3c9e183847a08258587cf06"
  ],
  "author": {
    "name": "James Bottomley",
    "email": "jejb@parisc-linux.org",
    "time": "Thu Nov 17 16:35:09 2005 -0500"
  },
  "committer": {
    "name": "Kyle McMartin",
    "email": "kyle@parisc-linux.org",
    "time": "Thu Nov 17 16:35:09 2005 -0500"
  },
  "message": "[PARISC] Fix our spinlock implementation\n\nWe actually have two separate bad bugs\n\n1. The read_lock implementation spins with disabled interrupts.  This is\ncompletely wrong\n2. Our spin_lock_irqsave should check to see if interrupts were enabled\nbefore the call and re-enable interrupts around the inner spin loop.\n\nThe problem is that if we spin with interrupts off, we can\u0027t receive\nIPIs. This has resulted in a bug where SMP machines suddenly spit\nsmp_call_function timeout messages and hang.\n\nThe scenario I\u0027ve caught is\n\nCPU0 does a flush_tlb_all holding the vmlist_lock for write.\nCPU1 tries a cat of /proc/meminfo which tries to acquire vmlist_lock for\n     read\nCPU1 is now spinning with interrupts disabled\nCPU0 tries to execute a smp_call_function to flush the local tlb caches\n\nThis is now a deadlock because CPU1 is spinning with interrupts disabled\nand can never receive the IPI\n\nSigned-off-by: James Bottomley \u003cjejb@parisc-linux.org\u003e\nSigned-off-by: Kyle McMartin \u003ckyle@parisc-linux.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "7c3f406a746a4f0984b07efc40e533b24d076561",
      "old_mode": 33188,
      "old_path": "include/asm-parisc/spinlock.h",
      "new_id": "16c2ac075fc5248973f578133376a41857dbd5a6",
      "new_mode": 33188,
      "new_path": "include/asm-parisc/spinlock.h"
    }
  ]
}
