Page MenuHomeFreeBSD

[aacraid] Handle both AIF and SYNC interrupts
ClosedPublic

Authored by luporl on Feb 27 2020, 7:31 PM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Jul 21, 7:54 AM
Unknown Object (File)
Mon, Jul 20, 1:13 PM
Unknown Object (File)
Tue, Jul 14, 6:20 PM
Unknown Object (File)
Jun 21 2026, 10:12 PM
Unknown Object (File)
Jun 19 2026, 8:35 PM
Unknown Object (File)
Jun 18 2026, 4:59 AM
Unknown Object (File)
May 16 2026, 7:54 PM
Unknown Object (File)
May 16 2026, 7:54 PM
Subscribers

Details

Summary

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.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

sys/dev/aacraid/aacraid.c
930–931 ↗(On Diff #68903)

This is needed to avoid entering the if block below, that uses structure fields that are not initialized (and probably not needed) in sync mode.

This revision is now accepted and ready to land.Mar 9 2020, 6:24 PM
This revision was automatically updated to reflect the committed changes.