[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <200908041254.08315.bzolnier@gmail.com>
Date: Tue, 4 Aug 2009 12:54:08 +0200
From: Bartlomiej Zolnierkiewicz <bzolnier@...il.com>
To: Jack Byer <ojbyer@....net>
Cc: linux-kernel@...r.kernel.org,
Robert Hancock <hancockrwd@...il.com>,
Alan Cox <alan@...rguk.ukuu.org.uk>,
Andreas Mohr <andi@...as.de>, linux-ide@...r.kernel.org
Subject: Re: Extremely slow IO with a PCMCIA CompactFlash adapter
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@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists