Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp463443imm; Mon, 21 May 2018 08:50:13 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpgnjuM0Q7Nfu9Mj9bkYnGmi5tejFFDIh5YcSIKKqXYaxVT/gn1Qbp5wOss0xRssI0Is5Xf X-Received: by 2002:a62:df4c:: with SMTP id u73-v6mr20447834pfg.10.1526917813901; Mon, 21 May 2018 08:50:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1526917813; cv=none; d=google.com; s=arc-20160816; b=Jt6aernXObuCImnwqWY7I6mJ0K9lxT59nX3caID9b97xBVIHra5NG1wyjtrzGMgmZT Qcz+osmnVcHEIrsxFwpu0E58Ay2ChjjyTJIFKk3gYsHJqGEm/kPo3Sihx013lqldtjxJ rvFA3aJz0q//aIReXva4qTK/UykzSJ2Qwb8c44CDcruMIf+ta3VpzvdQd9h+McVOM5wQ gWltOtLeorH9YPQzKV+mwhWCWCHQv/9n79E8qUbmh1+EJilOJk7BAiRqTsPopKLWQeYJ yvlNwZM81rgS1RMNSRKFd9ezqRwVcOyb9X3bxsfFietLXrLwQWoIDJBxOlvGuKev9J/S I/ZQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:arc-authentication-results; bh=aatZ1Eadu4UEtIWbuSS/XJf6rqV12qHzBQ9vcl2jxnE=; b=a8wtGWlTDn1vcEVXQwvDCc1QjCOAWfvb4J7gyIVGPyDq/Tnmb0Rd+V0/EqNu0l4OcT 6kwC7MabRFPuq/wpJXI19AKZzzrYqMxVfIAKZU3RS8l9HlmvvosD0Jt3UP5uyRw2NT5M 2Kn/88TjHlCbRmmBktn3xhD58NAlbbnYrzHxaUy0X1IGCF4+z4sRoagbqVG1KqKm4n3x vBPsDaJQX3jy+mwdbS2Iu/4uJoGqt3KOM2i4OFGs7FDSrJEfzu+Zc889aTQADQrIsHsL HMF/VbMo6ZzW5GFU0yJo1Y4rukVFnp2oKw383CB7LB2R1BxXnChN3G5RZL342GOncvLA gYKA== 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 33-v6si14400870pls.339.2018.05.21.08.49.59; Mon, 21 May 2018 08:50:13 -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 S1753322AbeEUPst (ORCPT + 99 others); Mon, 21 May 2018 11:48:49 -0400 Received: from muru.com ([72.249.23.125]:43800 "EHLO muru.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753191AbeEUPsh (ORCPT ); Mon, 21 May 2018 11:48:37 -0400 Received: from atomide.com (localhost [127.0.0.1]) by muru.com (Postfix) with ESMTPS id 459A68076; Mon, 21 May 2018 15:50:48 +0000 (UTC) Date: Mon, 21 May 2018 08:48:32 -0700 From: Tony Lindgren To: Johan Hovold Cc: Sebastian Reichel , "H. Nikolaus Schaller" , Andreas Kemnade , Mark Rutland , Arnd Bergmann , Pavel Machek , "linux-kernel@vger.kernel.org" , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , Greg Kroah-Hartman , Rob Herring , linux-serial@vger.kernel.org, linux-omap@vger.kernel.org, linux-pm@vger.kernel.org Subject: Re: OMAP serial runtime PM and autosuspend (was: Re: [PATCH 4/7] dt-bindings: gnss: add u-blox binding)) Message-ID: <20180521154832.GY98604@atomide.com> References: <20180508065852.GW2285@localhost> <20180508152228.GV98604@atomide.com> <20180508154756.GW98604@atomide.com> <20180508155405.GX98604@atomide.com> <20180508164904.GZ98604@atomide.com> <20180509131003.GC2285@localhost> <20180509135706.GB98604@atomide.com> <20180517100948.GI30172@localhost> <20180517171038.GL98604@atomide.com> <20180521134830.GR30172@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20180521134830.GR30172@localhost> User-Agent: Mutt/1.9.4 (2018-02-28) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org * Johan Hovold [180521 13:50]: > On Thu, May 17, 2018 at 10:10:38AM -0700, Tony Lindgren wrote: > > * Johan Hovold [180517 10:12]: > > > No, defaulting to "on" (i.e. calling pm_runtime_forbid()) wouldn't work > > > either as that would also prevent the device from runtime suspending > > > just as the current negative autosuspend delay does. > > > > Well in that case we should just stick with -1 value for the > > autosuspend. And just do pm_runtime_put_sync_suspend() after > > probe and on close. > > That won't work either as a negative autosuspend delay prevents runtime > suspend completely (by grabbing an extra RPM reference). Well so negative autosuspend delay is working as documented then :) > > > I fail to see how we can implement this using the current toolbox. What > > > you're after here is really a mechanism for selecting between two > > > different runtime PM schemes at runtime: > > > > > > 1. normal serial RPM, where the controller is active while the > > > port is open (this should be the safe default) > > > > Agreed. And that is the case already. > > Yes, but it's not really the case today as since omap-serial (and > 8250-omap) sets a negative autosuspend at probe and hence does not > runtime-suspend when the port is closed. So that's the long-standing bug > which needs fixing. Yes the bug for closed ports needs to be fixed for sure. > > > 2. aggressive serial RPM, where the controller is allowed to > > > suspend while the port is open even though this may result in > > > lost characters when waking up on incoming data > > > > In this case it seems that the only thing needed is to just > > configure the autosuspend delay for the parent port. The use of > > -1 has been around since the start of runtime PM AFAIK, so maybe > > we should just document it. I guess we could also introduce > > pm_runtime_block_autoidle_unless_configured() :) > > The implications of a negative autosuspend delay are already documented > (in Documentation/power/runtime_pm.txt); it's just the omap drivers that > gets it wrong when trying to do things which aren't currently supported > (and never have been). > > So I still think we need a new mechanism for this. Well if you have some better mechanism in mind let's try it out. Short of sprinkling pm_runtime_force_suspend/resume calls all over, I'm out of ideas right now. > > > For normal ttys, we need a user-space interface for selecting between > > > the two, and for serdev we may want a way to select the RPM scheme from > > > within the kernel. > > > > > > Note that with my serdev controller runtime PM patch, serdev core could > > > always opt for aggressive PM (as by default serdev core holds an RPM > > > reference for the controller while the port is open). > > > > So if your serdev controller was to set the parent autosuspend > > delay on open() and set it back on close() this should work? > > Is it really the job of a serdev driver to set the autosuspend delay of > a parent controller? Isn't this somethings which depends on the > characteristics of the controller (possibly configurable by user space) > such as the cost of runtime suspending and resuming? Only in some cases will the serdev driver know it's safe to configure the parent controller. Configuring the parent controller from userspace works just fine as we've seen for years now. > The patch I posted works with what we have today; if a parent serial > controller driver uses aggressive runtime PM by default or after having > been configured through sysfs to do so. Yeah let's stick with configuring the parent controller from userspace for now at least. > What I'm getting at here is that the delay should be set by the serial > driver implementing aggressive runtime PM. Then all we need is a > mechanism to determine whether an extra RPM reference should be taken at > tty open or not (configurable by user space, defaulting to yes). OK yeah some additional on/off switch seems to be missing here. > Specifically, the serial drivers themselves would always use > autosuspend and not have to deal with supporting the two RPM schemes > (normal vs aggressive runtime PM). OK. So if I understand your idea right, we could have autosuspend timeout set to 3000ms in the 8250_omap.c but still default to RPM blocked? Then user can enable aggressive PM via /sys as desired, right? Regards, Tony