Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp1735572ybg; Sat, 19 Oct 2019 01:22:16 -0700 (PDT) X-Google-Smtp-Source: APXvYqxmBEWIat5wB+LqnHaHixMvpbOAR5bLK02DGr9Dx5zkbi6IJpLTht05zFE8qsxx44XyZtIn X-Received: by 2002:aa7:d28d:: with SMTP id w13mr13804839edq.184.1571473336802; Sat, 19 Oct 2019 01:22:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1571473336; cv=none; d=google.com; s=arc-20160816; b=b/37vkUl2H0BVniiT5g9jCHMw0jhej5Jx0wEVzLIBGENriWkG9mJc/AwH3CqWfnfPI lcC6iPPxJ4PDoOH7UMXrur491xG+es/l60EE+u52Hso/0vp4HEPtg4m+OkZ6qJ9ilHJk EjvF+Ve/QIdHvFBIxc+eaXYNVefEEG1Rfr46HU68QqvfFKknDm6AEB8GWH03CIcMq6oO X4NE/xj+guvYXbrEsWMLN2gjZ1GXg34LKWTm3nT/9Zz5/CrdOsoipuzyv/WGHU1zGwLr hGc3bYiTImrFG0NtvqVoApsEIXeubV03SJVAcXF1yJLDJ5WTYwV5faCX4n23FxlBOBNp XyRA== 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:to:subject :from; bh=McfcvbHWJVoL3HBwklpeb174+OHA+b1u58bd/M/oGY0=; b=YR1oqVmm5AbYn+8qVlPz5IWf3m39ze7cd4J9otJ8zfu+FOGivoPyu0ZV1fDQ9xNOCK hU7pNKvWhKebyHTbnAuHWTsKXOLsgX42iUz5ZTeqXLtzUiKY+BGl+505vZciTulcun1z Ozw34+hmgz0FnvEX4RYjuQ1nkHA5415+MENSru+AaW0l4UdUGxX37jS3UBEmDZ27qBJG ZoN1qkZZM8tYUenKVue7QNJWssSVLi8LLSl7uyoJUvlqwqt+G5yAACrcWbpusaaFjrR6 ny0tNHTesM/cWY7XjpKWMHac2R6FRoO2QhesymhKzxXjxoHKwhloiKKRkuvu4LjF6jhX rJyw== 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 d48si5868963eda.383.2019.10.19.01.21.54; Sat, 19 Oct 2019 01:22:16 -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 S2633918AbfJRMrB (ORCPT + 99 others); Fri, 18 Oct 2019 08:47:01 -0400 Received: from szxga07-in.huawei.com ([45.249.212.35]:51390 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633907AbfJRMrB (ORCPT ); Fri, 18 Oct 2019 08:47:01 -0400 Received: from DGGEMS407-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id F342A55B7BD5DBA9C6C3; Fri, 18 Oct 2019 20:46:56 +0800 (CST) Received: from [127.0.0.1] (10.177.251.225) by DGGEMS407-HUB.china.huawei.com (10.3.19.207) with Microsoft SMTP Server id 14.3.439.0; Fri, 18 Oct 2019 20:46:50 +0800 From: Yunfeng Ye Subject: [PATCH v4] arm64: psci: Reduce the waiting time for cpu_psci_cpu_kill() To: , , , , , , , , , , , , , Message-ID: <04ab51e4-bc08-8250-4e70-4c87c58c8ad0@huawei.com> Date: Fri, 18 Oct 2019 20:46:37 +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 case like suspend-to-disk and uspend-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, put the number of waiting times to the sucessful message. Signed-off-by: Yunfeng Ye --- 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 | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/arm64/kernel/psci.c b/arch/arm64/kernel/psci.c index c9f72b2665f1..77965c3ba477 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, i = 0; + unsigned long timeout; if (!psci_ops.affinity_info) return 0; @@ -91,16 +92,17 @@ 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++) { + timeout = jiffies + msecs_to_jiffies(100); + do { + i++; 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 times)\n", cpu, i); return 0; } - msleep(10); - pr_info("Retrying again to check for CPU kill\n"); - } + usleep_range(100, 1000); + } while (time_before(jiffies, timeout)); pr_warn("CPU%d may not have shut down cleanly (AFFINITY_INFO reports %d)\n", cpu, err); -- 2.7.4.3