Re: [PATCH libata-dev-2.6:sil24 05/07] sil24: use longer delay function and less iteration in reset_controller
From: Tejun Heo <hidden>
Date: 2005-08-12 00:54:33
Jeff Garzik wrote:
Tejun Heo wrote:quoted
05_sil24_mdelay-instead-of-udelay.patch loop 100 times with mdelay(1) instead of 1000 times with udelay(100) in sil24_reset_controller. Jeff, is this what you wanted? If not, just ignore this patch. The following patches will apply without this one. Signed-off-by: Tejun Heo <redacted> sata_sil24.c | 10 +++++++--- 1 files changed, 7 insertions(+), 3 deletions(-) Index: work/drivers/scsi/sata_sil24.c ===================================================================--- work.orig/drivers/scsi/sata_sil24.c 2005-07-3019:13:40.000000000 +0900+++ work/drivers/scsi/sata_sil24.c 2005-07-30 19:13:40.000000000 +0900@@ -445,9 +445,13 @@ static void sil24_reset_controller(struc writel(PORT_CS_DEV_RST, port + PORT_CTRL_STAT); readl(port + PORT_CTRL_STAT); /* sync */ - /* Max ~100ms */ - for (cnt = 0; cnt < 1000; cnt++) { - udelay(100); + /* + * Max ~100ms. + * FIXME: 100ms is an arbitrary value, get spec and use + * accurate value. + */ + for (cnt = 0; cnt < 100; cnt++) { + mdelay(1); tmp = readl(port + PORT_CTRL_STAT);I forget what the discussion resulted in, for this change. For error handling, we typically want to move to process context (if not there already), and then use msleep() and friends.
Yeap, that's exactly what I did in sil24 driver against new EH/NCQ helpers. As we don't have EH thread luxury in mainline yet, I had to convert it to mdelay. Once new EH (in whatever form) is in place, we should be able to convert all mdelay's in reset routines to msleep's. -- tejun