From patchwork Mon Sep 4 06:52:14 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Yan X-Patchwork-Id: 9936743 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 92835601EB for ; Mon, 4 Sep 2017 06:52:57 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 84B1B28737 for ; Mon, 4 Sep 2017 06:52:57 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 795CD2873D; Mon, 4 Sep 2017 06:52:57 +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=-7.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 19E1A28737 for ; Mon, 4 Sep 2017 06:52:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753278AbdIDGwk (ORCPT ); Mon, 4 Sep 2017 02:52:40 -0400 Received: from mail-pg0-f53.google.com ([74.125.83.53]:37966 "EHLO mail-pg0-f53.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751666AbdIDGwi (ORCPT ); Mon, 4 Sep 2017 02:52:38 -0400 Received: by mail-pg0-f53.google.com with SMTP id b8so16349234pgn.5 for ; Sun, 03 Sep 2017 23:52:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=8BkEJFc67FGshxoLnPzc/SWn3Lm58kJjGczL28qUQDg=; b=ZR+usZd8OILmOu5pReJMmWCVDAlH+uA8fjnhBElHFdkYknP1CltwHZ+9MCZSHDNz2g MVtWtlmF7QH3n932p4oiLHziYqW6J/HzP+NnsQdyaNkbfHWO44E8nR+M89hLqklqe7m7 xWB23J+HV1ZwrTIFQOdya/Y1PBpVCTd1o+wAE= 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=8BkEJFc67FGshxoLnPzc/SWn3Lm58kJjGczL28qUQDg=; b=q9dlNnAPqh+TmEXHMEz8QSPYIv0uZ+QylEeV9Pd7Ho/A2jN+f6HUKkCiRBbHTKuO6m n4J1Fy806OjL1mIdcXTsPSXZMSjELwnjQpKdh66niQoOCW0wnaQ1JHcpH+VJ4o2G18K4 bfGu0GbHBu9X0zroUf5ZnXoiUiZ3sQMU0Oqc/MIzJUuEyk8gg+3/wAWjAUvYBV248n0D XZeXaFmOiw/GMcV8EOg9C39klR2Yf7uPcRC5XodwFacqTeNTeEu8vv/rbUtpmIYHMKzS RW6sDX59O1OQrxOYhCRQZFHwlwYigrzPhLQispzp82Mw64it6a69ufO5cCuJfsS02j+i 2jbw== X-Gm-Message-State: AHPjjUhuUPoByA4+ZnO0wlcPryEI6zGhXk4Q8XLFgYpPpnLVlu9dsnGx kbSLm2CiVanDTbwg X-Google-Smtp-Source: ADKCNb5wYRNFk0HmitXWUhXbqlplED4rCocH647d+nCipWMX9B/oBavFLGuYfp/0bN5lBfPlEwVNdA== X-Received: by 10.84.210.37 with SMTP id z34mr1760196plh.186.1504507957998; Sun, 03 Sep 2017 23:52:37 -0700 (PDT) Received: from localhost.localdomain (li1068-205.members.linode.com. [106.184.3.205]) by smtp.gmail.com with ESMTPSA id 73sm9792919pfu.3.2017.09.03.23.52.34 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 03 Sep 2017 23:52:36 -0700 (PDT) From: Leo Yan To: "Rafael J. Wysocki" , Daniel Lezcano , linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Leo Yan , Stefan Wahren Subject: [PATCH 2/2] ARM: cpuidle: replace cpuidle_get_driver with cpuidle_get_cpu_driver Date: Mon, 4 Sep 2017 14:52:14 +0800 Message-Id: <1504507934-14218-2-git-send-email-leo.yan@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1504507934-14218-1-git-send-email-leo.yan@linaro.org> References: <1504507934-14218-1-git-send-email-leo.yan@linaro.org> Sender: linux-pm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP commit d50a7d8acd78 ("ARM: cpuidle: Support asymmetric idle definition") supports multiple CPU idle driver so every CPU has its own driver. When the initialization fails, the failure handling releases the resources for every previous CPU; so it needs to retrieve every CPU device and driver handler and unregister them. But the function cpuidle_get_driver() can only return current CPU driver handler but not the iterated CPU driver handler, so it cannot release resource properly. This patch is to replace cpuidle_get_driver() with cpuidle_get_cpu_driver(), every CPU has its own device handler so this function can get back correct driver handler for the CPU according to the CPU device handler. By using this CPU driver handler we can release resource properly. Cc: Daniel Lezcano Cc: Stefan Wahren Signed-off-by: Leo Yan Fixes: d50a7d8acd78 ("ARM: cpuidle: Support asymmetric idle definition") --- drivers/cpuidle/cpuidle-arm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/cpuidle/cpuidle-arm.c b/drivers/cpuidle/cpuidle-arm.c index f419f6a..ef34780 100644 --- a/drivers/cpuidle/cpuidle-arm.c +++ b/drivers/cpuidle/cpuidle-arm.c @@ -161,9 +161,9 @@ static int __init arm_idle_init(void) while (--cpu >= 0) { dev = per_cpu(cpuidle_devices, cpu); + drv = cpuidle_get_cpu_driver(dev); cpuidle_unregister_device(dev); kfree(dev); - drv = cpuidle_get_driver(); cpuidle_unregister_driver(drv); kfree(drv); }