mirror of https://github.com/acidanthera/audk.git
a4626006bb
When reviewing my LAN9118 driver PCD patch [1], Ard Biesheuvel noted that most calls to gBS->Stall() in this driver seem to be used to prevent timing issues between the device updating data and the host reading the values. And that replacing most of these calls with a MemoryFence() would be more robust. The only exceptions are the stalls that are enclosed inside retry loops: - in the AutoNegotiate() function. This stall is waiting for the link to negotiate, which may require stalling until it is ready. - in the Lan9118Initialize() function. These two stalls are waiting for devices and time out after a number of retries. - in the SoftReset() function. This stall is inside a loop where the comment states: "If time taken exceeds 100us, then there was an error condition" In these instances, I kept the stall, but also added a MemoryFence(). [1] http://article.gmane.org/gmane.comp.bios.edk2.devel/7389 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org> Reviewed-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> |
||
---|---|---|
.. | ||
Application/AndroidFastboot | ||
Drivers | ||
Ebl | ||
EblExternCmd | ||
EmbeddedMonotonicCounter | ||
GdbStub | ||
Include | ||
Library | ||
MetronomeDxe | ||
RealTimeClockRuntimeDxe | ||
ResetRuntimeDxe | ||
Scripts/LauterbachT32 | ||
SimpleTextInOutSerial | ||
TemplateSec | ||
Universal/MmcDxe | ||
Contributions.txt | ||
EmbeddedPkg.dec | ||
EmbeddedPkg.dsc | ||
EmbeddedPkg.fdf | ||
License.txt |