Received: by 2002:ac0:a5a7:0:0:0:0:0 with SMTP id m36-v6csp1585703imm; Tue, 10 Jul 2018 04:38:16 -0700 (PDT) X-Google-Smtp-Source: AAOMgpensAqy06APrGdLgD7fnaqTLlXmeuS3ZJDJfMsaVmx2uG692HZqhjxk/T8BLDdyVJNcGFYi X-Received: by 2002:a63:aa44:: with SMTP id x4-v6mr22773247pgo.120.1531222696745; Tue, 10 Jul 2018 04:38:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1531222696; cv=none; d=google.com; s=arc-20160816; b=MnEc5y5kLw+kscz53X34LksKRjFoiWV8srh0J8hbhcMU5iF91AIQAyTITGiWqs/Xc7 koU+O24fpjVc9VWGy/D+8Gr63hdbc/jyZ4B5kyoVd+FtJeThrITpA5+IWX8dM4GZfSZ2 DidjtQCElvrH4XKt7LhmkBmAqTN8+nO1KnQugFOK5dh7FIByrOZcLMln4JgJq4DyI7tt VEB6JwVASSYzBtaLdZ9Xrk6n/vdDnO2CF/IVZPoH0QePVbl90WI6CNVB+PurbeDR89is CWYiDFn0gb9Ml5NPUSrrhC/SJtty9RBjB1ww+dt02I+cG1B4yKwBAhTEOUZLjXBJgqTE W/hA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=csmhlAw4UB22/x5gHVKJ0AZYqLdem1ehzGPKMoEtou8=; b=EYTUXJmrrPeXaU+Ht0clGJ+xRk+XUYJHlbFs10qLTOaeW5lI3PztIGtq7bnCgUSSpW qF7HjTXkO2t5MCbZ+nNuIPbciuDGTRQUl9OlSe+kbnXn2/EsLjklVMryqnP4KqDQoDjA w3pAb1MbzD303vqrv8BD8vHfvmCBOwFt9dgzwItc2CKGk26fn1beT7UP2CftV9KjXvxf iluVj0a28crpPRd6ug9a84NFaxeWowgEWgBmIiJpcL1rRpiP7WI/2wIGkCGFewLbn3mm jSZ/yMoA0qtrXw3rIcd/4YVPZdIbtkg4vyzePIMK4QK8QiSJTFpG3+5c4d3Ks0W3khwC 7zNw== 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 s35-v6si15841238pgl.656.2018.07.10.04.38.02; Tue, 10 Jul 2018 04:38:16 -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 S933270AbeGJLhP (ORCPT + 99 others); Tue, 10 Jul 2018 07:37:15 -0400 Received: from cloudserver094114.home.pl ([79.96.170.134]:65436 "EHLO cloudserver094114.home.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932620AbeGJLhN (ORCPT ); Tue, 10 Jul 2018 07:37:13 -0400 Received: from 79.184.255.246.ipv4.supernova.orange.pl (79.184.255.246) (HELO aspire.rjw.lan) by serwer1319399.home.pl (79.96.170.134) with SMTP (IdeaSmtpServer 0.83) id 675df17f1068173b; Tue, 10 Jul 2018 13:37:11 +0200 From: "Rafael J. Wysocki" To: Greg Kroah-Hartman Cc: Pingfan Liu , linux-kernel@vger.kernel.org, Grygorii Strashko , Christoph Hellwig , Bjorn Helgaas , Dave Young , linux-pci@vger.kernel.org, Lukas Wunner , Linux PM , Kishon Vijay Abraham I Subject: [PATCH] driver core: Partially revert "driver core: correct device's shutdown order" Date: Tue, 10 Jul 2018 13:35:41 +0200 Message-ID: <2927655.Y1qg3UnIrE@aspire.rjw.lan> In-Reply-To: <8816662.k3KXbdkA2e@aspire.rjw.lan> References: <1530600642-25090-1-git-send-email-kernelfans@gmail.com> <8816662.k3KXbdkA2e@aspire.rjw.lan> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Rafael J. Wysocki Commit 52cdbdd49853 (driver core: correct device's shutdown order) introduced a regression by breaking device shutdown on some systems. Namely, the devices_kset_move_last() call in really_probe() added by that commit is a mistake as it may cause parents to follow children in the devices_kset list which then causes shutdown to fail. For example, if a device has children before really_probe() is called for it (which is not uncommon), that call will cause it to be reordered after the children in the devices_kset list and the ordering of that list will not reflect the correct device shutdown order any more. Also it causes the devices_kset list to be constantly reordered until all drivers have been probed which is totally pointless overhead in the majority of cases and it only covers an issue with system shutdown, while system-wide suspend/resume potentially has the same issue on the affected platforms (which is not covered). For that reason, revert the really_probe() modifications made by commit 52cdbdd49853 which unfortunately will expose the shutdown issue the problematic commit attempted to fix (and which will have to be addressed differently and correctly in the future). The other code changes made by commit 52cdbdd49853 are useful and they need not be reverted. Fixes: 52cdbdd49853 (driver core: correct device's shutdown order) Link: https://lore.kernel.org/lkml/CAFgQCTt7VfqM=UyCnvNFxrSw8Z6cUtAi3HUwR4_xPAc03SgHjQ@mail.gmail.com/ Reported-by: Pingfan Liu Tested-by: Pingfan Liu Signed-off-by: Rafael J. Wysocki --- This is a v2 of https://patchwork.kernel.org/patch/10511241/ under a different subject. The patch itself hasn't changed, but I rewrote the changelog (as per the Bjorn's request) and changed the subject accordingly. --- drivers/base/dd.c | 8 -------- 1 file changed, 8 deletions(-) Index: linux-pm/drivers/base/dd.c =================================================================== --- linux-pm.orig/drivers/base/dd.c +++ linux-pm/drivers/base/dd.c @@ -434,14 +434,6 @@ re_probe: goto probe_failed; } - /* - * Ensure devices are listed in devices_kset in correct order - * It's important to move Dev to the end of devices_kset before - * calling .probe, because it could be recursive and parent Dev - * should always go first - */ - devices_kset_move_last(dev); - if (dev->bus->probe) { ret = dev->bus->probe(dev); if (ret)