* keywest bugfix
@ 2004-03-20 13:43 Samuel Rydh
0 siblings, 0 replies; only message in thread
From: Samuel Rydh @ 2004-03-20 13:43 UTC (permalink / raw)
To: linuxppc-dev; +Cc: benh
The following patch fixes a deadlock in I2C probing:
===== drivers/i2c/busses/i2c-keywest.c 1.12 vs edited =====
--- 1.12/drivers/i2c/busses/i2c-keywest.c Mon Mar 15 11:25:23 2004
+++ edited/drivers/i2c/busses/i2c-keywest.c Sat Mar 20 14:33:07 2004
@@ -608,6 +608,7 @@
}
#endif /* POLLED_MODE */
+ pmac_low_i2c_unlock(np);
dev_set_drvdata(dev, iface);
for (i=0; i<nchan; i++) {
@@ -645,7 +646,6 @@
printk(KERN_INFO "Found KeyWest i2c on \"%s\", %d channel%s, stepping: %d bits\n",
np->parent->name, nchan, nchan > 1 ? "s" : "", bsteps);
- pmac_low_i2c_unlock(np);
return 0;
}
Without this patch, the deadlock occurs in the following situation:
- keywest holds the pmac_low_i2c_lock while registering the i2c adapter.
- i2c_add_adapter() notifies registered drivers by calling
driver->attach_adapter().
- a driver might access the i2c bus from attach_adapter() which
deadlocks since all xfer routines take the lock.
/Samuel
** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2004-03-20 13:43 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-03-20 13:43 keywest bugfix Samuel Rydh
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.