Implement NvVarsFileLib to save and restore non-volatile variables using a file.
This library provides an interface where variables can be saved and restored
using a file in a file system accessible to the firmware. It is expected
that a platform BDS library will use this library. The platform BDS
implementation can decide which devices to connect and then to attempt to use
for saving and restoring NV variables.
1. updated "the Bus Driver that creates all of its child handles on the first call to Start()" not to create any child handle if RemainingDeviepath is the End of Device Path Node, per UEFI 2.3.
The others changes include:
a. Check RemainingDevicePath at beginning of Supported(), make sure it has been verified before Start() is called.
b. Check IO protocol firstly rather than EfiDevicePathProtocolGuid, reduce the times entering into Start() function because EfiDevicePathProtocolGuid existed on most of handle.
2. roll back serial drivers not to create child device, if the device speicifed by remainingdevicepath cannot find in the created devices list.
1. updated PCI/AGP Devices to check RemainingDevicePath in Supported() and Start() functions. The main changes are:
a. Add check validation of RemainingDevicePath in Supported()
b. In Star() function, if RemaingDevicePath is the End of Device Path Node, don't create child device and return EFI_SUCCESS.
2. fixed one device path issue in ScsiBus driver.
updated the Bus Driver that is able to create all or one of its child handles on each call to Start() not to create new child handle if RemainingDeviepath is the End of Device Path Node, per UEFI 2.3.
The others changes include:
1. Check RemainingDevicePath at beginning of Supported(), make sure it has been verified before Start() is called.
2. Check IO protocol firstly rather than EfiDevicePathProtocolGuid, reduce the times entering into Start() function because EfiDevicePathProtocolGuid existed on most of handle.
3. If no any child device is created on last time, and RemainingDevicePath is valid Uart Devcie path, go on creating child device handle based on this RemainingDevicePath.
1. Add new HII IFR opcode introduced in UEFI2.2 and UEFI2.3
They are EFI_IFR_FORM_MAP, EFI_IFR_READ, EFI_IFR_WRITE, EFI_IFR_GET, EFI_IFR_SET, EFI_IFR_MAP, EFI_IFR_SECURITY.
2. Add new data type introduced in UEFI2.2 and UEFI2.3
EFI_IFR_TYPE_ACTION, EFI_IFR_TYPE_UNDEFINED,
EFI_IFR_TYPE_BUFFER.
In various archs, Processor memory address may not be same with Pci memory address. For usb host controller, we should use pci memory address to initialize framelist register and all address field in QH/TD.
updated WinNtSerialIoDxe driver not to create new child handle if RemainingDeviepath is the End of Device Path Node, per UEFI 2.3.
The others changes include:
1. Check RemainingDevicePath at beginning of Supported(), make sure it has been verified before Start() is called.
2. Check efiWinNtIoProtocolGuid firstly rather than EfiDevicePathProtocolGuid, reduce the times entering into Start() function because EfiDevicePathProtocolGuid existed on most of handle.
3. If no any child device is created on last time, and RemainingDevicePath is valid Uart Devcie path, go on creating child device handle based on this RemainingDevicePath.
OVMF: Add support for more persistent NV variables which can survive a system reboot.
Make use of EMU Variable driver's PcdEmuVariableNvStoreReserved to allow
NV variables to persist a VM system reset. The contents of the NV variables
will still be lost when the VM is shut down, but they appear to persist
when the efi shell reset command is run. (Tested with QEMU 0.10.0.)
EMU Variable: Add support for pre-reserved NV variable store.
Add PcdEmuVariableNvStoreReserved which allows a platform to declare a
memory address for the EMU Variable driver to use for the NV variable
store. The EMU Variable driver will look to see if the contents of
this memory range appear to be a valid variable store, and if so
the EMU driver will use the variables.
If a platform can preserve a memory range across system resets, this
feature can allow the EMU Variable driver's NV variable store to be
preserved across a system reset.
In the default case this PCD will be set as a fixed PCD with a value
of 0. In this case this new feature should have minimal impact on
the EMU Variable driver. (Perhaps a slight increase in code size,
but no functional difference is expected.)
Add into MdePkg definitions for the SMM Power Button Dispatch2 Protocol as defined in PI 1.1 Specification Volume 4 System Management Mode Core Interface.
Add into MdePkg definitions for the SMM Standby Button Dispatch2 Protocol as defined in PI 1.1 Specification Volume 4 System Management Mode Core Interface.
Add into MdePkg definitions for the SMM General Purpose Input (GPI) Dispatch2 Protocol as defined in PI 1.1 Specification Volume 4 System Management Mode Core Interface.
Add into MdePkg definitions for the SMM Periodic Timer Dispatch Protocol as defined in PI 1.1 Specification Volume 4 System Management Mode Core Interface.
UEFI 2.3 Specification should be updated to move these status code definitions into Appendix D, so all the EFI_STATUS codes are defined in a single place in the specifications, and that will help avoid status code collisions as new status codes may be defined over time.
Refactor the code logic to reduce code size for debug tip.
The original switch case statements does not generate space efficient size when optimization is disabled.
Split AsmReadKr7() and AsmWriteKr7() from AccessKr.s file since these two APIs are frequently used to store/fetch PeiServicesTable pointer for IPF platform. Some compiler/linker with /Od is not smart enough to remove used KR registers access APIs.
Add into MdePkg the common definitions in the Platform Initialization Specification version 1.2 VOLUME 4 System Management Mode Core Interface version.
eric_tian [Mon, 31 Aug 2009 02:39:56 +0000 (02:39 +0000)]
revert the change on BdsConsole. when doing minimal boot, the ConsoleIn variable is used to store existing input device's device path. If the device can not be connected, its device path will be removed from ConsoleIn.
So due the usb hot plug feature, we should always connect USB host controller according to the consolein device provided by PlatformData file before entering frontpage. This way can avoid usb device can not work in frontpage phase.
eric_tian [Thu, 27 Aug 2009 06:24:26 +0000 (06:24 +0000)]
due to EmuVariable driver only uses volatile memory to simulate the variable region, so PcdHwErrStorageSize should be less than or equal to PcdVariableStoreSize
AJFISH [Wed, 26 Aug 2009 21:08:05 +0000 (21:08 +0000)]
Adding a python script to enable RVCT 3.1 (ARM ARM compiler) to run in cygwin. The build system passes cygpaths and the Windows tool can not deal with that. The python converts paths to C:\ to make RVCT 3.1 happy. This has been fixed in RVCT 4.0. The ARM processor does not support instructions like divide, so compiler specific intrinsics are required. The .libs are checked in here and referenced from the tools_def.template file, so they are automatically included when the compiler is invoked. The souce to these .lib files will be checkin soon in a new ArmPkg.
jchen20 [Wed, 26 Aug 2009 02:21:45 +0000 (02:21 +0000)]
Fixed a bug on the menu display: Following steps to reproduce it:
1. Boot to shell
2. go to boot maint manager
3. Boot options
4. Add boot option
5. Add 15 or so unique boot options (just so the list scrolls)
6. go the boot maint manager
7. go to Boot options
8. go to Change boot order
9. the list is long enough that it scrolls when you push down once (to get to the commit option)
10. push down once and then up once (repeat) (from list selected to "commit" selected)
11. you will notice the list and text is getting corrupt
12. do it until all items in list are gone (system will assert)
jchen20 [Wed, 26 Aug 2009 02:19:29 +0000 (02:19 +0000)]
Fixed a bug on the menu display: Following steps to reproduce it:
1. Boot to shell
2. go to boot maint manager
3. Boot options
4. Add boot option
5. Add 15 or so unique boot options (just so the list scrolls)
6. go the boot maint manager
7. go to Boot options
8. go to Change boot order
9. the list is long enough that it scrolls when you push down once (to get to the commit option)
10. push down once and then up once (repeat) (from list selected to "commit" selected)
11. you will notice the list and text is getting corrupt
12. do it until all items in list are gone (system will assert)
mdkinney [Mon, 24 Aug 2009 23:53:23 +0000 (23:53 +0000)]
Fix file headers
Move stack alignment check from CPU specific files into common SwitchStack() function and add VA_END() to SwitchStack().
Fix incorrect syntax for ASM_FUNCTION_REMOVE_IF_UNREFERENCED
mdkinney [Mon, 24 Aug 2009 23:45:38 +0000 (23:45 +0000)]
Fix file headers
Fix typos in comments style of assembly files
Change IA32 CpuFlushTlb() for GCC to use AsmReadCr3() and AsmWriteCr3() instead of using inline assembly.
qhuang8 [Mon, 24 Aug 2009 15:44:35 +0000 (15:44 +0000)]
Adjust the parameter order of debug print. Judging from the context, the first parameter should be memory type while the second and third parameters should be memory start and end.