Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp1337048pxb; Fri, 6 Nov 2020 07:11:58 -0800 (PST) X-Google-Smtp-Source: ABdhPJx66+FRu4z5oBz+KrdqfCW/BaZD9EwGsmFmsraChZ8Miw1jjRhb83YxYWcsB5yzozgUM1YF X-Received: by 2002:aa7:dbca:: with SMTP id v10mr2454801edt.219.1604675518608; Fri, 06 Nov 2020 07:11:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1604675518; cv=none; d=google.com; s=arc-20160816; b=XBz0tlPR3fHEDHX+f66tECtBdgf5DzFPQteJ931G15fMZ4m7D9Ly6j3AmJx3FO+db8 qQlUg2P0J/vpuhO0XS8aCgybmYfDQeszjE5n9ZwFEhNHnMoN2IhNH7/jpIa6ZIUQW5kC x6JeOkrOZ47fZXF7yRZ+vWsSjSdc59xbWOTWJJ+AMfF1xPf2MVAwcBdToSxjuq6ez+qc favb0oTpJhU8I2mcqYt+3orUMc93nUL5o9Twy+8egRKgydYzDpqJUBqo2e6RY2VFUNdT 2TR957NihrMga6g0sPvQbEPCctNeMSTpPy6ZxCh5GPv/2g59vDal92pO+i0d/M4+l0yg kIbQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=TqTyupLR2tgqRTx7rRMGrUCneXiVLg7EM1BK5urAWw0=; b=QlyrlqtZY7f5FRhIfP86ElxaCavsAs6URdqfMQMix4r0KrwqcSqXqzqwa9OEtedRl+ 0vLAx594BUKDpUcZgkEVO8meHzS4eMu/+u/olXH2ManXUpANJO+wSU3eE/9OYQxiiWAe yg66BdyNnE7HyEiVZOvEordaGKSMVzGsJjDAbZjv7IbL14kqvxPoqPrbN2H27dqvjr9j bsLXoZpNQwEOvwujHnC/R9BbzqzXqm74NEuyg3co7Qcpmwf3pNna+NCOVEUu0/67kJBU LqG/exAGjAC/T8fbQQI/bhPyjdEw58MHEnJsVFxtcQycCp9P7N86QJnMiW9dDezvcR6Y nt9g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=niY8WqBV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id h14si1018893ejs.645.2020.11.06.07.11.33; Fri, 06 Nov 2020 07:11:58 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=niY8WqBV; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726813AbgKFPJj (ORCPT + 99 others); Fri, 6 Nov 2020 10:09:39 -0500 Received: from mail.kernel.org ([198.145.29.99]:45236 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726422AbgKFPJh (ORCPT ); Fri, 6 Nov 2020 10:09:37 -0500 Received: from localhost (fw-tnat.cambridge.arm.com [217.140.96.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 590DF22227; Fri, 6 Nov 2020 15:09:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1604675376; bh=s/FYo72I6lt9+QYesQbFcIAoPzgpDRs/37yRXdQqM5k=; h=From:To:Cc:Subject:Date:From; b=niY8WqBV/LQP5/Zv6YXKlYmfDYoKB+adBBoqmX19s/VeJv9+OlmHmVH7t43qQIkq0 cZ47uoBSseKF7a6ZT9EF/MbPgsOYZ15XgLFVz1zcxlxrtwuJ9uXjcjIqnMYkMYJ3yh zIEr1PwU2DX7lEktrKS9ejhSXnyyvXq0O8CjSY3c= From: Mark Brown To: Greg Kroah-Hartman , "Rafael J . Wysocki" Cc: Daniel Mentz , Saravana Kannan , linux-kernel@vger.kernel.org, Mark Brown Subject: [PATCH RFC] driver core: Ensure DT devices always have fwnode set Date: Fri, 6 Nov 2020 15:07:47 +0000 Message-Id: <20201106150747.31273-1-broonie@kernel.org> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently the fwnode API and things that rely on it like fw_devlink will not reliably work for devices created from DT since each subsystem that creates devices must individually set dev->fwnode in addition to setting dev->of_node, currently a number of subsystems don't do so. Ensure that this can't get missed by setting fwnode from of_node if it's not previously been set by the subsystem. Reported-by: Saravana Kannan Signed-off-by: Mark Brown --- *Very* minimally tested. drivers/base/core.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/base/core.c b/drivers/base/core.c index d661ada1518f..658626bafd76 100644 --- a/drivers/base/core.c +++ b/drivers/base/core.c @@ -2864,6 +2864,10 @@ int device_add(struct device *dev) if (parent && (dev_to_node(dev) == NUMA_NO_NODE)) set_dev_node(dev, dev_to_node(parent)); + /* ensure that fwnode is set up */ + if (IS_ENABLED(CONFIG_OF) && dev->of_node && !dev->fwnode) + dev->fwnode = of_fwnode_handle(dev->of_node); + /* first, register with generic layer. */ /* we require the name to be set before, and pass NULL */ error = kobject_add(&dev->kobj, dev->kobj.parent, NULL); -- 2.20.1