Hi John, > On 06/01/2022 13:03, Ajish.Koshy@xxxxxxxxxxxxx wrote: > >> only a specific vector and, also, why we check at all in an > >> interrupt handler. > > Here is my initial understanding so far based on the code and data > > sheet > > > > 1. Controller has the capability to communicate to the host about > > fatal error condition via configured interrupt vector MSI/MSI-X. > > 2. This capability is achieved by setting two fields > > a. Enable Controller Fatal error notification > > Dowrd 0x1C, Bit[0]. > > 1 - Enable; 0 - Disable > > Code: pm8001_ha->main_cfg_tbl.pm80xx_tbl. > > fatal_err_interrupt = 0x01; > > b. Fatal Error Interrupt Vector Dword 0x1C, bit[15:8] > > This parameter configures which interrupt vector > > is used to notify the host of the fatal error. > > Code: /* Update Fatal error interrupt vector */ > > pm8001_ha->main_cfg_tbl.pm80xx_tbl. > > fatal_err_interrupt |= > > ((pm8001_ha->max_q_num - 1) << 8); > > > > Probably this will be the reason why we check the vector in > > process_oq() for processing controller fatal error > > > > if (vec == (pm8001_ha->max_q_num - 1)) { > > > > Please do let me know if it helped in clarification. > > > > Sounds reasonable. And we only discover the issue for 8008/8009 now as we > have that (pm8001_ha->max_q_num - 1) vector being used for standard IO. > > So let me know of any other issue, otherwise I'll send a v2 with the coding > style fixup. After going through check_fw_ready(), the change here looks fine. > > Thanks, > John