AutoNUMA15

Andrea Arcangeli
2012-05-31T18:09:21Z

Hi,

On Tue, May 29, 2012 at 05:43:09PM +0200, Petr Holasek wrote:
> Similar problem with __autonuma_migrate_page_remove here.
>
> [ 1945.516632] ------------[ cut here ]------------
> [ 1945.516636] WARNING: at lib/list_debug.c:50 __list_del_entry+0x63/0xd0()
> [ 1945.516642] Hardware name: ProLiant DL585 G5
> [ 1945.516651] list_del corruption, ffff88017d68b068->next is LIST_POISON1 (dead000000100100)
> [ 1945.516682] Modules linked in: ipt_MASQUERADE nf_conntrack_netbios_ns nf_conntrack_broadcast ip6table_mangle lockd ip6t_REJECT sunrpc nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables iptable_nat nf_nat iptable_mangle nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack mperf freq_table kvm_amd kvm pcspkr amd64_edac_mod edac_core serio_raw bnx2 microcode edac_mce_amd shpchp k10temp hpilo ipmi_si ipmi_msghandler hpwdt qla2xxx hpsa ata_generic pata_acpi scsi_transport_fc scsi_tgt cciss pata_amd radeon i2c_algo_bit drm_kms_helper ttm drm i2c_core [last unloaded: scsi_wait_scan]
> [ 1945.516694] Pid: 150, comm: knuma_migrated0 Tainted: G W 3.4.0aa_alpha+ #3
> [ 1945.516701] Call Trace:
> [ 1945.516710] [<ffffffff8105788f>] warn_slowpath_common+0x7f/0xc0
> [ 1945.516717] [<ffffffff81057986>] warn_slowpath_fmt+0x46/0x50
> [ 1945.516726] [<ffffffff812f9713>] __list_del_entry+0x63/0xd0
> [ 1945.516735] [<ffffffff812f9791>] list_del+0x11/0x40
> [ 1945.516743] [<ffffffff81165b98>] __autonuma_migrate_page_remove+0x48/0x80
> [ 1945.516746] [<ffffffff81165e66>] knuma_migrated+0x296/0x8a0
> [ 1945.516749] [<ffffffff8107a200>] ? wake_up_bit+0x40/0x40
> [ 1945.516758] [<ffffffff81165bd0>] ? __autonuma_migrate_page_remove+0x80/0x80
> [ 1945.516766] [<ffffffff81079cc3>] kthread+0x93/0xa0
> [ 1945.516780] [<ffffffff81626f24>] kernel_thread_helper+0x4/0x10
> [ 1945.516791] [<ffffffff81079c30>] ? flush_kthread_worker+0x80/0x80
> [ 1945.516798] [<ffffffff81626f20>] ? gs_change+0x13/0x13
> [ 1945.516800] ---[ end trace 7cab294af87bd79f ]---

I didn't manage to reproduce it on my hardware but it seems this was
caused by the autonuma_migrate_split_huge_page: the tail page list
linking wasn't surrounded by the compound lock to make list insertion
and migrate_nid setting atomic like it happens everywhere else (the
caller holding the lock on the head page wasn't enough to make the
tails stable too).

I released an AutoNUMA15 branch that includes all pending fixes:

git clone --reference linux -b autonuma15 git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git

Thanks,
Andrea