Re: [PATCH RFT] scsi: pm8001: Fix FW crash for maxcpus=1

From: Damien Le Moal
Date: Thu Jan 06 2022 - 18:59:42 EST


On 2022/01/07 0:32, John Garry wrote:
> 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.

And maybe add comments about the above so that the information does not get lost ?

>
> Thanks,
> John


--
Damien Le Moal
Western Digital Research