mirror_edk2.git
7 years agoComment PwdCredential driver.
Dong Guo [Sun, 23 Mar 2014 23:47:18 +0000 (23:47 +0000)]
Comment PwdCredential driver.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15376 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: connect RouteConfig() to platform data
Laszlo Ersek [Sat, 22 Mar 2014 07:14:09 +0000 (07:14 +0000)]
OvmfPkg: PlatformDxe: connect RouteConfig() to platform data

Establish the full stack of conversions when modifying the platform
configuration:

       ConfigResp            -- form engine / HII communication
            |
     [ConfigToBlock]
            |
            v
     MAIN_FORM_STATE         -- binary representation of form/widget state
            |
[FormStateToPlatformConfig]
            |
            v
     PLATFORM_CONFIG         -- accessible to DXE and UEFI drivers
            |
   [PlatformConfigSave]
            |
            v
  UEFI non-volatile variable -- accessible to external utilities

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15375 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: connect ExtractConfig() to platform data
Laszlo Ersek [Sat, 22 Mar 2014 07:14:03 +0000 (07:14 +0000)]
OvmfPkg: PlatformDxe: connect ExtractConfig() to platform data

Establish the full stack of conversions in retrieving the platform
configuration:

    MultiConfigAltResp       -- form engine / HII communication
            ^
            |
     [BlockToConfig]
            |
     MAIN_FORM_STATE         -- binary representation of form/widget state
            ^
            |
[PlatformConfigToFormState]
            |
     PLATFORM_CONFIG         -- accessible to DXE and UEFI drivers
            ^
            |
   [PlatformConfigLoad]
            |
  UEFI non-volatile variable -- accessible to external utilities

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15374 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: add save and discard buttons to the form
Laszlo Ersek [Sat, 22 Mar 2014 07:13:57 +0000 (07:13 +0000)]
OvmfPkg: PlatformDxe: add save and discard buttons to the form

The RouteConfig() function is also called now as expected.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15373 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: get available resolutions from GOP
Laszlo Ersek [Sat, 22 Mar 2014 07:13:50 +0000 (07:13 +0000)]
OvmfPkg: PlatformDxe: get available resolutions from GOP

Generate the options for the drop-down list from the GOP resolutions.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15372 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: serialize Start() against callbacks
Laszlo Ersek [Sat, 22 Mar 2014 07:13:44 +0000 (07:13 +0000)]
OvmfPkg: QemuVideoDxe: serialize Start() against callbacks

If Start() succeeds, the callback is only executed when the setup is
complete (on the stack of RestoreTPL()), rather than on the stack of
InstallMultipleProtocolInterfaces(), when the driver setup may yet be
theoretically incomplete.

If Start() fails, the protocol interface will have been uninstalled
(rolled back) by the time the callback runs (again, on the stack of
RestoreTPL()). Since protocol notification callbacks begin with locating
the protocol interface in question, such attempts to locate will fail
immediately and save some work in the callback.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15371 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg/PlatformDxe: Silence warning seen with GCC48 IA32
Jordan Justen [Sat, 22 Mar 2014 07:13:38 +0000 (07:13 +0000)]
OvmfPkg/PlatformDxe: Silence warning seen with GCC48 IA32

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15370 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: add form widgets for video modes
Laszlo Ersek [Sat, 22 Mar 2014 07:13:31 +0000 (07:13 +0000)]
OvmfPkg: PlatformDxe: add form widgets for video modes

In this patch we populate the form with the two widgets related to video
resolution:
- A read-only string field displaying the preference for the next boot.
- A drop-down list offering choices for changing the setting. This list is
  implemented with dynamically generated IFR opcodes.

(In general, the current preference may be missing, or it may be invalid
for the available video RAM size. The list of possible new settings is
filtered with the video RAM size.)

Because the form now becomes able to receive input, we must also implement
ExtractConfig(). This function tells the HII engine about the state of the
widgets.

For now we set up both widgets with static data only:
- The current preference always says "Unset". The driver code is still
  isolated from the backend (the UEFI variable store).
- The list of possible resolutions offers 800x600 only. We don't
  interrogate the GOP yet.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15369 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: introduce state for the main form
Laszlo Ersek [Sat, 22 Mar 2014 07:13:24 +0000 (07:13 +0000)]
OvmfPkg: PlatformDxe: introduce state for the main form

We'll need a C language (ie. structure) representation for the state of
the visual elements on the form. We choose the Buffer Storage kind (see
29.2.5.6 "Storage" in UEFI 2.4A), because it's easy to work with.

Note that the structure added in this patch has nothing to do with UEFI
non-volatile variables.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15368 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: add an empty HII form
Laszlo Ersek [Sat, 22 Mar 2014 07:13:18 +0000 (07:13 +0000)]
OvmfPkg: PlatformDxe: add an empty HII form

... which opens from the Device Manager window.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15367 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: set preferred video resolution from platform config
Laszlo Ersek [Sat, 22 Mar 2014 07:13:09 +0000 (07:13 +0000)]
OvmfPkg: PlatformDxe: set preferred video resolution from platform config

The GraphicsConsoleDxe driver (in MdeModulePkg/Universal/Console)
determines the preferred video resolution from the dynamic PCDs
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution

Setting the graphics resolution during boot is useful when the guest OS
(for lack of a dedicated display driver) continues to work with the
original GOP resolution and framebuffer.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15366 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformDxe: utility functions for saving / loading configuration
Laszlo Ersek [Sat, 22 Mar 2014 07:13:02 +0000 (07:13 +0000)]
OvmfPkg: PlatformDxe: utility functions for saving / loading configuration

The two functions introduced here allow the saving and loading of platform
configuration to/from the non-volatile variable store.

The PLATFORM_CONFIG structure and the two functions that take it / return
it are generally meant for any DXE or UEFI driver that needs to access
platform configuration. For now we keep this small "library" internal to
PlatformDxe.

The PLATFORM_CONFIG wire format is intended only to grow over time (as
long as the variable GUID remains unchanged). At the introduction of new
fields, new feature flags must be added, and recognized in
PlatformConfigLoad().

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15365 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: introduce empty PlatformDxe
Laszlo Ersek [Sat, 22 Mar 2014 07:12:55 +0000 (07:12 +0000)]
OvmfPkg: introduce empty PlatformDxe

This DXE driver will load/save persistent values for OVMF's config knobs,
plus expose those knobs via HII.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15364 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: introduce gOvmfPlatformConfigGuid
Laszlo Ersek [Sat, 22 Mar 2014 07:12:46 +0000 (07:12 +0000)]
OvmfPkg: introduce gOvmfPlatformConfigGuid

This GUID should become a new "namespace" for UEFI variables that are
specific to OVMF configuration (as opposed to standard UEFI global
variables). We'll also use it as the GUID of the related HII form-set (ie.
the interactive user interface).

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15363 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: non-null PcdLib instance for GraphicsConsoleDxe
Laszlo Ersek [Sat, 22 Mar 2014 07:12:36 +0000 (07:12 +0000)]
OvmfPkg: non-null PcdLib instance for GraphicsConsoleDxe

GraphicsConsoleDxe (a UEFI_DRIVER under MdeModulePkg/Universal/Console)
determines the preferred video resolution from the dynamic PCDs
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoHorizontalResolution
- gEfiMdeModulePkgTokenSpaceGuid.PcdVideoVerticalResolution

In one of the next patches, we'd like to change these PCDs. In order for
GraphicsConsoleDxe to retrieve the new values dynamically,
- it must be linked with the non-null instance of PcdLib,
- OvmfPkg must provide dynamic defaults.

We keep MdeModulePkg's 800x600 default resolution. (The UEFI specification
requires video drivers to support 800x600.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15362 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoFix current TPM device string missing. Use efivarstore instead of varstor, remove...
Jiewen Yao [Fri, 21 Mar 2014 02:51:42 +0000 (02:51 +0000)]
Fix current TPM device string missing. Use efivarstore instead of varstor, remove TPM disable.

Signed-off-by: Jiewen Yao <Jiewen.yao@intel.com>
Reviewed-by: Guo Dong <Guo.Dong@intel.com>
Reviewed-by: Liming Gao <Liming.Gao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15360 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoMdeModulePkg PCD: Fix PCD driver to return default data if size mismatch.
Star Zeng [Fri, 21 Mar 2014 01:16:07 +0000 (01:16 +0000)]
MdeModulePkg PCD: Fix PCD driver to return default data if size mismatch.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15357 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoForce UID modules build error to warn user that currently it is just a sample.
Dong Guo [Fri, 21 Mar 2014 00:57:42 +0000 (00:57 +0000)]
Force UID modules build error to warn user that currently it is just a sample.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15356 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoFix TCP4/TCP6 connections. Connections were transitioning into the connected state...
leroy.p.leahy [Thu, 20 Mar 2014 22:05:51 +0000 (22:05 +0000)]
Fix TCP4/TCP6 connections.  Connections were transitioning into the connected state and the polling was returning an error.  Fix the polling routine to return success in this case.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: leroy.p.leahy@intel.com
Reviewed-by: SREENIVASULA_REDDY@Dell.com
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15355 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellPkg: remove redudant code. call existing API.
Jaben Carsey [Thu, 20 Mar 2014 17:12:30 +0000 (17:12 +0000)]
ShellPkg: remove redudant code.  call existing API.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <Jaben.carsey@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15354 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellPkg: Remove unused function
Jaben Carsey [Thu, 20 Mar 2014 17:11:52 +0000 (17:11 +0000)]
ShellPkg: Remove unused function

This function was not exposed outside the library and is not used internally.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <Jaben.carsey@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15353 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellPkg: Allow for LoadedImageProtocol information to be verbosely exported for...
Jaben Carsey [Thu, 20 Mar 2014 17:10:57 +0000 (17:10 +0000)]
ShellPkg: Allow for LoadedImageProtocol information to be verbosely exported for commands like "dh"

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <Jaben.carsey@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15352 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoRemoves MacString Rt attribute in Ip4Config/Mnp driver.
Fu Siyuan [Thu, 20 Mar 2014 08:19:28 +0000 (08:19 +0000)]
Removes MacString Rt attribute in Ip4Config/Mnp driver.
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Dong, Guo <guo.dong@intel.com>
Reviewed-by: Yao, Jiewen <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15351 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoUse PXE_OPFLAGS_STATION_ADDRESS_WRITE when setting new MAC address for the NIC in...
Fu Siyuan [Thu, 20 Mar 2014 06:04:50 +0000 (06:04 +0000)]
Use PXE_OPFLAGS_STATION_ADDRESS_WRITE when setting new MAC address for the NIC in SNP driver.
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Dong, Guo <guo.dong@intel.com>
Reviewed-by: Jin, Eric <eric.jin@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15350 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoMdeModulePkg/SecurityPkg Variable: Return error status to avoid inconsistency between...
Star Zeng [Thu, 20 Mar 2014 02:07:48 +0000 (02:07 +0000)]
MdeModulePkg/SecurityPkg Variable: Return error status to avoid inconsistency between PlatformLang and Lang.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15340 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoFix the return value bug when updating public key database variable failure.
Dong Guo [Wed, 19 Mar 2014 03:12:57 +0000 (03:12 +0000)]
Fix the return value bug when updating public key database variable failure.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15339 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoDid proper error handling when SetVariable failed, and put RTC write operation at...
Elvin Li [Wed, 19 Mar 2014 02:42:36 +0000 (02:42 +0000)]
Did proper error handling when SetVariable failed, and put RTC write operation at the behind of SetVariable, if SetVariable failed, RTC content could not be changed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Elvin Li <elvin.li@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15338 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoIntelFrameworkModulePkg AcpiS3SaveDxe: Remove ASSERT, add lock and remove RT for...
Star Zeng [Tue, 18 Mar 2014 09:10:13 +0000 (09:10 +0000)]
IntelFrameworkModulePkg AcpiS3SaveDxe: Remove ASSERT, add lock and remove RT for AcpiGlobalVariable variable.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Star Zeng <star.zeng@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15337 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoRemove ASSERT when SetVariable for ConOutDev/ConInDev/ErrOutDev variables failed.
Elvin Li [Tue, 18 Mar 2014 07:43:27 +0000 (07:43 +0000)]
Remove ASSERT when SetVariable for ConOutDev/ConInDev/ErrOutDev variables failed.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Elvin Li <elvin.li@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15336 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellPkg: Move a function into shared location
Jaben Carsey [Mon, 17 Mar 2014 17:18:08 +0000 (17:18 +0000)]
ShellPkg: Move a function into shared location

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <Jaben.carsey@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15335 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoAdd comments for PcdHideTpmSupport.
Dong Guo [Mon, 17 Mar 2014 08:38:32 +0000 (08:38 +0000)]
Add comments for PcdHideTpmSupport.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15334 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoDo not reset system when the MemoryTypeInformation variable cannot be written.
Ruiyu Ni [Mon, 17 Mar 2014 08:24:07 +0000 (08:24 +0000)]
Do not reset system when the MemoryTypeInformation variable cannot be written.
Remove the RT attribute for the MemoryTypeInformation variable because it’s not necessary.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15333 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoRemove unnecessary dependency in variable driver.
Dong Guo [Mon, 17 Mar 2014 08:23:54 +0000 (08:23 +0000)]
Remove unnecessary dependency in variable driver.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Gao, Liming <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15332 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoAdd comments to describe PlatformDriOverrideDxe is used for test purpose.
Gao, Liming [Mon, 17 Mar 2014 07:24:15 +0000 (07:24 +0000)]
Add comments to describe PlatformDriOverrideDxe is used for test purpose.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gao, Liming <liming.gao@intel.com>
Reviewed-by: Yao, Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15331 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoRemove ASSERT check for SetVariable in FirmwarePerformanceDataTableDxe
Gao, Liming [Mon, 17 Mar 2014 07:22:50 +0000 (07:22 +0000)]
Remove ASSERT check for SetVariable in FirmwarePerformanceDataTableDxe

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Gao, Liming <liming.gao@intel.com>
Reviewed-by: Yao, Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15330 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoFix the return status when physical presence variable and MemoryOverwriteRequestContr...
Dong Guo [Mon, 17 Mar 2014 05:46:53 +0000 (05:46 +0000)]
Fix the return status when physical presence variable and MemoryOverwriteRequestControl variable are corrupt.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dong Guo <guo.dong@intel.com>
Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15329 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoRemove ASSERT when failed to Get/Set “AttemptOrder” and “ClientId” variable.
Fu Siyuan [Mon, 17 Mar 2014 05:32:32 +0000 (05:32 +0000)]
Remove ASSERT when failed to Get/Set “AttemptOrder” and “ClientId” variable.
Removes RT attribute for “AttemptOrder” variable.
Signed-off-by: Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by: Dong, Guo <guo.dong@intel.com>
Reviewed-by: Yao, Jiewen <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15328 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: BDS: QemuBootOrder: don't leak unreferenced boot options
Laszlo Ersek [Thu, 13 Mar 2014 17:35:03 +0000 (17:35 +0000)]
OvmfPkg: BDS: QemuBootOrder: don't leak unreferenced boot options

The Boot#### variables that have become unreferenced in the new BootOrder
variable won't ever be automatically reused for booting. They are
"unreachable" resources that take up room in the variable store. Make an
effort to remove them.

This should plug the leak which, given sufficient reboots, exhausts the
variable store with stale Boot#### variables and renders the VM
unbootable.

Reported-by: Michael Chang <mchang@suse.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15327 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: BDS: remove historic (now defunct) boot mode hack
Laszlo Ersek [Thu, 13 Mar 2014 17:34:55 +0000 (17:34 +0000)]
OvmfPkg: BDS: remove historic (now defunct) boot mode hack

When PI can distinguish the "full config" boot mode from "assume no
changes", then the following BDS logic is correct:

  if BootMode == BOOT_WITH_FULL_CONFIGURATION:
    //
    // connect all devices
    // create & append each default boot option that's missing
    //
    BdsLibConnectAll
    BdsLibEnumerateAllBootOption
  else if BootMode == BOOT_ASSUMING_NO_CONFIGURATION_CHANGES:
    //
    // just stick with current BootOrder and the Boot#### variables
    // referenced by it
    //

In theory, the first branch is intended to run infrequently, and the
"assume no changes" branch should run most of the time.

However, some platforms can't tell these two boot modes apart. The
following substitute had been introduced:

  //
  // Technically, always assume "full config", but the BootMode HOB is
  // actually meaningless wrt. to "full config" or "assume no changes".
  //
  ASSERT (BootMode == BOOT_WITH_FULL_CONFIGURATION);

  //
  // Key off the existence of BootOrder. Try to prepare an in-memory list
  // of boot options, based on BootOrder and the referenced Boot####
  // variables.
  //
  Status = BdsLibBuildOptionFromVar()

  //
  // If that succeeded, we'll treat it as "assume no changes".  If it
  // failed (*only* if it failed), we'll build default boot options,
  // calling it "full config":
  //
  if EFI_ERROR(Status):
    BdsLibConnectAll()
    BdsLibEnumerateAllBootOption(BootOptionList)

What we have now in OVMF is a mixture of the hack, and the behavior that's
theoretically correct for "full config":
- We assert "full config" -- this is OK.
- We call "connect all" and "enumerate all" deliberately -- this is OK
  too. It matches "full config" which we assert.
- However, we also have the hack in place, which had been meant as an
  alternative.

In order to clean this up, we either need to restore the hack to its
original form (ie. comment out the unconditional calls again), or we ought
to remove the hack altogether.

The unconditional "connect all" + "enumerate all" calls are the correct
approach for OVMF, because we want, in fact, to start with "full config".
The QEMU boot order specification and the set of emulated devices might
change "out of band", which excludes "assume no changes".

In other words, removing the hack corresponds to the "real production"
case that the comment hints at.

Because SetBootOrderFromQemu() may change the BootOrder NvVar, we must
preserve the BdsLibBuildOptionFromVar() function call, in order to
refresh the in-memory list with the new boot priorities.
(The last step of BdsLibEnumerateAllBootOption() is such a call too.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15326 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPlatformPkg/Bds: stop inputting more characters when string is full
Ryan Harkin [Wed, 12 Mar 2014 17:24:48 +0000 (17:24 +0000)]
ArmPlatformPkg/Bds: stop inputting more characters when string is full

If EditHIInputStr() is called, say with a MaxCmdLine of 2, the user is
currently allowed to enter 2 characters.

If the second character is a carriage return/line feed, this is
substituted with a NULL and the function returns.

If the second character is a regular character, the loop terminated and
the function returns.  However, the buffer has not been NULL terminated.

This patch prevents the user from entering a regular character as the
final character and ensures that the only way out of the input is by
pressing ESC or ENTER (or equivalent).

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Reviewed-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15325 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPlatformPkg/BootMonFs: Added support for new revision of the NOR Flash file system
Olivier Martin [Wed, 12 Mar 2014 17:23:33 +0000 (17:23 +0000)]
ArmPlatformPkg/BootMonFs: Added support for new revision of the NOR Flash file system

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15324 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellPkg: ShellCommands/SetVar: Make '-rt' imply '-bs'
Brendan Jackman [Mon, 10 Mar 2014 18:13:13 +0000 (18:13 +0000)]
ShellPkg: ShellCommands/SetVar: Make '-rt' imply '-bs'

It's invalid to set a variable that's available from runtime services but not
from boot services.

Currently if you pass '-rt' without '-bs' you get a generic
'Invalid Parameter' message. We should either print a more useful message in
this case, or make '-rt' imply '-bs' (as this patch does). The Shell Spec is
ambiguous on the matter.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Brendan Jackman <Brendan.Jackman@arm.com>
Reviewed-By: Olivier Martin <olivier.martin@arm.com>
Reviewed-By: Jaben Carsey <jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15323 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoRemove unused variable attribute flag.
jyao1 [Fri, 7 Mar 2014 03:07:09 +0000 (03:07 +0000)]
Remove unused variable attribute flag.

Signed off by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed by: Jeff Fan <jeff.fan@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Contributed-under: TianoCore Contribution Agreement 1.0

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15321 6f19259b-4bc3-4df7-8a09-765794883524

7 years ago 1.Add code to check the pointer 'CorrectedPath' in Ls.c line 460 before referenced...
Shumin Qiu [Fri, 7 Mar 2014 01:06:37 +0000 (01:06 +0000)]
 1.Add code to check the pointer  'CorrectedPath' in Ls.c line 460 before referenced. 2.Not use  explicit comparisons to TRUE or FALSE for Boolean variable in Ls.c. 3.Add doxygen tags in comment and return type for 'ToLower' in ShellProtocol.c.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Shumin Qiu <shumin.qiu@intel.com>
Reviewed-by: Jaben Carsey <Jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15320 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoStdLib: Modify the memory allocation routines to not be dependent upon the internal...
Daryl McDaniel [Fri, 7 Mar 2014 01:05:30 +0000 (01:05 +0000)]
StdLib: Modify the memory allocation routines to not be dependent upon the internal structure of the EDK II memory pool.

StdLib/LibC/StdLib/Malloc.c
Create a private data structure, CPOOL_HEAD, which contains housekeeping information for StdLib’s memory allocation functions.  An instance of this structure is prepended to every chunk of allocated memory.  The structure links the allocation into a doubly-linked list and keeps track of the size of each allocation unit.  This information is then available for use by the realloc function.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Daryl McDaniel <daryl.mcdaniel@intel.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
Reviewed-by: Rosenbaum, Lee G <lee.g.rosenbaum@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15319 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoThe size of platform memory above 1M is measured in kilobytes.
Mike Maslenkin [Wed, 5 Mar 2014 08:45:13 +0000 (08:45 +0000)]
The size of platform memory above 1M is measured in kilobytes.
This patch fixes truncation of this value. Actually 0 Mb memory size was set by reason of overflow of 16 bit word caused by wrong value used.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Mike Maslenkin <mihailm@parallels.com>
Reviewed-by: Elvin Li <elvin.li@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15318 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPlatformPkg/ArmVExpressPkg: Added Android FastBoot support
Olivier Martin [Wed, 5 Mar 2014 04:52:33 +0000 (04:52 +0000)]
ArmPlatformPkg/ArmVExpressPkg: Added Android FastBoot support

That includes an implementation of FASTBOOT_PLATFORM_PROTOCOL for
ARM Versatile Express.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15317 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoEmbeddedPkg/AndroidFastbootTransportUsbDxe: Implemented Android FastBoot over USB
Olivier Martin [Wed, 5 Mar 2014 04:51:31 +0000 (04:51 +0000)]
EmbeddedPkg/AndroidFastbootTransportUsbDxe: Implemented Android FastBoot over USB

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15316 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPlatformPkg/ArmVExpressPkg: Added Isp1761 USB OTG driver
Olivier Martin [Wed, 5 Mar 2014 04:33:37 +0000 (04:33 +0000)]
ArmPlatformPkg/ArmVExpressPkg: Added Isp1761 USB OTG driver

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15315 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoEmbeddedPkg/Isp1761UsbDxe: Driver for the NXP ISP1761's USB peripheral controller
Olivier Martin [Wed, 5 Mar 2014 04:32:48 +0000 (04:32 +0000)]
EmbeddedPkg/Isp1761UsbDxe: Driver for the NXP ISP1761's USB peripheral controller

This driver doesn't support OTG - it simply sets the NXP ISP1761 in pure
peripheral mode.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15314 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoEmbeddedPkg/UsbDevice.h: Introduced USB Device Protocol
Olivier Martin [Wed, 5 Mar 2014 04:31:04 +0000 (04:31 +0000)]
EmbeddedPkg/UsbDevice.h: Introduced USB Device Protocol

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15313 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoEmbeddedPkg/AndroidFastboot: Introduce Android FastBoot Application
Olivier Martin [Wed, 5 Mar 2014 04:15:44 +0000 (04:15 +0000)]
EmbeddedPkg/AndroidFastboot: Introduce Android FastBoot Application

This application enables Android FastBoot on UEFI.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15312 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoEmbeddedPkg/AndroidFastbootPlatform.h: Introduced Fastboot Platform Protocol
Olivier Martin [Wed, 5 Mar 2014 04:14:02 +0000 (04:14 +0000)]
EmbeddedPkg/AndroidFastbootPlatform.h: Introduced Fastboot Platform Protocol

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15311 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoEmbeddedPkg/AndroidFastbootTransport.h: Introduced Android Fastboot Transport protocol
Olivier Martin [Wed, 5 Mar 2014 04:12:35 +0000 (04:12 +0000)]
EmbeddedPkg/AndroidFastbootTransport.h: Introduced Android Fastboot Transport protocol

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15310 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: raise DXEFV size to 8 MB
Laszlo Ersek [Wed, 5 Mar 2014 00:54:00 +0000 (00:54 +0000)]
OvmfPkg: raise DXEFV size to 8 MB

This fixes build errors like:

  GenFds.py...
    the required fv image size 0x71b118 exceeds the set fv image size
    0x700000

which is reported at least for:
(a) -b DEBUG -D SECURE_BOOT_ENABLE -t GCC44,
(b) -b DEBUG -D SECURE_BOOT_ENABLE -t GCC48 -D CSM_ENABLE

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15309 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: Add DebugAgentLib for Library class mapping for DXE_DRIVER
Jordan Justen [Tue, 4 Mar 2014 08:04:20 +0000 (08:04 +0000)]
OvmfPkg: Add DebugAgentLib for Library class mapping for DXE_DRIVER

This is needed for BootScriptExecutorDxe.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15308 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: S3 Resume: pull in BootScriptExecutorDxe
Laszlo Ersek [Tue, 4 Mar 2014 08:04:13 +0000 (08:04 +0000)]
OvmfPkg: S3 Resume: pull in BootScriptExecutorDxe

This driver (from
"MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe.inf")
is first loaded normally during DXE. When the
EFI_DXE_SMM_READY_TO_LOCK_PROTOCOL is installed by any DXE driver (purely
as a form of notification), the driver reloads itself to reserved memory.

During S3 Resume / PEI, the driver image is executed from there. In order
to access the boot script saved during S3 Suspend, LockBox access is
needed.

The boot script is transferred internal to PiDxeS3BootScriptLib:

Both S3SaveStateDxe and BootScriptExecutorDxe are statically linked
against PiDxeS3BootScriptLib. Whichever is loaded first (during normal
boot, in the DXE phase), allocates the root storage for the script. The
address is then passed between the PiDxeS3BootScriptLib instances living
in the two separate drivers thru the dynamic
PcdS3BootScriptTablePrivateDataPtr PCD.

Dependencies:

  BootScriptExecutorDxe
    gEfiLockBoxProtocolGuid [OvmfPkg/AcpiS3SaveDxe]
    S3BootScriptLib [PiDxeS3BootScriptLib]
      SmbusLib [BaseSmbusLibNull]
      LockBoxLib [OvmfPkg/Library/LockBoxLib]
    LockBoxLib [OvmfPkg/Library/LockBoxLib]

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15307 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: S3 Resume: fake LockBox protocol for BootScriptExecutorDxe
Laszlo Ersek [Tue, 4 Mar 2014 08:04:04 +0000 (08:04 +0000)]
OvmfPkg: S3 Resume: fake LockBox protocol for BootScriptExecutorDxe

BootScriptExecutorDxe, to be pulled in in the next patch, was written with
the SMM implementation of LockBox in mind. That implementation is split in
the following three parts:

- client side (DXE/PEI) library,
- SMM driver producing gEfiLockBoxProtocolGuid,
- driver side (SMM) library.

BootScriptExecutorDxe includes the client side LockBoxLib. So that the
library can communicate with the SMM LockBox driver, BootScriptExecutorDxe
has a Depex on gEfiLockBoxProtocolGuid, normally installed by the SMM
LockBox driver. This is actually not a hard dependency, it just ensures
correct load order between BootScriptExecutorDxe and
MdeModulePkg/Universal/LockBox/SmmLockBox.

The (client side) LockBox library instance in OVMF doesn't depend on a
separate driver that produces gEfiLockBoxProtocolGuid. Nothing  produces
that GUID right now in OVMF. This prevents BootScriptExecutorDxe from
loading.

Install gEfiLockBoxProtocolGuid in our only S3-specific, custom DXE
driver, in order to enable loading of BootScriptExecutorDxe.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15306 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: S3 Suspend: save boot script after ACPI context
Laszlo Ersek [Tue, 4 Mar 2014 08:03:56 +0000 (08:03 +0000)]
OvmfPkg: S3 Suspend: save boot script after ACPI context

The trigger to actually save the boot script is the installation of
EFI_DXE_SMM_READY_TO_LOCK_PROTOCOL, to be performed by any DXE driver.
Installation of the protocol also locks down SMM (as its name indicates)
and (in theory) prevents further LockBox access.

We cannot install this protocol before BdsLibBootViaBootOption() is called
(eg. in OVMF's PlatformBdsPolicyBehavior()), because
BdsLibBootViaBootOption() calls EFI_ACPI_S3_SAVE_PROTOCOL.S3Save(), which
needs LockBox access.

We also can't install the protocol after BdsLibBootViaBootOption()
returns, simply because control is never returned to us.

Therefore modify our EFI_ACPI_S3_SAVE_PROTOCOL implementation so that the
boot script is prepared and installed internally to S3Save().

(The boot script must contain at least one opcode, otherwise
S3BootScriptLib runs into an assertion failure. We add a harmless (no-op)
"information" opcode.)

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15305 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: S3 Suspend: enable creation/saving of an S3 Boot Script
Laszlo Ersek [Tue, 4 Mar 2014 08:03:50 +0000 (08:03 +0000)]
OvmfPkg: S3 Suspend: enable creation/saving of an S3 Boot Script

"MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe.inf" produces
the EFI_S3_SAVE_STATE_PROTOCOL which allows creation and saving of an S3
Boot Script, to be replayed in PEI during S3 Resume. The script contains
opcodes and opcode arguments to configure CPU, PCI and IO resources.

S3SaveStateDxe relies on the S3BootScriptLib library. The Null
implementation is not useful for actually saving the boot script, we need
the PiDxeS3BootScriptLib instance.

The PiDxeS3BootScriptLib library instance depends on LockBoxLib,
implemented for OVMF in one of the previous patches.

PiDxeS3BootScriptLib also depends on SmbusLib. For now we opt for the Null
instance of the latter. It means that SMBus commands in the boot script
will have no effect when interpreted during S3 Resume. This should be fine
for OvmfPkg and QEMU.

  EFI_S3_SAVE_STATE_PROTOCOL [S3SaveStateDxe]
    S3BootScriptLib [PiDxeS3BootScriptLib]
      SmbusLib [BaseSmbusLibNull]
      LockBoxLib [OvmfPkg/Library/LockBoxLib]

When the EFI_DXE_SMM_READY_TO_LOCK_PROTOCOL is installed by any DXE driver
(purely as a form of notification), the S3SaveStateDxe driver saves the
boot script to EfiACPIMemoryNVS, and links it into the LockBox.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15304 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: S3 Suspend: save ACPI context
Laszlo Ersek [Tue, 4 Mar 2014 08:03:38 +0000 (08:03 +0000)]
OvmfPkg: S3 Suspend: save ACPI context

"OvmfPkg/AcpiS3SaveDxe/AcpiS3SaveDxe.inf" (originally:
"IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3SaveDxe.inf")
produces the EFI_ACPI_S3_SAVE_PROTOCOL.

When found, this protocol is automatically invoked by
BdsLibBootViaBootOption(), in file
"IntelFrameworkModulePkg/Library/GenericBdsLib/BdsBoot.c", right before
booting a boot option, to save ACPI S3 context.

At that point during BDS, our AcpiPlatformDxe driver will have installed
the FACS table (which AcpiS3SaveDxe has a use-time dependency upon).

With regard to dependencies: AcpiS3SaveDxe implements
EFI_ACPI_S3_SAVE_PROTOCOL by relying on LockBoxLib.

  BdsLibBootViaBootOption()
    EFI_ACPI_S3_SAVE_PROTOCOL [AcpiS3SaveDxe]
      LockBoxLib [OvmfPkg/Library/LockBoxLib]

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
[jordan.l.justen@intel.com: Remove EmuNvramLib]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15303 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: S3 Suspend: import specialized copy of AcpiS3SaveDxe
Laszlo Ersek [Tue, 4 Mar 2014 08:03:31 +0000 (08:03 +0000)]
OvmfPkg: S3 Suspend: import specialized copy of AcpiS3SaveDxe

"IntelFrameworkModulePkg/Universal/Acpi/AcpiS3SaveDxe/AcpiS3SaveDxe.inf"
currently specifies a DepEx on gEfiMpServiceProtocolGuid (MP Services).

The justification is the following code sequence:

  InstallAcpiS3Save()
    if PcdFrameworkCompatibilitySupport is set:
      InstallAcpiS3SaveThunk()
        if EFI_MP_SERVICES_PROTOCOL is available:
          GetVariable(ACPI_GLOBAL_VARIABLE)

In English, the AcpiS3SaveDxe driver insists on the presence of MP
Services *unconditionally* because,

- if PcdFrameworkCompatibilitySupport is set (the default is false),
- and MP Services are available (which is constant true under the above
  condition),

then the AcpiS3SaveDxe driver would like to get the ACPI_GLOBAL_VARIABLE
variable from the MP Services driver, rather than setting it itself.

The DepEx prevents AcpiS3SaveDxe from loading under OvmfPkg, since we
provide no MP Services implementation. This is particularly broken since
the default PcdFrameworkCompatibilitySupport value is FALSE, making the
entire code that would look at EFI_MP_SERVICES_PROTOCOL dead.

Copy AcpiS3SaveDxe to OvmfPkg, substitute PcdFrameworkCompatibilitySupport
with constant FALSE, and remove all code that becomes dead, including the
DepEx.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15302 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: implement LockBoxLib
Laszlo Ersek [Tue, 4 Mar 2014 08:03:23 +0000 (08:03 +0000)]
OvmfPkg: implement LockBoxLib

The S3 suspend/resume infrastructure depends on the LockBox library class.
The edk2 tree currently contains Null and SMM instances. The Null instance
is useless, and the SMM instance would require SMM emulation by including
the SMM core and adding several new drivers, which is deemed too complex.

Hence add a simple LockBoxLib instance for OVMF.

jordan.l.justen@intel.com:
 * use PCDs instead of EmuNvramLib
   - clear memory in PlatformPei on non S3 boots
 * allocate NVS memory and store a pointer to that memory
   - reduces memory use at fixed locations

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15301 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: S3 Resume: pull in PEIM orchestrating S3 Resume
Laszlo Ersek [Tue, 4 Mar 2014 08:03:06 +0000 (08:03 +0000)]
OvmfPkg: S3 Resume: pull in PEIM orchestrating S3 Resume

"UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei.inf" produces the
EFI_PEI_S3_RESUME2 PEIM-to-PEIM Interface.

When the platform-specific initialization code (in PEI) sets the Boot Mode
to BOOT_ON_S3_RESUME, the DXE IPL (which is the last step in PEI) skips
the DXE phase entirely, and executes the S3 Resume PEIM through the
EFI_PEI_S3_RESUME2 interface instead. (See DxeLoadCore() in
"MdeModulePkg/Core/DxeIplPeim/DxeLoad.c".)

S3Resume2Pei depends on LockBoxLib.

  EFI_PEI_S3_RESUME2 [S3Resume2Pei]
    LockBoxLib [OvmfPkg/Library/LockBoxLib]

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15300 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg/PlatformPei: Allocate PEI FV as ACPI NVS if S3 is supported
Jordan Justen [Tue, 4 Mar 2014 08:02:59 +0000 (08:02 +0000)]
OvmfPkg/PlatformPei: Allocate PEI FV as ACPI NVS if S3 is supported

On S3 resume, we skip decompression of the PEI FV, and expect
to jump directly into it. For this to work, we need the OS to
leave the memory range untouched.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15299 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformPei: reserve early page tables on X64
Laszlo Ersek [Tue, 4 Mar 2014 08:02:52 +0000 (08:02 +0000)]
OvmfPkg: PlatformPei: reserve early page tables on X64

On X64, the reset vector code in
"OvmfPkg/ResetVector/Ia32/PageTables64.asm" identity maps the first 4GB of
RAM for PEI, consuming six frames starting at 8MB.

This range is declared by the PcdOvmfSecPageTablesBase/Size PCDs.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
[jordan.l.justen@intel.com: Move to MemDetect.c; use PCDs]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15298 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformPei: reserve SEC/PEI temp RAM for S3 resume
Laszlo Ersek [Tue, 4 Mar 2014 08:02:45 +0000 (08:02 +0000)]
OvmfPkg: PlatformPei: reserve SEC/PEI temp RAM for S3 resume

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
[jordan.l.justen@intel.com: move to MemDetect.c; use PCDs]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15297 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg/Sec: Don't decompress the FV on S3 resume
Jordan Justen [Tue, 4 Mar 2014 08:02:37 +0000 (08:02 +0000)]
OvmfPkg/Sec: Don't decompress the FV on S3 resume

Since we marked the FV at PcdOvmfPeiMemFvBase as ACPI NVS memory,
we can use it on S3 resume.

The FV at PcdOvmfDxeMemFvBase may have been overwritten by the OS,
but we do not use it's contents on S3 resume.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15296 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg/PlatformPei: Skip various items for S3 resume
Jordan Justen [Tue, 4 Mar 2014 08:02:30 +0000 (08:02 +0000)]
OvmfPkg/PlatformPei: Skip various items for S3 resume

We will not be running DXE on S3 resume, so we don't
need to do these initialization items:
 * Reserve EMU Variable memory range
 * Declare Firmware volumes
 * Add memory HOBs

v5:
 * Move MiscInitialization back to running on S3 resume

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15295 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: Add section of memory to use for PEI on S3 resume
Jordan Justen [Tue, 4 Mar 2014 08:02:16 +0000 (08:02 +0000)]
OvmfPkg: Add section of memory to use for PEI on S3 resume

This 32k section of RAM will be declared to the PEI Core on
S3 resume to allow memory allocations during S3 resume PEI.

If the boot mode is BOOT_ON_S3_RESUME, then we publish
the pre-reserved PcdS3AcpiReservedMemory range to PEI.

If the boot mode is not BOOT_ON_S3_RESUME, then we reserve
this range as ACPI NVS so the OS will not use it.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15294 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg/PlatformPei: Detect S3 support for QEMU / KVM
Jordan Justen [Tue, 4 Mar 2014 08:01:58 +0000 (08:01 +0000)]
OvmfPkg/PlatformPei: Detect S3 support for QEMU / KVM

QEMU indicates whether S3 is supported or not in the
fw-cfg interface.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15293 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg QemuFwCfgLib: determine if S3 support is explicitly enabled
Laszlo Ersek [Tue, 4 Mar 2014 08:01:49 +0000 (08:01 +0000)]
OvmfPkg QemuFwCfgLib: determine if S3 support is explicitly enabled

Such a packaged query function will come in handy in the following
patches.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
[jordan.l.justen@intel.com: check for enabled rather than disabled]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15292 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg/PlatformPei: Add mBootMode driver variable
Jordan Justen [Tue, 4 Mar 2014 08:01:40 +0000 (08:01 +0000)]
OvmfPkg/PlatformPei: Add mBootMode driver variable

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15291 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: PlatformPei: detect S3 Resume in CMOS and set boot mode accordingly
Laszlo Ersek [Tue, 4 Mar 2014 08:01:32 +0000 (08:01 +0000)]
OvmfPkg: PlatformPei: detect S3 Resume in CMOS and set boot mode accordingly

Data is transferred between S3 Suspend and S3 Resume as follows:

S3 Suspend (DXE):

(1) BdsLibBootViaBootOption()
      EFI_ACPI_S3_SAVE_PROTOCOL [AcpiS3SaveDxe]
      - saves ACPI S3 Context to LockBox  ---------------------+
        (including FACS address -- FACS ACPI table             |
        contains OS waking vector)                             |
                                                               |
      - prepares boot script:                                  |
        EFI_S3_SAVE_STATE_PROTOCOL.Write() [S3SaveStateDxe]    |
          S3BootScriptLib [PiDxeS3BootScriptLib]               |
          - opcodes & arguments are saved in NVS.  --+         |
                                                     |         |
      - issues a notification by installing          |         |
        EFI_DXE_SMM_READY_TO_LOCK_PROTOCOL           |         |
                                                     |         |
(2) EFI_S3_SAVE_STATE_PROTOCOL [S3SaveStateDxe]      |         |
      S3BootScriptLib [PiDxeS3BootScriptLib]         |         |
      - closes script with special opcode  <---------+         |
      - script is available in non-volatile memory             |
        via PcdS3BootScriptTablePrivateDataPtr  --+            |
                                                  |            |
    BootScriptExecutorDxe                         |            |
      S3BootScriptLib [PiDxeS3BootScriptLib]      |            |
      - Knows about boot script location by  <----+            |
        synchronizing with the other library                   |
        instance via                                           |
        PcdS3BootScriptTablePrivateDataPtr.                    |
      - Copies relocated image of itself to                    |
        reserved memory. --------------------------------+     |
      - Saved image contains pointer to boot script.  ---|--+  |
                                                         |  |  |
Runtime:                                                 |  |  |
                                                         |  |  |
(3) OS is booted, writes OS waking vector to FACS,       |  |  |
    suspends machine                                     |  |  |
                                                         |  |  |
S3 Resume (PEI):                                         |  |  |
                                                         |  |  |
(4) PlatformPei sets S3 Boot Mode based on CMOS          |  |  |
                                                         |  |  |
(5) DXE core is skipped and EFI_PEI_S3_RESUME2 is        |  |  |
    called as last step of PEI                           |  |  |
                                                         |  |  |
(6) S3Resume2Pei retrieves from LockBox:                 |  |  |
    - ACPI S3 Context (path to FACS)  <------------------|--|--+
                                      |                  |  |
                                      +------------------|--|--+
    - Boot Script Executor Image  <----------------------+  |  |
                                                            |  |
(7) BootScriptExecutorDxe                                   |  |
      S3BootScriptLib [PiDxeS3BootScriptLib]                |  |
      - executes boot script  <-----------------------------+  |
                                                               |
(8) OS waking vector available from ACPI S3 Context / FACS  <--+
    is called

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
[jordan.l.justen@intel.com: move code into BootModeInitialization]
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15290 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: add further BOCHS modes
Laszlo Ersek [Mon, 3 Mar 2014 08:41:15 +0000 (08:41 +0000)]
OvmfPkg: QemuVideoDxe: add further BOCHS modes

This brings the list of BOCHS video modes to par with the QEMU QXL
implementation.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15289 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: filter BOCHS modes vs. available frame buffer size
Laszlo Ersek [Mon, 3 Mar 2014 08:41:08 +0000 (08:41 +0000)]
OvmfPkg: QemuVideoDxe: filter BOCHS modes vs. available frame buffer size

In the next patch we'll add many new BOCHS modes, some of which require
large frame buffers.

The size of the QXL VGA compatibility framebuffer can be changed with the

  -global qxl-vga.vgamem_mb=$NUM_MB

QEMU option.

If $NUM_MB would exceed 32, then the following two QEMU options are
necessary instead:

  -global qxl-vga.vgamem_mb=$NUM_MB         \
  -global qxl-vga.ram_size_mb=$((NUM_MB*2))

because the compatibility framebuffer can't cover more than half of PCI
BAR #0. The latter defaults to 64MB in size, and is controlled by
"ram_size_mb".

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15288 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: clarify QEMU_VIDEO_MODE_DATA.ModeNumber
Laszlo Ersek [Mon, 3 Mar 2014 08:40:59 +0000 (08:40 +0000)]
OvmfPkg: QemuVideoDxe: clarify QEMU_VIDEO_MODE_DATA.ModeNumber

The field name "ModeNumber" in QEMU_VIDEO_MODE_DATA is misleading -- it is
not immediately obvious whether this field carries a client-visible mode
number, in the GOP sense, or an internal, card type specific mode index.
After checking all references, rename the field to "InternalModeIndex".

Also, when filling in the card type independent QEMU_VIDEO_MODE_DATA array
from the card type specific mode array, distinguish the GOP mode number
from the internal mode index in the debug message.

This patch effects no functional changes.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15287 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: eliminate useless Private->HardwareNeedsStarting
Laszlo Ersek [Mon, 3 Mar 2014 08:40:52 +0000 (08:40 +0000)]
OvmfPkg: QemuVideoDxe: eliminate useless Private->HardwareNeedsStarting

Currently, QemuVideoGraphicsOutputQueryMode() reports EFI_NOT_STARTED when
this boolean field is set.

However, QemuVideoGraphicsOutputQueryMode() is only available to callers
after the GOP interface has been installed. That in turn implies that the
following partial call tree has succeeded without errors:

  QemuVideoControllerDriverStart()
    QemuVideoGraphicsOutputConstructor()
      QemuVideoGraphicsOutputSetMode(... 0 ...)
        HardwareNeedsStarting = FALSE
    InstallMultipleProtocolInterfaces(... GOP ...)

That is, when QemuVideoGraphicsOutputQueryMode() is reached,
HardwareNeedsStarting is always FALSE.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15286 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: plug remaining leaks in Stop()
Laszlo Ersek [Mon, 3 Mar 2014 08:40:44 +0000 (08:40 +0000)]
OvmfPkg: QemuVideoDxe: plug remaining leaks in Stop()

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15285 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: disentangle UEFI driver model use in Stop()
Laszlo Ersek [Mon, 3 Mar 2014 08:40:35 +0000 (08:40 +0000)]
OvmfPkg: QemuVideoDxe: disentangle UEFI driver model use in Stop()

A bus driver needs to pay attention whether its Stop() function is being
called on the "main" controller handle (NumberOfChildren == 0) or on the
child handles (NumberOfChildren > 0).

In QemuVideoDxe, all our resources are associated with the one child
handle (and the Private data structure) *except* the top-level PciIo
protocol reference. Be conscious of which mode Stop() is being called for.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15284 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: simplify UEFI driver model use in Supported() / Start()
Laszlo Ersek [Mon, 3 Mar 2014 08:40:28 +0000 (08:40 +0000)]
OvmfPkg: QemuVideoDxe: simplify UEFI driver model use in Supported() / Start()

A bus driver is allowed to ignore the actual value of RemainingDevicePath
in Supported() and Start(), and to produce all child handles at once.

This in effect means the following invariants for QemuVideoDxe:
- (RemainingDevicePath == NULL), and
- (Private->GopDevicePath != NULL)

Simplify Supported() and Start() by substituting constant TRUE and FALSE
(as appropriate) in expressions that check RemainingDevicePath and/or
Private->GopDevicePath.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15283 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoOvmfPkg: QemuVideoDxe: tidy up error checking/handling in & under Start()
Laszlo Ersek [Mon, 3 Mar 2014 08:40:19 +0000 (08:40 +0000)]
OvmfPkg: QemuVideoDxe: tidy up error checking/handling in & under Start()

In QemuVideoControllerDriverStart():
- remove redundant zero-initialization of:
  - Private->Handle (2 locations)
  - Private->GopDevicePath (when at devpath end)

- remove fields used for error handling only:
  - PciAttributesSaved

- tigthen scope of temporaries:
  - MmioDesc
  - AcpiDeviceNode

- supplement missing error checks:
  - AppendDevicePathNode() can fail with out-of-memory (2 locations)
  - when installing GopDevicePath
  - retval of QemuVideoGraphicsOutputConstructor() (can justifiedly fail
    with out-of-resources)

- plug leaks on error:
  - free GopDevicePath (AppendDevicePathNode() allocates dynamically)
  - uninstall GopDevicePath
  - free Private->ModeData
  - call QemuVideoGraphicsOutputDestructor()
  - uninstall GOP

In QemuVideoGraphicsOutputConstructor(), called by Start():
- supplement missing error checks:
  - QemuVideoGraphicsOutputSetMode() retval (it can fail with
    out-of-resources)

- plug leaks on error:
  - free Mode->Info
  - free Mode

In QemuVideoCirrusModeSetup() and QemuVideoBochsModeSetup(), both called
by Start():
- supplement missing error checks:
  - AllocatePool() can fail in both

In QemuVideoGraphicsOutputDestructor(), called by Start() on the error
path:
- plug leaks:
  - free Private->LineBuffer, which is allocated in
    Start() -> Constructor() -> SetMode()

In QemuVideoGraphicsOutputSetMode(), called by Start() indirectly:
- remove redundant zero-assignment to:
  - Private->LineBuffer

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15282 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoAdd comment for S3BootScriptSaveMemPoll API, since it does not match PI specification.
jyao1 [Sat, 1 Mar 2014 12:25:31 +0000 (12:25 +0000)]
Add comment for S3BootScriptSaveMemPoll API, since it does not match PI specification.

Signed-off by: Jiewen Yao <Jiewen.yao@intel.com>
Reviewed by: Star Zeng <Star.Zeng@intel.com>

Contributed-under: TianoCore Contribution Agreement 1.0

git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15280 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPlatformPkg/ArmVExpressDxe: Platform specific driver for ARM VExpress based platform
Olivier Martin [Sat, 1 Mar 2014 11:05:44 +0000 (11:05 +0000)]
ArmPlatformPkg/ArmVExpressDxe: Platform specific driver for ARM VExpress based platform

This driver should be used when adding code specific to a platform based on
ARM VExpress based board.

ArmFvpDxe driver has been renamed into ArmVExpressDxe driver to support the hardware
based platforms and the model based platforms.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15279 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoEmbeddedPkg: Added support for AArch64
Olivier Martin [Sat, 1 Mar 2014 11:01:44 +0000 (11:01 +0000)]
EmbeddedPkg: Added support for AArch64

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15278 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPkg: Tidy assembler code
Olivier Martin [Sat, 1 Mar 2014 11:01:00 +0000 (11:01 +0000)]
ArmPkg: Tidy assembler code

- Fixed typo
- Removed unreachable 'dead' loop

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15277 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPkg/ArmLib: Rationalise ArmReadMidr and cognate functions.
Olivier Martin [Sat, 1 Mar 2014 11:00:07 +0000 (11:00 +0000)]
ArmPkg/ArmLib: Rationalise ArmReadMidr and cognate functions.

The function ArmReadMidr has been recently added, but that functionality was
already present under other names such as Cp15IdCode and ArmMainIdCode.  This
change removes redundant code and moves the function to the Common library.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15276 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPkg/ArmLib: Fix compilation error with -O3 switch
Olivier Martin [Sat, 1 Mar 2014 10:59:25 +0000 (10:59 +0000)]
ArmPkg/ArmLib: Fix compilation error with -O3 switch

A warning is reported because ArmArchTimerReadReg may theoretically result
in an unititialised value.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15275 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPkg/ArmLib: ArmReadVBar implementation missing in AArch64
Olivier Martin [Sat, 1 Mar 2014 10:58:46 +0000 (10:58 +0000)]
ArmPkg/ArmLib: ArmReadVBar implementation missing in AArch64

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15274 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPkg: Replace single dead loop.
Olivier Martin [Sat, 1 Mar 2014 10:57:55 +0000 (10:57 +0000)]
ArmPkg: Replace single dead loop.

Several assembler macros use a loop at the label "dead" to trap an error.
This is difficult to debug as there is no indication of how one arrived at the loop.
This change replaces dead with distinct loops locally in the macro,
which means the cause of the hang is detectable to the debugger.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15273 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPkg/ArmLib: Move common definitions from ArmV7Lib.h & AArch64Lib.h to ArmLib.h
Olivier Martin [Sat, 1 Mar 2014 10:57:09 +0000 (10:57 +0000)]
ArmPkg/ArmLib: Move common definitions from ArmV7Lib.h & AArch64Lib.h to ArmLib.h

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15272 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoConvert the value from 'int' to 'CHAR16' to match the type of variable in ShellProtoc...
Shumin Qiu [Fri, 28 Feb 2014 00:36:03 +0000 (00:36 +0000)]
Convert the value from 'int' to 'CHAR16' to match the type of variable in ShellProtocol.c.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Shumin Qiu <shumin.qiu@intel.com>
Reviewed-by: Jaben Carsey <Jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15271 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellPkg/ShellProtocol.c: Fix case sensitivity in GetAlias and SetAlias
Brendan Jackman [Wed, 26 Feb 2014 09:46:40 +0000 (09:46 +0000)]
ShellPkg/ShellProtocol.c: Fix case sensitivity in GetAlias and SetAlias

ShellCommandIsOnAliasList is case insensitive, but GetAlias and SetAlias use the
UEFI variable services, which are case sensitive.

Force alias names to lowercase to get around this.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Brendan Jackman <Brendan.Jackman@arm.com>
Reviewed-By: Olivier Martin <olivier.martin@arm.com>
Reviewed-by: Jaben Carsey <Jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15270 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoWhen exit from GetFullStringFromHiiFormPackages function, should update the PointerPr...
Eric Dong [Wed, 26 Feb 2014 08:13:10 +0000 (08:13 +0000)]
When exit from GetFullStringFromHiiFormPackages function, should update the PointerProgress parameter if necessary.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15263 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellPkg: Add missing header files
Jaben Carsey [Tue, 25 Feb 2014 23:03:17 +0000 (23:03 +0000)]
ShellPkg: Add missing header files

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <Jaben.Carsey@intel.com>
Reviewed-by: Daryl McDaniel daryl.mcdaniel@intel.com
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15262 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellBinPkg: ARM binaries update based on 15257.
Olivier Martin [Tue, 25 Feb 2014 10:37:49 +0000 (10:37 +0000)]
ShellBinPkg: ARM binaries update based on 15257.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15261 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoAdd code to check whether the pointer 'CorrectedPath' and 'FullPath' are NULL before...
Shumin Qiu [Tue, 25 Feb 2014 08:30:32 +0000 (08:30 +0000)]
Add code to check whether the pointer 'CorrectedPath' and 'FullPath' are NULL before used.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Shumin Qiu <shumin.qiu@intel.com>
Reviewed-by: Jaben Carsey <Jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15260 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoFix the bug for the structure definition of _EFI_ADAPTER_INFORMATION_PROTOCOL in...
Ari Zigler [Tue, 25 Feb 2014 05:20:31 +0000 (05:20 +0000)]
Fix the bug for the structure definition of _EFI_ADAPTER_INFORMATION_PROTOCOL in AdapterInformation.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ari Zigler <ariz@mellanox.com>
Reviewed-by: Shumin Qiu <shumin.qiu@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15259 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoShellBinPkg: binary update based on 15257.
Jaben Carsey [Mon, 24 Feb 2014 22:26:49 +0000 (22:26 +0000)]
ShellBinPkg: binary update based on 15257.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jaben Carsey <jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15258 6f19259b-4bc3-4df7-8a09-765794883524

7 years agoArmPkg/AsmMacroIoLibV8.h: Correct 32 bit accesses in asm macros
Olivier Martin [Mon, 24 Feb 2014 19:21:38 +0000 (19:21 +0000)]
ArmPkg/AsmMacroIoLibV8.h: Correct 32 bit accesses in asm macros

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15257 6f19259b-4bc3-4df7-8a09-765794883524