diff options
author | Keshav Amburay | 2013-06-17 17:20:42 +0530 |
---|---|---|
committer | Keshav Amburay | 2013-06-17 17:20:42 +0530 |
commit | 87ddbe15cba1c1ea36d8b6c784d94efb8abacf47 (patch) | |
tree | e1c3c5011c6465f3d3d64de9a089dc4b7a30b2b4 | |
parent | fe5182ad425061d236e91c2412b1934287a29c96 (diff) | |
download | aur-87ddbe15cba1c1ea36d8b6c784d94efb8abacf47.tar.gz |
New pkg: ovmf-tianocore-edk2-svn
-rw-r--r-- | .SRCINFO | 58 | ||||
-rw-r--r-- | PKGBUILD | 264 | ||||
-rw-r--r-- | UDK-MdePkg-Revert-PathNodeCount.patch | 660 | ||||
-rw-r--r-- | ovmf-tianocore-edk2.install | 16 | ||||
-rw-r--r-- | refind-efi.install | 31 | ||||
-rw-r--r-- | refind_linux.conf | 5 |
6 files changed, 140 insertions, 894 deletions
@@ -1,34 +1,40 @@ -pkgbase = refind-efi-git - pkgdesc = Rod Smith's fork of rEFIt UEFI Boot Manager - built with Tianocore UDK libs - GIT Version - pkgver = 08c9041 +pkgbase = ovmf-tianocore-edk2-svn + pkgdesc = UEFI Firmware (OVMF) for Virtual Machines (QEMU) - from Tianocore EDK2 - SVN Version + pkgver = 14427 pkgrel = 1 - url = http://www.rodsbooks.com/refind/index.html - install = refind-efi.install + url = http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF + install = ovmf-tianocore-edk2.install arch = any - license = GPL3 - license = custom - makedepends = git + license = BSD makedepends = subversion makedepends = python2 - depends = dosfstools - depends = efibootmgr - optdepends = mactel-boot: For bless command in Apple Mac systems - optdepends = bash: For /usr/bin/refind-mkfont script - optdepends = imagemagick: For /usr/bin/refind-mkfont script - provides = refind-efi - conflicts = refind-efi + provides = ovmf-svn + conflicts = ovmf-svn + noextract = openssl-0.9.8w.tar.gz options = !strip options = docs options = !makeflags - source = refind::git+git://git.code.sf.net/p/refind/code#branch=master - source = tianocore-udk-svn/BaseTools::svn+https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1/BaseTools - source = tianocore-udk-svn/MdePkg::svn+https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1/MdePkg - source = tianocore-udk-svn/MdeModulePkg::svn+https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1/MdeModulePkg - source = tianocore-udk-svn/IntelFrameworkPkg::svn+https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1/IntelFrameworkPkg - source = tianocore-udk-svn/IntelFrameworkModulePkg::svn+https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1/IntelFrameworkModulePkg - source = tianocore-udk-svn/EdkCompatibilityPkg::svn+https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1/EdkCompatibilityPkg - source = UDK-MdePkg-Revert-PathNodeCount.patch - source = refind_linux.conf + source = http://www.openssl.org/source/openssl-0.9.8w.tar.gz + source = tianocore-edk2-svn/BaseTools::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/BaseTools + source = tianocore-edk2-svn/MdePkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdePkg + source = tianocore-edk2-svn/MdeModulePkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg + source = tianocore-edk2-svn/IntelFrameworkPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/IntelFrameworkPkg + source = tianocore-edk2-svn/IntelFrameworkModulePkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/IntelFrameworkModulePkg + source = tianocore-edk2-svn/PcAtChipsetPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/PcAtChipsetPkg + source = tianocore-edk2-svn/UefiCpuPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/UefiCpuPkg + source = tianocore-edk2-svn/OptionRomPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/OptionRomPkg + source = tianocore-edk2-svn/CryptoPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/CryptoPkg + source = tianocore-edk2-svn/SecurityPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/SecurityPkg + source = tianocore-edk2-svn/ShellPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/ShellPkg + source = tianocore-edk2-svn/FatBinPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/FatBinPkg + source = tianocore-edk2-svn/OvmfPkg::svn+https://svn.code.sf.net/p/edk2/code/trunk/edk2/OvmfPkg + sha1sums = 6dd276534f87aaca4bee679537fef3aaa6b43069 + sha1sums = SKIP + sha1sums = SKIP + sha1sums = SKIP + sha1sums = SKIP + sha1sums = SKIP + sha1sums = SKIP sha1sums = SKIP sha1sums = SKIP sha1sums = SKIP @@ -36,8 +42,6 @@ pkgbase = refind-efi-git sha1sums = SKIP sha1sums = SKIP sha1sums = SKIP - sha1sums = 4d1992699f9b48dd2b7e6bd6c0b25fc065f75894 - sha1sums = 3d53eb615c3363d45feb95b9bfbf1d5491bf1c24 -pkgname = refind-efi-git +pkgname = ovmf-tianocore-edk2-svn @@ -1,104 +1,91 @@ # Maintainer: Keshav Padram <(the.ridikulus.rat) (aatt) (gemmaeiil) (ddoott) (ccoomm)> -# Contributor: Tobias Powalowski <tpowa@archlinux.org> ####### -_gitroot="git://git.code.sf.net/p/refind/code" -_gitname="refind" -_gitbranch="master" +_TIANOCORE_SVN_URL="https://svn.code.sf.net/p/edk2/code/trunk/edk2" +_TIANO_DIR_="tianocore-edk2-svn" ####### ####### -_TIANOCORE_SVN_URL="https://svn.code.sf.net/p/edk2/code/branches/UDK2010.SR1" -# BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg EdkCompatibilityPkg -_TIANO_DIR_="tianocore-udk-svn" +_TIANOCORE_PKG="OvmfX64" +_TIANOCORE_TARGET="RELEASE" +_UDK_TARGET="OvmfPkg/OvmfPkgX64.dsc" +_COMPILER="GCC46" ####### ####### -_TIANOCORE_PKG="Mde" -_TIANOCORE_TARGET="RELEASE" -_UDK_TARGET="${_TIANOCORE_PKG}Pkg/${_TIANOCORE_PKG}Pkg.dsc" -_COMPILER="GCC46" +_OPENSSL_VERSION="0.9.8w" ####### -_pkgname="refind-efi" -pkgname="${_pkgname}-git" +_pkgname="ovmf-tianocore-edk2" +pkgname="${_pkgname}-svn" -pkgver=08c9041 +pkgver=14427 pkgrel=1 -pkgdesc="Rod Smith's fork of rEFIt UEFI Boot Manager - built with Tianocore UDK libs - GIT Version" -url="http://www.rodsbooks.com/refind/index.html" +pkgdesc="UEFI Firmware (OVMF) for Virtual Machines (QEMU) - from Tianocore EDK2 - SVN Version" +url="http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF" arch=('any') -license=('GPL3' 'custom') +license=('BSD') -makedepends=('git' 'subversion' 'python2') -depends=('dosfstools' 'efibootmgr') -optdepends=('mactel-boot: For bless command in Apple Mac systems' - 'bash: For /usr/bin/refind-mkfont script' - 'imagemagick: For /usr/bin/refind-mkfont script') +makedepends=('subversion' 'python2') options=('!strip' 'docs' '!makeflags') -conflicts=('refind-efi') -provides=('refind-efi') +conflicts=('ovmf-svn') +provides=('ovmf-svn') install="${_pkgname}.install" -source=("${_gitname}::git+${_gitroot}#branch=${_gitbranch}" - "${_TIANO_DIR_}/BaseTools::svn+${_TIANOCORE_SVN_URL}/BaseTools" - "${_TIANO_DIR_}/MdePkg::svn+${_TIANOCORE_SVN_URL}/MdePkg" - "${_TIANO_DIR_}/MdeModulePkg::svn+${_TIANOCORE_SVN_URL}/MdeModulePkg" - "${_TIANO_DIR_}/IntelFrameworkPkg::svn+${_TIANOCORE_SVN_URL}/IntelFrameworkPkg" - "${_TIANO_DIR_}/IntelFrameworkModulePkg::svn+${_TIANOCORE_SVN_URL}/IntelFrameworkModulePkg" - "${_TIANO_DIR_}/EdkCompatibilityPkg::svn+${_TIANOCORE_SVN_URL}/EdkCompatibilityPkg" - 'UDK-MdePkg-Revert-PathNodeCount.patch' - 'refind_linux.conf') +source=("http://www.openssl.org/source/openssl-${_OPENSSL_VERSION}.tar.gz") -sha1sums=('SKIP' +for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg ; do + source+=("${_TIANO_DIR_}/${_DIR_}::svn+${_TIANOCORE_SVN_URL}/${_DIR_}") +done + +for _DIR_ in PcAtChipsetPkg UefiCpuPkg OptionRomPkg CryptoPkg SecurityPkg ShellPkg FatBinPkg OvmfPkg ; do + source+=("${_TIANO_DIR_}/${_DIR_}::svn+${_TIANOCORE_SVN_URL}/${_DIR_}") +done + +sha1sums=('6dd276534f87aaca4bee679537fef3aaa6b43069' + 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' 'SKIP' - '4d1992699f9b48dd2b7e6bd6c0b25fc065f75894' - '3d53eb615c3363d45feb95b9bfbf1d5491bf1c24') + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP' + 'SKIP') + +noextract=("openssl-${_OPENSSL_VERSION}.tar.gz") pkgver() { - cd "${srcdir}/${_gitname}/" - git describe --always | sed 's|-|.|g' + cd "${srcdir}/OvmfPkg/" + svnversion | tr -d [A-z] } -_tianocore_udk_common() { - - ## Unset all FLAGS - unset CFLAGS - unset CPPFLAGS - unset CXXFLAGS - unset LDFLAGS - unset MAKEFLAGS - - ## Setup UDK Environment variables - export _UDK_DIR="${srcdir}/${_TIANO_DIR_}_build" - export EDK_TOOLS_PATH="${_UDK_DIR}/BaseTools" - - rm -rf "${_UDK_DIR}/" || true - mkdir -p "${_UDK_DIR}/" +_setup_openssl_udk_dir() { - for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg EdkCompatibilityPkg ; do - mv "${srcdir}/${_DIR_}" "${_UDK_DIR}/${_DIR_}" - done - - cd "${_UDK_DIR}/" + ## Download OpenSSL Sources + bsdtar -C "${_UDK_DIR}/CryptoPkg/Library/OpensslLib/" -xf "${srcdir}/openssl-${_OPENSSL_VERSION}.tar.gz" + echo - ## Fix PcdMaximumPathNodeCount compile error - patch -Np1 -R -i "${srcdir}/UDK-MdePkg-Revert-PathNodeCount.patch" + ## Apply EDK2 Patch for OpenSSL + cd "${_UDK_DIR}/CryptoPkg/Library/OpensslLib/openssl-${_OPENSSL_VERSION}/" + patch -p0 -i "${_UDK_DIR}/CryptoPkg/Library/OpensslLib/EDKII_openssl-${_OPENSSL_VERSION}.patch" echo - ## Cleanup UDK config files - rm -rf "${_UDK_DIR}/Build/" || true - rm -rf "${_UDK_DIR}/Conf/" || true - mkdir -p "${_UDK_DIR}/Conf/" - mkdir -p "${_UDK_DIR}/Build/" + ## Setup OpenSSL headers in EDK2 dir + cd "${_UDK_DIR}/CryptoPkg/Library/OpensslLib/" + chmod 0755 "${_UDK_DIR}/CryptoPkg/Library/OpensslLib/Install.sh" + "${_UDK_DIR}/CryptoPkg/Library/OpensslLib/Install.sh" + +} + +_tianocore_makefile_fixes() { ## UDK BaseTools requires python2 sed 's|python |python2 |g' -i "${EDK_TOOLS_PATH}/BinWrappers/PosixLike"/* || true @@ -122,29 +109,14 @@ _tianocore_udk_common() { sed "s|TARGET = DEBUG|TARGET = ${_TIANOCORE_TARGET}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true sed "s|TOOL_CHAIN_TAG = MYTOOLS|TOOL_CHAIN_TAG = ${_COMPILER}|g" -i "${EDK_TOOLS_PATH}/Conf/target.template" || true - ## Setup UDK Environment - chmod +x "${_UDK_DIR}/BaseTools/BuildEnv" - source "${_UDK_DIR}/BaseTools/BuildEnv" BaseTools - echo - - ## Compile UDK BaseTools - make -C "${EDK_TOOLS_PATH}" - echo - - ## Compile UDK x86_64-UEFI Libraries - "${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "X64" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}" - echo - - ## Compile UDK i386-UEFI Libraries - "${EDK_TOOLS_PATH}/BinWrappers/PosixLike/build" -p "${_UDK_TARGET}" -a "IA32" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}" - echo - - ## Fix UDK Target ARCH for rEFInd - sed "s|IA32|X64 IA32|g" -i "${_UDK_DIR}/Conf/target.txt" || true - } -_build_refind-efi-common() { +build() { + + if [[ "${CARCH}" != "x86_64" ]]; then + echo "${pkgname} package can be built only in a x86_64 system. Exiting." + exit 1 + fi ## Unset all FLAGS unset CFLAGS @@ -153,51 +125,53 @@ _build_refind-efi-common() { unset LDFLAGS unset MAKEFLAGS - rm -rf "${srcdir}/${_gitname}_build_${_UEFI_ARCH}/" || true - cp -r "${srcdir}/${_gitname}_build" "${srcdir}/${_gitname}_build_${_UEFI_ARCH}/" + ## Setup UDK Environment variables + export _UDK_DIR="${srcdir}/${_TIANO_DIR_}" + export EDK_TOOLS_PATH="${_UDK_DIR}/BaseTools" - cd "${srcdir}/${_gitname}_build_${_UEFI_ARCH}/" + rm -rf "${_UDK_DIR}/" || true + mkdir -p "${_UDK_DIR}/" - ## Fix UDK Path in rEFInd Makefiles - sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/${_gitname}_build_${_UEFI_ARCH}/Make.tiano" || true - sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/${_gitname}_build_${_UEFI_ARCH}/filesystems/Make.tiano" || true - sed "s|EDK2BASE = /usr/local/UDK2010/MyWorkSpace|EDK2BASE = ${_UDK_DIR}|g" -i "${srcdir}/${_gitname}_build_${_UEFI_ARCH}/gptsync/Make.tiano" || true + for _DIR_ in BaseTools MdePkg MdeModulePkg IntelFrameworkPkg IntelFrameworkModulePkg ; do + mv "${srcdir}/${_DIR_}" "${_UDK_DIR}/${_DIR_}" + done - ## Clean any existing binary files in git repo - ARCH="${_UEFI_ARCH}" make clean || true - echo + for _DIR_ in PcAtChipsetPkg UefiCpuPkg OptionRomPkg CryptoPkg SecurityPkg ShellPkg FatBinPkg OvmfPkg ; do + mv "${srcdir}/${_DIR_}" "${_UDK_DIR}/${_DIR_}" + done - ## Compile refind.efi - ARCH="${_UEFI_ARCH}" make tiano - echo + cd "${_UDK_DIR}/" - ## Compile UEFI FS drivers - ARCH="${_UEFI_ARCH}" make fs - echo + ## Cleanup UDK config files + rm -rf "${_UDK_DIR}/Build/" || true + rm -rf "${_UDK_DIR}/Conf/" || true + mkdir -p "${_UDK_DIR}/Conf/" + mkdir -p "${_UDK_DIR}/Build/" -} - -build() { + ## Fix PcdMaximumPathNodeCount compile error + # patch -Np1 -R -i "${srcdir}/UDK-MdePkg-Revert-PathNodeCount.patch" + # echo - if [[ "${CARCH}" != "x86_64" ]]; then - echo "${pkgname} package can be built only in a x86_64 system. Exiting." - exit 1 - fi + ## Setup OpenSSL libs in EDK2 dir for Secure Boot support + _setup_openssl_udk_dir + echo - _tianocore_udk_common + _tianocore_makefile_fixes echo - rm -rf "${srcdir}/${_gitname}_build/" || true - cp -r "${srcdir}/${_gitname}" "${srcdir}/${_gitname}_build" + cd "${_UDK_DIR}/" - cd "${srcdir}/${_gitname}_build/" + ## Setup UDK Environment + chmod +x "${_UDK_DIR}/BaseTools/BuildEnv" + source "${_UDK_DIR}/BaseTools/BuildEnv" BaseTools + echo - _UEFI_ARCH="x86_64" - _build_refind-efi-common + ## Compile UDK BaseTools + make -C "${EDK_TOOLS_PATH}" echo - _UEFI_ARCH="ia32" - _build_refind-efi-common + ## Compile OVMF binary + "${_UDK_DIR}/OvmfPkg/build.sh" -a "X64" -b "${_TIANOCORE_TARGET}" -t "${_COMPILER}" -D "SECURE_BOOT_ENABLE=TRUE" -D "BUILD_NEW_SHELL" echo } @@ -205,59 +179,7 @@ build() { package() { ## Install the rEFInd UEFI applications - install -d "${pkgdir}/usr/lib/refind/" - install -D -m0644 "${srcdir}/${_gitname}_build_x86_64/refind/refind_x64.efi" "${pkgdir}/usr/lib/refind/refind_x64.efi" - install -D -m0644 "${srcdir}/${_gitname}_build_ia32/refind/refind_ia32.efi" "${pkgdir}/usr/lib/refind/refind_ia32.efi" - - ## Install UEFI drivers built from rEFInd - install -d "${pkgdir}/usr/lib/refind/drivers_x64/" - install -d "${pkgdir}/usr/lib/refind/drivers_ia32/" - install -D -m0644 "${srcdir}/${_gitname}_build_x86_64/drivers_x64"/*_x64.efi "${pkgdir}/usr/lib/refind/drivers_x64/" - install -D -m0644 "${srcdir}/${_gitname}_build_ia32/drivers_ia32"/*_ia32.efi "${pkgdir}/usr/lib/refind/drivers_ia32/" - - ## Install UEFI applications built from rEFInd - install -d "${pkgdir}/usr/lib/refind/tools_x64/" - install -d "${pkgdir}/usr/lib/refind/tools_ia32/" - install -D -m0644 "${srcdir}/${_gitname}_build_x86_64/gptsync/gptsync_x64.efi" "${pkgdir}/usr/lib/refind/tools_x64/gptsync_x64.efi" - install -D -m0644 "${srcdir}/${_gitname}_build_ia32/gptsync/gptsync_ia32.efi" "${pkgdir}/usr/lib/refind/tools_ia32/gptsync_ia32.efi" - - ## Install the rEFInd config file - install -d "${pkgdir}/usr/lib/refind/config/" - install -D -m0644 "${srcdir}/${_gitname}_build/refind.conf-sample" "${pkgdir}/usr/lib/refind/config/refind.conf" - install -D -m0644 "${srcdir}/refind_linux.conf" "${pkgdir}/usr/lib/refind/config/refind_linux.conf" - - ## Install the rEFInd docs - install -d "${pkgdir}/usr/share/refind/docs/html/" - install -d "${pkgdir}/usr/share/refind/docs/Styles/" - install -D -m0644 "${srcdir}/${_gitname}_build/docs/refind"/* "${pkgdir}/usr/share/refind/docs/html/" - install -D -m0644 "${srcdir}/${_gitname}_build/docs/Styles"/* "${pkgdir}/usr/share/refind/docs/Styles/" - install -D -m0644 "${srcdir}/${_gitname}_build/README.txt" "${pkgdir}/usr/share/refind/docs/README" - install -D -m0644 "${srcdir}/${_gitname}_build/NEWS.txt" "${pkgdir}/usr/share/refind/docs/NEWS" - rm -f "${pkgdir}/usr/share/refind/docs/html/.DS_Store" || true - - ## Install the rEFInd fonts - install -d "${pkgdir}/usr/share/refind/fonts/" - install -D -m0644 "${srcdir}/${_gitname}_build/fonts"/* "${pkgdir}/usr/share/refind/fonts/" - rm -f "${pkgdir}/usr/share/refind/fonts/mkfont.sh" - - ## Install the rEFInd mkfont.sh - install -d "${pkgdir}/usr/bin/" - install -D -m0755 "${srcdir}/${_gitname}_build/fonts/mkfont.sh" "${pkgdir}/usr/bin/refind-mkfont" - - ## Install the rEFInd icons - install -d "${pkgdir}/usr/share/refind/icons/" - install -D -m0644 "${srcdir}/${_gitname}_build/icons"/* "${pkgdir}/usr/share/refind/icons/" - - ## Install the rEFInd images - install -d "${pkgdir}/usr/share/refind/images/" - install -D -m0644 "${srcdir}/${_gitname}_build/images"/*.{png,bmp} "${pkgdir}/usr/share/refind/images/" - - ## Install the rEFInd keys - install -d "${pkgdir}/usr/share/refind/keys/" - install -D -m0644 "${srcdir}/${_gitname}_build/keys"/* "${pkgdir}/usr/share/refind/keys/" - - ## Install the rEFIt license file, since rEFInd is a fork of rEFIt - install -d "${pkgdir}/usr/share/licenses/refind/" - install -D -m0644 "${srcdir}/${_gitname}_build/LICENSE.txt" "${pkgdir}/usr/share/licenses/refind/LICENSE" + install -d "${pkgdir}/usr/lib/ovmf/x86_64" + install -D -m0644 "${_UDK_DIR}/Build/OvmfX64/RELEASE_GCC46/FV/OVMF.fd" "${pkgdir}/usr/lib/ovmf/x86_64/bios.bin" } diff --git a/UDK-MdePkg-Revert-PathNodeCount.patch b/UDK-MdePkg-Revert-PathNodeCount.patch deleted file mode 100644 index 1b8f5a44b436..000000000000 --- a/UDK-MdePkg-Revert-PathNodeCount.patch +++ /dev/null @@ -1,660 +0,0 @@ -commit 771729c77fa49cf0ff17491f371003c4f5d66f85 -Author: niruiyu <niruiyu@6f19259b-4bc3-4df7-8a09-765794883524> -Date: Mon Sep 24 03:20:35 2012 +0000 - - Add new API IsDevicePathValid() to UefiDevicePathLib. - - Signed-off-by: Ruiyu Ni<ruiyu.ni@intel.com> - Reviewed-by: Liming Gao<liming.gao@intel.com> - Reviewed-by: Kinney Michael D<michael.d.kinney@intel.com> - - git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13737 6f19259b-4bc3-4df7-8a09-765794883524 - -diff --git a/MdePkg/Include/Library/DevicePathLib.h b/MdePkg/Include/Library/DevicePathLib.h -index 68b1f1b..37acd45 100644 ---- a/MdePkg/Include/Library/DevicePathLib.h -+++ b/MdePkg/Include/Library/DevicePathLib.h -@@ -4,7 +4,7 @@ - This library provides defines, macros, and functions to help create and parse
- EFI_DEVICE_PATH_PROTOCOL structures.
-
--Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials are licensed and made available under
- the terms and conditions of the BSD License that accompanies this distribution.
- The full text of the license may be found at
-@@ -21,6 +21,28 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - #define END_DEVICE_PATH_LENGTH (sizeof (EFI_DEVICE_PATH_PROTOCOL))
-
- /**
-+ Determine whether a given device path is valid.
-+ If DevicePath is NULL, then ASSERT().
-+
-+ @param DevicePath A pointer to a device path data structure.
-+ @param MaxSize The maximum size of the device path data structure.
-+
-+ @retval TRUE DevicePath is valid.
-+ @retval FALSE The length of any node node in the DevicePath is less
-+ than sizeof (EFI_DEVICE_PATH_PROTOCOL).
-+ @retval FALSE If MaxSize is not zero, the size of the DevicePath
-+ exceeds MaxSize.
-+ @retval FALSE If PcdMaximumDevicePathNodeCount is not zero, the node
-+ count of the DevicePath exceeds PcdMaximumDevicePathNodeCount.
-+**/
-+BOOLEAN
-+EFIAPI
-+IsDevicePathValid (
-+ IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
-+ IN UINTN MaxSize
-+ );
-+
-+/**
- Returns the Type field of a device path node.
-
- Returns the Type field of the device path node specified by Node.
-@@ -123,7 +145,8 @@ IsDevicePathEndType ( - Determines if a device path node is an end node of an entire device path.
-
- Determines if a device path node specified by Node is an end node of an entire device path.
-- If Node represents the end of an entire device path, then TRUE is returned. Otherwise, FALSE is returned.
-+ If Node represents the end of an entire device path, then TRUE is returned.
-+ Otherwise, FALSE is returned.
-
- If Node is NULL, then ASSERT().
-
-@@ -143,7 +166,8 @@ IsDevicePathEnd ( - Determines if a device path node is an end node of a device path instance.
-
- Determines if a device path node specified by Node is an end node of a device path instance.
-- If Node represents the end of a device path instance, then TRUE is returned. Otherwise, FALSE is returned.
-+ If Node represents the end of a device path instance, then TRUE is returned.
-+ Otherwise, FALSE is returned.
-
- If Node is NULL, then ASSERT().
-
-@@ -169,6 +193,7 @@ IsDevicePathEndInstance ( -
- If Node is NULL, then ASSERT().
- If NodeLength >= 0x10000, then ASSERT().
-+ If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT().
-
- @param Node A pointer to a device path node data structure.
- @param Length The length, in bytes, of the device path node.
-@@ -208,13 +233,14 @@ SetDevicePathEndNode ( - /**
- Returns the size of a device path in bytes.
-
-- This function returns the size, in bytes, of the device path data structure specified by
-- DevicePath including the end of device path node. If DevicePath is NULL, then 0 is returned.
-+ This function returns the size, in bytes, of the device path data structure
-+ specified by DevicePath including the end of device path node.
-+ If DevicePath is NULL or invalid, then 0 is returned.
-
-- @param DevicePath A pointer to a device path data structure.
--
-- @retval 0 DevicePath is NULL.
-- @retval Others The size of a device path in bytes.
-+ @param DevicePath A pointer to a device path data structure.
-+
-+ @retval 0 If DevicePath is NULL or invalid.
-+ @retval Others The size of a device path in bytes.
-
- **/
- UINTN
-@@ -235,7 +261,7 @@ GetDevicePathSize ( -
- @param DevicePath A pointer to a device path data structure.
-
-- @retval NULL DevicePath is NULL.
-+ @retval NULL DevicePath is NULL or invalid.
- @retval Others A pointer to the duplicated device path.
-
- **/
-@@ -263,6 +289,7 @@ DuplicateDevicePath ( - @param SecondDevicePath A pointer to a device path data structure.
-
- @retval NULL If there is not enough memory for the newly allocated buffer.
-+ @retval NULL If FirstDevicePath or SecondDevicePath is invalid.
- @retval Others A pointer to the new device path if success.
- Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL.
-
-@@ -316,6 +343,7 @@ AppendDevicePathNode ( - and a new end-of-device-path-instance node is inserted between.
- If DevicePath is NULL, then a copy if DevicePathInstance is returned.
- If DevicePathInstance is NULL, then NULL is returned.
-+ If DevicePath or DevicePathInstance is invalid, then NULL is returned.
- If there is not enough memory to allocate space for the new device path, then NULL is returned.
- The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
- free the memory allocated.
-@@ -341,6 +369,7 @@ AppendDevicePathInstance ( - point to the next device path instance in the device path (or NULL if no more) and updates Size
- to hold the size of the device path instance copy.
- If DevicePath is NULL, then NULL is returned.
-+ If DevicePath points to a invalid device path, then NULL is returned.
- If there is not enough memory to allocate space for the new device path, then NULL is returned.
- The memory is allocated from EFI boot services memory. It is the responsibility of the caller to
- free the memory allocated.
-@@ -394,12 +423,13 @@ CreateDeviceNode ( - Determines if a device path is single or multi-instance.
-
- This function returns TRUE if the device path specified by DevicePath is multi-instance.
-- Otherwise, FALSE is returned. If DevicePath is NULL, then FALSE is returned.
-+ Otherwise, FALSE is returned.
-+ If DevicePath is NULL or invalid, then FALSE is returned.
-
- @param DevicePath A pointer to a device path data structure.
-
- @retval TRUE DevicePath is multi-instance.
-- @retval FALSE DevicePath is not multi-instance, or DevicePath is NULL.
-+ @retval FALSE DevicePath is not multi-instance, or DevicePath is NULL or invalid.
-
- **/
- BOOLEAN
-diff --git a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c -index db065e4..a91a7a3 100644 ---- a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c -+++ b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.c -@@ -8,7 +8,7 @@ - environment varibles. Multi-instance device paths should never be placed
- on a Handle.
-
-- Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-+ Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
-@@ -28,6 +28,7 @@ - #include <Library/MemoryAllocationLib.h>
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/BaseLib.h>
-+#include <Library/PcdLib.h>
-
- //
- // Template for an end-of-device path node.
-@@ -42,6 +43,61 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST EFI_DEVICE_PATH_PROTOCOL mUefiDevicePathLib - };
-
- /**
-+ Determine whether a given device path is valid.
-+ If DevicePath is NULL, then ASSERT().
-+
-+ @param DevicePath A pointer to a device path data structure.
-+ @param MaxSize The maximum size of the device path data structure.
-+
-+ @retval TRUE DevicePath is valid.
-+ @retval FALSE The length of any node node in the DevicePath is less
-+ than sizeof (EFI_DEVICE_PATH_PROTOCOL).
-+ @retval FALSE If MaxSize is not zero, the size of the DevicePath
-+ exceeds MaxSize.
-+ @retval FALSE If PcdMaximumDevicePathNodeCount is not zero, the node
-+ count of the DevicePath exceeds PcdMaximumDevicePathNodeCount.
-+**/
-+BOOLEAN
-+EFIAPI
-+IsDevicePathValid (
-+ IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
-+ IN UINTN MaxSize
-+ )
-+{
-+ UINTN Count;
-+ UINTN Size;
-+ UINTN NodeLength;
-+
-+ ASSERT (DevicePath != NULL);
-+
-+ for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) {
-+ NodeLength = DevicePathNodeLength (DevicePath);
-+ if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
-+ return FALSE;
-+ }
-+
-+ if (MaxSize > 0) {
-+ Size += NodeLength;
-+ if (Size + END_DEVICE_PATH_LENGTH > MaxSize) {
-+ return FALSE;
-+ }
-+ }
-+
-+ if (PcdGet32 (PcdMaximumDevicePathNodeCount) > 0) {
-+ Count++;
-+ if (Count >= PcdGet32 (PcdMaximumDevicePathNodeCount)) {
-+ return FALSE;
-+ }
-+ }
-+ }
-+
-+ //
-+ // Only return TRUE when the End Device Path node is valid.
-+ //
-+ return (BOOLEAN) (DevicePathNodeLength (DevicePath) == END_DEVICE_PATH_LENGTH);
-+}
-+
-+/**
- Returns the Type field of a device path node.
-
- Returns the Type field of the device path node specified by Node.
-@@ -106,8 +162,12 @@ DevicePathNodeLength ( - IN CONST VOID *Node
- )
- {
-+ UINTN Length;
-+
- ASSERT (Node != NULL);
-- return ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
-+ Length = ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
-+ ASSERT (Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL));
-+ return Length;
- }
-
- /**
-@@ -227,7 +287,8 @@ IsDevicePathEndInstance ( - be used to set the contents of the Length field.
-
- If Node is NULL, then ASSERT().
-- If NodeLength >= 0x10000, then ASSERT().
-+ If NodeLength >= SIZE_64KB, then ASSERT().
-+ If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT().
-
- @param Node A pointer to a device path node data structure.
- @param Length The length, in bytes, of the device path node.
-@@ -243,7 +304,7 @@ SetDevicePathNodeLength ( - )
- {
- ASSERT (Node != NULL);
-- ASSERT (Length < 0x10000);
-+ ASSERT ((Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL)) && (Length < SIZE_64KB));
- return WriteUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0], (UINT16)(Length));
- }
-
-@@ -277,12 +338,12 @@ SetDevicePathEndNode ( - Returns the size of a device path in bytes.
-
- This function returns the size, in bytes, of the device path data structure
-- specified by DevicePath including the end of device path node. If DevicePath
-- is NULL, then 0 is returned.
-+ specified by DevicePath including the end of device path node.
-+ If DevicePath is NULL or invalid, then 0 is returned.
-
- @param DevicePath A pointer to a device path data structure.
--
-- @retval 0 If DevicePath is NULL.
-+
-+ @retval 0 If DevicePath is NULL or invalid.
- @retval Others The size of a device path in bytes.
-
- **/
-@@ -298,6 +359,10 @@ GetDevicePathSize ( - return 0;
- }
-
-+ if (!IsDevicePathValid (DevicePath, 0)) {
-+ return 0;
-+ }
-+
- //
- // Search for the end of the device path structure
- //
-@@ -324,7 +389,7 @@ GetDevicePathSize ( -
- @param DevicePath A pointer to a device path data structure.
-
-- @retval NULL If DevicePath is NULL.
-+ @retval NULL DevicePath is NULL or invalid.
- @retval Others A pointer to the duplicated device path.
-
- **/
-@@ -370,6 +435,7 @@ DuplicateDevicePath ( - @param SecondDevicePath A pointer to a device path data structure.
-
- @retval NULL If there is not enough memory for the newly allocated buffer.
-+ @retval NULL If FirstDevicePath or SecondDevicePath is invalid.
- @retval Others A pointer to the new device path if success.
- Or a copy an end-of-device-path if both FirstDevicePath and SecondDevicePath are NULL.
-
-@@ -398,6 +464,10 @@ AppendDevicePath ( - return DuplicateDevicePath (FirstDevicePath);
- }
-
-+ if (!IsDevicePathValid (FirstDevicePath, 0) || !IsDevicePathValid (SecondDevicePath, 0)) {
-+ return NULL;
-+ }
-+
- //
- // Allocate space for the combined device path. It only has one end node of
- // length EFI_DEVICE_PATH_PROTOCOL.
-@@ -500,6 +570,7 @@ AppendDevicePathNode ( - path instance and a new end-of-device-path-instance node is inserted between.
- If DevicePath is NULL, then a copy if DevicePathInstance is returned.
- If DevicePathInstance is NULL, then NULL is returned.
-+ If DevicePath or DevicePathInstance is invalid, then NULL is returned.
- If there is not enough memory to allocate space for the new device path, then
- NULL is returned.
- The memory is allocated from EFI boot services memory. It is the responsibility
-@@ -531,6 +602,10 @@ AppendDevicePathInstance ( - return NULL;
- }
-
-+ if (!IsDevicePathValid (DevicePath, 0) || !IsDevicePathValid (DevicePathInstance, 0)) {
-+ return NULL;
-+ }
-+
- SrcSize = GetDevicePathSize (DevicePath);
- InstanceSize = GetDevicePathSize (DevicePathInstance);
-
-@@ -559,6 +634,7 @@ AppendDevicePathInstance ( - DevicePath to point to the next device path instance in the device path (or NULL
- if no more) and updates Size to hold the size of the device path instance copy.
- If DevicePath is NULL, then NULL is returned.
-+ If DevicePath points to a invalid device path, then NULL is returned.
- If there is not enough memory to allocate space for the new device path, then
- NULL is returned.
- The memory is allocated from EFI boot services memory. It is the responsibility
-@@ -596,6 +672,10 @@ GetNextDevicePathInstance ( - return NULL;
- }
-
-+ if (!IsDevicePathValid (*DevicePath, 0)) {
-+ return NULL;
-+ }
-+
- //
- // Find the end of the device path instance
- //
-@@ -681,13 +761,14 @@ CreateDeviceNode ( -
- This function returns TRUE if the device path specified by DevicePath is
- multi-instance.
-- Otherwise, FALSE is returned. If DevicePath is NULL, then FALSE is returned.
-+ Otherwise, FALSE is returned.
-+ If DevicePath is NULL or invalid, then FALSE is returned.
-
- @param DevicePath A pointer to a device path data structure.
-
- @retval TRUE DevicePath is multi-instance.
-- @retval FALSE DevicePath is not multi-instance or DevicePath
-- is NULL.
-+ @retval FALSE DevicePath is not multi-instance, or DevicePath
-+ is NULL or invalid.
-
- **/
- BOOLEAN
-@@ -702,6 +783,10 @@ IsDevicePathMultiInstance ( - return FALSE;
- }
-
-+ if (!IsDevicePathValid (DevicePath, 0)) {
-+ return FALSE;
-+ }
-+
- Node = DevicePath;
- while (!IsDevicePathEnd (Node)) {
- if (IsDevicePathEndInstance (Node)) {
-@@ -776,15 +861,14 @@ FileDevicePath ( - IN CONST CHAR16 *FileName
- )
- {
-- UINT16 Size;
-+ UINTN Size;
- FILEPATH_DEVICE_PATH *FilePath;
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- EFI_DEVICE_PATH_PROTOCOL *FileDevicePath;
-
- DevicePath = NULL;
-
-- Size = (UINT16) StrSize (FileName);
--
-+ Size = StrSize (FileName);
- FileDevicePath = AllocatePool (Size + SIZE_OF_FILEPATH_DEVICE_PATH + END_DEVICE_PATH_LENGTH);
- if (FileDevicePath != NULL) {
- FilePath = (FILEPATH_DEVICE_PATH *) FileDevicePath;
-diff --git a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf -index c34301d..2ae151d 100644 ---- a/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf -+++ b/MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf -@@ -3,7 +3,7 @@ - #
- # Device Path Library that layers on top of the Memory Allocation Library.
- #
--# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.<BR>
-+# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
- #
- # This program and the accompanying materials
- # are licensed and made available under the terms and conditions of the BSD License
-@@ -42,8 +42,10 @@ - MemoryAllocationLib
- DebugLib
- BaseMemoryLib
--
-+ PcdLib
-
- [Protocols]
- gEfiDevicePathProtocolGuid ## CONSUMES
-
-+[Pcd]
-+ gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount
-diff --git a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c -index 8275dd6..1052988 100644 ---- a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c -+++ b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLib.c -@@ -2,7 +2,7 @@ - Library instance that implement UEFI Device Path Library class based on protocol
- gEfiDevicePathUtilitiesProtocolGuid.
-
-- Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
-+ Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials
- are licensed and made available under the terms and conditions of the BSD License
- which accompanies this distribution. The full text of the license may be found at
-@@ -24,6 +24,7 @@ - #include <Library/MemoryAllocationLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/UefiBootServicesTableLib.h>
-+#include <Library/PcdLib.h>
-
- EFI_DEVICE_PATH_UTILITIES_PROTOCOL *mDevicePathUtilities = NULL;
-
-@@ -72,6 +73,61 @@ DevicePathLibConstructor ( - }
-
- /**
-+ Determine whether a given device path is valid.
-+ If DevicePath is NULL, then ASSERT().
-+
-+ @param DevicePath A pointer to a device path data structure.
-+ @param MaxSize The maximum size of the device path data structure.
-+
-+ @retval TRUE DevicePath is valid.
-+ @retval FALSE The length of any node node in the DevicePath is less
-+ than sizeof (EFI_DEVICE_PATH_PROTOCOL).
-+ @retval FALSE If MaxSize is not zero, the size of the DevicePath
-+ exceeds MaxSize.
-+ @retval FALSE If PcdMaximumDevicePathNodeCount is not zero, the node
-+ count of the DevicePath exceeds PcdMaximumDevicePathNodeCount.
-+**/
-+BOOLEAN
-+EFIAPI
-+IsDevicePathValid (
-+ IN CONST EFI_DEVICE_PATH_PROTOCOL *DevicePath,
-+ IN UINTN MaxSize
-+ )
-+{
-+ UINTN Count;
-+ UINTN Size;
-+ UINTN NodeLength;
-+
-+ ASSERT (DevicePath != NULL);
-+
-+ for (Count = 0, Size = 0; !IsDevicePathEnd (DevicePath); DevicePath = NextDevicePathNode (DevicePath)) {
-+ NodeLength = DevicePathNodeLength (DevicePath);
-+ if (NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL)) {
-+ return FALSE;
-+ }
-+
-+ if (MaxSize > 0) {
-+ Size += NodeLength;
-+ if (Size + END_DEVICE_PATH_LENGTH > MaxSize) {
-+ return FALSE;
-+ }
-+ }
-+
-+ if (PcdGet32 (PcdMaximumDevicePathNodeCount) > 0) {
-+ Count++;
-+ if (Count >= PcdGet32 (PcdMaximumDevicePathNodeCount)) {
-+ return FALSE;
-+ }
-+ }
-+ }
-+
-+ //
-+ // Only return TRUE when the End Device Path node is valid.
-+ //
-+ return (BOOLEAN) (DevicePathNodeLength (DevicePath) == END_DEVICE_PATH_LENGTH);
-+}
-+
-+/**
- Returns the Type field of a device path node.
-
- Returns the Type field of the device path node specified by Node.
-@@ -136,8 +192,12 @@ DevicePathNodeLength ( - IN CONST VOID *Node
- )
- {
-+ UINTN Length;
-+
- ASSERT (Node != NULL);
-- return ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
-+ Length = ReadUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0]);
-+ ASSERT (Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL));
-+ return Length;
- }
-
- /**
-@@ -256,7 +316,8 @@ IsDevicePathEndInstance ( - be used to set the contents of the Length field.
-
- If Node is NULL, then ASSERT().
-- If NodeLength >= 0x10000, then ASSERT().
-+ If NodeLength >= SIZE_64KB, then ASSERT().
-+ If NodeLength < sizeof (EFI_DEVICE_PATH_PROTOCOL), then ASSERT().
-
- @param Node A pointer to a device path node data structure.
- @param Length The length, in bytes, of the device path node.
-@@ -272,7 +333,7 @@ SetDevicePathNodeLength ( - )
- {
- ASSERT (Node != NULL);
-- ASSERT (Length < 0x10000);
-+ ASSERT ((Length >= sizeof (EFI_DEVICE_PATH_PROTOCOL)) && (Length < SIZE_64KB));
- return WriteUnaligned16 ((UINT16 *)&((EFI_DEVICE_PATH_PROTOCOL *)(Node))->Length[0], (UINT16)(Length));
- }
-
-@@ -305,13 +366,14 @@ SetDevicePathEndNode ( - /**
- Returns the size of a device path in bytes.
-
-- This function returns the size, in bytes, of the device path data structure specified by
-- DevicePath including the end of device path node. If DevicePath is NULL, then 0 is returned.
-+ This function returns the size, in bytes, of the device path data structure
-+ specified by DevicePath including the end of device path node.
-+ If DevicePath is NULL or invalid, then 0 is returned.
-
-- @param DevicePath A pointer to a device path data structure.
--
-- @retval 0 If DevicePath is NULL.
-- @retval Others The size of a device path in bytes.
-+ @param DevicePath A pointer to a device path data structure.
-+
-+ @retval 0 If DevicePath is NULL or invalid.
-+ @retval Others The size of a device path in bytes.
-
- **/
- UINTN
-@@ -336,7 +398,7 @@ GetDevicePathSize ( -
- @param DevicePath A pointer to a device path data structure.
-
-- @retval NULL If DevicePath is NULL.
-+ @retval NULL If DevicePath is NULL or invalid.
- @retval Others A pointer to the duplicated device path.
-
- **/
-@@ -367,6 +429,7 @@ DuplicateDevicePath ( - @param SecondDevicePath A pointer to a device path data structure.
-
- @retval NULL If there is not enough memory for the newly allocated buffer.
-+ @retval NULL If FirstDevicePath or SecondDevicePath is invalid.
- @retval Others A pointer to the new device path if success.
- Or a copy an end-of-device-path if both FirstDevicePath and
- SecondDevicePath are NULL.
-@@ -431,6 +494,7 @@ AppendDevicePathNode ( - path instance and a new end-of-device-path-instance node is inserted between.
- If DevicePath is NULL, then a copy if DevicePathInstance is returned.
- If DevicePathInstance is NULL, then NULL is returned.
-+ If DevicePath or DevicePathInstance is invalid, then NULL is returned.
- If there is not enough memory to allocate space for the new device path, then
- NULL is returned.
- The memory is allocated from EFI boot services memory. It is the responsibility
-@@ -524,15 +588,16 @@ CreateDeviceNode ( - /**
- Determines if a device path is single or multi-instance.
-
-- This function returns TRUE if the device path specified by DevicePath is
-+ This function returns TRUE if the device path specified by DevicePath is
- multi-instance.
-- Otherwise, FALSE is returned. If DevicePath is NULL, then FALSE is returned.
-+ Otherwise, FALSE is returned.
-+ If DevicePath is NULL or invalid, then FALSE is returned.
-
- @param DevicePath A pointer to a device path data structure.
-
- @retval TRUE DevicePath is multi-instance.
-- @retval FALSE DevicePath is not multi-instance or DevicePath
-- is NULL.
-+ @retval FALSE DevicePath is not multi-instance, or DevicePath
-+ is NULL or invalid.
-
- **/
- BOOLEAN
-diff --git a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf -index 3393830..16b47e3 100644 ---- a/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf -+++ b/MdePkg/Library/UefiDevicePathLibDevicePathProtocol/UefiDevicePathLibDevicePathProtocol.inf -@@ -4,7 +4,7 @@ - # Device Path Library that layers on top of the UEFI 2.0 Device Path Protocol.
- # This library is not available for EFI 1.10 modules.
- #
--# Copyright (c) 2007 - 2011, Intel Corporation. All rights reserved.<BR>
-+# Copyright (c) 2007 - 2012, Intel Corporation. All rights reserved.<BR>
- #
- # This program and the accompanying materials
- # are licensed and made available under the terms and conditions of the BSD License
-@@ -44,11 +44,14 @@ - MemoryAllocationLib
- BaseLib
- DebugLib
--
-+ PcdLib
-
- [Protocols]
- gEfiDevicePathProtocolGuid ## CONSUMES
- gEfiDevicePathUtilitiesProtocolGuid ## CONSUMES
-
-+[Pcd]
-+ gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount
-+
- [Depex.common.DXE_DRIVER, Depex.common.DXE_RUNTIME_DRIVER, Depex.common.DXE_SAL_DRIVER, Depex.common.DXE_SMM_DRIVER]
- gEfiDevicePathUtilitiesProtocolGuid
-diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec -index b29cb01..aefba3f 100644 ---- a/MdePkg/MdePkg.dec -+++ b/MdePkg/MdePkg.dec -@@ -1287,6 +1287,9 @@ - ## Indicates the maximum node number of linked list
- gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|1000000|UINT32|0x00000003
-
-+ ## Indicates the maximum node number of device path
-+ gEfiMdePkgTokenSpaceGuid.PcdMaximumDevicePathNodeCount|0|UINT32|0x00000029
-+
- ## Indicates the timeout tick of holding spin lock
- gEfiMdePkgTokenSpaceGuid.PcdSpinLockTimeout|10000000|UINT32|0x00000004
-
diff --git a/ovmf-tianocore-edk2.install b/ovmf-tianocore-edk2.install new file mode 100644 index 000000000000..1a0625a16647 --- /dev/null +++ b/ovmf-tianocore-edk2.install @@ -0,0 +1,16 @@ +post_install() { + + echo + echo " OVMF X64 bios image has been installed at /usr/lib/ovmf/x86_64/bios.bin" + echo + echo " To test, execute: qemu-system-x86_64 -enable-kvm -net none -m 1024 -L /usr/lib/ovmf/x86_64/" + echo + +} + +post_upgrade() { + + post_install + +} + diff --git a/refind-efi.install b/refind-efi.install deleted file mode 100644 index 84f6d5894028..000000000000 --- a/refind-efi.install +++ /dev/null @@ -1,31 +0,0 @@ -post_install() { - - cat << EOF - -rEFInd UEFI applications have been installed at /usr/lib/refind/*.efi - -Other UEFI applications have been installed at /usr/lib/refind/tools_*/ - -UEFI drivers have deen installed at /usr/lib/refind/drivers_*/ - -Copy the efi application (according to your UEFI ARCH) -and /usr/lib/refind/config/refind.conf to a sub-directory of <EFISYS>/EFI/ -and add an entry to firmware boot menu using efibootmgr or mactel-boot (for Macs) - -rEFInd Icons have been installed at /usr/share/refind/icons/ -rEFInd Fonts have been installed at /usr/share/refind/fonts/ - -HTML Documentation is available at /usr/share/refind/docs/html/ - -More info: https://wiki.archlinux.org/index.php/UEFI_Bootloaders#Using_rEFInd - -EOF - -} - -post_upgrade() { - - post_install - -} - diff --git a/refind_linux.conf b/refind_linux.conf deleted file mode 100644 index a34536b37a03..000000000000 --- a/refind_linux.conf +++ /dev/null @@ -1,5 +0,0 @@ -## This file should be present in the same directory as the EFISTUB kernel and initramfs files -## More info at http://www.rodsbooks.com/refind/linux.html , http://www.rodsbooks.com/efi-bootloaders/efistub.html - -"Boot with defaults" "root=PARTUUID=XXXXXXXX rootfstype=XXXX ro" -"Boot to terminal" "root=PARTUUID=XXXXXXXX rootfstype=XXXX ro systemd.unit=multi-user.target" |