From 69cab3d4f6480cdd588272bca91ed8e3ec8cbd7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 22 Mar 2022 18:21:11 +0100 Subject: [PATCH] intel_extreme: remove gen8 interrupt handler on exit should fix #17535 Change-Id: I09d62090c68bd50494ca168d92d3df7b0c6fd0b4 Reviewed-on: https://review.haiku-os.org/c/haiku/+/5138 Reviewed-by: waddlesplash Tested-by: Commit checker robot --- .../drivers/graphics/intel_extreme/intel_extreme.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp b/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp index d51520f3f0..48d6eaa11f 100644 --- a/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp +++ b/src/add-ons/kernel/drivers/graphics/intel_extreme/intel_extreme.cpp @@ -773,10 +773,14 @@ intel_extreme_uninit(intel_info &info) if (!info.fake_interrupts && info.shared_info->vblank_sem > 0) { // disable interrupt generation - write32(info, find_reg(info, INTEL_INTERRUPT_ENABLED), 0); - write32(info, find_reg(info, INTEL_INTERRUPT_MASK), ~0); - - remove_io_interrupt_handler(info.irq, intel_interrupt_handler, &info); + if (info.device_type.Generation() >= 8) { + bdw_enable_global_interrupts(info, false); + remove_io_interrupt_handler(info.irq, bdw_interrupt_handler, &info); + } else { + write32(info, find_reg(info, INTEL_INTERRUPT_ENABLED), 0); + write32(info, find_reg(info, INTEL_INTERRUPT_MASK), ~0); + remove_io_interrupt_handler(info.irq, intel_interrupt_handler, &info); + } if (info.use_msi && gPCIx86Module != NULL) { gPCIx86Module->disable_msi(info.pci->bus,