Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934755AbcKWJvg (ORCPT ); Wed, 23 Nov 2016 04:51:36 -0500 Received: from ozlabs.org ([103.22.144.67]:48547 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933928AbcKWJvM (ORCPT ); Wed, 23 Nov 2016 04:51:12 -0500 From: Michael Ellerman To: "Gautham R. Shenoy" , Benjamin Herrenschmidt , Paul Mackerras , "Rafael J. Wysocki" , Daniel Lezcano , Michael Neuling , Vaidyanathan Srinivasan , "Shreyas B. Prabhu" , Shilpasri G Bhat , Stewart Smith , Balbir Singh , "Oliver O'Halloran" Cc: , , , skiboot@lists.ozlabs.org, "Gautham R. Shenoy" Subject: Re: [PATCH v3 3/3] powernv: Pass PSSCR value and mask to power9_idle_stop In-Reply-To: References: User-Agent: Notmuch/0.21 (https://notmuchmail.org) Date: Wed, 23 Nov 2016 20:51:10 +1100 Message-ID: <87shqittgx.fsf@concordia.ellerman.id.au> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1569 Lines: 37 "Gautham R. Shenoy" writes: > From: "Gautham R. Shenoy" > > The power9_idle_stop method currently takes only the requested stop > level as a parameter and picks up the rest of the PSSCR bits from a > hand-coded macro. This is not a very flexible design, especially when > the firmware has the capability to communicate the psscr value and the > mask associated with a particular stop state via device tree. > > This patch modifies the power9_idle_stop API to take as parameters the > PSSCR value and the PSSCR mask corresponding to the stop state that > needs to be set. These PSSCR value and mask are respectively obtained > by parsing the "ibm,cpu-idle-state-psscr" and > "ibm,cpu-idle-state-psscr-mask" fields from the device tree. > > In addition to this, the patch adds support for handling stop states > for which ESL and EC bits in the PSSCR are zero. As per the > architecture, a wakeup from these stop states resumes execution from > the subsequent instruction as opposed to waking up at the System > Vector. > > The older firmware sets only the Requested Level (RL) field in the > psscr and psscr-mask exposed in the device tree. For older firmware > where psscr-mask=0xf, this patch will set the default sane values that > the set for for remaining PSSCR fields (i.e PSLL, MTL, ESL, EC, and > TR). So we're using psscr-mas=0xf as a signal that we're running on old firmware. That's OK I think, but please send a patch to document it in the device tree binding. And call it out below in the code. cheers