From da4c1ce305b609ca61962f3861d640bf3fd0ed45 Mon Sep 17 00:00:00 2001 From: "Justin T. Gibbs" Date: Sat, 17 Mar 2001 00:12:15 +0000 Subject: [PATCH] This is an MFC candidate. Add the AAC_DEBUG option to enable debugging in the aac driver. Correct a race condition in the interrupt handler where the controller may queue a fib to a response queue after the driver has serviced the queue but before the interrupt is cleared. This could leave a completed fib stranded in the response queue unless another I/O completed and generated another interrupt. Reviewed by: msmith --- sys/dev/aac/aac.c | 4 ++-- sys/dev/aac/aac_debug.c | 2 ++ sys/dev/aac/aacvar.h | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/sys/dev/aac/aac.c b/sys/dev/aac/aac.c index 8d25a71393e..ff564f123f9 100644 --- a/sys/dev/aac/aac.c +++ b/sys/dev/aac/aac.c @@ -483,14 +483,14 @@ aac_intr(void *arg) /* controller has a message for us? */ if (reason & AAC_DB_COMMAND_READY) { - aac_host_command(sc); AAC_CLEAR_ISTATUS(sc, AAC_DB_COMMAND_READY); + aac_host_command(sc); } /* controller has a response for us? */ if (reason & AAC_DB_RESPONSE_READY) { - aac_host_response(sc); AAC_CLEAR_ISTATUS(sc, AAC_DB_RESPONSE_READY); + aac_host_response(sc); } /* spurious interrupts that we don't use - reset the mask and clear the interrupts */ diff --git a/sys/dev/aac/aac_debug.c b/sys/dev/aac/aac_debug.c index 3298502bb30..d4b7cb988c3 100644 --- a/sys/dev/aac/aac_debug.c +++ b/sys/dev/aac/aac_debug.c @@ -47,6 +47,7 @@ #include #include +#ifdef AAC_DEBUG void aac_printstate0(void); void aac_intr0(void); @@ -434,3 +435,4 @@ aac_print_aif(struct aac_softc *sc, struct aac_aif_command *aif) break; } } +#endif diff --git a/sys/dev/aac/aacvar.h b/sys/dev/aac/aacvar.h index 0869ccb3909..2870531d3a0 100644 --- a/sys/dev/aac/aacvar.h +++ b/sys/dev/aac/aacvar.h @@ -95,6 +95,8 @@ ******************************************************************************** ********************************************************************************/ +#include "opt_aac.h" + #if __FreeBSD_version >= 500005 # include #endif