Here's a really good idea: when preparing for a vt switch the intel
driver idles the ringbuffer, stops it, unbinds all memory, then hands back off. Now here's the clever bit: just before we call to idle the ringbuffer (which sleeps waiting for an interrupt) let's TURN OFF THE FUCKING INTERRUPT. That's a great idea, really, isn't it? Move the interrupt disable to *after* stop_ring. Theo's T61 VT switches again. everyone elses' intel stuff worked by magic (or shared interrupts) before now. Fixed after discussion with deraadt@, thanks to miod for suggestions.
This commit is contained in:
parent
d0a977e001
commit
691e04d2ba
@ -3400,7 +3400,6 @@ I830LeaveVT(int scrnIndex, int flags)
|
||||
|
||||
if (!pI830->memory_manager) {
|
||||
I830DRISetVBlankInterrupt (pScrn, FALSE);
|
||||
drmCtlUninstHandler(pI830->drmSubFD);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -3432,8 +3431,10 @@ I830LeaveVT(int scrnIndex, int flags)
|
||||
if (!pI830->memory_manager)
|
||||
intel_bufmgr_fake_evict_all(pI830->bufmgr);
|
||||
|
||||
if (!pI830->memory_manager)
|
||||
if (!pI830->memory_manager) {
|
||||
i830_stop_ring(pScrn, TRUE);
|
||||
drmCtlUninstHandler(pI830->drmSubFD);
|
||||
}
|
||||
|
||||
if (pI830->debug_modes) {
|
||||
i830CompareRegsToSnapshot(pScrn, "After LeaveVT");
|
||||
|
Loading…
Reference in New Issue
Block a user