Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp305444ybi; Thu, 1 Aug 2019 19:29:31 -0700 (PDT) X-Google-Smtp-Source: APXvYqx58++8/1+r6CXdsS92bLMVuK7nhXvlT/3e/aC1W/MRu4fOEaEaC+NxslRShGD34DpihrhR X-Received: by 2002:a62:27c2:: with SMTP id n185mr46912105pfn.79.1564712971211; Thu, 01 Aug 2019 19:29:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564712971; cv=none; d=google.com; s=arc-20160816; b=iZUF54tTzLoHEot22dDqRLcfNdXjvLJndqnAeWIdkIt9QztXBcjSVmSPqyT23Y9FwJ IeR7XbiyTqi5qdhXtlEzLp0kz8HDxDgnyNyV/2BLtoH5BciLP8ND8S/ZUFZcgvg/gPD0 vHtCA91tr32pC8zO0DeL9ZrdRkfcfXd4f9sjYA3P1XRzjAzauAum7og73LnNjsIx19sT aAlqzkIOCI/AxUnpsqyH85iKDnMmlhj1+jk/Oq5GcSYFHCCNTtg2bHo3MSAo2DNipGQ0 rySzAsniQ5mhZ8F1GEmgiGhYmIAaK4T5u/Ik7wQfvaQMfqyMsUdaD3EHMAz4GXYdSECP FRIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:user-agent:to:cc:from:subject :references:in-reply-to:content-transfer-encoding:mime-version :message-id:dkim-signature; bh=He4srDDjR3eOu8dQvJpFAh9KJKFadcANypNWpSDxupI=; b=JLvYccI3NVrLKpZJQEYWAV0pPhOY37W/xaLg5zEvbh8xLwUyNQUbmDkHRmrswxKK61 WLy3SQurEcGFKRAO/cy3gtD/FLlCKWxZdtG7qtlvEauTb2YugTRSC6odG+nbWoa5XyiJ 7PeK7gBw0M92OY5GSiqCL9OECu7iezj9BlN13janNG61f5vdWwgQfIeq7mIuCkBpVui8 20o8nFyLDx/gIm9AXcN+ceSNXtlCbOTreBKCck/GtXJDypkXqrSoPYBIkByU2OtCRKsV PDzB2B/qLihmFJR+exG2Temnt3S6tGjfpQES8ygDh2oILjXfSj1n+TZc0yq2XurUROEQ V7Cg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=gGahkqEi; 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=chromium.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s6si24674561plq.213.2019.08.01.19.29.15; Thu, 01 Aug 2019 19:29:31 -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=@chromium.org header.s=google header.b=gGahkqEi; 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=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388498AbfHAXhr (ORCPT + 99 others); Thu, 1 Aug 2019 19:37:47 -0400 Received: from mail-pf1-f196.google.com ([209.85.210.196]:33983 "EHLO mail-pf1-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731376AbfHAXhr (ORCPT ); Thu, 1 Aug 2019 19:37:47 -0400 Received: by mail-pf1-f196.google.com with SMTP id b13so34948572pfo.1 for ; Thu, 01 Aug 2019 16:37:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=message-id:mime-version:content-transfer-encoding:in-reply-to :references:subject:from:cc:to:user-agent:date; bh=He4srDDjR3eOu8dQvJpFAh9KJKFadcANypNWpSDxupI=; b=gGahkqEiD/gwzpQjrecPFZNK1Ra8oEc+fPFsOzTWK9BmHydhFK1WTpcp0YfWW4ouA0 noYn7SXtOWsQ3oGfWVJH+9N0HYhOrI/n0fLRo3szqgjd1MheOtz+5YzQu0CdTstNpEYi dfCXmGxaRKlbWJMLj/JEwVkxTmOTjNj3ma03k= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:mime-version :content-transfer-encoding:in-reply-to:references:subject:from:cc:to :user-agent:date; bh=He4srDDjR3eOu8dQvJpFAh9KJKFadcANypNWpSDxupI=; b=bvDBNCMhxo52JZrpJGEChTSKFvHP8lBGue0wgS1H89vBnjhhFUurEW+K7InwMr68GG 284HqIYNihZjmojgG9pf1O9J9OjYh9/lxy+49QhbS6Y7yF2YY1HzrcBPcNTG1/DUBnfI GU6FmkbDRxLvS1yKLEVMy8i+nFgPJFIXnq2A9AvZ+7Hdp+IzQ/m/KA8MT5B7Kpd6+eOI 2lLK3vZo3qIYwLXReqgUOwr5QvGbnmEuIHQ+Oca6R2ED7dRZRk4aCt+zrbEclj2+BIit IbmKPHWD3WwvE/6suTf1+3IirdOu62UnncpnAH4dlHSMI50lUEwb89IxIJ6bewFj20Qg OBWA== X-Gm-Message-State: APjAAAVo0uzBgs0rAZBibXWtKnc2R3XymSclF1VKAKHpXa+FZKG1QeQV evU5vbL4zz7cjayUo4Dly4VTxQwgwS0= X-Received: by 2002:aa7:858b:: with SMTP id w11mr53899119pfn.68.1564702666329; Thu, 01 Aug 2019 16:37:46 -0700 (PDT) Received: from chromium.org ([2620:15c:202:1:fa53:7765:582b:82b9]) by smtp.gmail.com with ESMTPSA id o14sm152127614pfh.153.2019.08.01.16.37.45 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Thu, 01 Aug 2019 16:37:45 -0700 (PDT) Message-ID: <5d4377c9.1c69fb81.f1307.7bc5@mx.google.com> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable In-Reply-To: References: <20190731215514.212215-1-trong@android.com> <6987393.M0uybTKmdI@kreacher> <5d42281c.1c69fb81.bcda1.71f5@mx.google.com> <5d434a23.1c69fb81.c4201.c65b@mx.google.com> <5d4363ae.1c69fb81.b621e.65ed@mx.google.com> Subject: Re: [PATCH v6] PM / wakeup: show wakeup sources stats in sysfs From: Stephen Boyd Cc: "Rafael J. Wysocki" , "Rafael J. Wysocki" , Greg Kroah-Hartman , Viresh Kumar , Hridya Valsaraju , Sandeep Patil , Kalesh Singh , Ravi Chandra Sadineni , LKML , Linux PM , "Cc: Android Kernel" To: Tri Vo User-Agent: alot/0.8.1 Date: Thu, 01 Aug 2019 16:37:44 -0700 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Quoting Tri Vo (2019-08-01 15:44:40) > On Thu, Aug 1, 2019 at 3:11 PM Stephen Boyd wrote: > > > > Quoting Tri Vo (2019-08-01 14:44:52) > > > > > > The concern was that having both "id" and "name" around might be > > > confusing. I don't think that making the presence of "name" > > > conditional helps here. And we have to maintain additional logic in > > > both kernel and userspace to support this. > > > > > > Also, say, userspace grabs a wakelock named "wakeup0". In the current > > > patch, this results in a name collision and an error. Even assuming > > > that userspace doesn't have ill intent, it still needs to be aware of > > > "wakeupN" naming pattern to avoid this error condition. > > > > > > All wakeup sources in the /sys/class/wakeup/ are in the same namespace > > > regardless of where they originate from, i.e. we have to either (1) > > > inspect the name of a wakeup source and make sure it's unique before > > > using it as a directory name OR (2) generate the directory name on > > > behalf of whomever is registering a wakeup source, which I think is a > > > much simpler solution. > > > > Ok. If the device name is going to be something generic like 'wakeupN', > > then we need to make sure that the wakeup source name is unique. >=20 > If we could easily make sure that wakeup source names are unique, then > we wouldn't need to generate "wakeupN" ids :) It's not hard to make sure the device names are unique, we just use an IDA and we're done. The problem is making it easy for the user to understand what wakeup source it is. If the ws->name is duplicated that is harder. It's an orthogonal problem. >=20 > > Otherwise, I'm not able to see how userspace will differentiate between > > two of the same named wakelocks. Before this patch the wakeup source > > name looks to have been used for debugging, but now it's being used > > programmatically to let userspace act upon it somehow. Maybe it's for > > debug still, but I could see how userspace may want to hunt down the > > wakelock that's created in userspace and penalize or kill the task > > that's waking up the device. >=20 > Two wakelocks can't have the same name. So they are still > distinguishable from userspace. However, there is still no way to > figure out from userspace which process created which wake lock. > That's a weakness of /sys/power/wake_lock API, independent of this > patch. Even without knowing the process, we can have a problem if kernelspace makes the same named wake source as one made in userspace through the wakelock APIs. We won't be able to distinguish the two. Sounds like we've never had this problem though, so I guess we ignore it. > > > > I see that wakelock_lookup_add() already checks the list of wakelock > > wakeup sources, but I don't see how I can't create an "alarmtimer" > > wakelock again, but this time for userspace, by writing into > > /sys/power/wake_lock. >=20 > Behind the scenes, writing "alarmtimer" to /sys/power/wake_lock > creates a wakeup source named "alarmtimer", which in turn creates a > directory /sys/class/wakeup/alarmtimer (in you patch), which is likely > already created by alarmtimer. This leads to an error. The error is > resolved if wakeup source's sysfs entry is /sys/class/wakeup/wakeupN > instead. Right. > > > > What happens with namespaces here BTW? Can a wakelock be made in one > > namespace and that is the same name as another wakelock in a different > > namespace? Right now it doesn't look possible because of the global name > > matching, but it probably makes sense to support this? Maybe we just > > shouldn't make anything in sysfs for wake sources that can be any random > > name created from the wakelock path right now. I don't see how it can be > > traced back to the process that created it in any reasonable way. >=20 > It should be OK if we don't use the arbitrary wakelock name in the > path, but instead use the generated id "wakeupN". I'm more concerned about namespaces in general and how the wake_lock file in sysfs is supposed to work with it. It sounds like it just doesn't work and userspace has to be careful to not reuse the same name for some sort of wakelock and sit some daemon on top of the kernel interface.