On 01/15/16 17:07, Ryan Harkin wrote:
> On 15 January 2016 at 15:42, Ard Biesheuvel <[email protected]> wrote:
>> SerialDxe was migrated to MdeModulePkg from EmbeddedPkg, and all
>> users of the latter were moved to the former. However, the new
>> version is not quite identical to the original, in ways that break
>> ARM platforms that use the PL011 driver.
>>
> 
> The original patch should never have passed review.

I agree it's unfortunate that the patch silently changed behavior in the
course of the conversion. Stuff like that is very hard to catch in
review; in my analysis that I posted a few minutes ago, I actually tried
to diff the two drivers against each other, and gave up. I had to review
both files in separate windows at the same time.

Ard is right -- extreme discipline is required when converting things.
If the programmer notices a bug or non-conformance in the course of the
conversion, he should make a note somewhere, for later, but the
conversion *must* preserve the original bugs! Bugfixing is a separate
step. It can occur after conversion, as a separate patch. It can even
occur *before* the conversion (and then the corrected code will be
converted.)

> 
> 
>> In SerialReset(), the serial port is reset to its default values,
>> but the defaults used by the new version for ReceiveFifoDepth and
>> Timeout deviate from the original values. So put them back.
>>
>> Contributed-under: TianoCore Contribution Agreement 1.0
>> Signed-off-by: Ard Biesheuvel <[email protected]>
> Tested-by: Ryan Harkin <[email protected]>

Can you please test my proposal as well?

Thanks
Laszlo


> 
>> ---
>>  MdeModulePkg/Universal/SerialDxe/SerialIo.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/MdeModulePkg/Universal/SerialDxe/SerialIo.c 
>> b/MdeModulePkg/Universal/SerialDxe/SerialIo.c
>> index de928d1719e9..9e9db28ce5cc 100644
>> --- a/MdeModulePkg/Universal/SerialDxe/SerialIo.c
>> +++ b/MdeModulePkg/Universal/SerialDxe/SerialIo.c
>> @@ -233,8 +233,8 @@ SerialReset (
>>    //
>>    // Set the Serial I/O mode
>>    //
>> -  This->Mode->ReceiveFifoDepth  = 1;
>> -  This->Mode->Timeout           = 0;
>> +  This->Mode->ReceiveFifoDepth  = 0;
>> +  This->Mode->Timeout           = 1000000;
>>    This->Mode->BaudRate          = PcdGet64 (PcdUartDefaultBaudRate);
>>    This->Mode->DataBits          = (UINT32) PcdGet8 (PcdUartDefaultDataBits);
>>    This->Mode->Parity            = (UINT32) PcdGet8 (PcdUartDefaultParity);
>> --
>> 2.5.0
>>
> _______________________________________________
> edk2-devel mailing list
> [email protected]
> https://lists.01.org/mailman/listinfo/edk2-devel
> 

_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to