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:
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);
|
||||
|
||||
Reference in New Issue
Block a user