Update SMM variable DXE driver GetNextVariable interface to comply with UEFI spec
VariableNameSize is the returned buffer size. GetNextVariable should behavior correct if it is bigger than SMM communication buffer or less than string size of VariableName.
Signed-off-by: Chao Zhang <chao.b.zhang@intel.com>
Reviewed-by : Dong Guo <guo.dong@intel.com>
Reviewed-by : Fu Siyuan <siyuan.fu@intel.com>
Reviewed-by : Zeng Star <star.zeng@intel.com>
Update secure boot UI driver to handle “reset to default” hot key. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Yao Jiewen <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14257 6f19259b-4bc3-4df7-8a09-765794883524
Fix several bugs in the implementation of converting SAS/SASEX device path node from/to text.
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14256 6f19259b-4bc3-4df7-8a09-765794883524
If DataSize or VariableNameSize is near MAX_ADDRESS, this can cause the computed PayLoadSize to overflow to a small value and pass the check in InitCommunicateBuffer(). To protect against this vulnerability, check DataSize and VariableNameSize to make sure PayloadSize doesn't overflow.
Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14252 6f19259b-4bc3-4df7-8a09-765794883524
MdeMdeModulePkg/UsbBusDxe: Fixed a possible memory leak bug introduced at r14226
The r14226 check-in indeed has memory leak in allocated "Child" pointer. UsbBusDriverBindingStop() may dereference this pointer and may bring exception on invalid memory access
Don't assume HiiDatabase has been present at the entrypoint and don't assume HiiDatabase and HiiFont are on the same handle according to the UEFI spec.
Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Elvin Li <elvin.li@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14236 6f19259b-4bc3-4df7-8a09-765794883524
erictian [Fri, 29 Mar 2013 09:32:55 +0000 (09:32 +0000)]
MdeMdeModulePkg/Usb: two tunings for better device identification behind hub
1.enlarge the recovery time from 10ms to 20ms after port reset to make set address request success for better device compatibility.
2.another enhancement is to use RESET_C bit rather than RESET bit to judge if hub reset port operation is done.
erictian [Fri, 29 Mar 2013 06:53:57 +0000 (06:53 +0000)]
MdeMdeModulePkg/Usb: Fixed two usb issues
1.Fix the bug in interface parser logic for usb camera device. Reserve device address if the device doesn’t get disconnected.
2.Some usb 1.1 devices require the context evaluation immediately with actual max packet size after detecting the device max packet size.
niruiyu [Thu, 28 Mar 2013 07:02:01 +0000 (07:02 +0000)]
Fix SourceLevelDebugPkg build failure when the debug port is USB.
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14222 6f19259b-4bc3-4df7-8a09-765794883524
mdkinney [Fri, 22 Mar 2013 21:20:07 +0000 (21:20 +0000)]
Guarantee that free memory in the 4K page starting at address 0 is always cleared to 0. The algorithm is to clear page zero if it is registered with the DXE Core with type EfiConventionalMemory, and to also clear page zero if it is freed using the UEFI Boot Service FreePages(). This patch improves OS compatibility for OSes that may evaluate page 0 for legacy data structures. Before this patch, free memory may contain random values which induces random boot failures for some OSes. This patch may also help find NULL pointer bugs sooner because all of the fields in a data structure dereferenced through NULL will also be NULL now.
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14218 6f19259b-4bc3-4df7-8a09-765794883524
mdkinney [Fri, 22 Mar 2013 21:18:02 +0000 (21:18 +0000)]
Fix a bug in the DXE Core that generates an ASSERT() when the page at address zero is freed and DEBUG_CLEAR_MEMORY() macros are enabled. If DEBUG_CLEAR_MEMORY() is enabled and the page at address 0 is freed, then DEBUG_CLEAR_MEMORY() is invoked skipping over the first 4K page.
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14217 6f19259b-4bc3-4df7-8a09-765794883524
sfu5 [Wed, 20 Mar 2013 08:35:24 +0000 (08:35 +0000)]
Making the IP6_CONFIG_DATA_RECORD the same size for both IA32 and X64 builds. Signed-off-by: Kinney, Michael D <michael.d.kinney@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14216 6f19259b-4bc3-4df7-8a09-765794883524
sfu5 [Wed, 20 Mar 2013 08:30:05 +0000 (08:30 +0000)]
Remove HiiUpdateForm from ExtractConfig fucntion. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Dong Eric <eric.dong@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14215 6f19259b-4bc3-4df7-8a09-765794883524
niruiyu [Tue, 19 Mar 2013 07:10:51 +0000 (07:10 +0000)]
Remove BdsLibConnectConsoleVariableWithoutDispatch() and enhance BdsLibConnectDevicePath() to only call gDS->Dispatch() when the current TPL is TPL_APPLICATION
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Chao B Zhang <chao.b.zhang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14211 6f19259b-4bc3-4df7-8a09-765794883524
oliviermartin [Tue, 12 Mar 2013 01:04:10 +0000 (01:04 +0000)]
ArmPkg/BdsLib: Fixed TFTP and PXE Boot
- An Ascii filename must be passed to the TFTP service (was a Unicode filename)
- If the PXE service had already configured the connection we need to restart
when we want to download a new file or do a do a PXE Boot.
oliviermartin [Tue, 12 Mar 2013 01:03:23 +0000 (01:03 +0000)]
ArmPlatformPkg/Bds: Fixed adding support for new boot entry when the generated DevicePath is bigger than one node
The initial support was only considering the added Device Path will be a single node.
TFTP for instance requires two new nodes on the top of the ethernet Device Path; a first
one for the IP address of the server and a second one for the file to download.
This change replace the return argument from a DevicePath node by a DevicePath.
It means the End Device Path node is now required.
oliviermartin [Tue, 12 Mar 2013 01:01:55 +0000 (01:01 +0000)]
ArmPkg/BdsLinuxFdt.c: Check that FDT blob is correctly loaded.
Add some checks in the code loading an FDT blob from a memory-mapped device
so that UEFI will detect and print an error message if the address
range doesn't cover the whole file.
oliviermartin [Tue, 12 Mar 2013 00:43:58 +0000 (00:43 +0000)]
ArmPlatformPkg/CTA15-A7: Add a convenient way to restore default values in NOR flash.
Setting bit4 of SCC register 48 now triggers the erasing of the memory region
reserved for variable storage in NOR flash and the restoration of the default
headers in flash.
Rename GetEnvironmentVariable() function into GetGlobalEnvironmentVariable().
GetEnvironmentVariable() function sill exists but caller must now pass a Guid.
oliviermartin [Tue, 12 Mar 2013 00:41:52 +0000 (00:41 +0000)]
ArmPlatformPkg/BootMenu.c: Print loader type in a more friendly way.
In debug mode, the loader type (EFI application or linux kernel with
FDT/ATAG support) is displayed in UEFI boot menu.
Before this patch it was printed as a decimal number which is
meaningful to the user only if he knows the values of the
ARM_BDS_LOADER_TYPE enumeration type in the source code...
This patch modifies the boot menu so that it also prints a
user-friendly string describing the loader type.
oliviermartin [Tue, 12 Mar 2013 00:40:11 +0000 (00:40 +0000)]
EmbeddedPkg: Introduced a separate SerialPortExtLib library
Formerly only the header was defined and it was expecting the SerialPortExtLib
interface to be implemented by SerialPortLib if supported. This behaviour was
not conform to the EDK2 framework.
oliviermartin [Tue, 12 Mar 2013 00:38:15 +0000 (00:38 +0000)]
EmbeddedPkg/Metronome.c: Fix delay computed by WaitForTick() function.
Before the tick period used by the Metronome was hardcoded to 100.
This has been changed since but WaitForTick() function was still relying
on this hardcoded value to compute the number of milliseconds to stall
the CPU.
darylm503 [Mon, 11 Mar 2013 18:00:30 +0000 (18:00 +0000)]
StdLib: Fix printf issues with floating point and wide character strings. Also resolves a compilation issue with VS2010. See ISSUES.txt items 1, 11.
ISSUES.txt: Added issue 11, updated status of issue 1.
gdtoa/gdtoaimp.h: Fix definition of union U.
Locale/_wcstod.h: Return 0.0 instead of 0 in the "no_convert" case.
Locale/multibyte_Utf8.c: In wcsrtombs(), if both the destination pointer is NULL and the size, Limit, is 0; return the estimated length of the converted string up to ASCII_STRING_MAX bytes.
sfu5 [Mon, 11 Mar 2013 08:04:39 +0000 (08:04 +0000)]
Fix a bug in IP4 driver which may cause “reconnect –r” hang. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Ouyang Qian <qian.ouyang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14170 6f19259b-4bc3-4df7-8a09-765794883524
sfu5 [Mon, 11 Mar 2013 07:47:42 +0000 (07:47 +0000)]
Initialize DefaultInfo before using it. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Ouyang Qian <qian.ouyang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14168 6f19259b-4bc3-4df7-8a09-765794883524
sfu5 [Mon, 11 Mar 2013 07:44:10 +0000 (07:44 +0000)]
Fix a bug in IP4 driver that the broadcast/multicast mac address is overrided by the gateway’s mac address. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Ouyang Qian <qian.ouyang@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14167 6f19259b-4bc3-4df7-8a09-765794883524
niruiyu [Tue, 5 Mar 2013 01:58:39 +0000 (01:58 +0000)]
Enhance the ConPlatform driver to take care of the optional Controller device path node when comparing the GOP device path.
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Kinney Michael D <michael.d.kinney@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14161 6f19259b-4bc3-4df7-8a09-765794883524
jcarsey [Mon, 4 Mar 2013 22:02:59 +0000 (22:02 +0000)]
ShellPkg: Add "dp" command library to ShellPkg.
This command is only included in the build with command line option "-D INCLUDE_DP". The user must also update the DSC with appropriate library instances that match the platform for the build to succeed.
jljusten [Mon, 4 Mar 2013 17:38:42 +0000 (17:38 +0000)]
OvmfPkg: make sure ResetCold() and ResetWarm() never return
Also, add a small delay after the 0xCF9 hard reset request -- on qemu/kvm the
port access is translated to the qemu-internal system reset request by the CPU
thread, and it might progress some more before the IO thread acts upon the
system reset request.
MicroSecondDelay() is implemented by OvmfPkg's own AcpiTimerLib.
jljusten [Mon, 4 Mar 2013 17:38:24 +0000 (17:38 +0000)]
OvmfPkg: attempt to trigger cold reset through PIIX3 reset control register
The reset requested via the keyboard controller (port 0x64) is actually a
soft reset, but qemu has supported it since forever (plus qemu has not
distinguished between hard reset and soft reset, although this is changing
now). Therefore leave the current IoWrite() in place for compatibility.
On qemu versions with commit 1ec4ba74 ("PIIX3: reset the VM when the Reset
Control Register's RCPU bit gets set"), use the PIIX3 RCR as first choice.
In the future qemu will act differently on soft vs. hard reset requests,
and we should honor that in ResetCold().
Writing to ioport 0xCF9 on qemu builds prior to commit 1ec4ba74 should
have no effect. Access to the PCI host config register went through
several implementations in qemu. Commit 9f6f0423 ("pci_host: rewrite
using rwhandler") seems safe, both before and after.
Commit d0ed8076 ("pci_host: convert conf index and data ports to memory
API") inadvertently dropped the alignment/size check, causing a boot
regression on NetBSD. It was fixed about six months later in commit cdde6ffc, which is current. Translating that to qemu releases, the bug
was visible from v1.0 to v1.1.0.
On physical hardware cycling between reset methods is sometimes necessary
<http://mjg59.dreamwidth.org/3561.html>. On qemu the port access should
trap immediately.
The INT_MODEL field was present in ACPI 1.0, but eliminated in 2.0.
According to the spec, "platforms should set this field to zero but field
values of one are also allowed to maintain compatibility with ACPI 1.0".
We're setting it to zero.
About Preferred_PM_Profile (taking the place of an 1.0 reserved field),
the specification says:
This field is set by the OEM to convey the preferred power management
profile to OSPM. OSPM can use this field to set default power management
policy parameters during OS installation.
The first two octets are now merged into a 16-bit short; otherwise we've
been treating those as boot architecture flags already (see SVN rev
13615). No change in value.
> UINT32 Flags;
The fixed feature flags are not modified, only the macro names (expanding
to identical values) are updated to ACPI 2.0.
The 64-bit physical addresses for the FACS and the DSDT are automatically
filled at installation time, see AddTableToList() and DeleteTable() in
"MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableProtocol.c".
We specify the extended addresses for the required and supported PM1a
Event & Control, PM Timer, and GPE0 Register Blocks, and zero the rest, in
accordance with the ACPI 1.0 fields.
jljusten [Mon, 4 Mar 2013 17:37:29 +0000 (17:37 +0000)]
OvmfPkg: fold macros of unsupported GPE1 register block into Facp.aslc
In the next patch we're going to specify Extended Addresses of register
blocks in Generic Address Structure format. The GAS is easy to fill if we
want to posit either "unsupported" (all zero) or a given address in a
specific address space. However deriving "unsupported" just from a macro
expanding to zero is unwieldy, so let's avoid the need.
jljusten [Mon, 4 Mar 2013 17:37:15 +0000 (17:37 +0000)]
OvmfPkg: fold macros of unsupported PM2 control reg. block into Facp.aslc
Soon we're going to specify Extended Addresses of register blocks in
Generic Address Structure format. The GAS is easy to fill if we want to
posit either "unsupported" (all zero) or a given address in a specific
address space. However deriving "unsupported" just from a macro expanding
to zero is unwieldy, so let's avoid the need.
jljusten [Mon, 4 Mar 2013 17:36:55 +0000 (17:36 +0000)]
OvmfPkg: fold macros of unsupported PM1b register blocks into Facp.aslc
Soon we're going to specify Extended Addresses of register blocks in
Generic Address Structure format. The GAS is easy to fill if we want to
posit either "unsupported" (all zero) or a given address in a specific
address space. However deriving "unsupported" just from a macro expanding
to zero is unwieldy, so let's avoid the need.
lzeng14 [Mon, 4 Mar 2013 03:36:58 +0000 (03:36 +0000)]
Not close gEfiEndOfDxeEventGroupGuid event in ReadyToLock event notify because PI spec doesn't say gEfiEndOfDxeEventGroupGuid must be notified before ReadyToLock event.
Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14150 6f19259b-4bc3-4df7-8a09-765794883524
Signed-off-by: Frank Fan <frank@asix.com.tw> Reviewed-by: lpleahy
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14149 6f19259b-4bc3-4df7-8a09-765794883524
lpleahy [Wed, 27 Feb 2013 22:15:36 +0000 (22:15 +0000)]
Otherwise gcc can default to the "sysv_abi" (as opposed to the "ms_abi") calling convention on X64, causing problems like <http://sourceforge.net/mailarchive/message.php?msg_id=30356166>.
ydong10 [Wed, 27 Feb 2013 02:09:01 +0000 (02:09 +0000)]
In order to make sure the image is section alignment, after allocate buffer for TE image, it will adjust the base address. But it has two potential issues: One is the start address may not section alignment, second is the buffer is not bigger enough to do the adjustment. This patch fixes these two issues.
ydong10 [Thu, 21 Feb 2013 05:48:37 +0000 (05:48 +0000)]
BMP file may has padding data between the bmp header section and the bmp data section, but current code logic not consider this case, so the check is not valid for some bmp file. Refine the logic for this case.
sfu5 [Thu, 21 Feb 2013 05:00:21 +0000 (05:00 +0000)]
Update the DxeImageVerificationLib to support for Authenticode-signed UEFI images with multiple signatures. Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Dong Guo <guo.dong@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14141 6f19259b-4bc3-4df7-8a09-765794883524
vanjeff [Wed, 20 Feb 2013 03:38:10 +0000 (03:38 +0000)]
Update SmiManager() comments and implementation to follow the new rule clarified by PI 1.2.1 errata A.
1. If at least one of the handlers returns EFI_WARN_INTERRUPT_SOURCE_QUIESCED or EFI_SUCCESS then the function will return EFI_SUCCESS.
If a handler returns EFI_SUCCESS and HandlerType is not NULL then no additional handlers will be processed.
2. If a handler returns EFI_INTERRUPT_PENDING and HandlerType is not NULL then no additional handlers will be processed and EFI_INTERRUPT_PENDING will be returned.
Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14136 6f19259b-4bc3-4df7-8a09-765794883524
jljusten [Thu, 14 Feb 2013 19:21:56 +0000 (19:21 +0000)]
OvmfPkg: increase MEMFD size to 8MB
With reference to
<http://sourceforge.net/mailarchive/message.php?msg_id=30359322>:
"MEMFD is built so MAINFV's contents will be relocated during the build to
address 0x800000", and it "is a firmware volume with most OVMF code/data
uncompressed. [...] Increasing its size has a little impact on the size of
the resulting firmware image since the blank part of the firmware volume
will compress well."
Let's increase the size to 8MB, since the current limit can get in the way
(for example when building-in the Intel3.5 drivers for e1000 with
-D FD_SIZE_2MB -D NETWORK_ENABLE -D SECURE_BOOT_ENABLE).