Date: Mon, 9 Mar 2020 19:01:17 +0000 (UTC) From: Leandro Lupori <luporl@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r358814 - head/sys/dev/aacraid Message-ID: <202003091901.029J1Ha3009103@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: luporl Date: Mon Mar 9 19:01:17 2020 New Revision: 358814 URL: https://svnweb.freebsd.org/changeset/base/358814 Log: [aacraid] Handle both AIF and SYNC interrupts Without this change, if an AIF interrupt comes at the same time a SYNC command is finished, the SYNC interrupt will be lost. This happens because all interrupt bits (bellbits) are cleared, but only one of them is handled. Debugging shows that, (at least) when !sc->msi_enabled and (sc->flags & AAC_FLAGS_SYNC_MODE) is true (sync mode), both bits may be set at the same time. PR: 237463 Reviewed by: scottl Sponsored by: Eldorado Research Institute (eldorado.org.br) Differential Revision: https://reviews.freebsd.org/D23859 Modified: head/sys/dev/aacraid/aacraid.c Modified: head/sys/dev/aacraid/aacraid.c ============================================================================== --- head/sys/dev/aacraid/aacraid.c Mon Mar 9 16:02:54 2020 (r358813) +++ head/sys/dev/aacraid/aacraid.c Mon Mar 9 19:01:17 2020 (r358814) @@ -899,7 +899,7 @@ aacraid_new_intr_type1(void *arg) AAC_MEM0_SETREG4(sc, AAC_SRC_ODBR_C, bellbits); if (bellbits_shifted & AAC_DB_AIF_PENDING) mode |= AAC_INT_MODE_AIF; - else if (bellbits_shifted & AAC_DB_SYNC_COMMAND) + if (bellbits_shifted & AAC_DB_SYNC_COMMAND) mode |= AAC_INT_MODE_SYNC; } /* ODR readback, Prep #238630 */ @@ -923,7 +923,10 @@ aacraid_new_intr_type1(void *arg) sc->flags &= ~AAC_QUEUE_FRZN; sc->aac_sync_cm = NULL; } - mode = 0; + if (mode & AAC_INT_MODE_INTX) + mode &= ~AAC_INT_MODE_SYNC; + else + mode = 0; } if (mode & AAC_INT_MODE_AIF) { @@ -932,6 +935,9 @@ aacraid_new_intr_type1(void *arg) mode = 0; } } + + if (sc->flags & AAC_FLAGS_SYNC_MODE) + mode = 0; if (mode) { /* handle async. status */
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202003091901.029J1Ha3009103>