Should link->eh_context.i.serror’s value incorporate link->eh_info.serror before doning ata_eh_analyze_serror()?

From: wanqian (D)
Date: Mon Dec 07 2020 - 04:59:46 EST


Hi Tejun,
In SATA EH processing, I found the SERROR register was cleared during interrupt handling in ahci_error_intr(), and its value has been saved to the link->eh_info.serror.
But the SERROR register value was read again in the ata_eh_link_autopsy(), and its value was saved to link->eh_context.i.serror which is analyzed by ata_eh_analyze_serror().
Obviously, the link->eh_context.i.serror’s value will be zero if no host perceptible error is found after it was cleared in interrupt handler.
Why ata_link structure should maintain two ata_eh_info instances: link->eh_info and link->eh_context.i?
Should link->eh_context.i.serror’s value incorporate link->eh_info.serror before doing ata_eh_analyze_serror()?

Thanks,
Qian Wan