Re: [PATCH] mm/alloc: fallback to first node if the wanted node offline

From: Pingfan Liu
Date: Fri Dec 07 2018 - 09:27:30 EST


On Fri, Dec 7, 2018 at 10:22 PM Michal Hocko <mhocko@xxxxxxxxxx> wrote:
>
> On Fri 07-12-18 21:20:17, Pingfan Liu wrote:
> [...]
> > Hi Michal,
> >
> > As I mentioned in my previous email, I have manually apply the patch,
> > and the patch can not work for normal bootup.
>
> I am sorry, I have misread your previous response. Is there anything
> interesting on the serial console by any chance?

Nothing. It need more effort to debug. But as I mentioned, enable all
of the rest possible node, then it works. Maybe it can give some help
for you.
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index 1308f54..4dc497d 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -754,18 +754,23 @@ void __init init_cpu_to_node(void)
{
int cpu;
u16 *cpu_to_apicid = early_per_cpu_ptr(x86_cpu_to_apicid);
+ int node, nr;

BUG_ON(cpu_to_apicid == NULL);
+ nr = cpumask_weight(cpu_possible_mask);
+
+ /* bring up all possible node, since dev->numa_node */
+ //should check acpi works for node possible,
+ for_each_node(node)
+ if (!node_online(node))
+ init_memory_less_node(node);

for_each_possible_cpu(cpu) {
- int node = numa_cpu_node(cpu);
+ node = numa_cpu_node(cpu);

if (node == NUMA_NO_NODE)
continue;

- if (!node_online(node))
- init_memory_less_node(node);
-
numa_set_node(cpu, node);
}
}

Thanks,
Pingfan