Zhang Lubo [Wed, 24 Feb 2016 03:54:53 +0000 (11:54 +0800)]
MdeModulePkg:Fix a robustness issue of Mnp Driver
v3:
*
When there exists duplicate items in VLAN variable , save the correct
variable content back to the variable storage after duplicate items are removed
Duplicate items in VLAN variable will cause MNP driver binding
start function fall into infinite loop,so we should check it's
content before using it.
Cc: Fu Siyuan <siyuan.fu@intel.com> Cc: Ye Ting <ting.ye@intel.com> Cc: Wu Jiaxin <jiaxin.wu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zhang Lubo <lubo.zhang@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Wu Jiaxin <jiaxin.wu@intel.com>
Qiu Shumin [Fri, 26 Feb 2016 06:52:18 +0000 (14:52 +0800)]
ShellPkg: Fix unexpected behavior of mouse cursor in Editor.
USB mouse cursor cannot move unless the left button is down. The patch
refresh the FileBuffer of Editor every time when the 'MainEditorRefresh'
is called to fix this bug.
Laszlo Ersek [Wed, 24 Feb 2016 20:00:04 +0000 (21:00 +0100)]
MdeModulePkg: RegularExpressionDxe: support free(NULL)
The ISO C standard says about free(),
If ptr is a null pointer, no action occurs.
This is not true of the FreePool() interface of the MemoryAllocationLib
class:
Buffer must have been allocated on a previous call to the pool
allocation services of the Memory Allocation Library. [...] If Buffer
was not allocated with a pool allocation function in the Memory
Allocation Library, then ASSERT().
Therefore we must not forward the argument of free() to FreePool() without
checking.
Leif Lindholm [Wed, 28 Oct 2015 18:08:53 +0000 (18:08 +0000)]
ArmPlatformPkg: PL061 - only initialize on protocol load
For whatever reason, every single operation on the PL061 looked for an
"Initialized" flag, and manually called the initialization function if
not set. Move this to a single call on protocol installation.
Ard Biesheuvel [Thu, 25 Feb 2016 16:20:21 +0000 (17:20 +0100)]
MdeModulePkg: AcpiTableDxe: fix VS2008 build by merging adjacent if blocks
The assignment of CurrentRsdtEntry and its subsequent dereference are
subject to the same condition, but for some reason, VS2008 does not see
that and warns about the dereference possibly involving an uninitialized
pointer. Since the single statememt between the blocks is unrelated, we
can just move it and merge the two conditional blocks together.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: David Woodhouse <David.Woodhouse@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
Ruiyu Ni [Thu, 25 Feb 2016 09:13:31 +0000 (17:13 +0800)]
MdeModulePkg/PciHostBridge: Don't assume resources are fully NonExistent
The patch removes the assumption that the resources claimed by root
bridges should not exist. Because resources might have been added:
1. by platform modules either in PEI through resource HOB, or in DXE,
before the PCI host bridge driver runs.
2. Resources claimed by different root bridges may overlap so that
resource adding operation for latter root bridges may fail if
we assume the resource should not exist.
In real world, this patch is to fit OVMF platform needs because
different root bridges in OVMF platform shares the same resources.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
[lersek@redhat.com: intersection-based implementation]
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Dandan Bi [Thu, 28 Jan 2016 01:36:43 +0000 (09:36 +0800)]
SecurityPkg: Use FileExplorerLib in SecureBootConfigDxe
Using existing library FileExplorerLib to replace the same
logic in SecureBootConfigDxe to make the code clear. After using
FileExplorerLib, the UI behavior for enroll PK will change,
previously when select one PK file, commit/discard changes will
return to Device Manager,press ESC will return to FileExplorer.
Now using FileExplorerLib the behavior will keep same with
enroll KEK/DB/..., commit/discard changes will return to Custom
Secure Boot Options form and ESC will return to PK options form.
Dandan Bi [Wed, 24 Feb 2016 12:20:24 +0000 (20:20 +0800)]
Vlv2TbltDevicePkg: Add FileExplorerLib.inf to the dsc file
Because SecureBootConfigDxe use FileExplorerLib now, but
FileExplorerLib is not in the dsc file of the package
that use SecureBootConfigDxe. Now add it to pass build.
Cc: David Wei <david.wei@intel.com> Cc: Tim He <tim.he@intel.com> Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: David Wei <david.wei@intel.com>
Dandan Bi [Wed, 24 Feb 2016 12:18:53 +0000 (20:18 +0800)]
OvmfPkg: Add FileExplorerLib.inf to the dsc file
Because SecureBootConfigDxe use FileExplorerLib now, but
FileExplorerLib is not in the dsc file of the package
that use SecureBootConfigDxe. Now add it to pass build.
Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
Dandan Bi [Wed, 24 Feb 2016 12:15:52 +0000 (20:15 +0800)]
ArmVirtPkg: Add FileExplorerLib.inf to the QEMU dsc files
Because SecureBootConfigDxe use FileExplorerLib now, but
FileExplorerLib is not in the dsc files of the package
that use SecureBootConfigDxe. Now add it to pass build.
Cc: Laszlo Ersek <lersek@redhat.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Eric Dong <eric.dong@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Eric Dong <eric.dong@intel.com>
When a PCI bridge is not enabled, the secondary bus may still be zero.
This causes an infinite recursive call to enumerate bus 0 which results
in a stack overflow. The easy fix is to skip the recursive bus
enumeration for bridges which do not have the secondary bus initialized.
TEST=Build and run CorebootPayloadPkg on Quark/Galileo Gen2
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Lee Leahy <leroy.p.leahy@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Laszlo Ersek [Wed, 24 Feb 2016 20:00:04 +0000 (21:00 +0100)]
CryptoPkg: BaseCryptLib: support free(NULL)
The ISO C standard says about free(),
If ptr is a null pointer, no action occurs.
This is not true of the FreePool() interface of the MemoryAllocationLib
class:
Buffer must have been allocated on a previous call to the pool
allocation services of the Memory Allocation Library. [...] If Buffer
was not allocated with a pool allocation function in the Memory
Allocation Library, then ASSERT().
Therefore we must not forward the argument of free() to FreePool() without
checking.
This bug can be triggered by upstream OpenSSL commit 8e704858f219
("RT3955: Reduce some stack usage"), for example.
Cc: David Woodhouse <dwmw2@infradead.org> Cc: Qin Long <qin.long@intel.com> Cc: Ting Ye <ting.ye@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Qin Long <qin.long@intel.com>
Dandan Bi [Tue, 23 Feb 2016 03:04:20 +0000 (11:04 +0800)]
MdeModulePkg: Add submitted callback test case in DriverSample
Now we add new HII action type EFI_BROWSER_ACTION_SUBMITTED in
EFI HII Configuration Access Protocol, so add the test case in
DriverSample to show how to use it and whether it works.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
Michael Kinney [Fri, 19 Feb 2016 07:16:02 +0000 (23:16 -0800)]
UefiCpuPkg/Cpuid: Add UEFI CPUID application
Add UEFI application to UefiCpuPkg to display all supported CPUID
leafs and sub-leafs described by UefiCpuPkg/Include/Register/Cpuid.h
that is based on information from Intel(R) 64 and IA-32
Architectures Software Developer's Manual, Volume 2A, December
2015, CPUID instruction.
Cc: Jeff Fan <jeff.fan@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com>
Michael Kinney [Fri, 19 Feb 2016 07:15:48 +0000 (23:15 -0800)]
UefiCpuPkg/Cpuid.h: Add CPUID leaf/sub-leaf defines and structures
Add CPUID leaf and sub-leaf indexes and structures as described by
Intel(R) 64 and IA-32 Architectures Software Developer's Manual,
Volume 2A, December 2015, CPUID instruction.
Cc: Jeff Fan <jeff.fan@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com>
Michael Kinney [Tue, 23 Feb 2016 00:46:06 +0000 (16:46 -0800)]
BaseTools/tools_def.txt: Add -march=i586 for IA32 GCC targets
Newer GCC compilers use a default of march higher than i586
for -m32 (IA32 configuration) and this is causing generation of
instructions that are not compatible with all IA32 targets.
Specically Galileo platform support in the QuarkPlatformPkg does
not boot if GCC48 or higher is used.
This is similar to the following checkin that was done to address
this same issue for VS2012 and higher tool chains:
Jiewen Yao [Tue, 23 Feb 2016 04:43:57 +0000 (12:43 +0800)]
MdeModulePkg: Fix Memory Attributes table type issue
According to the spec, each entry in the Memory
Attributes table shall have the same type as
the region it was carved out of in the UEFI memory map.
The current attribute uses RTData for PE Data, but
it should be RTCode.
This patch fixed the issue. It is validated with or
without PropertiesTable.
Dandan Bi [Wed, 24 Feb 2016 01:03:22 +0000 (09:03 +0800)]
MdeModulePkg: Fix the build fail issue on VS2008\VS2010\GCC
This is caused by my last commit,the LoadOption may
not initialize when call FreePool, and after investigation,
find that we can delete the LoadOption variable, this patch
is to fix this issue.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
Ard Biesheuvel [Wed, 24 Feb 2016 08:27:30 +0000 (09:27 +0100)]
OvmfPkg: add driver for Virtio-RNG device
This adds the new Virtio-RNG DXE module to all three builds of
OvmfPkg. Note that QEMU needs to be invoked with the 'device
virtio-rng-pci' option in order for this device to be exposed to
the guest.
Ard Biesheuvel [Mon, 22 Feb 2016 07:52:15 +0000 (08:52 +0100)]
ArmVirtPkg: ArmVirtQemu: add driver for Virtio-RNG device
This adds the new Virtio-RNG DXE module to the default build of
ArmVirtQemu. Note that QEMU needs to be invoked with the 'device
virtio-rng-pci' option in order for this device to be exposed to
the guest.
Ard Biesheuvel [Fri, 19 Feb 2016 10:43:12 +0000 (11:43 +0100)]
OvmfPkg: implement UEFI driver for Virtio RNG devices
This implements a UEFI driver model driver for Virtio devices of type
VIRTIO_SUBSYSTEM_ENTROPY_SOURCE, and exposes them via instances of
the EFI_RNG_PROTOCOL protocol, supporting the EFI_RNG_ALGORITHM_RAW
algorithm only.
Laszlo Ersek [Fri, 19 Feb 2016 17:15:07 +0000 (18:15 +0100)]
OvmfPkg: VirtioFlush(): return the number of bytes written by the host
VirtioLib provides an API for simple, synchronous (request/response-style)
virtio communication. The guest driver builds one descriptor chain, link
for link, with VirtioPrepare() and VirtioAppendDesc(), then submits the
chain, and awaits the processing, with VirtioFlush().
The descriptor chain is always built at the beginning of the descriptor
area, with the head descriptor having descriptor index 0.
In order to submit the descriptor chain to the host, the guest always
pushes a new "available element" to the Available Ring, in genuine
queue-like fashion, with the new element referencing the head descriptor
(which always has index 0, see above).
In turn, after processing, the host always pushes a new "used element" to
the Used Ring, in genuine queue-like fashion, with the new element
referencing the head descriptor of the chain that was just processed. The
same element also reports the number of bytes that the host wrote,
consecutively across the host-writeable buffers that were linked by the
descriptors.
(See "OvmfPkg/VirtioNetDxe/TechNotes.txt" for a diagram about the
descriptor area and the rings.)
Because at most one descriptor chain can be in flight with VirtioLib at
any time,
- the Available Ring and the Used Ring proceed in lock-step,
- and the head descriptor that the new "available" and "used" elements can
ever reference has index 0.
Based on the above, we can modify VirtioFlush() to return the number of
bytes written by the host across the descriptor chain. The virtio-block
and virtio-scsi drivers don't care (they have other ways to parse the data
produced by the host), while the virtio-net driver doesn't use
VirtioFlush() at all (it employs VirtioLib only to set up its rings).
However, the virtio entropy device, to be covered in the upcoming
patches, reports the amount of randomness produced by the host only
through this quantity.
Ard Biesheuvel [Thu, 18 Feb 2016 19:51:08 +0000 (20:51 +0100)]
ArmVirtPkg/ArmVirtQemu: limit ACPI support to v5.0 and higher
The ACPI spec predates the AARCH64 architecture by 5 versions, so there
is no point in supporting anything below v5.0. So set the PCD that
controls the ACPI table generation to the appropriate value.
Note that the current consumers of this PCD only check whether bit 1
is set or not (i.e., ACPI v1.0b), but this may change in the future,
so let's choose a meaningful value right away.
Ard Biesheuvel [Wed, 17 Feb 2016 14:37:58 +0000 (15:37 +0100)]
MdeModulePkg: AcpiTableDxe: make 4 GB table allocation limit optional
AARCH64 systems never require compatibility with legacy ACPI OSes, and
may not have any 32-bit addressable system RAM. To support ACPI on these
systems, we need to be able to relax the 4 GB allocation restriction.
So add a PCD PcdAcpiExposedTableVersions containing a bitmask describing
which ACPI versions are targeted, and wire it up it up to the memory
allocation calls in AcpiTableDxe/AcpiTableProtocol.c. I.e., if ACPI v1.0b
is not among the supported versions, the memory allocations are not limited
to 4 GB, and only table types that carry 64-bit addresses are emitted.
Note that this will inhibit the publishing of any tables that carry only
32-bit addresses, i.e., RSDPv1, RSDTv1 and RSDTv3.
Qiu Shumin [Sun, 21 Feb 2016 07:55:14 +0000 (15:55 +0800)]
MdeModulePkg: Add sample help information for HelloWorld application.
Since Shell supports finding help information from resource section
of application image. We enhance the HelloWorld to add help information
string. After the HelloWorld are loaded in system the help string will
be stored in resource section of the application image.
Qiu Shumin [Sun, 21 Feb 2016 07:52:53 +0000 (15:52 +0800)]
ShellPkg: Support finding help message embedded in resource section.
UEFI Shell scandalizes the help message in spec level so that a standalone
UEFI shell application can never get "-?" switch, instead the Shell core
(interpreter) detects the "-?" and finds .MAN file for that shell
application in certain spec defined paths, then show the help extracted
from that .MAN file.
But it means distributing a UEFI shell application not only means
distributing a .EFI file but also distributing a .MAN file. If the text
formatted .MAN file is corrupted (edited by user by mistake), or is
missing (deleted by user by mistake), no help will be shown to user.
So this patch enhance the Shell to make it support finding help message
imbedded in resource section of application image.
The AArch64 DAIF bits are different for reading (mrs) versus writing (msr).
The bitmask definitions assumed they were the same causing incorrect
results when trying to determine the current interrupt state through
GetInterruptState.
The logic for interpreting the DAIF read data using the csel instruction
was also incorrect and is fixed.
Replaced the magic numbers in DisableInterrupts.S and EnableInterrupts.S
with definitions for the DAIF write (daifset/daifclr) IRQ field.
Cohen, Eugene [Mon, 22 Feb 2016 23:08:27 +0000 (23:08 +0000)]
ArmPkg: CpuDxe: don't track interrupt state in a global variable
Update the CpuDxe driver to remove an assumption that it is the only
component modifying interrupt state since this can be done through BaseLib
as well. Instead of using a global variable for last interrupt state we
now check the current PSTATE value directly.
Cohen, Eugene [Mon, 22 Feb 2016 23:08:27 +0000 (23:08 +0000)]
ArmPkg: CpuDxe: fix AArch64 interrupt read masks
The AArch64 DAIF bits are different for reading (mrs) versus writing
(msr). The bitmask definitions assumed they were the same causing
incorrect results when trying to determine the current interrupt
state through ArmGetInterruptState.
The logic for interpreting the DAIF read data using the csel instruction
was also incorrect and is fixed.
Dandan Bi [Tue, 26 Jan 2016 08:07:18 +0000 (16:07 +0800)]
MdeModulePkg: Refine the code in BootMaintenanceManagerUiLib
Refine the code in function Var_UpdateDriverOption and Var_UpdateBootOption,
use the existed API(EfiBootManagerInitializeLoadOption and
EfiBootManagerAddLoadOptionVariable) supplied by UefiBootManagerLib
to replace the same logic in the two functions. And remove the useless
code.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Dandan Bi <dandan.bi@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
Qin Long [Tue, 23 Feb 2016 03:12:51 +0000 (11:12 +0800)]
CryptoPkg/OpensslLib: Upgrade OpenSSL version to 1.0.2f
OpenSSL has released version 1.0.2f with two security fixes
(http://www.openssl.org/news/secadv/20160128.txt) at 28-Jan-2016.
Upgrade the supported OpenSSL version in CryptoPkg/OpensslLib
to catch the latest release 1.0.2f.
(NOTE: The patch file was just re-generated, and no new source
changes was introduced for 1.0.2f enabling)
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qin Long <qin.long@intel.com> Reviewed-by: Ting Ye <ting.ye@intel.com>
Michael Kinney [Thu, 18 Feb 2016 21:09:23 +0000 (13:09 -0800)]
UefiCpuPkg/PiSmmCpuDxeSmm: Enable/Restore XD in SMM
If XD is supported, then SMM enables it. The non-SMM execution
environment can choose to enable or disable XD, so the state of
XD must be detected in each SMI and be enabled/restored.
Cc: Jeff Fan <jeff.fan@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com> Regression-tested-by: Laszlo Ersek <lersek@redhat.com>
Michael Kinney [Thu, 18 Feb 2016 17:46:25 +0000 (09:46 -0800)]
UefiCpuPkg/PiSmmCpuDxeSmm: Add EFIAPI to CheckFeatureSupported()
The function CheckFeatureSupported() is used as an EFI_AP_PROCEDURE
in the MP Services Protocol service StartAllAPs(). Any function
used as an EFI_AP_PROCEDURE must use EFIAPI calling convention.
Cc: Laszlo Ersek <lersek@redhat.com> Cc: Jeff Fan <jeff.fan@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
The HeaderLog field of the PCIe Extended Capabilities Advanced Error
Reporting structure was incorrectly defined as a 32-bit field. The PCIe
2.1 Base Specification, section 7.10, lists this as 16 bytes, or 4
DWORDs.
Qiu Shumin [Thu, 18 Feb 2016 05:12:58 +0000 (13:12 +0800)]
ShellPkg: Fix the last command doesn't work in a script.
When the last line in a script file is not an empty line the Shell
will not execute the command in the last line. The patch refine the
logic in function 'ShellFileHandleReturnLine' and fix the issue.
Ruiyu Ni [Thu, 18 Feb 2016 06:25:56 +0000 (14:25 +0800)]
MdeModulePkg/Partition: Use proper partition number for MBR
UEFI Spec 2.3.1.D Section 9.3.5.1 says Partitions are numbered
according to their entry in their respective partition table,
starting with 1.
Update the code for MBR partition to follow this rule.
Leif Lindholm [Thu, 18 Feb 2016 10:23:04 +0000 (10:23 +0000)]
ArmPlatformPkg: Remove orphaned Juno Makefile
The Juno .dsc and .fdf files were recently deleted (currently held
in OpenPlatformPkg), but a spurious Makefile for building using it
was left in place. Drop the Makefile to complete the cleanup.
Harking back to the earliest days of software development for AArch64,
this piece of code abstracted away "early setup stuff" when the
software model came out of reset.
However, it is unmaintained and has been superseded by ARM Trusted
Firmware. So drop it.
Ard Biesheuvel [Thu, 18 Feb 2016 08:59:09 +0000 (09:59 +0100)]
ArmVirtPkg: ArmVirtQemu: expose only 64-bit entry point for v3.0+ SMBIOS
The legacy 32-bit SMBIOS entry point has little use on AARCH64 systems,
since many such systems have no 32-bit addressable physical RAM, and so
OSes that implement SMBIOS will have to be able to deal with the 64-bit
entry point anyway.
Given that the OS will map main memory in 1 GB chunks if it can, and that
punching a page sized hole (e.g., for SMBIOS data) into it will result in
the whole 1 GB chunk being mapped using 2 MB and 4 KB blocks instead, it
is important to group memory reservations from the OS as much as we can,
and allocating below 4 GB for no good reason interferes with that.
This is especially important under virtualization, considering that each
*level* of lookup at stage 1 (the guest virtual page table) will result in
a full page table walk at stage 2 (the guest PA to host PA mapping).
So expose only the 64-bit entry point when the SMBIOS tables adhere to
version 3.0 or later.
Qiu Shumin [Tue, 16 Feb 2016 01:49:05 +0000 (09:49 +0800)]
ShellPkg: Do NULL pointer check before the pointer is used.
The pointer 'FileInterface->Buffer' returned from 'AllocateZeroPool' in function
'CreateFileInterfaceMem' may be NULL and will be dereferenced at the following code.
Jiaxin Wu [Thu, 21 Jan 2016 17:35:58 +0000 (01:35 +0800)]
MdeModulePkg: Define a general function to create DNS QName
This patch is used to define a general function to create
DNS QName.
QName is a domain name represented as a sequence
of labels, where each label consists of a length octet
followed by that number of octets. The domain name terminates
with the zero length octet for the null label of the root.
Cc: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com> Cc: El-Haj-Mahmoud Samer <samer.el-haj-mahmoud@hpe.com> Cc: Ye Ting <ting.ye@intel.com> Cc: Fu Siyuan <siyuan.fu@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Hegde Nagaraj P <nagaraj-p.hegde@hpe.com> Reviewed-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com>
The way the first use of the "_maxMode" variable is commented out (i.e.,
together with the enclosing "if" statement) in GetOptimum() triggers the
"misleading-indentation" warning that is new in gcc-6.0, for the block of
code that originally depended on the "if" statement. Gcc believes
(mistakenly) that the programmer believes (mistakenly) that the block
depends on (repIndex == 0) higher up.
Restore the if statement, with a controlling expression that comprises the
constant 1 and "_maxMode" commented out.
Yonghong Zhu [Wed, 17 Feb 2016 03:24:47 +0000 (11:24 +0800)]
BaseTools/VolInfo: add some generic options
The Help information provided by VolInfo does not follow the EDK II Tools
Design doc, so this patch update the help text and add the generic
options: -d, -v, -q, -s.
Yonghong Zhu [Wed, 17 Feb 2016 06:48:28 +0000 (14:48 +0800)]
BaseTools: report an error message when failed to start build command
when build.py was failing to build packages but was not providing any
error message except for “Failed to start command.” this patch provide
the error message.
Daryl McDaniel [Tue, 16 Feb 2016 18:47:30 +0000 (10:47 -0800)]
StdLib/BsdSocketLib: Fix minor memory leak by freeing rrecp on error return.
The error return is triggered by one of two conditions:
1. rrecp is NULL (calloc failed)
2. strdup(dname) returns NULL
Previously, the function just returned NULL. This patch adds a call to
free rrecp before returning NULL. Since the free() function will properly
do nothing when called with a NULL parameter, it is not necessary to
separate the two tests into separate if clauses.
Reported-by: Colin King <colin.king@canonical.com>
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Daryl McDaniel <edk2-lists@mc2research.org> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
Michael LeMay [Fri, 29 Jan 2016 17:53:47 +0000 (09:53 -0800)]
BaseTools/GenFw: Correct datatypes in diagnostic messages and check for string termination
This patch revises multiple diagnostic messages to use correct
datatypes. It also checks that a symbol name that is about to be used
in a diagnostic message is terminated by a null character within the
contents of the string table section so that the print routine does
not read past the end of the string table section contents when
reading the symbol name.
Michael LeMay [Fri, 29 Jan 2016 04:17:13 +0000 (12:17 +0800)]
BaseTools/GenFw: Enhance error message for bad symbol definitions
This patch expands the error message that is output when GenFw
encounters a bad symbol definition or an unsupported symbol type. It
displays the symbol name, the symbol address, and a message that
describes both possibilities (bad symbol definition or unsupported
symbol type). It also provides two examples of unsupported symbol
types.
Furthermore, this patch revises the conditional for detecting bad
symbol definitions to eliminate a redundant test (a Sym->st_shndx
value of SHN_ABS should certainly be greater than mEhdr->e_shnum) and
to change another test from 'Sym->st_shndx > mEhdr->e_shnum' to
'Sym->st_shndx >= mEhdr->e_shnum' for consistency with the test in
GetShdrByIndex.
Michael LeMay [Fri, 29 Jan 2016 03:23:21 +0000 (11:23 +0800)]
BaseTools/GenFw: Exit with error when header lookup fails
This patch revises GetPhdrByIndex and GetShdrByIndex to cause GenFw to
exit with an error message when a section header lookup fails. The
current behavior of those functions in such circumstances is to return
NULL, which can cause GenFw to subsequently fault when it attempts to
dereference the null pointer.
Fu Siyuan [Fri, 5 Feb 2016 02:15:37 +0000 (10:15 +0800)]
MdeModulePkg: Make the DEBUG info consistent in SNP driver.
SNP driver will print the UNDI returned StatFlags:StatCode with DEBUG macro,
while in some please it uses the reverse order (StatCode:StatFlags). This patch
is to make the print info consistent, that StatFlags always come first.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Fu Siyuan <siyuan.fu@intel.com> Reviewed-by: Jiaxin Wu <jiaxin.wu@intel.com> Reviewed-by: Ye Ting <ting.ye@intel.com>
jiewen yao [Fri, 29 Jan 2016 08:55:40 +0000 (16:55 +0800)]
MdeModulePkg: Update PropertiesTable for MemoryAttributesTable.
MemoryAttributesTable generation need information in
PropertiesTable.
In memory attributes table generation path,
PropertiesTable need record original memory map and do
not merge the new memory map entry cross original
memory map boundary.
Add MemoryAttributesTable generation in DxeCore.
We leverage the information collected by original
PropertiesTable, and publish runtime code/data to
another standalone table. So that this is a
compatible solution to report more PE Code/Data
information.
edk2 dev [Tue, 16 Feb 2016 02:47:30 +0000 (10:47 +0800)]
BaseTools-Source: Update displayed version information
Standardize the --version and --help text command-line options
Updated tools to correctly display the Build number when using command-line
option --version and exit successfully after termination.
Ecc was also updated to print informational messages after the options are
parsed.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Larry Hauch <larry.hauch@intel.com> Reviewed-by: Erik Bjorge <erik.c.bjorge@intel.com>
Before the merger of the authenticated and non-authenticated variable
drivers (commit fa0737a839d0), we had to match the varstore header GUID in
"OvmfPkg/VarStore.fdf.inc" to SECURE_BOOT_ENABLE, because the opposite
GUID would cause either driver to fail an assertion. The header structures
for individual variables residing in the varstore were different
(VARIABLE_HEADER vs. AUTHENTICATED_VARIABLE_HEADER), and each driver could
only handle its own, so this GUID enforcement was necessary.
Since the unification of the variable driver however, it treats (a)
variable store format, and (b) AuthVariableLib instance as independent
characteristics; it can always manipulate variable stores with both header
types. All variations boot now; the difference is whether authenticated
variables, and special variables computed from them (like SecureBoot) are
supported at runtime:
At the moment, SECURE_BOOT_ENABLE selects between cases #2 (FALSE) and #3
(TRUE). That is, it controls both the varstore header GUID in
"OvmfPkg/VarStore.fdf.inc", and the AuthVariableLib resolution in the DSC
files.
Exploiting the unified driver's flexibility, we can simplify
"OvmfPkg/VarStore.fdf.inc" by picking the AuthenticatedVariable GUID as a
constant, and letting SECURE_BOOT_ENABLE control only the AuthVariableLib
resolution. This amounts to SECURE_BOOT_ENABLE choosing between cases #3
(TRUE) and #4 (FALSE), with identical results as before.
Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Star Zeng <star.zeng@intel.com>
Ref: http://thread.gmane.org/gmane.comp.bios.edk2.devel/7319/focus=7344
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
Star Zeng [Fri, 29 Jan 2016 08:24:10 +0000 (16:24 +0800)]
MdeModulePkg DxeCore: Missing change for OEM reserved memory type at R17460
At the end of CoreFreePoolI(), the check to see if it is a specific
memory type should also cover OEM reserved memory type.
It was missed when adding OEM reserved memory type support at R17460.
Cohen, Eugene [Wed, 10 Feb 2016 23:05:18 +0000 (23:05 +0000)]
ArmPkg: DefaultExceptionHandler fixes for use with DxeCore
Modify the DefaultExceptionHandler (uefi-variant) so it can be used by
DxeCore (via CpuExceptionHandlerLib) where the debug info table is not
yet published at library constructor time.