From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 814EFC433FE for ; Tue, 26 Oct 2021 00:30:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5FC7B60FC2 for ; Tue, 26 Oct 2021 00:30:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235452AbhJZAdD (ORCPT ); Mon, 25 Oct 2021 20:33:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36738 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234518AbhJZAdC (ORCPT ); Mon, 25 Oct 2021 20:33:02 -0400 Received: from mail-yb1-xb2e.google.com (mail-yb1-xb2e.google.com [IPv6:2607:f8b0:4864:20::b2e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AC38FC061348 for ; Mon, 25 Oct 2021 17:30:39 -0700 (PDT) Received: by mail-yb1-xb2e.google.com with SMTP id r184so30317153ybc.10 for ; Mon, 25 Oct 2021 17:30:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=GKpt6gbUiUnxRUWu5oj6hwoD4Hy59PUSCVuLvc1dxEQ=; b=RXv66RKwy6UqpmJo42NU6ImPtA0hhG8/Hy8v1NimoQYcVrEDXumRbWrcFjH1xV+Ock bXfHSE1/Aa52wxOkNcAfIoezAMn3Lpd9TvcFaLmUkm9YSD1ViBQO3RTcfNLjsQAEVwPO Sr04OJMjHKpOMiakJvt4bqsOkwBFejrv5vw1+yiMxdDWuSGB3dwrLvEHrZHaBDAxQ3uA mA+d2EtJEqyxDpUIrllz7ZzNwH/TJ1a18W6GZtWTatTAtJkG5uU+3x0kjP5oP99JIRpK 8UWvswhWCiyJQ6Wipr1qNVQ4eL1Iq7g7upvvOrcQcLjJqw8VVQGfniWrGznluMgNzjyV XYgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=GKpt6gbUiUnxRUWu5oj6hwoD4Hy59PUSCVuLvc1dxEQ=; b=Xn0kDx+O9LzGYyymH4+Bx+Jo2ywAE2y7tTog5Dc95ai1eD61W9VhhaVqNPQsbnG/dJ et4qLgE5d9EFhqXH3rLV2RBfGMOzYP3vRd284nC8B5h4KeIyTeBoXVftuRxiTp39e03z Ei00uEqsN2pTd8KocN03PQXmbHOh0SCn8YjR2r4LBlipZLt0ZErmVLqDyUnlympO/4FL ulc1mhnptAEAhHxSdljtKzRDIfiiMaBQueN56LrDGeyAZHNLGO1/5Dngga9aAXVahNo1 WjX2RbhlFnU4rbPCyBMknX4wFsUCZpSL3RNDfKtiENO/k+VBdIIACYOVSMWej1D3BprV FoUQ== X-Gm-Message-State: AOAM532D82EXY3rtzdN3nGIhoAIVJsdWHRiZ+5ruG4FbHdl9jcVBgNLe BHJA04d1jHVsSuCdfYWUXub2MUn9DSo8R5b6bi7Y6w== X-Google-Smtp-Source: ABdhPJwkdfRIKjhmBppLm+T21H0QPHoD4LXXiPIYhqq5jQAumISBbcpXVG/c3VSAYycVKUykbWB0N2n0Rav/D4MlbEo= X-Received: by 2002:a5b:cce:: with SMTP id e14mr20273877ybr.486.1635208238648; Mon, 25 Oct 2021 17:30:38 -0700 (PDT) MIME-Version: 1.0 References: <20210929000735.585237-1-saravanak@google.com> <20210929000735.585237-3-saravanak@google.com> In-Reply-To: From: Saravana Kannan Date: Mon, 25 Oct 2021 17:30:02 -0700 Message-ID: Subject: Re: [PATCH v4 2/2] drivers: bus: Delete CONFIG_SIMPLE_PM_BUS To: Amit Pundir Cc: Russell King , Neil Armstrong , Geert Uytterhoeven , Magnus Damm , Tony Lindgren , Catalin Marinas , Will Deacon , Damien Le Moal , Greg Kroah-Hartman , Ulf Hansson , Rob Herring , Android Kernel Team , linux-arm-kernel@lists.infradead.org, lkml , linux-oxnas@groups.io, linux-renesas-soc@vger.kernel.org, linux-omap@vger.kernel.org, linux-riscv@lists.infradead.org, Dmitry Baryshkov , John Stultz Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Oct 22, 2021 at 10:00 AM Amit Pundir wrote: > > On Fri, 22 Oct 2021 at 05:13, Saravana Kannan wrote: > > > > On Thu, Oct 21, 2021 at 4:21 AM Amit Pundir wrote: > > > > > > Hi Saravana, > > > > > > This patch broke v5.15-rc6 on RB5 (sm8250 | qcom/qrb5165-rb5.dts). > > > I can't boot past this point https://www.irccloud.com/pastebin/raw/Nv6ZwHmW. > > > > Amit top posting? How did that happen? :) > > > > The fact you are seeing this issue is super strange though. The driver > > literally does nothing other than allowing some sync_state() callbacks > > to happen. I also grepped for the occurence of "simple-bus" in > > arch/arm64/boot/dts/qcom/ and the only instance for 8250 is for the > > soc node. > > > > The only thing I can think of is that without my patch some > > sync_state() callbacks weren't getting called and maybe it was masking > > some other issue. > > > > Can you try to boot with this log (see log patch below) and see if the > > device hangs right after a sync_state() callback? Also, looking at the > > different sync_state() implementations in upstream, I'm guessing one > > of the devices isn't voting for interconnect bandwidth when it should > > have. > > > > Another thing you could do is boot without the simple-bus changes and > > then look for all instances of "state_synced" in /sys/devices and then > > see if any of them has the value "0" after boot up is complete. > > Turned out RB5 is not even reaching up to > device_links_flush_sync_list() and seem to be stuck somewhere in > device_links_driver_bound(). So I added more print logs to narrow down > to any specific lock state but those additional prints seem to have > added enough delay to unblock that particular driver (Serial: > 8250/16550 driver if I understood the logs correctly) and I eventually > booted to UI. Ugh... I think I know what's going on. It popped into my head over the weekend. Couple of ways to confirm my theory: 1. After it finishes booting in both cases, can you compare the output of the command below? I'm expecting to see a significant drop in the number of device links. ls -l /sys/class/devlink | wc -l 2. Can you try out this terrible hack patch (not final fix, no code reviews please) on top of Tot to see if it fixes your issue without having to add hacky logs? Thanks, Saravana --- a/drivers/bus/simple-pm-bus.c +++ b/drivers/bus/simple-pm-bus.c @@ -38,10 +38,12 @@ static int simple_pm_bus_probe(struct platform_device *pdev) * a device that has a more specific driver. */ if (match && match->data) { - if (of_property_match_string(np, "compatible", match->compatible) == 0) + if (of_property_match_string(np, "compatible", match->compatible) == 0) { + of_platform_populate(np, NULL, lookup, &pdev->dev); return 0; - else + } else { return -ENODEV; + } }