[PATCH 3/3] miniport: halve QXL_IO_UPDATE_IRQ calls

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



RHBZ: 856246
---
 miniport/qxl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/miniport/qxl.c b/miniport/qxl.c
index f5d6b48..629fbdb 100644
--- a/miniport/qxl.c
+++ b/miniport/qxl.c
@@ -1298,7 +1298,7 @@ err:
 VOID InterruptCallback(PVOID dev_extension, PVOID Context)
 {
     QXLExtension *dev_ext = dev_extension;
-    UINT32 pending = VideoPortInterlockedExchange(&dev_ext->ram_header->int_pending, 0);
+    UINT32 pending = (UINT32)Context;
 
     if (pending & QXL_INTERRUPT_DISPLAY) {
         VideoPortSetEvent(dev_ext, dev_ext->display_event);
@@ -1316,14 +1316,14 @@ VOID InterruptCallback(PVOID dev_extension, PVOID Context)
 BOOLEAN Interrupt(PVOID dev_extension)
 {
     QXLExtension *dev_ext = dev_extension;
+    UINT32 pending;
 
-    if (!(dev_ext->ram_header->int_pending & dev_ext->ram_header->int_mask)) {
+    pending = VideoPortInterlockedExchange(&dev_ext->ram_header->int_pending, 0);
+    if (!(pending & dev_ext->ram_header->int_mask)) {
         return FALSE;
     }
-    dev_ext->ram_header->int_mask = 0;
-    VideoPortWritePortUchar((PUCHAR)dev_ext->io_base + QXL_IO_UPDATE_IRQ, 0);
 
-    if (!VideoPortQueueDpc(dev_extension, InterruptCallback, NULL)) {
+    if (!VideoPortQueueDpc(dev_extension, InterruptCallback, (void *)pending)) {
         VideoPortLogError(dev_extension, NULL, E_UNEXPECTED, QXLERR_INT_DELIVERY);
         dev_ext->ram_header->int_mask = WIN_QXL_INT_MASK;
         VideoPortWritePortUchar((PUCHAR)dev_ext->io_base + QXL_IO_UPDATE_IRQ, 0);
-- 
1.8.3.1

_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]