I2C-virtual and locking?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mar 17, 2006, at 12:54 PM, Kumar Gala wrote:

> I'm looking at porting the i2c-virtual code from 2.4 to 2.6.  One  
> thing I'm not clear on is the use of i2c_add_adapter_nolock() by  
> the old code.  The only reference I can find related to this is:
>
> http://archives.andrew.net.au/lm-sensors/msg31060.html
>
> I can't think of a reason why locking would be in issue when adding  
> or removing of a virtual adapter.  Anyone have an additional ides  
> on this?

Ok, so I figured out why the _nolock() versions exist.  In  
i2c_driver_register we take the core_list lock.  Eventually we will  
call i2c_probe() which should call driver->attach_adapter().  For a  
virtual bus the driver's attach_adapter() will end up calling  
i2c_virt_create_adapter() which will end up calling i2c_add_adapter()  
which will never get the core_list lock.

So should we integrate the concept of virtual adapters into the i2c  
core and have it such that i2c_virt_create_adapter()/ 
i2c_virt_remove_adapter() expects the caller to have the core_list  
lock already?

- kumar




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux