Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp4141169ybg; Mon, 21 Oct 2019 04:32:22 -0700 (PDT) X-Google-Smtp-Source: APXvYqy0x8Xe7AZIMefQ70t9/cpRs1hW9vRMAd+AVLMBkgLR2E2jKlg96ZtyaCdXw6KGJ2CyQRhe X-Received: by 2002:a50:fa94:: with SMTP id w20mr24694333edr.47.1571657542429; Mon, 21 Oct 2019 04:32:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571657542; cv=none; d=google.com; s=arc-20160816; b=Xz/84C4yctIwbIu8UFK7wdB3zJXssXh5Bcl2kPuQrHVaOalzNB3VdV7JQwllldiBc5 86hhC5uIzcrqJEO5qST1tn+9gzGq+a+i4oOFyqgg1hTbu+5t70ufBqX+g8KIkEMHi5v6 0ClqtaGuBDlRP9tInm4nlkK78yyXnfQOr0NWYEf2xUw0V7iUxlPNqk3PZdQK81OBtlzy LcUI+WcJPzO2nrLmwKx9ZGy9L0YsEfynwOBjcbDVfJTRSzOcR7mZC/WoDnO8YS1NCJPu 6Nc/iAxA+bdP7WSuZLYR/On1CMXn1xjFFnZn6m/HCalYEN0QZVKl/Rp81AguPka+ITAi nFGw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:mime-version:user-agent:date:message-id:subject :from:cc:to; bh=IzsyPPubfG/G284alUdUadsuye7Xf2/hZgOrne2EJq4=; b=rV+rooBEOuHV/QGNBXf+di88eN3UuuHeiWfOKJDjo83ilA6VY5nZ3qmk+uEv81Li/e MYP0a8EQO81W2FbQ5Of1nGVWeyxjuyl08pek3gwY/HF35HzEmNGs1dbIiU7aXmpEJst9 s3w1/4PdyzNaGpcuGJkPhbqR5c2Rr8Sr/ilZ4tjwsaNc19XHjvhbE7IKH2HDHAUbytyv mVqI0F1YwaEUgmPgpefKdcHX5/0LeLmSw7JUPiDuHTp/IWo1mDPxZ5XhlpexV6XVMBfT V6vJGahrovW/p4v0FitpX18YfxtGn6AVabLAAv9UPYftVNEwRhHRGKW9YSuVl58HbaFq v7RQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a26si9343183edv.35.2019.10.21.04.31.58; Mon, 21 Oct 2019 04:32:22 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728417AbfJULbm (ORCPT + 99 others); Mon, 21 Oct 2019 07:31:42 -0400 Received: from szxga04-in.huawei.com ([45.249.212.190]:4696 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727685AbfJULbl (ORCPT ); Mon, 21 Oct 2019 07:31:41 -0400 Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.58]) by Forcepoint Email with ESMTP id DC82232381C44C0CE0B9; Mon, 21 Oct 2019 19:31:39 +0800 (CST) Received: from [127.0.0.1] (10.177.251.225) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.439.0; Mon, 21 Oct 2019 19:31:32 +0800 To: , , , <", sudeep.holla"@arm.com>, , , , , , CC: , "linux-kernel@vger.kernel.org" , , , From: Yunfeng Ye Subject: [PATCH v6] arm64: psci: Reduce the waiting time for cpu_psci_cpu_kill() Message-ID: <0842431c-fa15-2ba1-ae6d-c1fea157941f@huawei.com> Date: Mon, 21 Oct 2019 19:31:21 +0800 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.177.251.225] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In cases like suspend-to-disk and suspend-to-ram, a large number of CPU cores need to be shut down. At present, the CPU hotplug operation is serialised, and the CPU cores can only be shut down one by one. In this process, if PSCI affinity_info() does not return LEVEL_OFF quickly, cpu_psci_cpu_kill() needs to wait for 10ms. If hundreds of CPU cores need to be shut down, it will take a long time. Normally, there is no need to wait 10ms in cpu_psci_cpu_kill(). So change the wait interval from 10 ms to max 1 ms and use usleep_range() instead of msleep() for more accurate timer. In addition, reducing the time interval will increase the messages output, so remove the "Retry ..." message, instead, track time and output to the the sucessful message. Signed-off-by: Yunfeng Ye Reviewed-by: Sudeep Holla --- v5 -> v6: - add "Reviewed-by:" v4 -> v5: - track time instead of loop counter v3 -> v4: - using time_before(jiffies, timeout) to check - update the comment as review suggest v2 -> v3: - update the comment - remove the busy-wait logic, modify the loop logic and output message v1 -> v2: - use usleep_range() instead of udelay() after waiting for a while arch/arm64/kernel/psci.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c index c9f72b2665f1..43ae4e0c968f 100644 --- a/arch/arm64/kernel/psci.c +++ b/arch/arm64/kernel/psci.c @@ -81,7 +81,8 @@ static void cpu_psci_cpu_die(unsigned int cpu) static int cpu_psci_cpu_kill(unsigned int cpu) { - int err, i; + int err; + unsigned long start, end; if (!psci_ops.affinity_info) return 0; @@ -91,16 +92,18 @@ static int cpu_psci_cpu_kill(unsigned int cpu) * while it is dying. So, try again a few times. */ - for (i = 0; i < 10; i++) { + start = jiffies; + end = start + msecs_to_jiffies(100); + do { err = psci_ops.affinity_info(cpu_logical_map(cpu), 0); if (err == PSCI_0_2_AFFINITY_LEVEL_OFF) { - pr_info("CPU%d killed.\n", cpu); + pr_info("CPU%d killed (polled %d ms)\n", cpu, + jiffies_to_msecs(jiffies - start)); return 0; } - msleep(10); - pr_info("Retrying again to check for CPU kill\n"); - } + usleep_range(100, 1000); + } while (time_before(jiffies, end)); pr_warn("CPU%d may not have shut down cleanly (AFFINITY_INFO reports %d)\n", cpu, err); -- 2.7.4.3