Sanjeev,

Please see my comments below:

> +EXPORT_SYMBOL(hwspinlock_trylock);

[sp] The code is almost duplicated in the functions hwspinlock_trylock()
     and hwspinlock_lock(). The difference being try-once/ try-multiple.
     I believe one function with additional arg - say limit - should be
     sufficient.

     If there is need to abstract additional arg, you can define macros
     for the same.
[SQ] Good point, done.

> +     for (i = 0; i < hwspinlock_state.num_locks && !found; i++) {
> +             if (!hwspinlock_array[i].is_allocated) {
> +                     found = true;
> +                     handle = &hwspinlock_array[i];
> +             }

[sp] Starting from index 0 every time can be quite time consuming
     esp. in the situations where we need spinlocks. IRQs being
     disabled for long can impact the performance.

     Wouldn't a used and free list be better alternative?
[SQ] Done.

> +     if (WARN_ON(hwspinlock_array[id].is_allocated))
> +             goto exit;
> +
[sp] if (id > hwspinlock_state.num_locks) then ??
[SQ] Good catch.  Fixed.

> +EXPORT_SYMBOL(hwspinlock_request_specific);

[sp] What if either of the "request" funcs are called before
     hwspinlock_probe() gets executed?
[SQ] Added a check for that.

> +/* Probe function */
> +static int __devinit hwspinlock_probe(struct platform_device *pdev) {
> +     struct resource *res;
> +     void __iomem *io_base;
> +     int id;
> +
[sp] Extra line?
[SQ] Yeah, got rid of it.

> +     void __iomem *sysstatus_reg;
[sp] can be combined with op_base declaration.
[SQ] Okay done.

> +static struct platform_driver hwspinlock_driver = {
> +     .probe          = hwspinlock_probe,
> +     .driver         = {
> +             .name   = "hwspinlock",

[sp] Extra TAB?
[SQ] No, it's one level down.  Notice the extra { }'s.


Thanks,
Simon
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to