mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Commit5590f3196b("drivers/core/of: Add symlink to device-tree from devices with an OF node") adds the symlink `of_node` for each device pointing to it's device tree node while creating/initialising it. However the devicetree sysfs is created and setup in of_init which is executed at core_initcall level. For all the devices created before of_init, the following error is thrown: "Error -2(-ENOENT) creating of_node link" Like many other components in driver model, initialize the sysfs support for OF/devicetree from driver_init so that it's ready before any devices are created. Fixes:5590f3196b("drivers/core/of: Add symlink to device-tree from devices with an OF node") Suggested-by: Rob Herring <robh+dt@kernel.org> Cc: Grant Likely <grant.likely@linaro.org> Cc: Pawel Moll <pawel.moll@arm.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com> Tested-by: Robert Schwebel <r.schwebel@pengutronix.de> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
		
			
				
	
	
		
			39 lines
		
	
	
	
		
			776 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
	
		
			776 B
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Copyright (c) 2002-3 Patrick Mochel
 | 
						|
 * Copyright (c) 2002-3 Open Source Development Labs
 | 
						|
 *
 | 
						|
 * This file is released under the GPLv2
 | 
						|
 */
 | 
						|
 | 
						|
#include <linux/device.h>
 | 
						|
#include <linux/init.h>
 | 
						|
#include <linux/memory.h>
 | 
						|
#include <linux/of.h>
 | 
						|
 | 
						|
#include "base.h"
 | 
						|
 | 
						|
/**
 | 
						|
 * driver_init - initialize driver model.
 | 
						|
 *
 | 
						|
 * Call the driver model init functions to initialize their
 | 
						|
 * subsystems. Called early from init/main.c.
 | 
						|
 */
 | 
						|
void __init driver_init(void)
 | 
						|
{
 | 
						|
	/* These are the core pieces */
 | 
						|
	devtmpfs_init();
 | 
						|
	devices_init();
 | 
						|
	buses_init();
 | 
						|
	classes_init();
 | 
						|
	firmware_init();
 | 
						|
	hypervisor_init();
 | 
						|
 | 
						|
	/* These are also core pieces, but must come after the
 | 
						|
	 * core core pieces.
 | 
						|
	 */
 | 
						|
	platform_bus_init();
 | 
						|
	cpu_dev_init();
 | 
						|
	memory_dev_init();
 | 
						|
	container_dev_init();
 | 
						|
	of_core_init();
 | 
						|
}
 |