On Tue, Jun 24, 2008 at 04:00:16AM +0400, Anton Vorontsov wrote:Ok, a bit more investigation showed that this is indeed not RT specific per see, but issue emerges only on RT-style IRQ handlers + alim15x3 IDE controller (for example, PDC20269 works ok). The difference is that that with RT: low-level (non-threaded) IRQ handler masks IDE IRQ, then wakes up appropriate IRQ thread, which calls IDE handler, and then, after IDE handler exits, thread routine unmasks IDE IRQ. Without RT: low-level non-threaded IRQ handler does not mask specific IRQ, but disables local interrupts, and calls IDE handler directly. The bug, as I see it, in the alim15x3 (ULi M5228) hardware: for some reason it does not hold IRQ line, but rises it for some short period of time (while the drive itself rises and holds it correctly -- I'm seeing it via oscilloscope). So this scheme does not work: mask_irq() ...do something that will trigger IDE interrupt... unmask_irq() Because at the unmask_irq() time IDE IRQ is gone already, and interrupt controller could not notice it (interrupts are level sensitive). I did following test: disable RT + insert mask/unmask sequence in the IDE IRQ handler, and I got the same behaviour as with RT enabled. Also, further testing showed that this issue isn't drive-specific, i.e. with a delay inserted before the unmask_irq(), the bug shows with any drive I have. So, in summary: I think that the patch is still correct as a hw bug workaround (I'll need to correct its comments and description though). -- Anton Vorontsov email: cbouatmailru@gmail.com irc://irc.freenode.net/bd2 --
| Mark Lord | 2.6.25-rc8: FTP transfer errors |
| Kamalesh Babulal | Re: 2.6.23-rc6-mm1 |
| Greg Kroah-Hartman | [PATCH 025/196] paride: Convert from class_device to device for block/paride |
| Stephen Rothwell | Announce: Linux-next (Or Andrew's dream :-)) |
git: | |
| Linus Torvalds | Re: iptables very slow after commit 784544739a25c30637397ace5489eeb6e15d7d49 |
| David Miller | Re: [GIT]: Networking |
| Gerrit Renker | [PATCH 18/37] dccp: Support for Mandatory options |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
