[ofa-general] Re: [PATCH] core/mthca: Distinguish multiple IB cards in /proc/interrupts

Arputham Benjamin abenjamin at sgi.com
Tue May 19 19:41:52 PDT 2009


Roland Dreier wrote:
> So I would suggest reworking this into a series of patches:
>
> 1. Add a function ib_alloc_device_set_name() that does what your
>    ib_init_device() function does.  (By the way, there is a problem with
>    your implementation, since alloc_name() just checks the list of
>    registered devices for a collision -- so devices that are allocated
>    but not registered could be assigned the same name, if the kernel
>    ever moves to parallelizing PCI probing or something like that -- so
>    you should probably fix alloc_name() to check a list of all allocated
>    devices or something like that)
>   
The current implementation of IB core module doesn't maintain a list of allocated IB devices. Are you suggesting that we create a separate list of allocated but not registered devices in addition to the existing list of registered devices. Please clarify.

Alternatively, we can use the existing registered devices list named 'device_list' in the IB core module to keep track of both allocated and registered devices. Currently, the ib_device can be in one of three states(IB_DEV_UNINITIALIZED, IB_DEV_REGISTERED, IB_DEV_UNREGISTERED). We can enhance this to include 'INITIALIZED' state and add the ib_device to 'device_list' with this new state at ib_alloc_device_set_name() time. In this case, there will be no changes to alloc_name() as it is already checking for device name collision in a single list irrespective of the state of the device.


> 2. For each RDMA driver (ie each of drivers/infiniband/hw/xxx), convert
>    to using ib_init_device_alloc_name() -- one patch per driver.
>   

I wanted to point out that the proposed patch will not fix the /proc/interrupts reporting issue for ConnectX IB devices because request_irq() is done by mlx4_core and not by mlx4_ib. Also, mlx4_core doesn't plug into IB core module.


> 3. Remove the old ib_alloc_device() and rename
>    ib_alloc_device_set_name() back to ib_alloc_device().     
>
>  - R.
>   
I assume that there will be a transition period to allow deprecation of ib_alloc_device_set_name() before we can apply this patch. Is my assumption correct?

Regards,
Benjamin





More information about the general mailing list