From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: Re: [PATCH v4 1/9] numa: __node_distance() should return u8 Date: Tue, 10 Mar 2015 09:49:30 -0400 Message-ID: <54FEF66A.1070901@oracle.com> References: <1425954475-4913-1-git-send-email-boris.ostrovsky@oracle.com> <1425954475-4913-2-git-send-email-boris.ostrovsky@oracle.com> <54FEDB20.6030800@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <54FEDB20.6030800@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Andrew Cooper , jbeulich@suse.com, keir@xen.org, ian.jackson@eu.citrix.com, stefano.stabellini@eu.citrix.com, ian.campbell@citrix.com, wei.liu2@citrix.com Cc: elena.ufimtseva@oracle.com, dario.faggioli@citrix.com, xen-devel@lists.xen.org List-Id: xen-devel@lists.xenproject.org On 03/10/2015 07:53 AM, Andrew Cooper wrote: > On 10/03/15 02:27, Boris Ostrovsky wrote: >> SLIT values are byte-sized and some of them (0-9 and 255) have >> special meaning. Adjust __node_distance() to reflect this and >> modify scrub_heap_pages() to deal with __node_distance() returning >> an invalid SLIT entry. >> >> Signed-off-by: Boris Ostrovsky > You also need to teach XEN_SYSCTL_numainfo about the new NUMA_NO_DISTANCE. The sysctl is updated later in the series but this may indeed break bisection. > >> --- >> xen/arch/x86/srat.c | 15 +++++++++++---- >> xen/common/page_alloc.c | 4 ++-- >> xen/include/asm-x86/numa.h | 2 +- >> xen/include/xen/numa.h | 3 ++- >> 4 files changed, 16 insertions(+), 8 deletions(-) >> >> diff --git a/xen/arch/x86/srat.c b/xen/arch/x86/srat.c >> index dfabba3..aa2eda3 100644 >> --- a/xen/arch/x86/srat.c >> +++ b/xen/arch/x86/srat.c >> @@ -496,14 +496,21 @@ static unsigned node_to_pxm(nodeid_t n) >> return 0; >> } >> >> -int __node_distance(nodeid_t a, nodeid_t b) >> +u8 __node_distance(nodeid_t a, nodeid_t b) >> { >> - int index; >> + u8 slit_val; >> >> if (!acpi_slit) >> return a == b ? 10 : 20; >> - index = acpi_slit->locality_count * node_to_pxm(a); >> - return acpi_slit->entry[index + node_to_pxm(b)]; >> + >> + slit_val = acpi_slit->entry[acpi_slit->locality_count * node_to_pxm(a) + >> + node_to_pxm(b)]; > This would be easier to read if you kept the old index temporary > (although making it a u64). Yes. -boris