Messages in this thread | | | Subject | Re: Sleeping function called from illegal context... | From | Alan Cox <> | Date | 28 Sep 2002 11:06:23 +0100 |
| |
On Sat, 2002-09-28 at 04:21, Andre Hedrick wrote: > There is an issue of interrupt acknowledgement and when one can pre-empt. > I would like to resolve the issue, but I need a global caller/notifier api > from you so I can block IO in a safe spot on the 'data transfer' state > bar. Yeah, blah blah on underfined terms. > > Some how I need to figure out how to address the pre-empt and keep the > driver data stable. Initially I would suggest throttling back on the > request size to maybe 4k or 8k regardless. I may not sound right but it > will serve the purpose.
For things like old old broken PIO where interrupting the data stream screws up the data thats actually already covered. Pre-empt does actually do some things sensibly, and one of them is that when you hold a lock or disable irq you also disable pre-empt. That means hdparm -u0 PIO interface code is still going to do the right thing
Reminds me though Robert (and Jeff)
drivers/net/8390.c still needs ei_start_xmit fixing
pre-emption should be disabled between
/* Mask interrupts from the ethercard. SMP: We have to grab the lock here otherwise the IRQ handler
and disable_irq_nosync(dev->irq);
spin_lock(&ei_local->page_lock);
So that we don't leave the IRQ disabled due to pre-emption
(that code is wonderfully deranged but its the only way to make 8390 based chips not screw up things like serial I/O on a SMP box)
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |