Hi, Following is v2 of the set. It contains some minor clean ups and the additions from Dave, mostly related with DRM. I just reorganized a little the ideas which everyone sent and summarized them here. The basically TODO is: - DRM hook to disable IRQ when arbiter is on action is done. What else we need on DRM department (besides the hook usage that Dave is cooking)? That's a preliminary here: http://people.freedesktop.org/~airlied/vgaarb/0002-drm-add-support-to-drm-for-VGA-arbitration.patch - make a PCI_COMMAND lock to deal with hotplug cards on drivers/pci. Also is it need some spinlock to deal with bridges? (Waiting Jesse's opinion). - know exactly if VGA on/off is enough and remove the just I/O or just memory granularity. Alan states that it would reduce some deadlock. - Change this hunk bellow: + Â Â Â Â Â Â init_waitqueue_entry(&wait, current); + Â Â Â Â Â Â add_wait_queue(&vga_wait_queue, &wait); + Â Â Â Â Â Â set_current_state(interruptible ? + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â TASK_INTERRUPTIBLE : + Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â TASK_UNINTERRUPTIBLE); + Â Â Â Â Â Â if (signal_pending(current)) { + Â Â Â Â Â Â Â Â Â Â rc = -EINTR; + Â Â Â Â Â Â Â Â Â Â break; + Â Â Â Â Â Â } + Â Â Â Â Â Â schedule(); + Â Â Â Â Â Â remove_wait_queue(&vga_wait_queue, &wait); + Â Â Â Â Â Â set_current_state(TASK_RUNNING); by something like: + Â Â Â Â wait_event_interruptible(...) it's Alan's comment. Does it seems doable to everyone? For testing purposes, I'm using posttool: http://cgit.freedesktop.org/~airlied/posttool/ which has the following dependencies: http://cgit.freedesktop.org/~vignatti/libx86/ http://cgit.freedesktop.org/~vignatti/libpciaccess/ (vgaarb branch) Please, comment on and send the feedbacks. Thanks, Tiago Dave Airlie (1): drm: add support to drm for VGA arbitration. Tiago Vignatti (2): vga: implements VGA arbitration on Linux vga: drops a documentation regarding the VGA arbiter Documentation/vgaarbiter.txt | 197 ++++++ drivers/gpu/Makefile | 2 +- drivers/gpu/drm/drm_irq.c | 24 + drivers/gpu/drm/i915/i915_dma.c | 6 + drivers/gpu/drm/i915/i915_reg.h | 1 + drivers/gpu/drm/i915/intel_display.c | 17 + drivers/gpu/drm/i915/intel_drv.h | 1 + drivers/gpu/drm/radeon/r100.c | 9 + drivers/gpu/drm/radeon/radeon.h | 2 + drivers/gpu/drm/radeon/radeon_asic.h | 9 + drivers/gpu/drm/radeon/radeon_device.c | 5 +- drivers/gpu/vga/Kconfig | 10 + drivers/gpu/vga/Makefile | 1 + drivers/gpu/vga/vgaarb.c | 1116 ++++++++++++++++++++++++++++++++ drivers/video/Kconfig | 2 + include/drm/drmP.h | 3 + include/linux/vgaarb.h | 170 +++++ 17 files changed, 1573 insertions(+), 2 deletions(-) create mode 100644 Documentation/vgaarbiter.txt create mode 100644 drivers/gpu/vga/Kconfig create mode 100644 drivers/gpu/vga/Makefile create mode 100644 drivers/gpu/vga/vgaarb.c create mode 100644 include/linux/vgaarb.h -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html