Received: by 2002:ac0:a591:0:0:0:0:0 with SMTP id m17-v6csp331893imm; Fri, 6 Jul 2018 21:26:00 -0700 (PDT) X-Google-Smtp-Source: AAOMgpf3/2ezeDjU8S5nKp20Hqacui3/p/QqHjJytTyVIwi8y91gABxmzinXrAa85lRSCmIvxmmA X-Received: by 2002:a17:902:201:: with SMTP id 1-v6mr12768035plc.310.1530937560805; Fri, 06 Jul 2018 21:26:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530937560; cv=none; d=google.com; s=arc-20160816; b=mGxOEGqNgFca1iX2retTHsf2BQ6yutyOjeCYsCSsfpGGWZJzKKqy9FFuZaSG4h9Yc4 TEtuEfjc1B4gqqZg6n4sGGld1TiEUJn1nBH5UyHuDUuPb7ElUA91SxPztbGc77KulMlH NiTzapSI5KzqzfX8d5CJNNhzTie/pBqn8KzFvKaO0rJZbZnUrUI6wGu2+XdALL1aoncE ev58NNMGlUTzgnzhLPg2hlyn6ujlsMfI2WsXl45iXD0tYBPljfdj+fnjuhKcjR8kRh2s aniwns3g9f2DMrZ1MhX8wN0b5N3zNyC/8V7L9yjzNczuxWRkP4E88ddpDlc3AVKg72ni jsnA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature :arc-authentication-results; bh=xdq4PjkT1aZJntFAZIaQxTy+p3y2mnP6dUaCyNkVzYc=; b=EZWSxNg+DwqxkELeIXQZPqGOvlezLx4wYU4GFaY0DluqPAOMGFTsc9SjqtLVBKLaj6 GqbpR5j0xeae5oWG/lddxgnm+PS44hqH1h2bOYQoW3WXbkWB2muU0/leYEheAQt73UZM j6AulIa/+zTU5SDFZJEwhLEtOqoL1rXQSAJ4gkQQRTfX2bMlakWXVtl49mrGrmT95gto n2cbBM6jR5U5R/Ebw/OfU4xpdPxNuFFCj+AHDNZXvgDsGqnhxdbXsNG2I8jhlviUpnO3 F2VxIsBWzywCs2nW3bRUoZqEfvbZAc+3fbvKXVWgIg/wCzaFsannEGlSKYykH9ApCMo8 soww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Mw1wWlOP; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v61-v6si9464257plb.499.2018.07.06.21.25.46; Fri, 06 Jul 2018 21:26:00 -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=@gmail.com header.s=20161025 header.b=Mw1wWlOP; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752743AbeGGEYk (ORCPT + 99 others); Sat, 7 Jul 2018 00:24:40 -0400 Received: from mail-io0-f194.google.com ([209.85.223.194]:40491 "EHLO mail-io0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751863AbeGGEYi (ORCPT ); Sat, 7 Jul 2018 00:24:38 -0400 Received: by mail-io0-f194.google.com with SMTP id l14-v6so2641784iob.7; Fri, 06 Jul 2018 21:24:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=xdq4PjkT1aZJntFAZIaQxTy+p3y2mnP6dUaCyNkVzYc=; b=Mw1wWlOPWMPOXj/M4C1mAlcWzrt7ickg2aIdUbFZmlEjxdG4cJhUkQybi9PrwQswvK +Lj/EpgVxKo7nF43ac0KegmXGJtowyFI1TP/gQDu3mba1wPa1C3w8LzHto8KHuM4WlBN klluBLINb4pG6ptXWEp1IZKI5sOTes211xtEMhy+EvGKckF5bp14GLvj0LtCUQvdpr1y NFgsUNcFumdCaCWTGQ6LUVPONgofRjakGxKRM89Xpem+AC14ly19bi+b3L4n01Kh1Zk+ EcRVsmTWR7a52+tToeLa1kwWCQBg5SGzyXgpoeBA9Im2ic06qDimS6JEyWzQjMsVweMB bDTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=xdq4PjkT1aZJntFAZIaQxTy+p3y2mnP6dUaCyNkVzYc=; b=F0SgB0mCe5wZpMv2tZFKDMlhhvY+/pvKvRqmUoeXU7H5BjG80+h+oTd4wsgkGZs8dm r10Tw+vM/5gJRRoudCaRVGsJZVqGn8CAnRmbNu3izvoH5zWxZFnxkgAoJnyOCaa9SPPW xsO++gzwWElfYQQrbC9PUctViaV7JkCJ9R7KvCclI1bL4BWvTKqJCv9zx5rAhd1u7cSy nAJ+ioe5pTThAoFDNGht10Go652pCHoC3tuM0uFeY6fe4Oa9RqemNER3+cxC49UHmEv9 c8HLk4LwS1c5YskAJHrzMNSnCPZF7uODnv8AsDIhUNA8Oie6ScKtAGnjUvZplIPa2mBl VZGA== X-Gm-Message-State: APt69E1ReuvAlByI2zwvSCT987QsrcalxHMOqTqkP0wIRbUTCeGIEU+I D0kzk/qLENDHO++VRvOvGxNLsEpP7MyZ1SE8Aw== X-Received: by 2002:a6b:1502:: with SMTP id 2-v6mr11248765iov.203.1530937478107; Fri, 06 Jul 2018 21:24:38 -0700 (PDT) MIME-Version: 1.0 References: <1530600642-25090-1-git-send-email-kernelfans@gmail.com> <4685360.VNmeYLh0dQ@aspire.rjw.lan> <6281446.GoJLz6Hq6C@aspire.rjw.lan> <20180706083603.GA9063@wunner.de> In-Reply-To: From: Pingfan Liu Date: Sat, 7 Jul 2018 12:24:26 +0800 Message-ID: Subject: Re: [PATCHv3 0/4] drivers/base: bugfix for supplier<-consumer ordering in device_kset To: rafael@kernel.org Cc: lukas@wunner.de, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Grygorii Strashko , Christoph Hellwig , Bjorn Helgaas , Dave Young , linux-pci@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, linux-pm@vger.kernel.org, kishon@ti.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Jul 6, 2018 at 9:55 PM Pingfan Liu wrote: > > On Fri, Jul 6, 2018 at 4:47 PM Rafael J. Wysocki wrote: > > > > On Fri, Jul 6, 2018 at 10:36 AM, Lukas Wunner wrote: > > > [cc += Kishon Vijay Abraham] > > > > > > On Thu, Jul 05, 2018 at 11:18:28AM +0200, Rafael J. Wysocki wrote: > > >> OK, so calling devices_kset_move_last() from really_probe() clearly is > > >> a mistake. > > >> > > >> I'm not really sure what the intention of it was as the changelog of > > >> commit 52cdbdd49853d doesn't really explain that (why would it be > > >> insufficient without that change?) > > > > > > It seems 52cdbdd49853d fixed an issue with boards which have an MMC > > > whose reset pin needs to be driven high on shutdown, lest the MMC > > > won't be found on the next boot. > > > > > > The boards' devicetrees use a kludge wherein the reset pin is modelled > > > as a regulator. The regulator is enabled when the MMC probes and > > > disabled on driver unbind and shutdown. As a result, the pin is driven > > > low on shutdown and the MMC is not found on the next boot. > > > > > > To fix this, another kludge was invented wherein the GPIO expander > > > driving the reset pin unconditionally drives all its pins high on > > > shutdown, see pcf857x_shutdown() in drivers/gpio/gpio-pcf857x.c > > > (commit adc284755055, "gpio: pcf857x: restore the initial line state > > > of all pcf lines"). > > > > > > For this kludge to work, the GPIO expander's ->shutdown hook needs to > > > be executed after the MMC expander's ->shutdown hook. > > > > > > Commit 52cdbdd49853d achieved that by reordering devices_kset according > > > to the probe order. Apparently the MMC probes after the GPIO expander, > > > possibly because it returns -EPROBE_DEFER if the vmmc regulator isn't > > > available yet, see mmc_regulator_get_supply(). > > > > > > Note, I'm just piecing the information together from git history, > > > I'm not responsible for these kludges. (I'm innocent!) > > > > Sure enough. :-) > > > > In any case, calling devices_kset_move_last() in really_probe() is > > plain broken and if its only purpose was to address a single, arguably > > kludgy, use case, let's just get rid of it in the first place IMO. > > > Yes, if it is only used for a single use case. > Think it again, I saw other potential issue with the current code. device_link_add->device_reorder_to_tail() can break the "supplier<-consumer" order. During moving children after parent's supplier, it ignores the order of child's consumer. Beside this, essentially both devices_kset_move_after/_before() and device_pm_move_after/_before() expose the shutdown order to the indirect caller, and we can not expect that the caller can not handle it correctly. It should be a job of drivers core. It is hard to extract high dimension info and pack them into one dimension linked-list. And in theory, it is warranted that the shutdown seq is correct by using device tree info. More important, it is cheap with the data structure in hand. So I think it is time to resolve the issue once for all. Thanks and regards, Pingfan