)]}'
{
  "commit": "ef6edc9746dc2bfdacf44eefd5f881179971c478",
  "tree": "e8670e918a852978b2e93e189936f327be072284",
  "parents": [
    "e3e5fc91d9828a9b94a3992de47d47d2d2e34ec6"
  ],
  "author": {
    "name": "Martin Schwidefsky",
    "email": "schwidefsky@de.ibm.com",
    "time": "Sat Sep 30 23:27:43 2006 -0700"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Sun Oct 01 00:39:21 2006 -0700"
  },
  "message": "[PATCH] Directed yield: cpu_relax variants for spinlocks and rw-locks\n\nOn systems running with virtual cpus there is optimization potential in\nregard to spinlocks and rw-locks.  If the virtual cpu that has taken a lock\nis known to a cpu that wants to acquire the same lock it is beneficial to\nyield the timeslice of the virtual cpu in favour of the cpu that has the\nlock (directed yield).\n\nWith CONFIG_PREEMPT\u003d\"n\" this can be implemented by the architecture without\ncommon code changes.  Powerpc already does this.\n\nWith CONFIG_PREEMPT\u003d\"y\" the lock loops are coded with _raw_spin_trylock,\n_raw_read_trylock and _raw_write_trylock in kernel/spinlock.c.  If the lock\ncould not be taken cpu_relax is called.  A directed yield is not possible\nbecause cpu_relax doesn\u0027t know anything about the lock.  To be able to\nyield the lock in favour of the current lock holder variants of cpu_relax\nfor spinlocks and rw-locks are needed.  The new _raw_spin_relax,\n_raw_read_relax and _raw_write_relax primitives differ from cpu_relax\ninsofar that they have an argument: a pointer to the lock structure.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Haavard Skinnemoen \u003chskinnemoen@atmel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0c294c9b0c558a8a45f080b8e0b825fadbdf859f",
      "old_mode": 33188,
      "old_path": "include/asm-alpha/spinlock.h",
      "new_id": "aeeb125f68513df03fe1d625de0cf1883b46c869",
      "new_mode": 33188,
      "new_path": "include/asm-alpha/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "01b7c26a30386951905de5ae46d3bc31fdde30cd",
      "old_mode": 33188,
      "old_path": "include/asm-arm/spinlock.h",
      "new_id": "861092fbaa53283953bd41c9dbb6e840bb42ff02",
      "new_mode": 33188,
      "new_path": "include/asm-arm/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "52df72a622329659d27524f57fc1d2f95556bc13",
      "old_mode": 33188,
      "old_path": "include/asm-cris/arch-v32/spinlock.h",
      "new_id": "5f43df0a5fb42df32847984e49e6a2d8db070f2c",
      "new_mode": 33188,
      "new_path": "include/asm-cris/arch-v32/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "b0b3043f05e154742738f5ff03b7c409d265f2f4",
      "old_mode": 33188,
      "old_path": "include/asm-i386/spinlock.h",
      "new_id": "c18b71fae6b38f6ec0a524509deb4a229de002ad",
      "new_mode": 33188,
      "new_path": "include/asm-i386/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "9e83210dc31257adc4c5356b64f37b24e83bf1e4",
      "old_mode": 33188,
      "old_path": "include/asm-ia64/spinlock.h",
      "new_id": "ff857e31738a00dfbed4534ee1832528e231fb33",
      "new_mode": 33188,
      "new_path": "include/asm-ia64/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "f9f90727a4a1f9c88485150e380db6113d461218",
      "old_mode": 33188,
      "old_path": "include/asm-m32r/spinlock.h",
      "new_id": "f5cfba81ee10c1f59b007dcf34fd9db508a9bff5",
      "new_mode": 33188,
      "new_path": "include/asm-m32r/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "4c1a1b53aeaf1c3db24c8f01fab27147600e0020",
      "old_mode": 33188,
      "old_path": "include/asm-mips/spinlock.h",
      "new_id": "c8d5587467bbf6181ba2950fa66bf63c8dcc3858",
      "new_mode": 33188,
      "new_path": "include/asm-mips/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "a93960e232cffabb43de39d78a97dc9d7542f154",
      "old_mode": 33188,
      "old_path": "include/asm-parisc/spinlock.h",
      "new_id": "e1825530365d3d1724b925fabb54a125429cd564",
      "new_mode": 33188,
      "new_path": "include/asm-parisc/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "c31e4382a7759dba58f18f7925e675538a951e5f",
      "old_mode": 33188,
      "old_path": "include/asm-powerpc/spinlock.h",
      "new_id": "eaccac8327f2d23ffbed6dbc5c303bb669f3fb60",
      "new_mode": 33188,
      "new_path": "include/asm-powerpc/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "5c64b75f0295bb0eec7697dd79a6b4f171269a2a",
      "old_mode": 33188,
      "old_path": "include/asm-ppc/spinlock.h",
      "new_id": "fccaf5531e579444b83d46192ef4280245a1a8ae",
      "new_mode": 33188,
      "new_path": "include/asm-ppc/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "ce3edf6d63b3bdf4bac03a982d00151577843d4c",
      "old_mode": 33188,
      "old_path": "include/asm-s390/spinlock.h",
      "new_id": "5f00feaf1be62865c8a10edffc159f85b4cbf976",
      "new_mode": 33188,
      "new_path": "include/asm-s390/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "846322d4c35d489daf86e337518dbee79f5c738f",
      "old_mode": 33188,
      "old_path": "include/asm-sh/spinlock.h",
      "new_id": "54458fd2498150ce964e159748faac8339c1f235",
      "new_mode": 33188,
      "new_path": "include/asm-sh/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "1c75474ba1df706b1abb5e9c96b50f8fc18dfc5b",
      "old_mode": 33188,
      "old_path": "include/asm-sparc/spinlock.h",
      "new_id": "557d08959d2f319ce90b491672c9d4ba518ec471",
      "new_mode": 33188,
      "new_path": "include/asm-sparc/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "bd5ffc76bc7e6774274b596ca8b43154c894ed08",
      "old_mode": 33188,
      "old_path": "include/asm-sparc64/spinlock.h",
      "new_id": "0006fe9f8c7a03cab556cec5119ad5c016608e74",
      "new_mode": 33188,
      "new_path": "include/asm-sparc64/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "3daf5b0059054994c04ba2bce41a8dfa81f701fc",
      "old_mode": 33188,
      "old_path": "include/asm-x86_64/spinlock.h",
      "new_id": "05ef097ba55b26dccd45d997417228ad79a110ba",
      "new_mode": 33188,
      "new_path": "include/asm-x86_64/spinlock.h"
    },
    {
      "type": "modify",
      "old_id": "d48143eafbfde6388717e67c1c3b74011ea8a747",
      "old_mode": 33188,
      "old_path": "kernel/spinlock.c",
      "new_id": "476c3741511b31af1717f90e052880e0e6c9b585",
      "new_mode": 33188,
      "new_path": "kernel/spinlock.c"
    }
  ]
}
