summaryrefslogtreecommitdiffstats
path: root/MdeModulePkg/Universal/SerialDxe
diff options
context:
space:
mode:
authorJulien Grall <julien.grall@linaro.org>2017-11-30 01:28:23 +0800
committerStar Zeng <star.zeng@intel.com>2017-11-30 09:11:53 +0800
commit7ce5af40c98b17aef5a512b7823dd51ecdfbd2fe (patch)
tree155a4e7e3916f309ff919786b6b362c9bc15ad35 /MdeModulePkg/Universal/SerialDxe
parent13d378fc82d4c10eff48bec383cd679cec6c4fdb (diff)
downloadedk2-7ce5af40c98b17aef5a512b7823dd51ecdfbd2fe.tar.gz
edk2-7ce5af40c98b17aef5a512b7823dd51ecdfbd2fe.tar.bz2
edk2-7ce5af40c98b17aef5a512b7823dd51ecdfbd2fe.zip
MdeModulePkg/SerialDxe: Do not fail reset when SetAttributes is not supported
After commit 91cc526b15 "MdeModulePkg/SerialDxe: Fix not able to change serial attributes", serial is initialized using the reset method that will call SetAttributes. However, SetAttributes may return EFI_INVALID_PARAMETER when a driver does not support some parameters. This will be propagated by the reset function and lead to UEFI failing to get the console setup. For instance, this is the case when using the Xen console driver. Fix it by introspecting the result and return EFI_SUCCESS when the SetAttributes report an invalid parameter (i.e EFI_INVALID_PARAMETER). Contributed-under: Tianocore Contribution Agreement 1.1 Signed-off-by: Julien Grall <julien.grall@linaro.org> Reviewed-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Diffstat (limited to 'MdeModulePkg/Universal/SerialDxe')
-rw-r--r--MdeModulePkg/Universal/SerialDxe/SerialIo.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/MdeModulePkg/Universal/SerialDxe/SerialIo.c b/MdeModulePkg/Universal/SerialDxe/SerialIo.c
index ee10ec7e05..e18cc7ed51 100644
--- a/MdeModulePkg/Universal/SerialDxe/SerialIo.c
+++ b/MdeModulePkg/Universal/SerialDxe/SerialIo.c
@@ -240,6 +240,15 @@ SerialReset (
(EFI_STOP_BITS_TYPE) This->Mode->StopBits
);
+ //
+ // The serial device may not support some of the attributes. To prevent
+ // later failure, always return EFI_SUCCESS when SetAttributes is returning
+ // EFI_INVALID_PARAMETER.
+ //
+ if (Status == EFI_INVALID_PARAMETER) {
+ return EFI_SUCCESS;
+ }
+
return Status;
}