Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp4102739ybg; Mon, 21 Oct 2019 03:55:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqzW8M822ydlPmGN5OJYysHHWQEuGhTPXS+GBSLdAy6InlHqaJ69D0u7TG792frBi4tS/qev X-Received: by 2002:a17:906:3049:: with SMTP id d9mr21142499ejd.288.1571655329614; Mon, 21 Oct 2019 03:55:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571655329; cv=none; d=google.com; s=arc-20160816; b=fJOxYxJgRZTZ4cooWLE/N0G/0Zn+F9ihH5Y8B0JO51gMYim7DLxugdxo/yL6qK20Xw VqjlzmtDnp5udeaFtLBfxi/u6BISK2xm3xtVc7jqb12VB1UEU6T6ibgZHJcUeSXAhvP9 LPdSwWRYtY9r0jsghQhmv2379OmVtL9l/27ATdzvGbi7679nOzx5wfRR0IBn+Ay4b0ql BRtjdSjOlsb0pnmIFudfoWE1z7RUiSBixsT6PlyLBax0uwiTgxzZceIapGRQuC7CsXG/ d5oqMu87dYCDU5JLkfWHlvuaovfKxBMh/jhaRh/VSPQMJabHzdI7lw4/9WES4ooU5Dxx ydlw== 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:cc:subject :from:to; bh=W/djvKCyhGWJofvmm2rlzua34beZl+76inJVwBVtmCs=; b=lbc3qT+NQY74lHNCSWqkLyft9b/fZOxMtH5aNASn38wsWr7aanekCAUdaRG/IMTIYj LyD0ox0tOLsf4lYfmq8J49zrY/wVBG6ku5vi4XgyIDTNicC+Ua7KAquaCk9T0MwxAobT 0IPM5TWX07far48fMTDH5AQPRz8cmsrVGz2tSSzUnJIIhos7N0zgFKj7/GxkvhZQ6bBj dVCFxYbX8WUBsVYdRkhijRfTdkwEuKxm9Q7gVVL7NIy8zBtHmE1t5Bd6BbFl+ZL++xG8 T3Kd67E26KiL4U3Gr4CnHmvE854Mu0sfBG7scnsICr0M9HPk46aT4p7YuiUyxpfMGoe1 KJZg== 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 f13si10609628edl.170.2019.10.21.03.55.06; Mon, 21 Oct 2019 03:55:29 -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 S1727889AbfJUKws (ORCPT + 99 others); Mon, 21 Oct 2019 06:52:48 -0400 Received: from szxga05-in.huawei.com ([45.249.212.191]:4740 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726767AbfJUKws (ORCPT ); Mon, 21 Oct 2019 06:52:48 -0400 Received: from DGGEMS405-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 7B0CC45A7532B2973BD4; Mon, 21 Oct 2019 18:52:43 +0800 (CST) Received: from [127.0.0.1] (10.177.251.225) by DGGEMS405-HUB.china.huawei.com (10.3.19.205) with Microsoft SMTP Server id 14.3.439.0; Mon, 21 Oct 2019 18:52:36 +0800 To: , , , , , , , , , From: Yunfeng Ye Subject: [PATCH v5] arm64: psci: Reduce the waiting time for cpu_psci_cpu_kill() CC: , "linux-kernel@vger.kernel.org" , , , Message-ID: <710429cc-4d88-b7c3-b068-5459cf8133b5@huawei.com> Date: Mon, 21 Oct 2019 18:52:16 +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 --- 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