[PATCH 2/6] drivers/base: add bus for System-on-Chip devices

Arnd Bergmann arnd at arndb.de
Tue Oct 18 10:05:12 EDT 2011


On Tuesday 18 October 2011, Lee Jones wrote:
> On 17/10/11 17:18, Greg KH wrote:
> > On Mon, Oct 17, 2011 at 12:52:54PM +0100, Lee Jones wrote:
> >> +{
> >> +	struct soc_device *soc_dev =
> >> +		container_of(dev, struct soc_device, dev);
> >> +
> >> +	sysfs_remove_group(&dev->kobj, &soc_attr_group);
> >> +
> >> +	if (device_is_registered(dev))
> >> +		device_unregister(dev);
> > 
> > Why is this call needed?
> 
> To unregister a previously unregistered device?
> 
> Is that wrong?

See Jamie's excellent explanation: you don't need to check
for device_is_registered() here, but just call device_unregister
unconditionally.

> >> +
> >> +	bus_unregister(&soc_bus_type);
> > 
> > What happens if you have more than one SOC device?  I think you just
> > oopsed.
> 
> I think you're right.
> 
> When to you suggest we unregister the bus?

Do it in the same way as registering it, as a module_exit() function
below the initcall that instantiates it. These interfaces usually come
in pairs, so if something does not look symmetric, you should better
have another look.

	Arnd



More information about the linux-arm-kernel mailing list