On Thu, Oct 25, 2018 at 1:52 PM Dave Hansen dave.hansen@intel.com wrote:
On 10/25/18 1:26 PM, Dan Williams wrote:
--- a/arch/x86/mm/numa_emulation.c +++ b/arch/x86/mm/numa_emulation.c @@ -400,9 +400,17 @@ void __init numa_emulation(struct numa_meminfo *numa_meminfo, int numa_dist_cnt) n = simple_strtoul(emu_cmdline, &emu_cmdline, 0); ret = -1; for_each_node_mask(i, physnode_mask) {
/*
* The reason we pass in blk[0] is due to
* numa_remove_memblk_from() called by
* emu_setup_memblk() will delete entry 0
* and then move everything else up in the pi.blk
* array. Therefore we should always be looking
* at blk[0].
*/ ret = split_nodes_size_interleave_uniform(&ei, &pi,
pi.blk[i].start, pi.blk[i].end, 0,
n, &pi.blk[i], nid);
pi.blk[0].start, pi.blk[0].end, 0,
n, &pi.blk[0], nid);
So, has this *ever* worked on a multi-socket configuration? Or has it just never been run on a multi-socket configuration?
It happened to work on 2-socket. We only saw issues when moving to 4-socket and above, and sometimes only a grey failure with an odd-sized node not outright crash / boot failure.
Either way, nice changelog, and nice comments. I'd have some minor nits if you have to respin it, but otherwise:
Reviewed-by: Dave Hansen dave.hansen@linux.intel.com
Thanks.