Received: by 2002:a05:7412:b10a:b0:f3:1519:9f41 with SMTP id az10csp1372744rdb; Fri, 1 Dec 2023 14:49:47 -0800 (PST) X-Google-Smtp-Source: AGHT+IEFmGxVhHQfHae+Rb2OheQv964K1Y1fTelS7HsvreNdG+Y9gIxePGVXMZyimJvBCnq16mg9 X-Received: by 2002:a05:6808:159:b0:3b8:b063:9b72 with SMTP id h25-20020a056808015900b003b8b0639b72mr271840oie.100.1701470987576; Fri, 01 Dec 2023 14:49:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701470987; cv=none; d=google.com; s=arc-20160816; b=fkAadZaGRYlhcoKUhHO5omF72JM/xaagGJwy+0ByvTV3+RT3wXZ4IDZ8QQ7oX9QJPE CQ8VcTeqIQB41RFivBSXKYkagn/6MJABnS5mcIFju8H8SjGC29F7BATjOqsf4/+2GSpg x/dEsSu5i64oJ/YvCEdrXGN+rcDeFj8sIUK6BRl8Y2n+VBFj6aJCVfMiUO+uRjv8kNQk hJNJALR8lxrLLfUOwFzAIaP6BED3sCVm01/P5tyZhAQJjuY3lZUMqH2AsfF4UXV4n+HK SBhu47nmzpuItb8l37njhY2vu+4QO8T4CD8+DCFXh8IvWs0mJ4YWDlXMsEH6jnz/jWPE ykkw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :message-id:subject:cc:to:from:date:dkim-signature; bh=rECN8UUlYzOopx/oF37UzuujvepDtfaPwQJQ8VfeGNQ=; fh=VSiHxWrGtebS0CzmSvs0LdW8nLtD39dcRvJf6rthY0Y=; b=Tr5YM+RPdtfq2gmV4r6bONbkSrTEvRFkirZnUYDAbj8Ywgzww/KKwr5oIhxRPR0ncr lHKJfyVAHhPYIVKJ3GhbV7Sf2NNxt9Yofh51IVmaj7Q2iHrmWa0zrX33U16pYmcgV4UJ GxI4IOzYK1Y2iRGfv1PGXvvaIgB/ZOwQ3q//a15LhP5L54HAMIDTQ7IRdI9N06mSnhlN kiGYYa3E8xBItFDEwgCvTQajNraAA+ejz5j2k2YVHwa1CjApZFXB3qn4oUkn+pPlOsP6 n6ZDMnUVPouUx1Xrgy51tX5h9zaiTmEETxR89NM174QSo1XPKCT1zOHmuho/KmDkG9Yb EA9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=UvKxojd9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from lipwig.vger.email (lipwig.vger.email. [23.128.96.33]) by mx.google.com with ESMTPS id h6-20020a056a00170600b006cbf68b3dadsi4075676pfc.363.2023.12.01.14.49.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 01 Dec 2023 14:49:47 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) client-ip=23.128.96.33; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=UvKxojd9; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.33 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by lipwig.vger.email (Postfix) with ESMTP id 15E6181CFF35; Fri, 1 Dec 2023 14:49:45 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at lipwig.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229636AbjLAWtZ (ORCPT + 99 others); Fri, 1 Dec 2023 17:49:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44574 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229456AbjLAWtX (ORCPT ); Fri, 1 Dec 2023 17:49:23 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6E421E0 for ; Fri, 1 Dec 2023 14:49:30 -0800 (PST) Received: by smtp.kernel.org (Postfix) with ESMTPSA id D6FABC433C7; Fri, 1 Dec 2023 22:49:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1701470970; bh=7UHBRH5A/rAUW8O3WYeKaOaOXX0+pl8vP8IIGkcTjO8=; h=Date:From:To:Cc:Subject:In-Reply-To:From; b=UvKxojd96ybvz4wCT9QMbUD7BYFKOW7L32k1cM25SmfLk6GBxSewQ5EydhsMm94us rygz+JfUakNQhTBUUoZVdDPJZbLsJOmsHmZcxkfXI74F+u5hHmYqcOFdSgYh+A3x59 jkiHiPltMgj7x0VouBYtCgsE2dAgWul/msywmd8AhKr2goC5+57p0FTwkJfxIclrgU YP/WqlHhVtbEvhtLIJwTT0oAaL/v1k0YU0Vty1JTCYD1U6z+HOZzPcBat3lC0hGqGe Dey12bQ/+2mx2mUkRM4vY28KyXA1OpnRC9gHm2DBWfkJHK9GUMU6ggiR549HbVmcXk bu0iD+ZH2Vf5Q== Date: Fri, 1 Dec 2023 16:49:28 -0600 From: Bjorn Helgaas To: Herve Codina Cc: Greg Kroah-Hartman , "Rafael J. Wysocki" , Bjorn Helgaas , Lizhi Hou , Rob Herring , Max Zhen , Sonal Santan , Stefano Stabellini , Jonathan Cameron , linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, Allan Nielsen , Horatiu Vultur , Steen Hegelund , Thomas Petazzoni , stable@vger.kernel.org Subject: Re: [PATCH v2 2/2] PCI: of: Attach created of_node to existing device Message-ID: <20231201224928.GA534494@bhelgaas> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231130165700.685764-3-herve.codina@bootlin.com> X-Spam-Status: No, score=-1.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lipwig.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (lipwig.vger.email [0.0.0.0]); Fri, 01 Dec 2023 14:49:45 -0800 (PST) On Thu, Nov 30, 2023 at 05:56:59PM +0100, Herve Codina wrote: > The commit 407d1a51921e ("PCI: Create device tree node for bridge") > creates of_node for PCI devices. > During the insertion handling of these new DT nodes done by of_platform, > new devices (struct device) are created. > For each PCI devices a struct device is already present (created and > handled by the PCI core). > Having a second struct device to represent the exact same PCI device is > not correct. Can you rewrap this or, if you intend multiple paragraphs, add blank lines between them? > On the of_node creation, tell the of_platform that there is no need to > create a device for this node (OF_POPULATED flag), link this newly > created of_node to the already present device and tell fwnode that the > device attached to this of_node is ready (fwnode_dev_initialized()). > > With this fix, the of_node are available in the sysfs device tree: > /sys/devices/platform/soc/d0070000.pcie/ > + of_node -> .../devicetree/base/soc/pcie@d0070000 > + pci0000:00 > + 0000:00:00.0 > + of_node -> .../devicetree/base/soc/pcie@d0070000/pci@0,0 > + 0000:01:00.0 > + of_node -> .../devicetree/base/soc/pcie@d0070000/pci@0,0/dev@0,0 > > On the of_node removal, revert the operations. > > Fixes: 407d1a51921e ("PCI: Create device tree node for bridge") > Cc: stable@vger.kernel.org > Signed-off-by: Herve Codina > --- > drivers/pci/of.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/of.c b/drivers/pci/of.c > index 51e3dd0ea5ab..5afd2731e876 100644 > --- a/drivers/pci/of.c > +++ b/drivers/pci/of.c > @@ -615,7 +615,8 @@ void of_pci_remove_node(struct pci_dev *pdev) > np = pci_device_to_OF_node(pdev); > if (!np || !of_node_check_flag(np, OF_DYNAMIC)) > return; > - pdev->dev.of_node = NULL; > + > + device_remove_of_node(&pdev->dev); > > of_changeset_revert(np->data); > of_changeset_destroy(np->data); > @@ -668,12 +669,22 @@ void of_pci_make_dev_node(struct pci_dev *pdev) > if (ret) > goto out_free_node; > > + /* > + * This of_node will be added to an existing device. > + * Avoid any device creation and use the existing device > + */ > + of_node_set_flag(np, OF_POPULATED); > + np->fwnode.dev = &pdev->dev; > + fwnode_dev_initialized(&np->fwnode, true); > + > ret = of_changeset_apply(cset); > if (ret) > goto out_free_node; > > np->data = cset; > - pdev->dev.of_node = np; > + > + /* Add the of_node to the existing device */ > + device_add_of_node(&pdev->dev, np); > kfree(name); > > return; > -- > 2.42.0 >