)]}'
{
  "commit": "321bf4ed5ff5f7c62ef59f33b7eec5b154391f0a",
  "tree": "1fe34d7f78a690ba780d4e2ed01e48d705d345dd",
  "parents": [
    "2885e25c422fb68208f677f944a45fce8eda2a3c"
  ],
  "author": {
    "name": "Yinghai Lu",
    "email": "yinghai@kernel.org",
    "time": "Mon Jan 30 13:57:12 2012 -0800"
  },
  "committer": {
    "name": "Greg Kroah-Hartman",
    "email": "gregkh@linuxfoundation.org",
    "time": "Thu Feb 02 15:50:05 2012 -0800"
  },
  "message": "drivers/base/memory.c: fix memory_dev_init() long delay\n\nOne system with 2048g ram, reported soft lockup on recent kernel.\n\n[   34.426749] cpu_dev_init done\n[   61.166399] BUG: soft lockup - CPU#0 stuck for 22s! [swapper/0:1]\n[   61.166733] Modules linked in:\n[   61.166904] irq event stamp: 1935610\n[   61.178431] hardirqs last  enabled at (1935609): [\u003cffffffff81ce8c05\u003e] mutex_lock_nested+0x299/0x2b4\n[   61.178923] hardirqs last disabled at (1935610): [\u003cffffffff81cf2bab\u003e] apic_timer_interrupt+0x6b/0x80\n[   61.198767] softirqs last  enabled at (1935476): [\u003cffffffff8106e59c\u003e] __do_softirq+0x195/0x1ab\n[   61.218604] softirqs last disabled at (1935471): [\u003cffffffff81cf359c\u003e] call_softirq+0x1c/0x30\n[   61.238408] CPU 0\n[   61.238549] Modules linked in:\n[   61.238744]\n[   61.238825] Pid: 1, comm: swapper/0 Not tainted 3.3.0-rc1-tip-yh-02076-g962f689-dirty #171\n[   61.278212] RIP: 0010:[\u003cffffffff810b3e3a\u003e]  [\u003cffffffff810b3e3a\u003e] lock_release+0x90/0x9c\n[   61.278627] RSP: 0018:ffff883f64dbfd70  EFLAGS: 00000246\n[   61.298287] RAX: ffff883f64dc0000 RBX: 0000000000000000 RCX: 000000000000008b\n[   61.298690] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000\n[   61.318383] RBP: ffff883f64dbfda0 R08: 0000000000000001 R09: 000000000000008b\n[   61.338215] R10: 0000000000000000 R11: 0000000000000000 R12: ffff883f64dbfd10\n[   61.338610] R13: ffff883f64dc0708 R14: ffff883f64dc0708 R15: ffffffff81095657\n[   61.358299] FS:  0000000000000000(0000) GS:ffff883f7d600000(0000) knlGS:0000000000000000\n[   61.378118] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\n[   61.378450] CR2: 0000000000000000 CR3: 00000000024af000 CR4: 00000000000007f0\n[   61.398144] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\n[   61.417918] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\n[   61.418260] Process swapper/0 (pid: 1, threadinfo ffff883f64dbe000, task ffff883f64dc0000)\n[   61.445358] Stack:\n[   61.445511]  0000000000000002 ffff897f649ba168 ffff883f64dbfe10 ffff88ff64bb57a8\n[   61.458040]  0000000000000000 0000000000000000 ffff883f64dbfdc0 ffffffff81ceb1b4\n[   61.458491]  000000000011608c ffff88ff64bb58a8 ffff883f64dbfdf0 ffffffff81c57638\n[   61.478215] Call Trace:\n[   61.478367]  [\u003cffffffff81ceb1b4\u003e] _raw_spin_unlock+0x21/0x2e\n[   61.497994]  [\u003cffffffff81c57638\u003e] klist_next+0x9e/0xbc\n[   61.498264]  [\u003cffffffff8148ba99\u003e] next_device+0xe/0x1e\n[   61.517867]  [\u003cffffffff8148c0cc\u003e] subsys_find_device_by_id+0xb7/0xd6\n[   61.518197]  [\u003cffffffff81498846\u003e] find_memory_block_hinted+0x3d/0x66\n[   61.537927]  [\u003cffffffff8149887f\u003e] find_memory_block+0x10/0x12\n[   61.538193]  [\u003cffffffff814988b6\u003e] add_memory_section+0x35/0x9e\n[   61.557932]  [\u003cffffffff827fecef\u003e] memory_dev_init+0x68/0xda\n[   61.558227]  [\u003cffffffff827fec01\u003e] driver_init+0x97/0xa7\n[   61.577853]  [\u003cffffffff827cdf3c\u003e] kernel_init+0xf6/0x1c0\n[   61.578140]  [\u003cffffffff81cf34a4\u003e] kernel_thread_helper+0x4/0x10\n[   61.597850]  [\u003cffffffff81ceb59d\u003e] ? retint_restore_args+0xe/0xe\n[   61.598144]  [\u003cffffffff827cde46\u003e] ? start_kernel+0x3ab/0x3ab\n[   61.617826]  [\u003cffffffff81cf34a0\u003e] ? gs_change+0xb/0xb\n[   61.618060] Code: 10 48 83 3b 00 eb e8 4c 89 f2 44 89 fe 4c 89 ef e8 e1 fe ff ff 65 48 8b 04 25 40 bc 00 00 c7 80 cc 06 00 00 00 00 00 00 41 54 9d \u003c5e\u003e 5b 41 5c 41 5d 41 5e 41 5f 5d c3 55 48 89 e5 41 57 41 89 cf\n[   89.285380] memory_dev_init done\n\nFinally it takes about 55s to create 16400 memory entries.\n\nRoot cause: for x86_64, 2048g (with 2g hole at [2g,4g), and TOP2 will be 2050g), will have 16400 memory block.\n\nfind_memory_block/subsys_find_device_by_id will be expensive with that many entries.\n\nActually, we don\u0027t need to find that memory block for BOOT path.\n\nSkip that finding make it get back to normal.\n\n[   34.466696] cpu_dev_init done\n[   35.290080] memory_dev_init done\n\nAlso solved the delay with topology_init when sections_per_block is not 1.\n\nSigned-off-by: Yinghai Lu \u003cyinghai@kernel.org\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nCc: Nathan Fontenot \u003cnfont@austin.ibm.com\u003e\nCc: Robin Holt \u003cholt@sgi.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ed5de58c340f25e7c20b6db4189b279dd3110a2f",
      "old_mode": 33188,
      "old_path": "drivers/base/memory.c",
      "new_id": "9e60dbe9fd94884cb5850f10af74567a9bc6300f",
      "new_mode": 33188,
      "new_path": "drivers/base/memory.c"
    },
    {
      "type": "modify",
      "old_id": "44f427a6611724e710efc0591e8ba9777cf5dcbd",
      "old_mode": 33188,
      "old_path": "drivers/base/node.c",
      "new_id": "90aa2a11a933b448a536a353c5d932668c3f8e11",
      "new_mode": 33188,
      "new_path": "drivers/base/node.c"
    }
  ]
}
