hda: Remove interrupt hanlder before freeing interrupt vector.

Freeing an interrupt vector that still has handlers is not allowed.

Change-Id: If2f256e5288c7a61b7e23bdb202f259f5b67b7ae
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3112
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
Michael Lotz
2020-07-31 23:36:55 +00:00
committed by waddlesplash
parent c7c0cf726e
commit d9ff5e5637
@@ -1313,6 +1313,9 @@ hda_hw_uninit(hda_controller* controller)
// Disable interrupts, and remove interrupt handler
controller->Write32(HDAC_INTR_CONTROL, 0);
remove_io_interrupt_handler(controller->irq,
(interrupt_handler)hda_interrupt_handler, controller);
if (controller->msi) {
// Disable MSI
gPCIx86Module->disable_msi(controller->pci_info.bus,
@@ -1321,9 +1324,6 @@ hda_hw_uninit(hda_controller* controller)
controller->pci_info.device, controller->pci_info.function);
}
remove_io_interrupt_handler(controller->irq,
(interrupt_handler)hda_interrupt_handler, controller);
// Delete corb/rirb area
if (controller->corb_rirb_pos_area >= 0) {
delete_area(controller->corb_rirb_pos_area);