* [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT @ 2014-01-25 14:25 tip-bot for Toshi Kani 2014-01-26 8:43 ` Yinghai Lu 0 siblings, 1 reply; 13+ messages in thread From: tip-bot for Toshi Kani @ 2014-01-25 14:25 UTC (permalink / raw) To: linux-tip-commits Cc: linux-kernel, hpa, mingo, yinghai, toshi.kani, akpm, tglx, rientjes Commit-ID: a85eba8814631d0d48361c8b9a7ee0984e80c03c Gitweb: http://git.kernel.org/tip/a85eba8814631d0d48361c8b9a7ee0984e80c03c Author: Toshi Kani <toshi.kani@hp.com> AuthorDate: Tue, 21 Jan 2014 14:33:15 -0800 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Sat, 25 Jan 2014 09:13:35 +0100 arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT When ACPI SLIT table has an I/O locality (i.e. a locality unique to an I/O device), numa_set_distance() emits this warning message: 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 to unnecessary confusion. Change acpi_numa_slit_init() to avoid calling numa_set_distance() with NUMA_NO_NODE. Signed-off-by: Toshi Kani <toshi.kani@hp.com> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Cc: Yinghai Lu <yinghai@kernel.org> Link: http://lkml.kernel.org/n/tip-dSvpjjvp8aMzs1ybkftxohlh@git.kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org> --- arch/x86/mm/srat.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c index 266ca91..5ecf651 100644 --- a/arch/x86/mm/srat.c +++ b/arch/x86/mm/srat.c @@ -42,15 +42,25 @@ static __init inline int srat_disabled(void) return acpi_numa < 0; } -/* Callback for SLIT parsing */ +/* + * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for + * I/O localities since SRAT does not list them. I/O localities are + * not supported at this point. + */ void __init acpi_numa_slit_init(struct acpi_table_slit *slit) { int i, j; - for (i = 0; i < slit->locality_count; i++) - for (j = 0; j < slit->locality_count; j++) + for (i = 0; i < slit->locality_count; i++) { + if (pxm_to_node(i) == NUMA_NO_NODE) + continue; + for (j = 0; j < slit->locality_count; j++) { + if (pxm_to_node(j) == NUMA_NO_NODE) + continue; numa_set_distance(pxm_to_node(i), pxm_to_node(j), slit->entry[slit->locality_count * i + j]); + } + } } /* Callback for Proximity Domain -> x2APIC mapping */ ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT 2014-01-25 14:25 [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT tip-bot for Toshi Kani @ 2014-01-26 8:43 ` Yinghai Lu 2014-01-26 8:46 ` Ingo Molnar 2014-01-27 14:45 ` [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT Toshi Kani 0 siblings, 2 replies; 13+ messages in thread From: Yinghai Lu @ 2014-01-26 8:43 UTC (permalink / raw) To: Ingo Molnar, H. Peter Anvin, Linux Kernel Mailing List, Yinghai Lu, Toshi Kani, Andrew Morton, Thomas Gleixner, David Rientjes Cc: linux-tip-commits@vger.kernel.org On Sat, Jan 25, 2014 at 6:25 AM, tip-bot for Toshi Kani <tipbot@zytor.com> wrote: > Commit-ID: a85eba8814631d0d48361c8b9a7ee0984e80c03c > Gitweb: http://git.kernel.org/tip/a85eba8814631d0d48361c8b9a7ee0984e80c03c > Author: Toshi Kani <toshi.kani@hp.com> > AuthorDate: Tue, 21 Jan 2014 14:33:15 -0800 > Committer: Ingo Molnar <mingo@kernel.org> > CommitDate: Sat, 25 Jan 2014 09:13:35 +0100 > > arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT > > When ACPI SLIT table has an I/O locality (i.e. a locality > unique to an I/O device), numa_set_distance() emits this warning > message: > > 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 to unnecessary confusion. > > Change acpi_numa_slit_init() to avoid calling > numa_set_distance() with NUMA_NO_NODE. > > Signed-off-by: Toshi Kani <toshi.kani@hp.com> > Acked-by: David Rientjes <rientjes@google.com> > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > Cc: Yinghai Lu <yinghai@kernel.org> > Link: http://lkml.kernel.org/n/tip-dSvpjjvp8aMzs1ybkftxohlh@git.kernel.org > Signed-off-by: Ingo Molnar <mingo@kernel.org> > --- > arch/x86/mm/srat.c | 16 +++++++++++++--- > 1 file changed, 13 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c > index 266ca91..5ecf651 100644 > --- a/arch/x86/mm/srat.c > +++ b/arch/x86/mm/srat.c > @@ -42,15 +42,25 @@ static __init inline int srat_disabled(void) > return acpi_numa < 0; > } > > -/* Callback for SLIT parsing */ > +/* > + * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for > + * I/O localities since SRAT does not list them. I/O localities are > + * not supported at this point. > + */ > void __init acpi_numa_slit_init(struct acpi_table_slit *slit) > { > int i, j; > > - for (i = 0; i < slit->locality_count; i++) > - for (j = 0; j < slit->locality_count; j++) > + for (i = 0; i < slit->locality_count; i++) { > + if (pxm_to_node(i) == NUMA_NO_NODE) > + continue; > + for (j = 0; j < slit->locality_count; j++) { > + if (pxm_to_node(j) == NUMA_NO_NODE) > + continue; > numa_set_distance(pxm_to_node(i), pxm_to_node(j), > slit->entry[slit->locality_count * i + j]); > + } > + } > } > > /* Callback for Proximity Domain -> x2APIC mapping */ wonder if the patch that i sent one year ago is better. https://lkml.org/lkml/2013/1/21/559 as it avoid calling extra calling of pxm_to_node(i). From: Yinghai Lu <yinghai@kernel.org> Subject: [PATCH] x86, mm: Skip unknown PXM early in SLIT parsing Some systems one bios could support 2 sockets and 4 sockets, and SLIT is the same, aka 4x4. For 2 sockets configuration, SRAT will only have PXM0 and PXM2. So we will get warning: NUMA: Warning: node ids are out of bound, from=0 to=-1 distance=15 Need to skip PXM1 and PXM2 as there is no responding node, To avoid uncorrect warning. Signed-off-by: Yinghai Lu <yinghai@kernel.org> --- arch/x86/mm/srat.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) Index: linux-2.6/arch/x86/mm/srat.c =================================================================== --- linux-2.6.orig/arch/x86/mm/srat.c +++ linux-2.6/arch/x86/mm/srat.c @@ -46,11 +46,22 @@ static __init inline int srat_disabled(v void __init acpi_numa_slit_init(struct acpi_table_slit *slit) { int i, j; + int from_node, to_node; - for (i = 0; i < slit->locality_count; i++) - for (j = 0; j < slit->locality_count; j++) - numa_set_distance(pxm_to_node(i), pxm_to_node(j), + for (i = 0; i < slit->locality_count; i++) { + from_node = pxm_to_node(i); + if (from_node < 0) + continue; /* skip unknown PXM */ + + for (j = 0; j < slit->locality_count; j++) { + to_node = pxm_to_node(j); + if (to_node < 0) + continue; /* skip unknown PXM */ + + numa_set_distance(from_node, to_node, slit->entry[slit->locality_count * i + j]); + } + } } /* Callback for Proximity Domain -> x2APIC mapping */ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT 2014-01-26 8:43 ` Yinghai Lu @ 2014-01-26 8:46 ` Ingo Molnar 2014-01-26 9:10 ` [PATCH] x86, mm: Avoid extra pxm_to_node() Yinghai Lu 2014-01-26 21:01 ` [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling Yinghai Lu 2014-01-27 14:45 ` [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT Toshi Kani 1 sibling, 2 replies; 13+ messages in thread From: Ingo Molnar @ 2014-01-26 8:46 UTC (permalink / raw) To: Yinghai Lu Cc: H. Peter Anvin, Linux Kernel Mailing List, Toshi Kani, Andrew Morton, Thomas Gleixner, David Rientjes, linux-tip-commits@vger.kernel.org * Yinghai Lu <yinghai@kernel.org> wrote: > On Sat, Jan 25, 2014 at 6:25 AM, tip-bot for Toshi Kani > <tipbot@zytor.com> wrote: > > Commit-ID: a85eba8814631d0d48361c8b9a7ee0984e80c03c > > Gitweb: http://git.kernel.org/tip/a85eba8814631d0d48361c8b9a7ee0984e80c03c > > Author: Toshi Kani <toshi.kani@hp.com> > > AuthorDate: Tue, 21 Jan 2014 14:33:15 -0800 > > Committer: Ingo Molnar <mingo@kernel.org> > > CommitDate: Sat, 25 Jan 2014 09:13:35 +0100 > > > > arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT > > > > When ACPI SLIT table has an I/O locality (i.e. a locality > > unique to an I/O device), numa_set_distance() emits this warning > > message: > > > > 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 to unnecessary confusion. > > > > Change acpi_numa_slit_init() to avoid calling > > numa_set_distance() with NUMA_NO_NODE. > > > > Signed-off-by: Toshi Kani <toshi.kani@hp.com> > > Acked-by: David Rientjes <rientjes@google.com> > > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > > Cc: Yinghai Lu <yinghai@kernel.org> > > Link: http://lkml.kernel.org/n/tip-dSvpjjvp8aMzs1ybkftxohlh@git.kernel.org > > Signed-off-by: Ingo Molnar <mingo@kernel.org> > > --- > > arch/x86/mm/srat.c | 16 +++++++++++++--- > > 1 file changed, 13 insertions(+), 3 deletions(-) > > > > diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c > > index 266ca91..5ecf651 100644 > > --- a/arch/x86/mm/srat.c > > +++ b/arch/x86/mm/srat.c > > @@ -42,15 +42,25 @@ static __init inline int srat_disabled(void) > > return acpi_numa < 0; > > } > > > > -/* Callback for SLIT parsing */ > > +/* > > + * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for > > + * I/O localities since SRAT does not list them. I/O localities are > > + * not supported at this point. > > + */ > > void __init acpi_numa_slit_init(struct acpi_table_slit *slit) > > { > > int i, j; > > > > - for (i = 0; i < slit->locality_count; i++) > > - for (j = 0; j < slit->locality_count; j++) > > + for (i = 0; i < slit->locality_count; i++) { > > + if (pxm_to_node(i) == NUMA_NO_NODE) > > + continue; > > + for (j = 0; j < slit->locality_count; j++) { > > + if (pxm_to_node(j) == NUMA_NO_NODE) > > + continue; > > numa_set_distance(pxm_to_node(i), pxm_to_node(j), > > slit->entry[slit->locality_count * i + j]); > > + } > > + } > > } > > > > /* Callback for Proximity Domain -> x2APIC mapping */ > > wonder if the patch that i sent one year ago is better. > > https://lkml.org/lkml/2013/1/21/559 > > as it avoid calling extra calling of pxm_to_node(i). If it's "better" in the sense of being faster (and is otherwise equivalent functionally - assuming the original patch is bug free) then please submit it as a delta patch. (I assume the one you sent here wasn't.) Thanks, Ingo ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH] x86, mm: Avoid extra pxm_to_node() 2014-01-26 8:46 ` Ingo Molnar @ 2014-01-26 9:10 ` Yinghai Lu 2014-01-26 9:10 ` Ingo Molnar 2014-01-26 9:28 ` David Rientjes 2014-01-26 21:01 ` [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling Yinghai Lu 1 sibling, 2 replies; 13+ messages in thread From: Yinghai Lu @ 2014-01-26 9:10 UTC (permalink / raw) To: Ingo Molnar Cc: H. Peter Anvin, Toshi Kani, Thomas Gleixner, Andrew Morton, David Rientjes, linux-kernel, Yinghai Lu In slit init code, more pxm_to_node() calling are added. We can cache return with from_node/to_node to avoid them. Signed-off-by: Yinghai Lu <yinghai@kernel.org> --- arch/x86/mm/srat.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) Index: linux-2.6/arch/x86/mm/srat.c =================================================================== --- linux-2.6.orig/arch/x86/mm/srat.c +++ linux-2.6/arch/x86/mm/srat.c @@ -50,14 +50,19 @@ static __init inline int srat_disabled(v void __init acpi_numa_slit_init(struct acpi_table_slit *slit) { int i, j; + int from_node, to_node; for (i = 0; i < slit->locality_count; i++) { - if (pxm_to_node(i) == NUMA_NO_NODE) + from_node = pxm_to_node(i); + if (from_node == NUMA_NO_NODE) continue; + for (j = 0; j < slit->locality_count; j++) { - if (pxm_to_node(j) == NUMA_NO_NODE) + to_node = pxm_to_node(j); + if (to_node == NUMA_NO_NODE) continue; - numa_set_distance(pxm_to_node(i), pxm_to_node(j), + + numa_set_distance(from_node, to_node, slit->entry[slit->locality_count * i + j]); } } ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] x86, mm: Avoid extra pxm_to_node() 2014-01-26 9:10 ` [PATCH] x86, mm: Avoid extra pxm_to_node() Yinghai Lu @ 2014-01-26 9:10 ` Ingo Molnar 2014-01-26 9:28 ` David Rientjes 1 sibling, 0 replies; 13+ messages in thread From: Ingo Molnar @ 2014-01-26 9:10 UTC (permalink / raw) To: Yinghai Lu Cc: H. Peter Anvin, Toshi Kani, Thomas Gleixner, Andrew Morton, David Rientjes, linux-kernel * Yinghai Lu <yinghai@kernel.org> wrote: > In slit init code, more pxm_to_node() calling are added. > > We can cache return with from_node/to_node to avoid them. -ENOPARSE. Please formulate the title and the changelog in an understandable form. Thanks, Ingo ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH] x86, mm: Avoid extra pxm_to_node() 2014-01-26 9:10 ` [PATCH] x86, mm: Avoid extra pxm_to_node() Yinghai Lu 2014-01-26 9:10 ` Ingo Molnar @ 2014-01-26 9:28 ` David Rientjes 1 sibling, 0 replies; 13+ messages in thread From: David Rientjes @ 2014-01-26 9:28 UTC (permalink / raw) To: Yinghai Lu Cc: Ingo Molnar, H. Peter Anvin, Toshi Kani, Thomas Gleixner, Andrew Morton, linux-kernel On Sun, 26 Jan 2014, Yinghai Lu wrote: > Index: linux-2.6/arch/x86/mm/srat.c > =================================================================== > --- linux-2.6.orig/arch/x86/mm/srat.c > +++ linux-2.6/arch/x86/mm/srat.c > @@ -50,14 +50,19 @@ static __init inline int srat_disabled(v > void __init acpi_numa_slit_init(struct acpi_table_slit *slit) > { > int i, j; > + int from_node, to_node; > > for (i = 0; i < slit->locality_count; i++) { > - if (pxm_to_node(i) == NUMA_NO_NODE) > + from_node = pxm_to_node(i); > + if (from_node == NUMA_NO_NODE) > continue; > + > for (j = 0; j < slit->locality_count; j++) { > - if (pxm_to_node(j) == NUMA_NO_NODE) > + to_node = pxm_to_node(j); > + if (to_node == NUMA_NO_NODE) > continue; > - numa_set_distance(pxm_to_node(i), pxm_to_node(j), > + > + numa_set_distance(from_node, to_node, > slit->entry[slit->locality_count * i + j]); > } > } Might as well make them "const" while you're at it by moving the definitions inside the iteration blocks. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling. 2014-01-26 8:46 ` Ingo Molnar 2014-01-26 9:10 ` [PATCH] x86, mm: Avoid extra pxm_to_node() Yinghai Lu @ 2014-01-26 21:01 ` Yinghai Lu 2014-01-26 21:08 ` David Rientjes ` (2 more replies) 1 sibling, 3 replies; 13+ messages in thread From: Yinghai Lu @ 2014-01-26 21:01 UTC (permalink / raw) To: Ingo Molnar Cc: H. Peter Anvin, Toshi Kani, Thomas Gleixner, Andrew Morton, David Rientjes, linux-kernel, Yinghai Lu In slit init code, more pxm_to_node() calling are added. We can store from_node/to_node instead of keep calling pxm_to_node(). After this patch: pxm_to_node() is called n*(1+n) Before this patch: pxm_to_node() is called n*(1+n*3) for 8 socket, it will be 72 instead of 200. for 32 socket, it will be 1056 instead of 3104. -v2: update title and change log according to Ingo. move from_node/to_node in loop and change to const according to David Rientjes. Signed-off-by: Yinghai Lu <yinghai@kernel.org> --- arch/x86/mm/srat.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) Index: linux-2.6/arch/x86/mm/srat.c =================================================================== --- linux-2.6.orig/arch/x86/mm/srat.c +++ linux-2.6/arch/x86/mm/srat.c @@ -52,12 +52,18 @@ void __init acpi_numa_slit_init(struct a int i, j; for (i = 0; i < slit->locality_count; i++) { - if (pxm_to_node(i) == NUMA_NO_NODE) + const int from_node = pxm_to_node(i); + + if (from_node == NUMA_NO_NODE) continue; + for (j = 0; j < slit->locality_count; j++) { - if (pxm_to_node(j) == NUMA_NO_NODE) + const int to_node = pxm_to_node(j); + + if (to_node == NUMA_NO_NODE) continue; - numa_set_distance(pxm_to_node(i), pxm_to_node(j), + + numa_set_distance(from_node, to_node, slit->entry[slit->locality_count * i + j]); } } ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling. 2014-01-26 21:01 ` [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling Yinghai Lu @ 2014-01-26 21:08 ` David Rientjes 2014-01-27 14:49 ` Toshi Kani 2014-02-10 13:32 ` [tip:x86/mm] x86/mm: Avoid duplicated pxm_to_node() calls tip-bot for Yinghai Lu 2 siblings, 0 replies; 13+ messages in thread From: David Rientjes @ 2014-01-26 21:08 UTC (permalink / raw) To: Yinghai Lu Cc: Ingo Molnar, H. Peter Anvin, Toshi Kani, Thomas Gleixner, Andrew Morton, linux-kernel On Sun, 26 Jan 2014, Yinghai Lu wrote: > In slit init code, more pxm_to_node() calling are added. > > We can store from_node/to_node instead of keep calling pxm_to_node(). > > After this patch: pxm_to_node() is called n*(1+n) > Before this patch: pxm_to_node() is called n*(1+n*3) > > for 8 socket, it will be 72 instead of 200. > for 32 socket, it will be 1056 instead of 3104. > > -v2: update title and change log according to Ingo. > move from_node/to_node in loop and change to const according to > David Rientjes. > > Signed-off-by: Yinghai Lu <yinghai@kernel.org> Acked-by: David Rientjes <rientjes@google.com> ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling. 2014-01-26 21:01 ` [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling Yinghai Lu 2014-01-26 21:08 ` David Rientjes @ 2014-01-27 14:49 ` Toshi Kani 2014-01-27 19:08 ` Yinghai Lu 2014-02-10 13:32 ` [tip:x86/mm] x86/mm: Avoid duplicated pxm_to_node() calls tip-bot for Yinghai Lu 2 siblings, 1 reply; 13+ messages in thread From: Toshi Kani @ 2014-01-27 14:49 UTC (permalink / raw) To: Yinghai Lu Cc: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, Andrew Morton, David Rientjes, linux-kernel On Sun, 2014-01-26 at 13:01 -0800, Yinghai Lu wrote: > In slit init code, more pxm_to_node() calling are added. > > We can store from_node/to_node instead of keep calling pxm_to_node(). > > After this patch: pxm_to_node() is called n*(1+n) > Before this patch: pxm_to_node() is called n*(1+n*3) > > for 8 socket, it will be 72 instead of 200. > for 32 socket, it will be 1056 instead of 3104. > > -v2: update title and change log according to Ingo. > move from_node/to_node in loop and change to const according to > David Rientjes. > > Signed-off-by: Yinghai Lu <yinghai@kernel.org> In my original patch, I added the following comment to the function to address David's comment (which he acked). So, can you add this comment? -/* Callback for SLIT parsing */ +/* + * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for + * I/O localities since SRAT does not list them. I/O localities are + * not supported at this point. + */ Otherwise, the change looks good to me. Acked-by: Toshi Kani <toshi.kani@hp.com> Thanks, -Toshi ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling. 2014-01-27 14:49 ` Toshi Kani @ 2014-01-27 19:08 ` Yinghai Lu 2014-01-27 19:05 ` Toshi Kani 0 siblings, 1 reply; 13+ messages in thread From: Yinghai Lu @ 2014-01-27 19:08 UTC (permalink / raw) To: Toshi Kani Cc: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, Andrew Morton, David Rientjes, Linux Kernel Mailing List On Mon, Jan 27, 2014 at 6:49 AM, Toshi Kani <toshi.kani@hp.com> wrote: > On Sun, 2014-01-26 at 13:01 -0800, Yinghai Lu wrote: >> In slit init code, more pxm_to_node() calling are added. >> >> We can store from_node/to_node instead of keep calling pxm_to_node(). >> >> After this patch: pxm_to_node() is called n*(1+n) >> Before this patch: pxm_to_node() is called n*(1+n*3) >> >> for 8 socket, it will be 72 instead of 200. >> for 32 socket, it will be 1056 instead of 3104. >> >> -v2: update title and change log according to Ingo. >> move from_node/to_node in loop and change to const according to >> David Rientjes. >> >> Signed-off-by: Yinghai Lu <yinghai@kernel.org> > > In my original patch, I added the following comment to the function to > address David's comment (which he acked). So, can you add this comment? > > -/* Callback for SLIT parsing */ > +/* > + * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for > + * I/O localities since SRAT does not list them. I/O localities are > + * not supported at this point. > + */ > > Otherwise, the change looks good to me. > > Acked-by: Toshi Kani <toshi.kani@hp.com> Hi, Toshi, This patch is delta patch to your patch that is in tip already. So you comments change is still there and not touched. Thanks Yinghai ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling. 2014-01-27 19:08 ` Yinghai Lu @ 2014-01-27 19:05 ` Toshi Kani 0 siblings, 0 replies; 13+ messages in thread From: Toshi Kani @ 2014-01-27 19:05 UTC (permalink / raw) To: Yinghai Lu Cc: Ingo Molnar, H. Peter Anvin, Thomas Gleixner, Andrew Morton, David Rientjes, Linux Kernel Mailing List On Mon, 2014-01-27 at 11:08 -0800, Yinghai Lu wrote: > On Mon, Jan 27, 2014 at 6:49 AM, Toshi Kani <toshi.kani@hp.com> wrote: > > On Sun, 2014-01-26 at 13:01 -0800, Yinghai Lu wrote: > >> In slit init code, more pxm_to_node() calling are added. > >> > >> We can store from_node/to_node instead of keep calling pxm_to_node(). > >> > >> After this patch: pxm_to_node() is called n*(1+n) > >> Before this patch: pxm_to_node() is called n*(1+n*3) > >> > >> for 8 socket, it will be 72 instead of 200. > >> for 32 socket, it will be 1056 instead of 3104. > >> > >> -v2: update title and change log according to Ingo. > >> move from_node/to_node in loop and change to const according to > >> David Rientjes. > >> > >> Signed-off-by: Yinghai Lu <yinghai@kernel.org> > > > > In my original patch, I added the following comment to the function to > > address David's comment (which he acked). So, can you add this comment? > > > > -/* Callback for SLIT parsing */ > > +/* > > + * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for > > + * I/O localities since SRAT does not list them. I/O localities are > > + * not supported at this point. > > + */ > > > > Otherwise, the change looks good to me. > > > > Acked-by: Toshi Kani <toshi.kani@hp.com> > > Hi, Toshi, > > This patch is delta patch to your patch that is in tip already. > > So you comments change is still there and not touched. Hi Yinghai, Sounds great! Thanks for the clarification! -Toshi ^ permalink raw reply [flat|nested] 13+ messages in thread
* [tip:x86/mm] x86/mm: Avoid duplicated pxm_to_node() calls 2014-01-26 21:01 ` [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling Yinghai Lu 2014-01-26 21:08 ` David Rientjes 2014-01-27 14:49 ` Toshi Kani @ 2014-02-10 13:32 ` tip-bot for Yinghai Lu 2 siblings, 0 replies; 13+ messages in thread From: tip-bot for Yinghai Lu @ 2014-02-10 13:32 UTC (permalink / raw) To: linux-tip-commits Cc: linux-kernel, hpa, mingo, yinghai, tglx, rientjes, toshi.kani Commit-ID: ba6a328f7dfc95b20df5e0eb33c698187e997190 Gitweb: http://git.kernel.org/tip/ba6a328f7dfc95b20df5e0eb33c698187e997190 Author: Yinghai Lu <yinghai@kernel.org> AuthorDate: Sun, 26 Jan 2014 13:01:42 -0800 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Sun, 9 Feb 2014 15:32:31 +0100 x86/mm: Avoid duplicated pxm_to_node() calls In slit init code, too many pxm_to_node() function calls are done. We can store from_node/to_node instead of keep calling pxm_to_node(). - Before this patch: pxm_to_node() is called n*(1+n*3) times. - After this patch: pxm_to_node() is called n*(1+n) times. for 8 sockets, it will be 72 instead of 200. for 32 sockets, it will be 1056 instead of 3104. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Toshi Kani <toshi.kani@hp.com> Cc: David Rientjes <rientjes@google.com> Link: http://lkml.kernel.org/r/1390770102-4007-1-git-send-email-yinghai@kernel.org Signed-off-by: Ingo Molnar <mingo@kernel.org> --- arch/x86/mm/srat.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c index 1953e9c..66338a6 100644 --- a/arch/x86/mm/srat.c +++ b/arch/x86/mm/srat.c @@ -52,12 +52,18 @@ void __init acpi_numa_slit_init(struct acpi_table_slit *slit) int i, j; for (i = 0; i < slit->locality_count; i++) { - if (pxm_to_node(i) == NUMA_NO_NODE) + const int from_node = pxm_to_node(i); + + if (from_node == NUMA_NO_NODE) continue; + for (j = 0; j < slit->locality_count; j++) { - if (pxm_to_node(j) == NUMA_NO_NODE) + const int to_node = pxm_to_node(j); + + if (to_node == NUMA_NO_NODE) continue; - numa_set_distance(pxm_to_node(i), pxm_to_node(j), + + numa_set_distance(from_node, to_node, slit->entry[slit->locality_count * i + j]); } } ^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT 2014-01-26 8:43 ` Yinghai Lu 2014-01-26 8:46 ` Ingo Molnar @ 2014-01-27 14:45 ` Toshi Kani 1 sibling, 0 replies; 13+ messages in thread From: Toshi Kani @ 2014-01-27 14:45 UTC (permalink / raw) To: Yinghai Lu Cc: Ingo Molnar, H. Peter Anvin, Linux Kernel Mailing List, Andrew Morton, Thomas Gleixner, David Rientjes, linux-tip-commits@vger.kernel.org On Sun, 2014-01-26 at 00:43 -0800, Yinghai Lu wrote: > On Sat, Jan 25, 2014 at 6:25 AM, tip-bot for Toshi Kani > <tipbot@zytor.com> wrote: > > Commit-ID: a85eba8814631d0d48361c8b9a7ee0984e80c03c > > Gitweb: http://git.kernel.org/tip/a85eba8814631d0d48361c8b9a7ee0984e80c03c > > Author: Toshi Kani <toshi.kani@hp.com> > > AuthorDate: Tue, 21 Jan 2014 14:33:15 -0800 > > Committer: Ingo Molnar <mingo@kernel.org> > > CommitDate: Sat, 25 Jan 2014 09:13:35 +0100 > > > > arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT > > > > When ACPI SLIT table has an I/O locality (i.e. a locality > > unique to an I/O device), numa_set_distance() emits this warning > > message: > > > > 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 to unnecessary confusion. > > > > Change acpi_numa_slit_init() to avoid calling > > numa_set_distance() with NUMA_NO_NODE. > > > > Signed-off-by: Toshi Kani <toshi.kani@hp.com> > > Acked-by: David Rientjes <rientjes@google.com> > > Signed-off-by: Andrew Morton <akpm@linux-foundation.org> > > Cc: Yinghai Lu <yinghai@kernel.org> > > Link: http://lkml.kernel.org/n/tip-dSvpjjvp8aMzs1ybkftxohlh@git.kernel.org > > Signed-off-by: Ingo Molnar <mingo@kernel.org> > > --- > > arch/x86/mm/srat.c | 16 +++++++++++++--- > > 1 file changed, 13 insertions(+), 3 deletions(-) > > > > diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c > > index 266ca91..5ecf651 100644 > > --- a/arch/x86/mm/srat.c > > +++ b/arch/x86/mm/srat.c > > @@ -42,15 +42,25 @@ static __init inline int srat_disabled(void) > > return acpi_numa < 0; > > } > > > > -/* Callback for SLIT parsing */ > > +/* > > + * Callback for SLIT parsing. pxm_to_node() returns NUMA_NO_NODE for > > + * I/O localities since SRAT does not list them. I/O localities are > > + * not supported at this point. > > + */ > > void __init acpi_numa_slit_init(struct acpi_table_slit *slit) > > { > > int i, j; > > > > - for (i = 0; i < slit->locality_count; i++) > > - for (j = 0; j < slit->locality_count; j++) > > + for (i = 0; i < slit->locality_count; i++) { > > + if (pxm_to_node(i) == NUMA_NO_NODE) > > + continue; > > + for (j = 0; j < slit->locality_count; j++) { > > + if (pxm_to_node(j) == NUMA_NO_NODE) > > + continue; > > numa_set_distance(pxm_to_node(i), pxm_to_node(j), > > slit->entry[slit->locality_count * i + j]); > > + } > > + } > > } > > > > /* Callback for Proximity Domain -> x2APIC mapping */ > > wonder if the patch that i sent one year ago is better. > > https://lkml.org/lkml/2013/1/21/559 > > as it avoid calling extra calling of pxm_to_node(i). Your version looks good to me, although I do not believe the difference is visible. I will reply to your patch with one comment and ack. Thanks, -Toshi ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2014-02-10 13:32 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-25 14:25 [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT tip-bot for Toshi Kani 2014-01-26 8:43 ` Yinghai Lu 2014-01-26 8:46 ` Ingo Molnar 2014-01-26 9:10 ` [PATCH] x86, mm: Avoid extra pxm_to_node() Yinghai Lu 2014-01-26 9:10 ` Ingo Molnar 2014-01-26 9:28 ` David Rientjes 2014-01-26 21:01 ` [PATCH v2] x86, mm: Avoid duplicated pxm_to_node() calling Yinghai Lu 2014-01-26 21:08 ` David Rientjes 2014-01-27 14:49 ` Toshi Kani 2014-01-27 19:08 ` Yinghai Lu 2014-01-27 19:05 ` Toshi Kani 2014-02-10 13:32 ` [tip:x86/mm] x86/mm: Avoid duplicated pxm_to_node() calls tip-bot for Yinghai Lu 2014-01-27 14:45 ` [tip:x86/urgent] arch/x86/mm/srat: Skip NUMA_NO_NODE while parsing SLIT Toshi Kani
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.