Received: by 10.192.165.156 with SMTP id m28csp1828371imm; Thu, 12 Apr 2018 04:20:28 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+GT+/lmtd+mGE/c9u9gTrWxyShOZJd9XQQpiKdKzzrt0fXj448TDJgPeWQVMrVd9extvXE X-Received: by 10.99.110.198 with SMTP id j189mr376564pgc.71.1523532028519; Thu, 12 Apr 2018 04:20:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523532028; cv=none; d=google.com; s=arc-20160816; b=d8Vdj4hEAr1Dw8W9jagLt+nQfBGKZWztp/gjDIwk5xF8Nv6MHngcigYUbQ94pKROR9 1XEd5/6B1mMyWgVpbq56f3RR5NCqtIo+4vTxP0m2AkZm3hjJoiR8svYk6UtccfYWVBiJ rSlPqQAFkaqcSXnaMyrBAs3BzRDSBDzLPMHnJyIO48Nt9xgpp77YJyMjfBwAmGKizxDD Z6PXwljG1zbwKGPDhTdx7RUZ6CTEdrHEGZl9wwWnzZ2dbFCYN0hRjgrhM6ADrNq5Apvg MvJy/w9aXbYYdJ0i2VVFqXcXnnQqy+p60g2hWCMvc7YeOktWnHUjJaHV8BRmYkAhRWcZ m5yg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:dkim-signature:arc-authentication-results; bh=GmFusUm4IUgl6U995YtZ2yCefkzhvUqg/9MbDJuHTvE=; b=sHbCRFYJEgx5kIUfsTmxkWYz0ue8CuFWiqbvllGz4/la82D//iKYB9IKIlXTx5bLQ+ FBCkLOSNmbPkr9E8ZRmJWd5dOeOg+u36TvzyXq0beAPQD9oQbLsHiLlVnHZsmbBzV1wM Ft7lmQ565wo9fq/opvHIsm6+FkezHmR/eaFklB2seBWPuT61KvAr3CRhl4+AQW9zGe1I I7xXn6UiR4HOfiZhVGrwj/99Q9dgjHzGnRnkNoS3oZ0xVit2AclmCW0iZs5ulwmuIEhk LlWkdO6eugU1A0dL1MPDYRYFmYiAwJAYqooyFDVD0ixR/tBdYCJFQXepGFrlfk4ovN6M JHAg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=hpSnQinm; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m8si2073155pgu.98.2018.04.12.04.19.51; Thu, 12 Apr 2018 04:20:28 -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; dkim=pass header.i=@linaro.org header.s=google header.b=hpSnQinm; 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; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753043AbeDLLQa (ORCPT + 99 others); Thu, 12 Apr 2018 07:16:30 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:39768 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753281AbeDLLPW (ORCPT ); Thu, 12 Apr 2018 07:15:22 -0400 Received: by mail-lf0-f67.google.com with SMTP id p142-v6so7128138lfd.6 for ; Thu, 12 Apr 2018 04:15:21 -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=GmFusUm4IUgl6U995YtZ2yCefkzhvUqg/9MbDJuHTvE=; b=hpSnQinm9rhHxF9ssMlB1eUFo8LtYJhbp7Q7T6bZYbOl1XOlYqkDVCzQs2JAa3bGe4 OsQCr2LUoL33iDda5Vv4GMH454RpU+mji3kbu0GO/ahXZnfgnXQ8Ug4rAaeJU8/n8HyO srQiit8nc+WO9nnoehxNybEsg4jOhKleFlPV0= 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=GmFusUm4IUgl6U995YtZ2yCefkzhvUqg/9MbDJuHTvE=; b=sl1eEOJWBHRSS8W39F8+sZzNaIkeI/YVft/aLFWLJa3dmcshFWR9fAiUmivahkPcEr 6n5UoXL3GrxKF+P4agrvFVJ/iOAxiSmc3ov0UOQa2L10k+j7sMUPpCQMQXoyd1UeCvLo KuDR8tda9mNlcxBAr40pVb8Ptdpb0FE7ZhRjvvOkvLjj7eLJ49DJEMB9obh05c6EQWzU lQHuNsFn4Z/H4JTCH3TqJmWHc6OipUs+7Gv+iLzTZGMQJW7I5J+pykWusNTBfBj4/ntC YSfAGNkuAqHvR/cCH6uw3+ruYzZ7QpRMg0q+Zlb54QQf/hIutacaiP6PBtvFR2+pxIef ic7Q== X-Gm-Message-State: ALQs6tBOlBiYM1xnKGHmO8N+JszwWU79vDwLUnRRNksmyVJFzlSUhLP0 /6l5/U8N8x6Uv0vR+DF0mG0Q5A== X-Received: by 2002:a19:9b08:: with SMTP id d8-v6mr5591185lfe.66.1523531720780; Thu, 12 Apr 2018 04:15:20 -0700 (PDT) Received: from localhost.localdomain (h-158-174-22-210.NA.cust.bahnhof.se. [158.174.22.210]) by smtp.gmail.com with ESMTPSA id r29sm543187lje.72.2018.04.12.04.15.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 12 Apr 2018 04:15:20 -0700 (PDT) From: Ulf Hansson To: "Rafael J . Wysocki" , Sudeep Holla , Lorenzo Pieralisi , Mark Rutland , linux-pm@vger.kernel.org Cc: Kevin Hilman , Lina Iyer , Lina Iyer , Ulf Hansson , Rob Herring , Daniel Lezcano , Thomas Gleixner , Vincent Guittot , Stephen Boyd , Juri Lelli , Geert Uytterhoeven , linux-arm-kernel@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v7 24/26] drivers: firmware: psci: Deal with CPU hotplug when using OSI mode Date: Thu, 12 Apr 2018 13:14:29 +0200 Message-Id: <1523531671-27491-25-git-send-email-ulf.hansson@linaro.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1523531671-27491-1-git-send-email-ulf.hansson@linaro.org> References: <1523531671-27491-1-git-send-email-ulf.hansson@linaro.org> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org To deal with CPU hotplug when OSI mode is used, the CPU device needs to be detached from its PM domain (genpd) when putting it offline, otherwise the CPU becomes considered as being in use from genpd and runtime PM point of view. Obviously, then we also need to re-attach the CPU device when bring the CPU back online, so let's do this. Cc: Lina Iyer Signed-off-by: Ulf Hansson --- drivers/firmware/psci/psci.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/firmware/psci/psci.c b/drivers/firmware/psci/psci.c index 700e0e9..e649673 100644 --- a/drivers/firmware/psci/psci.c +++ b/drivers/firmware/psci/psci.c @@ -190,6 +190,10 @@ static int psci_cpu_off(u32 state) int err; u32 fn; + /* If running OSI mode, detach the CPU device from its PM domain. */ + if (psci_osi_mode_enabled) + of_genpd_detach_cpu(smp_processor_id()); + fn = psci_function_id[PSCI_FN_CPU_OFF]; err = invoke_psci_fn(fn, state, 0, 0); return psci_to_linux_errno(err); @@ -204,6 +208,10 @@ static int psci_cpu_on(unsigned long cpuid, unsigned long entry_point) err = invoke_psci_fn(fn, cpuid, entry_point, 0); /* Clear the domain state to start fresh. */ psci_set_domain_state(0); + + if (!err && psci_osi_mode_enabled) + of_genpd_attach_cpu(cpuid); + return psci_to_linux_errno(err); } -- 2.7.4