Received: by 2002:ac0:a591:0:0:0:0:0 with SMTP id m17-v6csp1805720imm; Fri, 6 Jul 2018 06:54:31 -0700 (PDT) X-Google-Smtp-Source: AAOMgpd4IkiKmPROjRdm2SvYPBHHax+sEN4GK9r0hzmdrfG+pJojdi1GW3eTHgtWuZrfpUcmkHSH X-Received: by 2002:a17:902:7e08:: with SMTP id b8-v6mr10413667plm.230.1530885271440; Fri, 06 Jul 2018 06:54:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1530885271; cv=none; d=google.com; s=arc-20160816; b=exqDfRx98ul3h3LSX13nfLm90e5aXRGR3YY0/tCIGAr2ueDC8L9RfjWzaT282nUrZ7 0ld4DSJRBdLGFgJPE/87S2iHOmSWa7bSUaswP31ouPOzR2rM+kFg3XuTgAQlt5CwXDtc OkzA7Tp1Qy8H2zvB7lLOFAjlQxakVvZXo4QgfCbbczvqJXkzYctpSySCrhiL2Loc2mmG PL5JvggPS42AL8McVmwT0NHbeD6HGX4d91KKdoS5UeNcFAeeTuSiMikbdAG4Ln1O6kti Onc370dh/lSOqPUJOUypTFbMgSn0KzIyHrZpHXV0Paw4DsF5oKC4eAVHBpzPBx2n5Fl1 uU0Q== 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=4YcRxyO8sFuy48wOtxwRJroAuu7HbYnRtYNlb9lqTVA=; b=So35wzciou0on0r02z62YvOUnyniRmf0W2VvmGyTcLiWRp1JTvDLV/c2Dpgm+Vbtgl Z988gzsGgpnAyDNgqtCOEi43Aa1ZNuf6FeEMxpKxkRC7ogE/aRMxryjuc9xssOU0+2T/ LbuuJcBTk/T8CpLdgj4lj5OMJGgrS9bnRGUGyLoeh+a0U/fjbligcttRK0e3uQ+Oe/1f NbAL0F378l5NdO8/RxBpv+Io5xcbjHDRb1CoASRsrfcehuRTfhIDOkhh6Va6j4U2tt7C zQ9MHBxWVzWD1H0NxADbF3OrKsYdghyTgMnulYZVoKjUZsU4qzIQiUHTnQYtsJzo8p6h pICg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=AFqTTwWD; 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 g74-v6si8641619pfg.225.2018.07.06.06.54.07; Fri, 06 Jul 2018 06:54: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=@gmail.com header.s=20161025 header.b=AFqTTwWD; 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 S932703AbeGFNwf (ORCPT + 99 others); Fri, 6 Jul 2018 09:52:35 -0400 Received: from mail-it0-f65.google.com ([209.85.214.65]:53913 "EHLO mail-it0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753993AbeGFNwd (ORCPT ); Fri, 6 Jul 2018 09:52:33 -0400 Received: by mail-it0-f65.google.com with SMTP id a195-v6so16611908itd.3; Fri, 06 Jul 2018 06:52:32 -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=4YcRxyO8sFuy48wOtxwRJroAuu7HbYnRtYNlb9lqTVA=; b=AFqTTwWDEQIKIG0eAikbF8He5Unh+4wEexNsSvUkgFArUdnzJbeNdNBvfsssB7a2L5 qYxHwAZzvCfqkD8zaT9oBB8d1wWPpUS7SYMJG8NUOQrkqepViWygMRTA+gpAyS3fkaqh /HZKpOpw+Rno5o4A2Cu64nJbRFebjFxYxIcPYIHYCyzi8laWdOgoJD7ErdoUIlDZ6Ob3 6JnYbRkxKSSEz9fSu6BEz92h/KhzJBaLfCqbBbtzgIroq1+Oax/nEcL2fo1u2A7p4UsZ 9MNAwfkIyR+zbnpWcXJvBLIat/QkpomoljldLXjigopkgXyduvULjG39Ov/guy9O1X/Z Ux4g== 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=4YcRxyO8sFuy48wOtxwRJroAuu7HbYnRtYNlb9lqTVA=; b=Qciud7PG2a/N8OqNMoFjdhWkfWMvqPB+aJryAdYQd27i8pwHcmD6lZEkbOK4KRQksl RR82qTmo+1MzJgWAqktEOwmJXedI89f/dM0g0KJF4LU3osEoYgEBPFiDBLkee/OQoAND 3CHskP23H00lrR1hVlwp9cNdzKYRSmv+SQfxAMD2aSv4vbxsMn4puEYJ1wblTjL0BY+4 LqC+9ZnZEhBczI6iOUQvgCHll+5Yp3ArloJ79B3oC7Es7BQW6fJciYXczEDplJzp/jFK ZfAd+JShEVPTB1R7Y0kegFfNRxXtK6dsb/sA4y0tZHhQvV3FC24piNZaPtQTm4v4q4xl cflg== X-Gm-Message-State: APt69E0qRRyTjqbZMEBaUClq+9qhtpKuR8CvpXxAog/JfVVKLsVoKaKx 6rt2d8rSYZxocRsgqfcPwtVCCwTcgA348hbduQ== X-Received: by 2002:a24:de84:: with SMTP id d126-v6mr8138660itg.18.1530885152469; Fri, 06 Jul 2018 06:52:32 -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: <20180706083603.GA9063@wunner.de> From: Pingfan Liu Date: Fri, 6 Jul 2018 21:52:21 +0800 Message-ID: Subject: Re: [PATCHv3 0/4] drivers/base: bugfix for supplier<-consumer ordering in device_kset To: lukas@wunner.de Cc: rafael@kernel.org, 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 4:36 PM 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!) > Thanks for your exploration, very clearly. I had tried, but failed since these commits are contributed with different authors. I am not familiar with ARM and dts, so had thought really_probe()->devices_kset_move_last() is used to address a very popular "supplier<-consumer" order issue in smart phone, based on the configuration hard-coded in "bios(or counterpart in ARM). > @Pingfan Liu, if you just remove the call to devices_kset_move_last() > from really_probe(), does the issue go away? > Yes, it goes away. > If so, it might be best to remove that call and model the dependency > with a call to device_link_add() in mmc_regulator_get_supply(). > Another idea would be to automatically add a device_link in the > driver core if -EPROBE_DEFER is returned. > Maybe the first one is better, as it is already used by other drivers. Thanks, Pingfan