Re: [PATCH] mm, x86: Skip NUMA_NO_NODE while parsing SLIT

David Rientjes
2013-12-05T23:21:16Z

On Thu, 5 Dec 2013, Yasuaki Ishimatsu wrote:

> (2013/12/05 6:09), Toshi Kani wrote:
> > When ACPI SLIT table has an I/O locality (i.e. a locality unique
> > to an I/O device), numa_set_distance() emits the warning message
> > below.
> >
> > NUMA: Warning: node ids are out of bound, from=-1 to=-1 distance=10
> >
> > acpi_numa_slit_init() calls numa_set_distance() with pxm_to_node(),
> > which assumes that all localities have been parsed with SRAT previously.
> > SRAT does not list I/O localities, where as SLIT lists all localities
>
> > including I/Os. Hence, pxm_to_node() returns NUMA_NO_NODE (-1) for
> > an I/O locality. I/O localities are not supported and are ignored
> > today, but emitting such warning message leads unnecessary confusion.
>
> In this case, the warning message should not be shown. But if SLIT table
> is really broken, the message should be shown. Your patch seems to not care
> for second case.
>

It's a subtle problem of the difference in the definition of a "NUMA node"
between the ACPI specification and how it is defined in the kernel. The
specification allows I/O buses to define a NUMA node and the kernel
doesn't setup a separate node id for them, so there's no way to
distinguish between an erroneous SLIT and system localities that only
include I/O devices. If that were to change in the future we could remove
this limitation since pxm_to_node() wouldn't return NUMA_NO_NODE for
Toshi's config. A follow-up patch that adds the comment about why this is
done has been proposed to be folded into this patch.