)]}'
{
  "commit": "c9e2fbd909c20b165b2b9ffb59f8b674cf0a55b0",
  "tree": "29b4f977e3a1fa4b0b85057c35652ee5fe58949e",
  "parents": [
    "7329cf0201f48695862e334828a108aa7175e955"
  ],
  "author": {
    "name": "Alexander Chumachenko",
    "email": "ledest@gmail.com",
    "time": "Thu Apr 01 15:34:52 2010 +0300"
  },
  "committer": {
    "name": "H. Peter Anvin",
    "email": "hpa@zytor.com",
    "time": "Sun Sep 26 22:43:07 2010 -0700"
  },
  "message": "x86: Avoid \u0027constant_test_bit()\u0027 misoptimization due to cast to non-volatile\n\nWhile debugging bit_spin_lock() hang, it was tracked down to gcc-4.4\nmisoptimization of non-inlined constant_test_bit() due to non-volatile\naddr when \u0027const volatile unsigned long *addr\u0027 cast to \u0027unsigned long *\u0027\nwith subsequent unconditional jump to pause (and not to the test) leading\nto hang.\n\nCompiling with gcc-4.3 or disabling CONFIG_OPTIMIZE_INLINING yields inlined\nconstant_test_bit() and correct jump, thus working around the kernel bug.\n\nOther arches than asm-x86 may implement this slightly differently;\n2.6.29 mitigates the misoptimization by changing the function prototype\n(commit c4295fbb6048d85f0b41c5ced5cbf63f6811c46c) but probably fixing the issue\nitself is better.\n\nSigned-off-by: Alexander Chumachenko \u003cledest@gmail.com\u003e\nSigned-off-by: Michael Shigorin \u003cmike@osdn.org.ua\u003e\nAcked-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: H. Peter Anvin \u003chpa@zytor.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "545776efeb164c72d523f2c78f2c501e1535344c",
      "old_mode": 33188,
      "old_path": "arch/x86/include/asm/bitops.h",
      "new_id": "bafd80defa4328ed2f49e808daee7a624434345d",
      "new_mode": 33188,
      "new_path": "arch/x86/include/asm/bitops.h"
    }
  ]
}
