Reverting these three patches fixes the problem: commit aa8d22a11da933dbf880b4933b58931f4aefe91c Author: Minchan Kim <minchan@xxxxxxxxxx> Date: Wed Nov 15 17:33:11 2017 -0800 mm: swap: SWP_SYNCHRONOUS_IO: skip swapcache only if swapped page has no other reference commit 0bcac06f27d7528591c27ac2b093ccd71c5d0168 Author: Minchan Kim <minchan@xxxxxxxxxx> Date: Wed Nov 15 17:33:07 2017 -0800 mm, swap: skip swapcache for swapin of synchronous device Also need to revert: commit e9a6effa500526e2a19d5ad042cb758b55b1ef93 Author: Huang Ying <huang.ying.caritas@xxxxxxxxx> Date: Wed Nov 15 17:33:15 2017 -0800 mm, swap: fix false error message in __swp_swapcount() (The latter is simply because it used a function that is eliminated by one of the other reversions). They came into the merge window via the -mm tree as part of a 4 part series: Subject: [PATCH v2 0/4] skip swapcache for super fast device Message-Id: <1505886205-9671-1-git-send-email-minchan@xxxxxxxxxx > James On Wed, 2017-12-27 at 10:12 -0800, James Bottomley wrote: > I think I've seen this a lot shutting down systems, but never manged > to trace it before. Now I can reproduce it starting kvm on a 4GB > system with 3GB of memory and booting up a linux OS. What eventually > happens (after logging into the virtual system) is that kvm itself > hangs, although the stuck process is one of the kworkers in D wait > hung on this stack trace: > > [<0>] io_schedule+0x12/0x40 > [<0>] __lock_page_or_retry+0x2b8/0x300 > [<0>] do_swap_page+0x1b9/0x910 > [<0>] __handle_mm_fault+0x7ee/0xe20 > [<0>] handle_mm_fault+0xce/0x1e0 > [<0>] __get_user_pages+0x104/0x6c0 > [<0>] get_user_pages_remote+0x84/0x1f0 > [<0>] async_pf_execute+0x67/0x1a0 [kvm] > [<0>] process_one_work+0x13c/0x370 > [<0>] worker_thread+0x44/0x3e0 > [<0>] kthread+0xf5/0x130 > [<0>] ret_from_fork+0x1f/0x30 > [<0>] 0xffffffffffffffff > > The async_pf_execute() is a kvm async callback, failure to execute it > appears to be causing the kvm hang. > > Next to go is kswapd > > [<0>] io_schedule+0x12/0x40 > [<0>] __lock_page+0xec/0x120 > [<0>] deferred_split_scan+0x21b/0x2a0 > [<0>] shrink_slab+0x24a/0x460 > [<0>] shrink_node+0x2e6/0x2f0 > [<0>] kswapd+0x2ad/0x730 > [<0>] kthread+0xf5/0x130 > [<0>] ret_from_fork+0x1f/0x30 > [<0>] 0xffffffffffffffff > > And finally systemd-logind hangs making it very difficult to get into > the system (and impossible to shut it down) > > [<0>] call_rwsem_down_write_failed+0x13/0x20 > [<0>] register_shrinker+0x45/0xa0 > [<0>] sget_userns+0x44d/0x480 > [<0>] mount_nodev+0x2a/0xa0 > [<0>] mount_fs+0x34/0x150 > [<0>] vfs_kern_mount+0x62/0x120 > [<0>] do_mount+0x1d7/0xbf0 > [<0>] SyS_mount+0x7e/0xd0 > [<0>] do_syscall_64+0x5b/0x100 > [<0>] entry_SYSCALL64_slow_path+0x25/0x25 > [<0>] 0xffffffffffffffff > > I've seen this with -rc1 and -rc5, so I think it's some problem with > merge window code. > > James -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>