Received: by 10.223.148.5 with SMTP id 5csp7451247wrq; Thu, 18 Jan 2018 05:45:25 -0800 (PST) X-Google-Smtp-Source: ACJfBos4RzQrfVb9GNXh84ZdH8HdunERAk3pSHIPB9LPqmlZjgWQMDUAlmfO+lDPWnUkjhRmJFIP X-Received: by 10.98.190.11 with SMTP id l11mr8521766pff.32.1516283124908; Thu, 18 Jan 2018 05:45:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516283124; cv=none; d=google.com; s=arc-20160816; b=zakIGo8EfUkVpPv0iqK8keXUKp5e5avQsIjAltgmrhyY7A2dKHyhardItHfhdidKhz A7R7S8O/mp2NXgS8rf+/CHrIDhmOxnapTPKiwC8xV7NRQgQ85/t8CUShGJOJ+AGFh/RI rDf1oo4r843rXy8PzwgvOkZCjqMH0mwCqPmDspAZnGWmPhikA7T+d1bESicV8PGBuLa+ A3BRIHtk1OkfngAXmr0Sk/MZleoJ6tQw/fdyYGXNmpHNsoSahI2GwOKhK4MJxWtBk9kT adfFD7ERsAIPxZMAMmFUUTAphPya5W9g2lmIOUwe2Ree2bXYMPKRkmLiT8H0wSh7AzzK AcMQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version:dkim-signature:arc-authentication-results; bh=IP+CmA9b8Tpd0GWnc6H0++3fwVYlOoc0gD+qp15FhK4=; b=H2re4zKTrAo55VjgEL/BN4W8UQSPKtuLd5coFvEhJOdPlcfScslrs44X6aUsSCzprI m/1KPWVnQpC1r1F58fg45mkaVmdPOe5s6nSIZYAUQLeRXG5ce01aHjL4E8DRvMHLU2wv j36ktccXuVyUOlC59YhVFUdia0yF2TTNWIBwqb71DGLrga00GeGmTbQ72dsIcbdXqspm rcWeGuWqiOB0Qwqfv5jvqYGSTJ3qXlKm/2r7u7wV5t1joem4E5HuMjPAA6XXgv2UM22F D2kG0VSKBtpHF1gXlZ8kr9UR6T922vRoChFSn3cZ/1zHpvQmgosIxqq2IhU7heJWL554 hs6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@goldelico.com header.s=strato-dkim-0002 header.b=W2cAjuJP; 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 v186si6703165pfb.284.2018.01.18.05.45.10; Thu, 18 Jan 2018 05:45:24 -0800 (PST) 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=@goldelico.com header.s=strato-dkim-0002 header.b=W2cAjuJP; 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 S1756311AbeARNoN (ORCPT + 99 others); Thu, 18 Jan 2018 08:44:13 -0500 Received: from mo4-p00-ob.smtp.rzone.de ([81.169.146.220]:17455 "EHLO mo4-p00-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756274AbeARNoL (ORCPT ); Thu, 18 Jan 2018 08:44:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1516283048; s=strato-dkim-0002; d=goldelico.com; h=To:References:Message-Id:Content-Transfer-Encoding:Cc:Date: In-Reply-To:From:Subject:Content-Type:X-RZG-CLASS-ID:X-RZG-AUTH; bh=IP+CmA9b8Tpd0GWnc6H0++3fwVYlOoc0gD+qp15FhK4=; b=W2cAjuJPsOmzWFvqSZ1ubp2RY6bhTnKRQBFzI+25yA5n91X4DTUHaL5tFzFT0g1Z0s tS+DEVEf9k5Q3uedJSznzdymYLPnKvjZBZWHFmgqG/AtbVU6Z0jdTsi9JUYm27B8zFOz oo4tj5pVbiMcAgH+mtVMQX93ggNClGDQDm48t61u/5m5bKMj+r6/1PEMLtjgxM9svRlV 6qrRfbNm61/kSFNFQhdOyFeRxBYrO9u/NQbPe9DBUhm+wvaGykCHDyq6pg15eo4AdeHW 1yBbzHUlZXCrfY58JzjH0DQiY5G7tlsN+vbcvYmFEbGZXjj2ucRVsyHCdkK2JtRcK2l1 tZrA== X-RZG-AUTH: :JGIXVUS7cutRB/49FwqZ7WcJeFKiMgPgp8VKxflSZ1P34KBj4Qpw87WisNN2EjyY X-RZG-CLASS-ID: mo00 Received: from [192.168.2.107] (p57AE08DE.dip0.t-ipconnect.de [87.174.8.222]) by smtp.strato.de (RZmta 42.17 DYNA|AUTH) with ESMTPSA id R037a0u0IDh30lw (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Thu, 18 Jan 2018 14:43:03 +0100 (CET) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 9.3 \(3124\)) Subject: Re: [PATCH v5 3/5] misc serdev: Add w2sg0004 (gps receiver) power control driver From: "H. Nikolaus Schaller" In-Reply-To: <20180118061314.GG3286@localhost> Date: Thu, 18 Jan 2018 14:43:03 +0100 Cc: Mark Rutland , DTML , Discussions about the Letux Kernel , Arnd Bergmann , Tony Lindgren , Greg Kroah-Hartman , kernel@pyra-handheld.com, Russell King , Linux Kernel Mailing List , linux-omap , Rob Herring , Linux ARM , =?utf-8?Q?Beno=C3=AEt_Cousson?= , Kevin Hilman , Andreas Kemnade , Thierry Reding , =?utf-8?Q?Andreas_F=C3=A4rber?= , Jonathan Cameron Content-Transfer-Encoding: quoted-printable Message-Id: <8B2641B8-E86B-425C-9E79-E9C41E4E623C@goldelico.com> References: <5494ad34b39a6c62601e3747440268dfb3be7d5a.1512114576.git.hns@goldelico.com> <20171222124427.GI3374@localhost> <91850CC3-B280-4701-9D07-96AFF3A79A6F@goldelico.com> <90F9A8E4-035A-4A9E-8AAB-757491D63E69@goldelico.com> <20180112153903.GB5992@localhost> <20180118061314.GG3286@localhost> To: Johan Hovold X-Mailer: Apple Mail (2.3124) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Johan, > Am 18.01.2018 um 07:13 schrieb Johan Hovold : >=20 > Hacks are never good, but sometimes needed. But we should try to keep > them contained in drivers rather than allow them to spread to core = code, > was what I was trying to say above. Well, aren't we talking here about a well isolated driver? And not about core code? Core code already provides everything to build a driver for this chip to make us happy with. It is just not yet providing a generic gps interface API to make = everybody happy with. >> That is what Andreas did remark as motivation: provide a solution >> for *existing* user spaces. >=20 > I understand that this is what you want, but that in itself is not a > sufficient reason to put something in the kernel. Agreed, but it is a secondary (but still strong) motivation, not the = primary one. >=20 >>>> - can not guarantee (!) to power off the chip if the last = user-space >>>> process using it is killed (which is essential for power-management = of >>>> a handheld, battery operated device) >>>=20 >>> That depends on how you implement things (extending gpsd, wrapper >>> script, pty daemon, ...). >>=20 >> No. You can of course cover all standard cases but there is one = fundamental >> issue which is IMHO a problem of any user-space implementation: >>=20 >> How can you guarantee that the chip is powered off if no >> user-space process is using it or if the last process doing >> this is killed by *whatever* reason? >>=20 >> E.g. after a kill -9. Or if someone deinstalls gpsd or whatever and = assumes >> (and wants a guarantee) that GPS is now turned off and never turned = on drawing >> precious milliamps from the battery for no use. >=20 > Have something run at init to put the device in a low power state. This does *not* solve the issue how to *guarantee* that it becomes powered off if the number of user-space processes goes down to zero *after* init. Please consider that a portable device is rarely booted but might be operated over several days with many suspend cycles. And people may still expect that the power consumer "GPS" is turned off if their personal user-space setup simply kills gpsd. >=20 >> As it is well known, a user-space process can't protect itself = against kill -9. >> Or has this recently been changed and I am not aware of? >>=20 >> This is the fundamental reason why we need a kernel driver to provide >> reliable, repeatable and trustable power management of this chip. >>=20 >> It is equally fundamental as a hard disk should spin down after the = last >> file is closed. Even if this process ends by a kill -9. Please advise how we should solve this fundamental problem in = user-space. >>=20 >> This seems to contradict your argument that user-space can very = easily >> adapt to everything. If the latter were true there would be no need = to >> keep old interfaces supported for a long time. >=20 > You probably know that we try hard never to change an interface that > would break user space, and that's why we need to get it right. Yes, I know and agree that it is very important (and difficult to = achieve). But it seems that there are different opinions of what "right" is... You seem to focus on the "right" API only (where we agree that the = "right" API does not exist and likely will never come or at least in the near = future). But for us the whole combination of kernel + user-space must behave = "right" (and use a function split that allows to optimally achieve this goal). >=20 >> So can you agree to that a battery powered portable device must have >> reliable and trustable power management? And if it provable can't be >> implemented in user-space (a single counter example suffices) it must >> be a kernel driver? >=20 > Having a kernel driver would make things easier for user space, sure, > but again, that's not a sufficient reason to merge just any kernel > implementation. It is not about "easier" for anyone. Neither for you nor for me. For us it would be much easier not to have to run this never-ending discussion over and over... It is about making it technically fully "reliable". And not 99% as per quick and dirty user-space hacks. It is so easy to invent scenarios in user-space to make the device = practically unusable by unnoticed draining a full battery within less than a day = when not perfectly turning off the chip power. So if a kernel driver can better protect users against this situation = for a portable device with this chip, why shouldn't it do with a handful = LOC? What requirement is more important than this? BR and thanks, Nikolaus