[{"id":1764143,"web_url":"http://patchwork.ozlabs.org/comment/1764143/","msgid":"<ed69e975-2282-0a50-484c-84db5156583e@linux.vnet.ibm.com>","date":"2017-09-06T14:20:23","subject":"Re: [PATCH V13 1/4] powerpc/vphn: Update CPU topology when VPHN\n\tenabled","submitter":{"id":17146,"url":"http://patchwork.ozlabs.org/api/people/17146/","name":"Nathan Fontenot","email":"nfont@linux.vnet.ibm.com"},"content":"On 09/01/2017 10:48 AM, Michael Bringmann wrote:\n> powerpc/vphn: On Power systems with shared configurations of CPUs\n> and memory, there are some issues with the association of additional\n> CPUs and memory to nodes when hot-adding resources.  This patch\n> corrects the currently broken capability to set the topology for\n> shared CPUs in LPARs.  At boot time for shared CPU lpars, the\n> topology for each CPU was being set to node zero.  Now when\n> numa_update_cpu_topology() is called appropriately, the Virtual\n> Processor Home Node (VPHN) capabilities information provided by the\n> pHyp allows the appropriate node in the shared configuration to be\n> selected for the CPU.\n> \n> Signed-off-by: Michael Bringmann <mwb@linux.vnet.ibm.com>\n> ---\n> Changes in V13:\n>   -- Split patch for improved review\n> ---\n>  arch/powerpc/mm/numa.c |   31 ++++++++++++++++++++++++++++---\n>  1 file changed, 28 insertions(+), 3 deletions(-)\n> \n> diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c\n> index b95c584..312f6ee 100644\n> --- a/arch/powerpc/mm/numa.c\n> +++ b/arch/powerpc/mm/numa.c\n> @@ -1153,6 +1153,8 @@ struct topology_update_data {\n>  static int vphn_enabled;\n>  static int prrn_enabled;\n>  static void reset_topology_timer(void);\n> +static int topology_inited;\n> +static int topology_update_needed;\n> \n>  /*\n>   * Store the current values of the associativity change counters in the\n> @@ -1246,6 +1248,11 @@ static long vphn_get_associativity(unsigned long cpu,\n>  \t\t\t\"hcall_vphn() experienced a hardware fault \"\n>  \t\t\t\"preventing VPHN. Disabling polling...\\n\");\n>  \t\tstop_topology_update();\n> +\t\tbreak;\n> +\tcase H_SUCCESS:\n> +\t\tdbg(\"VPHN hcall succeeded. Reset polling...\\n\");\n> +\t\ttimed_topology_update(0);\n> +\t\tbreak;\n>  \t}\n> \n>  \treturn rc;\n> @@ -1323,8 +1330,11 @@ int numa_update_cpu_topology(bool cpus_locked)\n>  \tstruct device *dev;\n>  \tint weight, new_nid, i = 0;\n> \n> -\tif (!prrn_enabled && !vphn_enabled)\n> +\tif (!prrn_enabled && !vphn_enabled) {\n> +\t\tif (!topology_inited)\n> +\t\t\ttopology_update_needed = 1;\n>  \t\treturn 0;\n> +\t}\n> \n>  \tweight = cpumask_weight(&cpu_associativity_changes_mask);\n>  \tif (!weight)\n> @@ -1363,6 +1373,8 @@ int numa_update_cpu_topology(bool cpus_locked)\n>  \t\t\tcpumask_andnot(&cpu_associativity_changes_mask,\n>  \t\t\t\t\t&cpu_associativity_changes_mask,\n>  \t\t\t\t\tcpu_sibling_mask(cpu));\n> +\t\t\tpr_info(\"Assoc chg gives same node %d for cpu%d\\n\",\n> +\t\t\t\t\tnew_nid, cpu);\n\nAs mentioned previously, this should either be removed or changed to a\ndebug statement.\n\n>  \t\t\tcpu = cpu_last_thread_sibling(cpu);\n>  \t\t\tcontinue;\n>  \t\t}\n> @@ -1433,6 +1445,7 @@ int numa_update_cpu_topology(bool cpus_locked)\n> \n>  out:\n>  \tkfree(updates);\n> +\ttopology_update_needed = 0;\n>  \treturn changed;\n>  }\n> \n> @@ -1453,6 +1466,13 @@ static void topology_schedule_update(void)\n>  \tschedule_work(&topology_work);\n>  }\n> \n> +void shared_topology_update(void)\n> +{\n> +\tif (firmware_has_feature(FW_FEATURE_VPHN) &&\n> +\t\t   lppaca_shared_proc(get_lppaca()))\n\nCould we just check vphn_enabled here? The init routine will set this to true\nonly if the feature is supported and we are using shared processors.\n\nAlso, this routine seems a bit odd. The only place it is called from is an\ninit routine, topology_update_init. Is there a reason this check couldn't just\nbe in that routine, or it seems like you could just call topology_schedule_update\ndirectly from start_topology_update when vphn is initialized.\n\n-Nathan\n\n> +\t\ttopology_schedule_update();\n> +}\n> +\n>  static void topology_timer_fn(unsigned long ignored)\n>  {\n>  \tif (prrn_enabled && cpumask_weight(&cpu_associativity_changes_mask))\n> @@ -1519,7 +1539,6 @@ int start_topology_update(void)\n>  \tif (firmware_has_feature(FW_FEATURE_PRRN)) {\n>  \t\tif (!prrn_enabled) {\n>  \t\t\tprrn_enabled = 1;\n> -\t\t\tvphn_enabled = 0;\n>  #ifdef CONFIG_SMP\n>  \t\t\trc = of_reconfig_notifier_register(&dt_update_nb);\n>  #endif\n> @@ -1527,7 +1546,6 @@ int start_topology_update(void)\n>  \t} else if (firmware_has_feature(FW_FEATURE_VPHN) &&\n>  \t\t   lppaca_shared_proc(get_lppaca())) {\n>  \t\tif (!vphn_enabled) {\n> -\t\t\tprrn_enabled = 0;\n>  \t\t\tvphn_enabled = 1;\n>  \t\t\tsetup_cpu_associativity_change_counters();\n>  \t\t\tinit_timer_deferrable(&topology_timer);\n> @@ -1613,9 +1631,16 @@ static int topology_update_init(void)\n>  \tif (topology_updates_enabled)\n>  \t\tstart_topology_update();\n> \n> +\tshared_topology_update();\n> +\n>  \tif (!proc_create(\"powerpc/topology_updates\", 0644, NULL, &topology_ops))\n>  \t\treturn -ENOMEM;\n> \n> +\ttopology_inited = 1;\n> +\tif (topology_update_needed)\n> +\t\tbitmap_fill(cpumask_bits(&cpu_associativity_changes_mask),\n> +\t\t\t\t\tnr_cpumask_bits);\n> +\n>  \treturn 0;\n>  }\n>  device_initcall(topology_update_init);\n>","headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>","X-Original-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":["patchwork-incoming@ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Received":["from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\t(using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnQlW4tdCz9t43\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu,  7 Sep 2017 00:22:31 +1000 (AEST)","from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 3xnQlW3nbdzDrX0\n\tfor <patchwork-incoming@ozlabs.org>;\n\tThu,  7 Sep 2017 00:22:31 +1000 (AEST)","from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com\n\t[148.163.156.1])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 3xnQk93HxpzDrKx\n\tfor <linuxppc-dev@lists.ozlabs.org>;\n\tThu,  7 Sep 2017 00:21:21 +1000 (AEST)","from pps.filterd (m0098393.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.16.0.21/8.16.0.21) with SMTP id\n\tv86EL9ZX058185\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 6 Sep 2017 10:21:19 -0400","from e14.ny.us.ibm.com (e14.ny.us.ibm.com [129.33.205.204])\n\tby mx0a-001b2d01.pphosted.com with ESMTP id 2ctey86n1q-1\n\t(version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT)\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 06 Sep 2017 10:21:15 -0400","from localhost\n\tby e14.ny.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use\n\tOnly! Violators will be prosecuted\n\tfor <linuxppc-dev@lists.ozlabs.org> from <nfont@linux.vnet.ibm.com>; \n\tWed, 6 Sep 2017 10:20:27 -0400","from b01cxnp22033.gho.pok.ibm.com (9.57.198.23)\n\tby e14.ny.us.ibm.com (146.89.104.201) with IBM ESMTP SMTP Gateway:\n\tAuthorized Use Only! Violators will be prosecuted; \n\tWed, 6 Sep 2017 10:20:24 -0400","from b01ledav003.gho.pok.ibm.com (b01ledav003.gho.pok.ibm.com\n\t[9.57.199.108])\n\tby b01cxnp22033.gho.pok.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP\n\tid v86EKNsj20185222; Wed, 6 Sep 2017 14:20:23 GMT","from b01ledav003.gho.pok.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id A68C4B2046;\n\tWed,  6 Sep 2017 10:17:46 -0400 (EDT)","from [9.41.92.186] (unknown [9.41.92.186])\n\tby b01ledav003.gho.pok.ibm.com (Postfix) with ESMTP id 3FD08B2052;\n\tWed,  6 Sep 2017 10:17:46 -0400 (EDT)"],"Authentication-Results":"ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=linux.vnet.ibm.com\n\t(client-ip=148.163.156.1; helo=mx0a-001b2d01.pphosted.com;\n\tenvelope-from=nfont@linux.vnet.ibm.com; receiver=<UNKNOWN>)","Subject":"Re: [PATCH V13 1/4] powerpc/vphn: Update CPU topology when VPHN\n\tenabled","To":"Michael Bringmann <mwb@linux.vnet.ibm.com>, linuxppc-dev@lists.ozlabs.org,\n\tlinux-kernel@vger.kernel.org","References":"<9d924c2f-9ad7-f544-519c-5ae967105069@linux.vnet.ibm.com>","From":"Nathan Fontenot <nfont@linux.vnet.ibm.com>","Date":"Wed, 6 Sep 2017 09:20:23 -0500","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<9d924c2f-9ad7-f544-519c-5ae967105069@linux.vnet.ibm.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-TM-AS-GCONF":"00","x-cbid":"17090614-0052-0000-0000-0000025BA2BC","X-IBM-SpamModules-Scores":"","X-IBM-SpamModules-Versions":"BY=3.00007677; HX=3.00000241; KW=3.00000007;\n\tPH=3.00000004; SC=3.00000226; SDB=6.00913104; UDB=6.00458252;\n\tIPR=6.00693366; \n\tBA=6.00005574; NDR=6.00000001; ZLA=6.00000005; ZF=6.00000009;\n\tZB=6.00000000; \n\tZP=6.00000000; ZH=6.00000000; ZU=6.00000002; MB=3.00017033;\n\tXFM=3.00000015; UTC=2017-09-06 14:20:25","X-IBM-AV-DETECTION":"SAVI=unused REMOTE=unused XFE=unused","x-cbparentid":"17090614-0053-0000-0000-000051E7E88A","Message-Id":"<ed69e975-2282-0a50-484c-84db5156583e@linux.vnet.ibm.com>","X-Proofpoint-Virus-Version":"vendor=fsecure engine=2.50.10432:, ,\n\tdefinitions=2017-09-06_05:, , signatures=0","X-Proofpoint-Spam-Details":"rule=outbound_notspam policy=outbound score=0\n\tspamscore=0 suspectscore=0\n\tmalwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam\n\tadjust=0 reason=mlx scancount=1 engine=8.0.1-1707230000\n\tdefinitions=main-1709060201","X-BeenThere":"linuxppc-dev@lists.ozlabs.org","X-Mailman-Version":"2.1.23","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List\n\t<linuxppc-dev.lists.ozlabs.org>","List-Unsubscribe":"<https://lists.ozlabs.org/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=unsubscribe>","List-Archive":"<http://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=help>","List-Subscribe":"<https://lists.ozlabs.org/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@lists.ozlabs.org?subject=subscribe>","Cc":"John Allen <jallen@linux.vnet.ibm.com>","Errors-To":"linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org","Sender":"\"Linuxppc-dev\"\n\t<linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org>"}}]