Messages in this thread | | | Subject | Re: [PATCH RFT] scsi: pm8001: Fix FW crash for maxcpus=1 | From | John Garry <> | Date | Thu, 6 Jan 2022 15:32:52 +0000 |
| |
On 06/01/2022 13:03, Ajish.Koshy@microchip.com 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.
Thanks, John
| |