From 863a181c0bb346b2494c4815d31d21c8dc355bea Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Fri, 14 Sep 2012 18:16:51 +0200 Subject: [PATCH] make sure there are no pending interrupts during setup --- .../kernel/busses/scsi/ahci/ahci_controller.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp index 24ded54f21..311825f88b 100644 --- a/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp +++ b/src/add-ons/kernel/busses/scsi/ahci/ahci_controller.cpp @@ -122,6 +122,10 @@ AHCIController::Init() return B_ERROR; } + // make sure interrupts are disabled + fRegs->ghc &= ~GHC_IE; + FlushPostedWrites(); + if (ResetController() < B_OK) { TRACE("controller reset failed\n"); goto err; @@ -194,6 +198,12 @@ AHCIController::Init() } } + // clear any pending interrupts + uint32 interruptsPending; + interruptsPending = fRegs->is; + fRegs->is = interruptsPending; + FlushPostedWrites(); + // enable interrupts fRegs->ghc |= GHC_IE; FlushPostedWrites();