* [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 a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox