From patchwork Tue Jul 18 11:41:44 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vijay Kilari X-Patchwork-Id: 9848103 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id EE15160392 for ; Tue, 18 Jul 2017 11:45:24 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DADDE283C3 for ; Tue, 18 Jul 2017 11:45:24 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id CF8A928497; Tue, 18 Jul 2017 11:45:24 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.1 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED,FREEMAIL_FROM,RCVD_IN_DNSWL_MED,RCVD_IN_SORBS_SPAM, RCVD_IN_SORBS_WEB,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 73108283C3 for ; Tue, 18 Jul 2017 11:45:24 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dXQut-0007iY-1N; Tue, 18 Jul 2017 11:43:51 +0000 Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dXQur-0007gc-ND for xen-devel@lists.xen.org; Tue, 18 Jul 2017 11:43:49 +0000 Received: from [85.158.137.68] by server-16.bemta-3.messagelabs.com id B8/B7-01732-574FD695; Tue, 18 Jul 2017 11:43:49 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrDIsWRWlGSWpSXmKPExsVyMfTAYd2SL7m RBivvcVks+biYxYHR4+ju30wBjFGsmXlJ+RUJrBnzF/1hL2iRr1jz7DNLA+N+iS5GLg4hgYmM EldW97CAOCwCL1kkzv+dC+ZICPSzSryYeY21i5ETyImT+Lt8N5DNAWRXSPTsLQEJCwmoSnT8f 8sOMamNSWL1w9Vg9WwCMhJHnh9gArFFBKQlrn2+zAhSxCywjUli0/Wp7CAJYQFbiY6XF8CKWI Am/WjvYQSxeQXcJBoftTJDLFOQmDPJBiTMCRRe1HWJHWKxq8SNvpWsExgFFjAyrGLUKE4tKks t0jU010sqykzPKMlNzMzRNTQw1stNLS5OTE/NSUwq1kvOz93ECAwtBiDYwfjytOchRkkOJiVR 3tUHciOF+JLyUyozEosz4otKc1KLDzHKcHAoSfCyfQbKCRalpqdWpGXmAIMcJi3BwaMkwisOk uYtLkjMLc5Mh0idYrTkuHJl3RcmjikHtgPJVxP+f2MSYsnLz0uVEucVBWkQAGnIKM2DGweLxE uMslLCvIxABwrxFKQW5WaWoMq/YhTnYFQS5lUHmcKTmVcCt/UV0EFMQAcJ++aAHFSSiJCSamC MtPzD0RF9++HU2bX22QK6P27svMCrbfk33OLtzPVOrfc4ma+uLb3A3yEolXI+//63pM0J843V Z17TK1E+9uNQ1e4Q946gtcJdU3V8/Fd/rmflWbKAJ75TSsXp2V/HJV8V9Uwi2rMueIYsCtxxx 33hhheJE7eXypx+yXbE+GzNgjYBifqkeUuVWIozEg21mIuKEwE0CF+zvwIAAA== X-Env-Sender: vijay.kilari@gmail.com X-Msg-Ref: server-4.tower-31.messagelabs.com!1500378226!47893126!1 X-Originating-IP: [209.85.192.195] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.4.25; banners=-,-,- X-VirusChecked: Checked Received: (qmail 24305 invoked from network); 18 Jul 2017 11:43:48 -0000 Received: from mail-pf0-f195.google.com (HELO mail-pf0-f195.google.com) (209.85.192.195) by server-4.tower-31.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 18 Jul 2017 11:43:48 -0000 Received: by mail-pf0-f195.google.com with SMTP id o88so2410154pfk.1 for ; Tue, 18 Jul 2017 04:43:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Dz4fK+0QQ5zsEW96Dq/M00FHNqhQ0MzBzyunmh5vcLM=; b=B3bwkFv+p3yy8zrloOkMnYZ/sixJBzwkPoAqGDuBXYas+xIn9EqrGbgNX+JKLrFKPX H6ugjdRRcnNqyswciJCfTN2kvBfxdfJGbelVs+fj4Wt4/w2KeX1b5p4tSqdzhcaIX6+i 0e9mbmlRpDslxrjJTyFCfrEfA12QG5n/t7LnAL9G+aSYUiySKw+O/Dc17PwXSNPRqAT5 UiBpzmB8gJdxDOW8k+A+tlJrzXZfSi4AnJx2EH4dZCB2yMVLZr9t51OjsFu763aFFU/4 SS8MWamHNA7zSVRCIDi/6l+m43QrggbJwyJ28I+guvpl0bRm3Q/vChRrgrR6IlUryrUq QG/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Dz4fK+0QQ5zsEW96Dq/M00FHNqhQ0MzBzyunmh5vcLM=; b=SI1Epnwy6qhdeyRYPgPq02/m5deo6nQedf0hvc43iLf8kiCNQYwnGA3cDusOD1UKor tzxMl3iJiSj5340TsReJ6UG9oyyeXLJBN3T1BkmiTRN/UGDN3sx/MQAMK8h6an2PosnM 6J8xXkfse1zy4ND8lR8MyILj8XPLYCfYiDXhws3Gps+9VxVpC4T8M19Pk8nvhulU4W8z GSlkO+Uv/UgKPwsFvw/3UpgLSAJlCL9ojCqzIAmgA0sfQH/8MPLL3qSEF6OAhng8fPsi ay58fwqb38FABh/G8qMX1DITE7GeoQxAuFnbQ73nYIp5ZAHa3CUEw0L2QYvdy8OsJniG YECA== X-Gm-Message-State: AIVw112guAh/VKwtmhbe2SCyqoJZkJQhPNai7qdtaZgTNcSl1E/1R9iM 0KbBNiP5gBMdXj7S X-Received: by 10.84.218.66 with SMTP id f2mr1367142plm.206.1500378226341; Tue, 18 Jul 2017 04:43:46 -0700 (PDT) Received: from cavium-Vostro-2520.caveonetworks.com ([111.93.218.67]) by smtp.gmail.com with ESMTPSA id r27sm4879707pfe.0.2017.07.18.04.43.42 (version=TLS1_1 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 18 Jul 2017 04:43:45 -0700 (PDT) From: vijay.kilari@gmail.com To: xen-devel@lists.xen.org Date: Tue, 18 Jul 2017 17:11:44 +0530 Message-Id: <1500378106-2620-23-git-send-email-vijay.kilari@gmail.com> X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1500378106-2620-1-git-send-email-vijay.kilari@gmail.com> References: <1500378106-2620-1-git-send-email-vijay.kilari@gmail.com> Cc: kevin.tian@intel.com, sstabellini@kernel.org, wei.liu2@citrix.com, George.Dunlap@eu.citrix.com, andrew.cooper3@citrix.com, dario.faggioli@citrix.com, ian.jackson@eu.citrix.com, tim@xen.org, julien.grall@arm.com, jbeulich@suse.com, Vijaya Kumar K Subject: [Xen-devel] [RFC PATCH v3 22/24] ARM: NUMA: Initialize ACPI NUMA X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP From: Vijaya Kumar K Call ACPI NUMA initialization under CONFIG_ACPI_NUMA. Signed-off-by: Vijaya Kumar --- xen/arch/arm/numa/acpi_numa.c | 27 ++++++++++++++++++++++++++- xen/arch/arm/numa/numa.c | 15 +++++++++++++-- xen/common/numa.c | 14 ++++++++++++++ xen/include/asm-arm/numa.h | 1 + xen/include/xen/numa.h | 1 + 5 files changed, 55 insertions(+), 3 deletions(-) diff --git a/xen/arch/arm/numa/acpi_numa.c b/xen/arch/arm/numa/acpi_numa.c index 95617f9..68fff95 100644 --- a/xen/arch/arm/numa/acpi_numa.c +++ b/xen/arch/arm/numa/acpi_numa.c @@ -181,7 +181,7 @@ acpi_numa_gicc_affinity_init(const struct acpi_srat_gicc_affinity *pa) pxm, mpidr, node); } -void __init acpi_map_uid_to_mpidr(void) +static void __init acpi_map_uid_to_mpidr(void) { acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_INTERRUPT, acpi_parse_madt_handler, NR_CPUS); @@ -209,6 +209,31 @@ void __init arch_table_parse_srat(void) acpi_parse_gicc_affinity, NR_CPUS); } +bool_t __init arch_acpi_numa_init(void) +{ + int ret; + + if ( !acpi_disabled ) + { + /* + * If firmware has DT, process_memory_node() call + * would have added memory blocks. So reset it before + * ACPI numa init. + */ + numa_clear_memblks(); + nodes_clear(memory_nodes_parsed); + acpi_map_uid_to_mpidr(); + ret = acpi_numa_init(); + if ( ret || srat_disabled() ) + return 1; + + /* Register acpi node_distance handler */ + register_node_distance(&acpi_node_distance); + } + + return 0; +} + void __init acpi_numa_arch_fixup(void) {} /* diff --git a/xen/arch/arm/numa/numa.c b/xen/arch/arm/numa/numa.c index 26aa4c0..68599c4 100644 --- a/xen/arch/arm/numa/numa.c +++ b/xen/arch/arm/numa/numa.c @@ -139,11 +139,22 @@ void __init numa_init(void) if ( numa_off ) goto no_numa; - ret = dt_numa_init(); +#ifdef CONFIG_ACPI_NUMA + ret = arch_acpi_numa_init(); if ( ret ) { numa_off = true; - printk(XENLOG_WARNING "DT NUMA init failed\n"); + printk(XENLOG_WARNING "ACPI NUMA init failed\n"); + } +#endif + if ( acpi_disabled ) + { + ret = dt_numa_init(); + if ( ret ) + { + numa_off = true; + printk(XENLOG_WARNING "DT NUMA init failed\n"); + } } no_numa: diff --git a/xen/common/numa.c b/xen/common/numa.c index 0f79a07..020bc19 100644 --- a/xen/common/numa.c +++ b/xen/common/numa.c @@ -76,6 +76,20 @@ nodeid_t get_memblk_nodeid(unsigned int id) return memblk_nodeid[id]; } +void __init numa_clear_memblks(void) +{ + unsigned int i; + + for ( i = 0; i < get_num_node_memblks(); i++ ) + { + node_memblk_range[i].start = 0; + node_memblk_range[i].end = 0; + memblk_nodeid[i] = NUMA_NO_NODE; + } + + num_node_memblks = 0; +} + int __init get_mem_nodeid(paddr_t start, paddr_t end) { unsigned int i; diff --git a/xen/include/asm-arm/numa.h b/xen/include/asm-arm/numa.h index f0a50bd..ff10b31 100644 --- a/xen/include/asm-arm/numa.h +++ b/xen/include/asm-arm/numa.h @@ -20,6 +20,7 @@ static inline nodeid_t acpi_get_nodeid(uint64_t hwid) void numa_init(void); int dt_numa_init(void); void numa_set_cpu_node(int cpu, unsigned int nid); +bool_t arch_acpi_numa_init(void); #else static inline void numa_init(void) diff --git a/xen/include/xen/numa.h b/xen/include/xen/numa.h index a541eb7..14a7a0c 100644 --- a/xen/include/xen/numa.h +++ b/xen/include/xen/numa.h @@ -75,6 +75,7 @@ int get_num_node_memblks(void); bool arch_sanitize_nodes_memory(void); void numa_failed(void); uint8_t __node_distance(nodeid_t a, nodeid_t b); +void numa_clear_memblks(void); #else static inline void numa_add_cpu(int cpu) { } static inline void numa_set_node(int cpu, nodeid_t node) { }