|
Description
|
For Solaris, hardware interrupt handlers can be re-entered, and it is the device drivers that should protect its context, such as hardware registers, etc. i915_driver_irq_handler() doesn't follow that, some registers can be overwritten, as a result, i915 driver is losting interrupts.
There are two ways to solve this issue:
1. Add a mutex in i915 driver to protect registers resource;
2. Add a mutex in drm module, and calling i915_driver_irq_handler() in a wrapper, like :
drm_intr_handler()
{
mutex_enter();
calling i915_driver_irq_handler();
mutex_exit();
}
We need some time to evalute which is good.
|