From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alexander Sverdlin Subject: Re: [PATCH] i2c: suppress lockdep warning on delete_device Date: Fri, 17 May 2013 17:02:13 +0200 Message-ID: <51964675.6030807@nsn.com> References: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: Sender: linux-i2c-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: ext Alan Stern Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, "Eric W. Biederman" , Tejun Heo , Peter Zijlstra , Greg Kroah-Hartman List-Id: linux-i2c@vger.kernel.org Hi! On 05/17/2013 04:42 PM, ext Alan Stern wrote: >> i2c: suppress lockdep warning on delete_device >> >> Since commit 846f99749ab68bbc7f75c74fec305de675b1a1bf the following lockdep >> warning is thrown in case i2c device is removed (via delete_device sysfs >> attribute) which contains subdevices (e.g. i2c multiplexer): > > Can you explain this in a little more detail? Exactly what does the > delete_device attribute do, when called for device D? > > That is, what does a write to /sys/bus/i2c/devices/D/delete_device do? Like USB with its hubs, I2C structure could be tree-like, with I2C multiplexers. delete_device attribute removes I2C device from the subsystem, which is usually not a problem, except the case when device is a multiplexer and sub-devices should be removed first. Here we have the problem: holding a "s_active" lock on "delete_device" attribute of a parent (multiplexer) we need to delete children, but they were created with the same static attribute "delete_device". The safety of this operation is exactly the same as in USB case... Any more clever lockdep annotation is exactly not so easy... -- Best regards, Alexander Sverdlin.