comments below

On 02/16/15 03:06, Jordan Justen wrote:
> Eventually two tables will be installed first (FACS, FACP), and the
> remaining will be installed at the ReadyToBoot event.
> 
> In this patch they will still continue to all be published during the
> driver's entry point.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Jordan Justen <[email protected]>
> ---
>  OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c  |  2 +-
>  OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h  |  3 +-
>  OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c | 65 
> ++++++++++++++++++++++++++++++---
>  3 files changed, 62 insertions(+), 8 deletions(-)
> 
> diff --git a/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c 
> b/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c
> index 331cdc4..33cc05c 100644
> --- a/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c
> +++ b/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.c
> @@ -255,7 +255,7 @@ AcpiPlatformEntryPoint (
>    if (XenDetected ()) {
>      Status = InstallXenTables (AcpiTable);
>    } else {
> -    Status = InstallAllQemuLinkedTables (AcpiTable);
> +    Status = InstallQemuFwCfgTables (AcpiTable);
>    }
>  
>    if (EFI_ERROR (Status)) {
> diff --git a/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h 
> b/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h
> index e757233..ae11e79 100644
> --- a/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h
> +++ b/OvmfPkg/AcpiPlatformDxe/AcpiPlatform.h
> @@ -63,8 +63,9 @@ InstallXenTables (
>  
>  EFI_STATUS
>  EFIAPI
> -InstallAllQemuLinkedTables (
> +InstallQemuFwCfgTables (
>    IN   EFI_ACPI_TABLE_PROTOCOL       *AcpiProtocol
>    );
> +
>  #endif
>  
> diff --git a/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c 
> b/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c
> index d75394c..6fa434e 100644
> --- a/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c
> +++ b/OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpi.c
> @@ -414,7 +414,8 @@ Process2ndPassCmdAddPointer (
>    IN     CONST ORDERED_COLLECTION      *Tracker,
>    IN     EFI_ACPI_TABLE_PROTOCOL       *AcpiProtocol,
>    IN OUT UINTN                         InstalledKey[INSTALLED_TABLES_MAX],
> -  IN OUT INT32                         *NumInstalled
> +  IN OUT INT32                         *NumInstalled,
> +  IN   BOOLEAN                         EarlyTablesOnly
>    )
>  {
>    CONST ORDERED_COLLECTION_ENTRY                     *TrackerEntry;
> @@ -550,10 +551,12 @@ Process2ndPassCmdAddPointer (
>                                   AcpiProtocol->InstallAcpiTable().
>  

So here is where the new info should be used ultimately, but at this
point we don't use the parameter yet. Okay.

>  **/
> +STATIC
>  EFI_STATUS
>  EFIAPI
> -InstallAllQemuLinkedTables (
> -  IN   EFI_ACPI_TABLE_PROTOCOL       *AcpiProtocol
> +DownloadAndInstallTables (
> +  IN   EFI_ACPI_TABLE_PROTOCOL       *AcpiProtocol,
> +  IN   BOOLEAN                       EarlyTablesOnly
>    )
>  {
>    EFI_STATUS               Status;
> @@ -632,8 +635,10 @@ InstallAllQemuLinkedTables (
>    Installed = 0;
>    for (LoaderEntry = LoaderStart; LoaderEntry < LoaderEnd; ++LoaderEntry) {
>      if (LoaderEntry->Type == QemuLoaderCmdAddPointer) {
> -      Status = Process2ndPassCmdAddPointer (&LoaderEntry->Command.AddPointer,
> -                 Tracker, AcpiProtocol, InstalledKey, &Installed);
> +      Status = Process2ndPassCmdAddPointer (
> +                 &LoaderEntry->Command.AddPointer, Tracker, AcpiProtocol,
> +                 InstalledKey, &Installed, EarlyTablesOnly
> +                 );
>        if (EFI_ERROR (Status)) {
>          break;
>        }

Okay, function is renamed and it propagates the parameter.

> @@ -686,6 +691,54 @@ FreeLoader:
>  
>  
>  /**
> +  Download, process, and install ACPI table data from the QEMU loader
> +  interface.
> +
> +  The installation process is handled in two phase. The FACS table is

"two phase[s]"; typo

> +  installed immediatedly, and the remaining tables are installed after the
> +  ReadyToBoot event is signalled.
> +
> +  @param[in] AcpiProtocol  The ACPI table protocol used to install tables.
> +
> +  @retval  EFI_UNSUPPORTED       Firmware configuration is unavailable, or 
> QEMU
> +                                 loader command with unsupported parameters
> +                                 has been found.
> +
> +  @retval  EFI_NOT_FOUND         The host doesn't export the required fw_cfg
> +                                 files.
> +
> +  @retval  EFI_OUT_OF_RESOURCES  Memory allocation failed, or more than
> +                                 INSTALLED_TABLES_MAX tables found.
> +
> +  @retval  EFI_PROTOCOL_ERROR    Found invalid fw_cfg contents.
> +
> +  @return                        Status codes returned by
> +                                 AcpiProtocol->InstallAcpiTable().
> +
> +**/
> +EFI_STATUS
> +EFIAPI
> +InstallQemuFwCfgTables (
> +  IN   EFI_ACPI_TABLE_PROTOCOL       *AcpiProtocol
> +  )
> +{
> +  EFI_STATUS          Status;
> +
> +  //
> +  // At this early stage, we install a few tables that other code depends on.
> +  //
> +  // For example, the S3 code depends on the FACP table being available.

I think the comments should name the same table. As far as I understand,
the FACS is the directly required table (it carries the wake up vector
address), the FACP might "only" be relevant because it is the link
between the RSDT/XSDT and the FACS.

> +  //
> +  Status = DownloadAndInstallTables (AcpiProtocol, TRUE);
> +  if (EFI_ERROR (Status)) {
> +    return Status;
> +  }

Redundant, see below:

> +
> +  return Status;
> +}

(But perhaps in the next patch you'll insert stuff inbetween.)


> +
> +
> +/**
>    Entrypoint of QEMU fw-cfg Acpi Platform driver.
>  
>    @param  ImageHandle
> @@ -718,6 +771,6 @@ QemuFwCfgAcpiPlatformEntryPoint (
>      return EFI_ABORTED;
>    }
>  
> -  Status = InstallAllQemuLinkedTables (AcpiTable);
> +  Status = InstallQemuFwCfgTables (AcpiTable);
>    return Status;
>  }
> 

With the comment fixes, and optionally with the condition fix (as you
see fit):

Reviewed-by: Laszlo Ersek <[email protected]>

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=190641631&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to