Re: Extremely slow IO with a PCMCIA CompactFlash adapter

From: Bartlomiej Zolnierkiewicz
Date: Tue Aug 04 2009 - 06:55:35 EST


On Monday 03 August 2009 03:25:18 Jack Byer wrote:
> >
> > Seems like there is also a bug in ali5451 sound driver..
> >
> > This should help:

[...]

> Those patches do not appear to have worked:

My bad, jiffies checks need to be reversed now (corrected patch attached)..

Please also post output of dmidecode command -- we may try to workaround
the issue by not using IRQ mode in pata_pcmcia for this particular system
and resorting to libata's polling mode instead..

---
sound/pci/ali5451/ali5451.c | 11 ++++++++---
1 file changed, 8 insertions(+), 3 deletions(-)

Index: b/sound/pci/ali5451/ali5451.c
===================================================================
--- a/sound/pci/ali5451/ali5451.c
+++ b/sound/pci/ali5451/ali5451.c
@@ -314,8 +314,11 @@ static int snd_ali_codec_ready(struct sn
res = snd_ali_5451_peek(codec,port);
if (!(res & 0x8000))
return 0;
+ if (!time_after_eq(end_time, jiffies))
+ break;
schedule_timeout_uninterruptible(1);
- } while (time_after_eq(end_time, jiffies));
+ } while (1);
+
snd_ali_5451_poke(codec, port, res & ~0x8000);
snd_printdd("ali_codec_ready: codec is not ready.\n ");
return -EIO;
@@ -327,15 +330,17 @@ static int snd_ali_stimer_ready(struct s
unsigned long dwChk1,dwChk2;

dwChk1 = snd_ali_5451_peek(codec, ALI_STIMER);
- dwChk2 = snd_ali_5451_peek(codec, ALI_STIMER);

end_time = jiffies + msecs_to_jiffies(250);
do {
dwChk2 = snd_ali_5451_peek(codec, ALI_STIMER);
if (dwChk2 != dwChk1)
return 0;
+ if (!time_after_eq(end_time, jiffies))
+ break;
schedule_timeout_uninterruptible(1);
- } while (time_after_eq(end_time, jiffies));
+ } while (1);
+
snd_printk(KERN_ERR "ali_stimer_read: stimer is not ready.\n");
return -EIO;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/