On Thu, Jul 07, 2016 at 05:24:54PM +0100, Ryan Harkin wrote:
> On 7 July 2016 at 17:01, Ryan Harkin <[email protected]> wrote:
> > On 7 July 2016 at 16:59, Leif Lindholm <[email protected]> wrote:
> >> On Fri, Jul 01, 2016 at 12:52:06PM +0100, [email protected] wrote:
> >>> From: Evan Lloyd <[email protected]>
> >>>
> >>> Juno has several serial ports, one of which may be used for a remote
> >>> debug interface (e.g. gdb, WinDbg). The debug serial port needs to
> >>> be distinct from that used for UEFI trace to prevent corruption of
> >>> debugger protocol messaging.
> >>> The UEFI spec requires that serial devices be initialised to default
> >>> settings. (11.8 Serial I/O Protocol - "The default attributes for all
> >>> UART-style serial device interfaces are: 115,200 baud, ..."
> >>> and 17.3.3 EFI Debugport Variable - "These defaults must be used in the
> >>> absence of a DEBUGPORT variable...")
> >>>
> >>> This change adds initialization of the serial device reported in the
> >>> ACPI DBG2 table. The initialisation is done early in the boot to allow
> >>> the possibility of remote debug of UEFI itself.
> >>>
> >>> NOTE: This is functionally dependent on the DBG2 table being updated in
> >>> OpenPlatformPkg, but is required as a precursor to that change.
> >>>
> >>> Contributed-under: TianoCore Contribution Agreement 1.0
> >>> Signed-off-by: Sami Mujawar <[email protected]>
> >>> Signed-off-by: Evan Lloyd <[email protected]>
> >>
> >> I'd like a nod from Ryan on this one.
> >
> > As it happens, I've just finished testing it (on R0, R1 and R2):
> >
> > Tested-by: Ryan Harkin <[email protected]>
> >
> >
> >> One style comment below.
> >>
> >>> ---
> >>>
> >>> Notes:
> >>> v2
> >>> - No code change.
> >>> - Clarified commit message in response to comments [Ard Bieshevel]
> >>> Specific points include clarity that change is not OS specific,
> >>> and pertains to any debugger use, and justification for doing it
> >>> at an early point in the process.
> >>> Confirmed with Leif that update here (not OpenPlatformPkg) is
> >>> appropriate.
> >>>
> >>> ArmPlatformPkg/ArmPlatformPkg.dec | 5 +++
> >>> ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf | 15
> >>> ++++++++-
> >>> ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c | 35
> >>> ++++++++++++++++++--
> >>> 3 files changed, 52 insertions(+), 3 deletions(-)
> >>>
> >>> Code available at:
> >>> https://github.com/EvanLloyd/tianocore/tree/debug_serial_v2
> >>>
> >>> diff --git a/ArmPlatformPkg/ArmPlatformPkg.dec
> >>> b/ArmPlatformPkg/ArmPlatformPkg.dec
> >>> index
> >>> 1c05132cd625be75b0d9d1cd09950af983d1f049..5864d9835989382b79b1e6db6486fe67082df6a0
> >>> 100644
> >>> --- a/ArmPlatformPkg/ArmPlatformPkg.dec
> >>> +++ b/ArmPlatformPkg/ArmPlatformPkg.dec
> >>> @@ -98,6 +98,11 @@ [PcdsFixedAtBuild.common]
> >>> gArmPlatformTokenSpaceGuid.PL011UartFractional|0|UINT32|0x0000002D
> >>>
> >>> gArmPlatformTokenSpaceGuid.PL011UartInterrupt|0x00000000|UINT32|0x0000002F
> >>>
> >>> + ## PL011 Serial Debug UART
> >>> +
> >>> gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase|0x00000000|UINT64|0x00000030
> >>> +
> >>> gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate|0x00000000|UINT64|0x00000031
> >>> +
> >>> gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz|0x00000000|UINT32|0x00000032
> >>> +
> >>> ## PL061 GPIO
> >>> gArmPlatformTokenSpaceGuid.PcdPL061GpioBase|0x0|UINT32|0x00000025
> >>>
> >>> diff --git a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf
> >>> b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf
> >>> index
> >>> 8c8b141c35a2693b618c1515cb665b9b1e81cc4e..77d18f855a833fff0d38518436ef331dfab2d7e1
> >>> 100644
> >>> --- a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf
> >>> +++ b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJunoLib.inf
> >>> @@ -1,5 +1,5 @@
> >>> #
> >>> -# Copyright (c) 2013-2015, ARM Limited. All rights reserved.
> >>> +# Copyright (c) 2013-2016, ARM Limited. All rights reserved.
> >>> #
> >>> # This program and the accompanying materials
> >>> # are licensed and made available under the terms and conditions of the
> >>> BSD License
> >>> @@ -57,6 +57,19 @@ [FixedPcd]
> >>> gArmJunoTokenSpaceGuid.PcdPciConfigurationSpaceBaseAddress
> >>> gArmJunoTokenSpaceGuid.PcdPciConfigurationSpaceSize
> >>>
> >>> +
> >>> + #
> >>> + # PL011 Serial Debug UART
> >>> + #
> >>> + gArmPlatformTokenSpaceGuid.PcdSerialDbgRegisterBase
> >>> + gArmPlatformTokenSpaceGuid.PcdSerialDbgUartBaudRate
> >>> + gArmPlatformTokenSpaceGuid.PcdSerialDbgUartClkInHz
> >>> +
> >>> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultBaudRate
> >>> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultDataBits
> >>> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultParity
> >>> + gEfiMdePkgTokenSpaceGuid.PcdUartDefaultStopBits
> >>> +
> >>> [Pcd]
> >>> gArmTokenSpaceGuid.PcdPciMmio32Base
> >>> gArmTokenSpaceGuid.PcdPciMmio32Size
> >>> diff --git a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c
> >>> b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c
> >>> index
> >>> ffff5628247f61f4c2f31d3b9f7763b24f10641d..ae7f5e94acdaa5a37ba56c27fe0700c588dafcc9
> >>> 100644
> >>> --- a/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c
> >>> +++ b/ArmPlatformPkg/ArmJunoPkg/Library/ArmJunoLib/ArmJuno.c
> >>> @@ -1,6 +1,6 @@
> >>> /** @file
> >>> *
> >>> -* Copyright (c) 2013-2014, ARM Limited. All rights reserved.
> >>> +* Copyright (c) 2013-2016, ARM Limited. All rights reserved.
> >>> *
> >>> * This program and the accompanying materials
> >>> * are licensed and made available under the terms and conditions of the
> >>> BSD License
> >>> @@ -18,6 +18,7 @@
> >>> #include <Library/PcdLib.h>
> >>>
> >>> #include <Ppi/ArmMpCoreInfo.h>
> >>> +#include <Drivers/PL011Uart.h>
> >>
> >> Is there an ordering requirement for the include file?
> >> If not, I would prefer it before the Library includes in order to keep
> >> the sort order.
> >>
> >> I can do this before pushing if someone tells me it's OK.
> >>
>
> I moved the new include to the top of the list and it built fine from
> clean, so go for it.
Thanks Ryan - and Evan.
Pushed.
> >>>
> >>> #include <ArmPlatform.h>
> >>>
> >>> @@ -112,7 +113,37 @@ ArmPlatformInitialize (
> >>> IN UINTN MpId
> >>> )
> >>> {
> >>> - return RETURN_SUCCESS;
> >>> + RETURN_STATUS Status;
> >>> + UINT64 BaudRate;
> >>> + UINT32 ReceiveFifoDepth;
> >>> + EFI_PARITY_TYPE Parity;
> >>> + UINT8 DataBits;
> >>> + EFI_STOP_BITS_TYPE StopBits;
> >>> +
> >>> + Status = RETURN_SUCCESS;
> >>> +
> >>> + //
> >>> + // Initialize the Serial Debug UART
> >>> + //
> >>> + if (FixedPcdGet64 (PcdSerialDbgRegisterBase)) {
> >>> + ReceiveFifoDepth = 0; // Use the default value for FIFO depth
> >>> + Parity = (EFI_PARITY_TYPE)FixedPcdGet8 (PcdUartDefaultParity);
> >>> + DataBits = FixedPcdGet8 (PcdUartDefaultDataBits);
> >>> + StopBits = (EFI_STOP_BITS_TYPE)FixedPcdGet8 (PcdUartDefaultStopBits);
> >>> +
> >>> + BaudRate = (UINTN)FixedPcdGet64 (PcdSerialDbgUartBaudRate);
> >>> + Status = PL011UartInitializePort (
> >>> + (UINTN)FixedPcdGet64 (PcdSerialDbgRegisterBase),
> >>> + FixedPcdGet32 (PcdSerialDbgUartClkInHz),
> >>> + &BaudRate,
> >>> + &ReceiveFifoDepth,
> >>> + &Parity,
> >>> + &DataBits,
> >>> + &StopBits
> >>> + );
> >>> + }
> >>> +
> >>> + return Status;
> >>> }
> >>>
> >>> /**
> >>> --
> >>> Guid("CE165669-3EF3-493F-B85D-6190EE5B9759")
> >>>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel