Re: [PATCH 0/4] MdeModulePkg/AtaAtapiPassThru: Add SATA error recovery


Wu, Hao A
 

-----Original Message-----
From: Albecki, Mateusz <mateusz.albecki@intel.com>
Sent: Tuesday, November 3, 2020 9:24 PM
To: devel@edk2.groups.io
Cc: Albecki, Mateusz <mateusz.albecki@intel.com>; Ni, Ray
<ray.ni@intel.com>; Wu, Hao A <hao.a.wu@intel.com>
Subject: [PATCH 0/4] MdeModulePkg/AtaAtapiPassThru: Add SATA error
recovery

To increase boot stability when booting from SATA drives SATA driver should
implement the AHCI spec defined port error recovery. This will allow the
driver to handle random fails on SATA link.

Performed tests on 2 setups. One with AHCI controller booting OS
successfully without error recovery(control setup) and other which fails 1 in 5
times(fail setup).

Tests performed:
1. Booted control setup to OS successfully.
2. Checked if during normal boot none of the packets is repeated(this came
up after previous code version had a bug which repeated each DMA packet 5
times).

Some more information:
For the bug mentioned above in point 2, the discussion can be referred here:
https://github.com/malbecki/edk2/commit/9ea81cadf38725e194ec01e0b0c556fd133f3ced#r43226067

For the other discussion we did before this patch, please refer to:
https://github.com/malbecki/edk2/commits/sata_recovery

Best Regards,
Hao Wu


3. Booted control setup to OS with simulated errors appearing on first packet
of every DMA transaction.
4. Performed extensive tests on fail setup. Fail rate decreased from 20%
failure to ~1% failure. 1% failure is observed during OS execution, not BIOS so
in a way boot is 100% stable).

Change pushed to github:
This series:
https://github.com/malbecki/edk2/commits/sata_recovery2
Simulated errors:
https://github.com/malbecki/edk2/commits/sata_recovery_simulated_erro
r

Signed-off-by: Mateusz Albecki <mateusz.albecki@intel.com>

Cc: Ray Ni <ray.ni@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>

Albecki (4):
MdeModulePkg/AtaAtapiPassThru: Check IS to check for command
completion
MdeModulePkg/AtaAtapiPassThru: Add SATA error recovery flow
MdeModulePkg/AtaAtapiPassThru: Restart failed packets
MdeModulePkg/AtaAtapiPassThru: Trace ATA packets

.../Bus/Ata/AtaAtapiPassThru/AhciMode.c | 801 +++++++++++-------
.../Bus/Ata/AtaAtapiPassThru/AhciMode.h | 16 +-
2 files changed, 532 insertions(+), 285 deletions(-)

--
2.28.0.windows.1

Join devel@edk2.groups.io to automatically receive all group messages.