Decompress and install the edk2 firmware blobs as part of "make install",
unless blob installation was disabled with configure's "--disable-blobs"
option.
Additionally, decompress the blobs as a pre-requisite for building softmmu
binaries -- this is helpful for both "make check" and other ad-hoc tests
one might want to run in the build directory.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
In commit b94b330e23 ("tests: add missing dependency to build
QTEST_QEMU_BINARY", 2017-07-31), Phil fixed the dependency list of make
target "check-qtest-%". Namely, the recipe would set QTEST_QEMU_BINARY to
the softmmu emulator for the emulation target, but the prerequisites
didn't include the emulator.
The same issue affects the "check-report-qtest-%.tap" make target, which
is the other make target whose recipe sets QTEST_QEMU_BINARY:
> $ make -j4 check-report-qtest-aarch64.tap
> TAP check-report-qtest-aarch64.tap
> sh: /.../aarch64-softmmu/qemu-system-aarch64: No such file or directory
Apply Phil's fix to this make target too.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Update the README file with information on the images added previously,
and provide firmware descriptor documents that conform to
"docs/interop/firmware.json".
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Add the files built by the last patch: (compressed) binaries, and the
cumulative license text that covers them.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Add the "efi" target to "Makefile".
Introduce "Makefile.edk2" for building and cleaning the firmware images
and varstore templates.
Collect the common bits from the recipes in the helper script
"edk2-build.sh".
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
We don't (can't) have a recipe for building just $(EDK2_EFIROM);
therefore, while we call the target $(EDK2_EFIROM), we actually build all
of the edk2 BaseTools. Rename the target to edk2-basetools, and update the
iPXE prerequisite accordingly. This will let other targets depend on
"edk2-basetools", where an $(EDK2_EFIROM) pre-requisite would be
misleading.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
The edk2 "build" utility natively supports building modules (that is, INF
files) in parallel. The feature is not useful when building a single
module (with the "-m" option), but it is useful for platform firmware
builds (which include many modules). Add a function that determines the
"-n" option argument for "build", from the MAKEFLAGS variable (i.e. based
on the presence of a make job server).
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Update the roms/edk2 submodule hash from edk2-stable201811 to
edk2-stable201903. The release notes are available at
<https://github.com/tianocore/edk2/releases/tag/edk2-stable201903>.
$ git shortlog edk2-stable201811..edk2-stable201903
Achin Gupta (9):
ArmPkg: Add PCDs needed for MM communication driver.
ArmPkg/Drivers: Add EFI_MM_COMMUNICATION_PROTOCOL DXE driver.
ArmPkg/Include: Add MM interface SVC return codes.
ArmPkg/ArmMmuLib: Add MMU Library suitable for use in S-EL0.
StandaloneMmPkg: Add missing dependency on PL011UartClockLib
StandaloneMmPkg: Enforce alignment check for AArch64
StandaloneMmPkg: Zero data structure explicitly
StandaloneMmPkg: Replace dependency on ArmMmuLib
StandaloneMmPkg: Update dependency on PeCoffExtraActionLib
Albecki, Mateusz (1):
MdeModulePkg/SdMmcPciHcDxe Fix eMMC HS400 switch sequence
Alex James (2):
StdLib/sys/termios: Define cc_t as unsigned
StdLib/Environs: Avoid infinite recursion in _Exit
Antoine Coeur (5):
ArmVirtPkg: Fix various typos
CryptoPkg: Fix various typos
CorebootPayloadPkg: Fix various typos
CorebootModulePkg: Fix various typos
BaseTools: Various typo
Ard Biesheuvel (116):
MdePkg/BaseIoLibIntrinsicArmVirt ARM: avoid double word loads and stores
ArmPkg/ArmGicDxe ARM: fix encoding for GICv3 interrupt acknowledge
ArmPlatformPkg: clear frame pointer in startup code
ArmVirtPkg/PrePi: clear frame pointer in startup code
ArmPkg/ArmSmcPsciResetSystemLib: add missing call to ExitBootServices()
ArmPkg: remove now unused BsdLib.h
ArmPlatformPkg/NorFlashDxe: prepare for devicepath format change
ArmPlatformPkg/NorFlashDxe: use one GUID plus index to identify flash banks
ArmVirtPkg/FdtClientDxe: take DT node 'status' properties into account
ArmVirtPkg/NorFlashQemuLib: discover NOR flash banks dynamically
ArmPlatformPkg/NorFlashPlatformLib: remove unused Guid member from struct
ArmPkg/ArmPkg.dsc: move ArmMmuStandaloneMmLib.inf to AARCH64 section
EmbeddedPkg/TemplateSec: remove unused module
EmbeddedPkg/PrePiHobLib: drop CreateHobList() from library
ArmVirtPkg/FdtPciHostBridgeLib: map ECAM and I/O spaces in GCD memory map
ArmVirtPkg/QemuVirtMemInfoLib: remove 1:1 mapping of top of PA range
MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits
ArmPkg/ArmLib: add support for reading the max physical address space size
ArmVirtPkg/XenVirtMemInfoLib: refactor reading of the PA space size
ArmPkg/ArmMmuLib: take the CPU supported maximum PA space into account
ArmPkg/CpuPei: base GCD memory space size on CPU's PA range
ArmPlatformPkg/PrePi: base GCD memory space size on CPU's PA range
ArmVirtPkg/PrePi: base GCD memory space size on CPU's PA range
BeagleBoardPkg/PrePi: base GCD memory space size on CPU's PA range
ArmPlatformPkg/PlatformPei: drop unused PCD references
EmbeddedPkg/PrePiLib: drop unused PCD reference
ArmVirtPkg: drop PcdPrePiCpuMemorySize assignments from all platforms
EmbeddedPkg/EmbeddedPkg.dec: drop PcdPrePiCpuMemorySize declarations
ArmPkg/ArmMmuLib ARM: handle unmapped section in GetMemoryRegion()
ArmPkg/ArmMmuLib ARM: handle unmapped sections when updating permissions
ArmVirtPkg/NorFlashQemuLib: disregard our primary FV
ArmVirtPkg/QemuVirtMemInfoLib: trim the MMIO region mapping
BaseTools/CommonLib: avoid using 'native' word size in IP address handling
BaseTools/CommonLib: use explicit 64-bit type in Strtoi()
BaseTools/DevicePath: use explicit 64-bit number parsing routines
BaseTools/CommonLib: add definition of MAX_UINT32
BaseTools/DevicePath: use MAX_UINT32 as default device path max size
BaseTools/CommonLib: get rid of 'native' type string parsing routines
BaseTools/CommonLib: drop definition of MAX_UINTN
BaseTools/CommonLib: drop the use of MAX_ADDRESS
Revert "MdePkg/ProcessorBind.h AARCH64: limit MAX_ADDRESS to 48 bits"
MdeModulePkg/FileExplorerLib: avoid packed struct for program data
BaseTools/tools_def AARCH64 RELEASE: move GCC49/GGC5 to 4 KB alignment
ArmVirtPkg/ArmVirtQemuKernel ARM: make some PCD settings apply to ARM
ArmVirtPkg/PrePiUniCoreRelocatable CLANG38: work around build issues
BaseTools/GenFw ARM: don't permit R_ARM_GOT_PREL relocations
MdePkg/BaseMemoryLibOptDxe ARM: add missing function annotations
BaseTools/tools_def ARM CLANG35: work around -mno-movt option name change
ArmVirtPkg/PrePi ARM CLANG35: drop incompatible command line option
ArmVirtPkg/ArmVirt.dsc.inc: define TcpIoLib resolution unconditionally
ArmPkg: remove redundant _ARM_PLATFORM_FLAGS overrides
EmbeddedPkg: remove GdbDebugAgent library
BaseTools/tools_def ARM: emit PIC veneers
ArmPkg/DefaultExceptionHandlerLib ARM: avoid endless loop in RELEASE builds
MdePkg/Base: introduce MAX_ALLOC_ADDRESS
MdeModulePkg/Dxe/Gcd: disregard memory above MAX_ALLOC_ADDRESS
MdeModulePkg/Dxe/Page: take MAX_ALLOC_ADDRESS into account
ArmPkg/ArmMmuLib: take MAX_ALLOC_ADDRESS into account
ArmPlatformPkg/MemoryInitPeim: take MAX_ALLOC_ADDRESS into account
ArmVirtPkg/MemoryInitPeiLib: split memory HOB based on MAX_ALLOC_ADDRESS
MdePkg/Arm/ProcessorBind.h: fix copy/paste error
ArmPlatformPkg/SP805WatchdogDxe: cosmetic cleanup
ArmPlatformPkg/SP805WatchdogDxe: switch to interrupt mode
ArmPkg/GenericWatchdogDxe: clean up the code
ArmPkg/GenericWatchdogDxe: implement RegisterHandler() method
ArmPlatformPkg/PL011SerialPortLib: use untyped PCD for register base
BaseTools/tools_def ARM: use softfloat target for CLANG3x
BaseTools/GenFds: permit stripped MM_CORE_STANDALONE binaries
BaseTools/Conf/tools_def.template: drop ARM/AARCH support from GCC46/GCC47
ArmPkg/ArmMmuLib ARM: add missing support for non-shareable cached mappings
ArmPkg/ArmMmuLib ARM: fix thinko in second level page table handling
MdePkg: implement MmServicesTableLib based on traditional SMM
BaseTools/tools_def GCC5: disable LTO for ASLC invocations
ArmPkg/ArmMmuLib ARM: disregard high memory when setting permissions
ArmPkg/ArmMmuLib AARCH64: fix out of bounds access
MdeModulePkg/MdeModulePkg.dsc: add MmServicesTableLib resolution
OvmfPkg: add MmServicesTableLib resolution
QuarkPlatformPkg: add MmServicesTableLib resolution
Vlv2TbltDevicePkg: add MmServicesTableLib resolution
MdeModulePkg/FaultTolerantWriteDxe: factor out boot service accesses
MdeModulePkg/FaultTolerantWriteDxe: implement standalone MM version
MdeModulePkg/VariableRuntimeDxe: factor out boot service accesses
MdeModulePkg/VariableRuntimeDxe: implement standalone MM version
MdePkg: introduce standalone MM entry point library class
MdePkg: introduce standalone MM entry point library implementation
MdePkg: add MM_STANDALONE implementation of MmServicesTableLib
MdeModulePkg: implement NULL instance of HobLib library class
MdeModulePkg: implement NULL instance of MemoryAllocationLib library class
MdeModulePkg/MdeModulePkg/dsc: move DxeDebugSupportDxe to x86 only section
MdeModulePkg/AuthVariableLibNull: add MM_STANDALONE support
MdeModulePkg/VarCheckLib: add MM_STANDALONE support
MdeModulePkg/MdeModulePkg.dsc: add MM_STANDALONE FTW and variable modules
ArmPkg/DebugAgentSymbolsBaseLib: remove exception handling
ArmPkg/DefaultExceptionHandlerLib: declare the permitted usage context
ArmVirtPkg: drop reference to ArmPkg/DefaultExceptionHandlerLibBase
ArmPkg/DefaultExceptionHandlerLib: drop BASE variant
ArmPkg/DefaultExceptionHandlerLib: use console if available
EmbeddedPkg/NorFlashInfoLib: convert to BASE library
ArmPkg/DefaultExceptionHandlerLib: add missing UefiLib include
CryptoPkg/SmmCryptLib: permit use by MM_STANDALONE modules
SecurityPkg/PlatformSecureLibNull: permit use by MM_STANDALONE modules
MdeModulePkg/VarCheckUefiLib: permit use by MM_STANDALONE modules
MdePkg/UefiDevicePathLib: permit use by MM_STANDALONE modules
StandaloneMmPkg: add HobLib implementation for MM_STANDALONE modules
StandaloneMmPkg: add MM_STANDALONE MemoryAllocationLib implementation
StandaloneMmPkg/StandaloneMmCoreHobLib: restrict to MM_CORE_STANDALONE
StandaloneMmPkg/StandaloneMmCpu: fix typo Standlone -> Standalone
StandaloneMmPkg/StandaloneMmCoreEntryPoint: use %a modifier for ASCII strings
StandaloneMmPkg/StandaloneMmCoreEntryPoint: remove bogus ASSERT_EFI_ERROR()s
StandaloneMmPkg/StandaloneMmPeCoffExtraActionLib: ignore runtime attribute
StandaloneMmPkg/Core/Dispatcher: don't copy dispatched image twice
StandaloneMmPkg/StandaloneMmCoreEntryPoint: permit the use of TE images
MdeModulePkg/MdeModulePkg.dsc: ignore standalone MM modules for EBC or XCODE5
ArmPkg/ArmMmuLib ARM: trim high memory regions instead of rejecting them
ArmPkg/ArmMmuLib AARCH64: get rid of needless TLB invalidation
MdePkg/BaseLib: implement SpeculationBarrier() for ARM and AArch64
Ashish Singhal (6):
MdeModulePkg/SdMmcPciHcDxe: Add SDMMC HC v4 and above Support.
MdePkg/UefiLib: Abstract driver model protocol uninstallation
NetworkPkg/IScsiDxe: Use UEFILib APIs to uninstall protocols.
NetworkPkg: Protocol Uninstallation Cleanup
DynamicTablesPkg/DynamicTableManagerDxe: Update DEPEX
DynamicTablesPkg/AcpiSpcrLibArm: Support 16550 UART.
Bret Barkelew (4):
MdePkg/IndustryStandard: Introduce a correctly spelled macro
SecurityPkg/Tcg: Fix typos in TcgDxe.c and Tcg2Dxe.c
MdePkg/IndustryStandard: Remove an incorrectly spelled macro
MdePkg/UefiLib: Add a new API GetVariable3
Chasel, Chiu (16):
IntelFsp2WrapperPkg: Support FSP Dispatch mode
IntelFsp2WrapperPkg: Revert 90c5bc08
IntelFsp2WrapperPkg: Support FSP Dispatch mode
IntelFsp2WrapperPkg: Fix line ending format issue
IntelFsp2WrapperPkg: Fix constant if statements issue
Maintainers.txt: Change package maintainer of IntelFsp*Pkg
BaseTools/GenFv: Support SecCore and PeiCore in different FV
IntelFsp2Pkg: Add FspmArchConfigPpi to support Dispatch mode
IntelFsp2Pkg: Remove unused keyword in new PPI header
IntelFsp2Pkg: Add function to get bootloader stack pointer
IntelFsp2Pkg: FSP can utilize bootloader stack
MdePkg: Support EFI_PEI_CORE_FV_LOCATION_PPI
MdeModulePkg/PeiMain: Support EFI_PEI_CORE_FV_LOCATION_PPI
UefiCpuPkg/SecCore: Support EFI_PEI_CORE_FV_LOCATION_PPI
UefiCpuPkg/SecCore: Support EFI_PEI_CORE_FV_LOCATION_PPI
UefiCpuPkg/SecCore: Wrong Debug Information for SecCore
Chen A Chen (18):
SecurityPkg: Remove dead code and inf redundant definitions.
SecurityPkg: Remove code under UserIdentification folder.
FatPkg: Break down Part.c file.
MdePkg/UefiGpt.h: Add new definition for enable GPT support
FatPkg: Add GPT check in FatPei to support Capsule-on-Disk feature.
MdePkg/UefiSpec.h: Add definition to support Capsule-on-Disk feature
MdeModulePkg/CapsuleApp: Add a function used to get next DevicePath
MdeModulePkg/CapsuleApp: Add functions to support Capsule-on-Disk
MdeModulePkg/CapsuleApp: Enhance CapsuleApp to support Capsule-on-Disk
FatPkg/FatPei/Gpt.c: Fix uninitialized variable issue
MdeModulePkg/CapsuleApp: Fix potential NULL pointer dereference issue
MdeModulePkg/CapsuleApp: Fix potential NULL pointer dereference issue
MdeModulePkg/CapsuleApp: Fix memory leak issue.
UefiCpuPkg/Microcode: Fix incorrect checksum issue for extended table
IntelSiliconPkg/MicrocodeUpdate: Fix incorrect checksum issue
MdeModulePkg: Rename confusion function name
UefiCpuPkg/Microcode: Fix InComplete CheckSum32 issue
UefiCpuPkg/Microcode.c: Add verification before calculate CheckSum32
Chu, Maggie (2):
SecurityPkg: Incorrect warning message for Opal admin revert action
SecurityPkg: Add a PCD to skip Opal password prompt
Dandan Bi (12):
MdeModulePkg/DisplayEngine: Remove useless NULL ptr check for NewPos
MdePkg: check Length para before use in DevPathToTextUsbWWID
MdePkg: Check input Ptrs in GetSectionFromAnyFvByFileType
BaseTools/VfrCompile: report error for Integer overflow
MdeModulePkg/NonDiscoverablePciDevice: Remove the redundant check
MdePkg/BasePeCoffLib: Add more check for relocation data
MdePkg/BasePeCoffLib: Correct the address of RelocBaseEnd
ShellPkg/UefiShellAcpiViewCommandLib: Fix VS tool chain build failure
MdeModulePkg: Fix coding style issues
MdePkg: Fix coding style issues
MdePkg/StatusCodeDataTypeId.h: Add new definition per PI1.7 Spec
MdeModulePkg/BmBoot: Report status when fail to load/start boot option
Derek Lin (1):
BaseTools: Fix GenFds error doesn't break build.
Edgar Handal (1):
MdeModulePkg/SdMmcPciHcDxe: Use 16/32-bit IO widths
Eric Dong (9):
UefiCpuPkg/Cpuid.h: Sync CPUID definition to latest SDM.
UefiCpuPkg/Cpuid: Add code to support new definition.
UefiCpuPkg/RegisterCpuFeaturesLib: Enhance debug message.
UefiCpuPkg/RegisterCpuFeaturesLib: Avoid AP calls PeiService.
UefiCpuPkg/S3Resume2Pei: check 64BIT_WAKE_F in FACS.OSPMFlags.
MdeModulePkg/BootScriptExecuteorDxe: check 64BIT_WAKE_F in FACS.OSPMFlags
UefiCpuPkg/RegisterCpuFeaturesLib: Replace AcquireSpinLock.
SecurityPkg/OpalPassword: Update strings on Opal Setup page
SecurityPkg/OpalPassword: Add NULL pointer check before using it
Felix Polyudov (1):
BaseTools: Fix incorrect formatting of GenFds command dictionary
Feng, Bob C (52):
BaseTools: Fix the problem using FILE_GUID override in .dsc
BaseTools: Enable Pcd Array support.
BaseTool: Filter out unused structure pcds
BaseTools: Replace the sqlite database with list
BaseTools: Optimize string concatenation
BaseTools: Customize deepcopy function.
BaseTools: Correct CCFLAG for PcdValueInit
BaseTools: Fix PcdNvStoreDefaultValueBuffer Value.
BaseTools: Fixed bugs in CopyDict function
BaseTools: Fixed the build fail issue for cases
BaseTools: Fix PcdArray issue
BaseTools: Fixed metafile parser issues
BaseTools: Reset FdsGlobalVariable
BaseTools: Fixed build report issue.
BaseTools: Correct PcdArray value assigment statement
BaseTools: Report Error if use SET in Dsc
BaseTools: Remove unused logic for EDKI
BaseTools: Remove unused logic for IPF
BaseTools: Remove unused logic from C tools
BaseTools: Enable component override functionality
BaseTools: Remove unused logic for EDKI
BaseTools: Remove EDK_SOURCE keyword from ECC Tool
BaseTools: Remove EDK_SOURCE keyword from GenFds tool.
BaseTools: Remove EDK_SOURCE keyword from Inf Parser.
BaseTools: Allow empty value for HiiPcd in Dsc
BaseTools: Fix build report issue.
BaseTools: use OrderedDict instead of sdict
BaseTools: Make sure AllPcdList valid.
BaseTools:File open failed for VPD MapFile
BaseTools:Fixed Rsa issue and a set define issue.
BaseTools:ord() don't match in py2 and py3
BaseTools: the list and iterator translation
BaseTools: Handle the bytes and str difference
BaseTools: ECC tool Python3 adaption
BaseTools: Eot tool Python3 adaption
BaseTools: Enable CODE format in DEC file
BaseTools: Fixed incorrect line number in PcdValueInit.c
BaseTools: Correct the error message for UPT
BaseTools: Fixed a build report issue.
BaseTools: Fix the build report issue about Structure PCD
BaseTools: Fixed an issue about StructurePcd
BaseTools: Add MaxSizeUserSet to Pcd deepcopy function
BaseTools: Fix a ParseDevPathValue function issue.
BaseTools: Fixed a bug in Vpd handling
BaseTools: Fixed a code bug for Pcd Array.
BaseTools: replace Sdict with OrderedDict in UPT
BaseTool: Fixed incremental rebuild issue.
BaseTools: Fix a bug about Structure PCD
BaseTools: Add parameter check for the AsciiStringToUint64
BaseTools: Eot failed when enable python3
BaseTools: Fix a Eot issue.
BaseTools: Add python3-distutils Ubuntu package checking
Gary Lin (2):
MdePkg ACPI: fix the typos in Acpi61.h and Acpi62.h
MdeModulePkg/UefiBootManagerLib: Match the nested partitions
Gonzalez Del Cueto, Rodrigo (1):
SecurityPkg/TcgConfigDxe: Allow enabling TPM 1.2 device from disabled state.
Hao Wu (25):
MdePkg/BaseLib: Introduce new SpeculationBarrier API
MdeModulePkg/FaultTolerantWrite: Update to consume SpeculationBarrier
MdeModulePkg/SmmLockBox: Update to consume SpeculationBarrier
MdeModulePkg/Variable: Update to consume SpeculationBarrier
UefiCpuPkg/PiSmmCpuDxeSmm: Update to consume SpeculationBarrier
UefiCpuPkg: Merge StuffRsb.inc files into one in UefiCpuPkg/Include
MdeModulePkg/SdMmcPciHcDxe: Fix VS2015 IA32 NOOPT build failure
MdeModulePkg/SdMmcPciHcDxe: Update comment for spec compliance status
MdeModulePkg: Add definitions for ATA AHCI host controller PPI
MdeModulePkg: Add definitions for EDKII PEI ATA PassThru PPI
MdeModulePkg: Add definitions for Storage Security Command PPI
MdeModulePkg: Add GUID for LockBox to save storage dev to init in S3
MdeModulePkg/NvmExpressPei: Avoid updating the module-level variable
MdeModulePkg/NvmExpressPei: Add logic to produce SSC PPI
MdeModulePkg/NvmExpressPei: Consume S3StorageDeviceInitList LockBox
MdeModulePkg/AhciPei: Add AHCI mode ATA device support in PEI
MdeModulePkg/SmmLockBoxLib: Use 'DEBUG_' prefix instead of 'EFI_D_'
MdeModulePkg/SmmLockBox(PEI): Remove an ASSERT in RestoreLockBox()
MdeModulePkg/SmmLockBoxLib: Support LockBox enlarge in UpdateLockBox()
OvmfPkg/LockBoxLib: Update the comments for API UpdateLockBox()
SecurityPkg/OpalPassword: Remove HW init codes and consume SSC PPI
SecurityPkg/HddPassword: Add Security feature set support for ATA dev
MdeModulePkg/UfsBlockIoPei: Correct use of 'DeviceIndex' in BlkIO PPI
MdeModulePkg/PartitionDxe: Ensure blocksize holds MBR (CVE-2018-12180)
MdeModulePkg/RamDiskDxe: Restrict on RAM disk size (CVE-2018-12180)
Hess Chen (1):
BaseTools/ECC: Add a new type of exception
Hsueh, Hong-chihX (1):
MdePkg/BasePeCoffLib: skip runtime relocation if reloc info is invalid
Jaben Carsey (14):
BaseTools: Move Identification file to Eot
BaseTools: cleanup LongFilePathSupport usage
BaseTools: create and use a standard shared variable for '*'
BaseTools: fix imports
MdeModulePkg: fix comments in BaseSortLib
BaseTools/build/build: refactor and move functions
BaseTools/Workspace/InfBuildData: move functions
BaseTools/DscBuildData: move function
BaseTools/AutoGen: move functions
BaseTools/GenFds/Capsule: move function logic
BaseTools/Common/Misc: move private functions
BaseTools/Common/Misc: remove uncalled code
BaseTools/Common/Misc: Cleanup the imports
BaseTools/build/build: delete variable
Jagadeesh Ujja (2):
SecurityPkg/AuthVariableLib: allow MM_STANDALONE drivers to use this library
MdePkg/Include: add MmServicesTableLib header file
Jeff Brasen (5):
MdeModulePkg/SdDxe: Fix potential NULL pointer access
EmbeddedPkg/PrePiMemoryAllocationLib: Added AllocateZeroPool()
MdeModulePkg/BaseSortLib: Enable for all module types
ArmPkg/ArmScmiDxe: Add clock enable function
EmbeddedPkg/PrePiLib: Correct function name
Jian J Wang (7):
CryptoPkg/IntrinsicLib: add missing BaseLib declaration
Upgrade OpenSSL to 1.1.0j
CryptoPkg/BaseCryptLib: split CryptPkcs7Verify.c on behalf of runtime
MdePkg/UefiDevicePathLib: Add sanity check for FilePath device path
MdePkg/UefiDevicePathLibDevicePathProtocol: Add sanity check for FilePath device path
UefiCpuPkg: restore strict page attributes via #DB in nonstop mode only
Maintainers.txt: remove unexpected unicode BOM
Jiaxin Wu (7):
MdeModulePkg/Dhcp4Dxe: Remove unnecessary NULL pointer check.
NetworkPkg/IScsiDxe: Remove unnecessary NULL pointer check.
NetworkPkg/DnsDxe: Remove unnecessary NULL pointer check.
MdeModulePkg/Ip4Dxe: Uninstall protocols when error happen in Driver Binding Start.
NetworkPkg/Ip6Dxe: Uninstall protocols when error happen in Driver Binding Start.
NetworkPkg/Ip6Dxe: Clean the invalid IPv6 configuration during driver start.
NetworkPkg/DnsDxe: [CVE-2018-12178] Check the received packet size before parsing the message.
Jiewen Yao (6):
MdeModulePkg/LockboxNullLib: clean up INF file.
BaseTool/GenC: Fix build error when type is BASE or USER_DEFINED.
MdePkg/Include: Add Nasm.inc
MdePkg/BaseLib: Add Shadow Stack Support for X86.
UefiCpuPkg/ExceptionLib: Add CET support.
UefiCpuPkg/PiSmmCpu: Add Shadow Stack Support for X86 SMM.
Jordan Justen (1):
OvmfPkg/build.sh: Enable flash for qemu 3 or later
Julien Grall (1):
Maintainers.txt: Update e-mail address for Julien Grall
Krzysztof Koch (1):
ShellPkg/UefiShellAcpiViewCommandLib: Add support for PPTT
Laszlo Ersek (47):
EmulatorPkg: require GCC48 or later
OvmfPkg: require GCC48 or later
Vlv2TbltDevicePkg: assume GCC48 or later
BaseTools/tools_def.template: fix up LF-only line terminator
BaseTools/tools_def.template: strip trailing whitespace
BaseTools/tools_def.template: remove GCC48_IA32_X64_DLINK_COMMON dead-end
BaseTools/tools_def.template: remove GCC47 leaf definitions
BaseTools/tools_def.template: propagate loss of GCC47 references
BaseTools/tools_def.template: remove GCC47 documentation
BaseTools/tools_def.template: remove GCC46 leaf definitions
BaseTools/tools_def.template: propagate loss of GCC46 references
BaseTools/tools_def.template: remove GCC46 documentation
BaseTools/tools_def.template: remove GCC45 leaf definitions
BaseTools/tools_def.template: propagate loss of GCC45 references
BaseTools/tools_def.template: remove GCC45 documentation
BaseTools/tools_def.template: remove GCC44 leaf definitions
BaseTools/tools_def.template: propagate loss of GCC44 references
BaseTools/tools_def.template: rename GCC44_ALL_CC_FLAGS to GCC48_ALL_CC_FLAGS
BaseTools/tools_def.template: eliminate GCC44_IA32_X64_DLINK_FLAGS
BaseTools/tools_def.template: rename GCC44_IA32_X64_DLINK_COMMON to GCC48_IA32_X64_DLINK_COMMON
BaseTools/tools_def.template: remove comment about GCC44 + LzmaF86Compress
BaseTools/tools_def.template: remove GCC44 documentation
ArmPkg/ArmSoftFloatLib: drop build flags specific to GCC46/GCC47
CryptoPkg/BaseCryptLib: drop build flags specific to GCC44
Revert "MdePkg: avoid __builtin_unreachable() on GCC v4.4"
BaseTools/BuildReport: fix report for platforms/arches without struct PCDs
ArmVirtPkg/ArmVirtQemuKernel: don't set PcdCPUCoresStackBase
ArmVirtPkg: don't set PcdRelocateVectorTable
ArmVirtPkg/{ArmVirtQemu,ArmVirtQemuKernel}: don't set PcdTrustzoneSupport
ArmVirtPkg: don't set PcdPostCodePropertyMask
ArmVirtPkg: clean up PcdSetNxForStack setting (applies to ArmVirtQemu only)
ArmVirtPkg/PrePi: drop wrong PcdCoreCount dependency
ArmVirtPkg: don't set PcdCoreCount
ArmVirtPkg: don't set PcdDebugClearMemoryValue
ArmVirtPkg: don't set PcdDebugPrintErrorLevel in RELEASE builds
ArmVirtPkg/ArmVirtXen: don't set PcdPL031RtcBase
ArmVirtPkg/ArmVirtXen: don't set PcdTerminalTypeGuidBuffer
ArmVirtPkg/ArmVirtXen: don't set PcdShellFile
ArmVirtPkg/ArmVirtXen: don't set PcdTurnOffUsbLegacySupport
ArmVirtPkg/ArmVirtXen: don't set Pcd*ImageVerificationPolicy
Maintainers: add TPM2 reviewers for OvmfPkg
Maintainers: specify the scope for OvmfPkg/ArmVirtPkg Xen module reviewers
MdeModulePkg/UefiBootManagerLib: fix LoadImage/StartImage status code rep.
OvmfPkg: add library to track boot option loading/starting on the console
OvmfPkg/PlatformBootManagerLib: display boot option loading/starting
ArmVirtPkg/ArmVirtQemu*: enable minimal Status Code Routing in DXE
ArmVirtPkg/PlatformBootManagerLib: display boot option loading/starting
Leif Lindholm (8):
ArmPkg: fix StandaloneMmMmuLib subdirectory case
ArmPkg: drop ArmBds remnant Pcds from .dec
ArmPkg: delete unused ArmTrustZoneSmc.h
AppPkg: fix webserver build for !Ia32/X64
IntelFrameworkModulePkg: fix build for AARCH64/ARM
IntelFrameworkPkg: fix build for AARCH64/ARM
SecurityPkg: fix package build on ARM
SignedCapsulePkg: enable package build for AARCH64/ARM
Liming Gao (12):
OvmfPkg: Don't include TftpDynamicCommand in XCODE5 tool chain
MdeModulePkg PCD: Add DynamicEx PcdVpdBaseAddress64 for non SPI platform
Maintainers.txt: Add the rule to hand over the package maintain role
BaseTools Script: Update ConvertFceToStructurePcd to report warning messages
MdeModulePkg: Correct PCD name in MdeModulePkg.uni
Readme.md: Add edk2 release tag and edk2 release plan
BaseTools GenFw: Fix XCODE5 build issue
BaseTools VolInfo: Fix XCODE5 build issue
BaseTools: Update PYTHON env to PYTHON_COMMAND
MdeModulePkg DxeCapsuleLibFmp: Update SupportCapsuleImage() for Fake Capsule
BaseTools: Remove unused txt files
Revert "BaseTools:BaseTools supports to the driver combination."
Liu Yu (1):
EmulatorPkg/build.sh: Fix 'run' path to simulator host executable
Marcin Wojtas (2):
MdeModulePkg/SdMmcPciHcDxe: Add an optional parameter in NotifyPhase
MdeModulePkg/SdMmcPciHcDxe: Allow overriding base clock frequency
Max Knutsen (1):
MdeModulePkg/ReportStatusCodeLib: Avoid using AllocatePool if possible
Meenakshi Aggarwal (1):
EmbeddedPkg: Fix Command Argument for SD/eMMC R/W operation.
Mike Maslenkin (1):
UefiCpuPkg/CpuExceptionHandlerLib: Fix spelling issue
Mike Turner (4):
MdePkg/BaseLib: Introduce CharToUpper and AsciiCharToUpper publicly
MdePkg/UefiDevicePathLib: Add a checking step
BaseTools/DevicePath: Add a checking step
MdePkg/BaseLib: Add Base64Encode() and Base64Decode()
Pete Batard (2):
EmbeddedPkg/Library: Add VirtualRealTimeClockLib
EmbeddedPkg/VirtualRealTimeClockLib: Fix correctness issues
Philippe Mathieu-Daude (1):
BaseTools: Fix build failure when specifying multiple BUILDTARGET
Ray Ni (10):
MdeModulePkg/PciBus: Shadow option ROM after BARs are programmed
MdeModulePkg/PciBus: Fix system hang when no PCI Option ROM exists
Maintainers.txt: Update mail address
MdeModulePkg/PciBus: Change PCI_IO_DEVICE.RomSize to UINT32 type
MdeModulePkg/PciBus: Correct typos
MdeModulePkg/PciBus: Fix a bug PPB MEM32 BAR isn't restored sometimes
UefiCpuPkg/MtrrLib: Fix a bug that may wrongly set memory <1MB to UC
ShellBinPkg: Ia32/X64 Shell binary update.
MdeModulePkg/HiiDatabase: Fix potential integer overflow (CVE-2018-12181)
MdeModulePkg/HiiImage: Fix stack overflow when corrupted BMP is parsed (CVE-2018-12181)
Sami Mujawar (36):
Maintainers.txt: Change DynamicTablesPkg maintainer
DynamicTablesPkg: Dynamic Tables Framework
DynamicTablesPkg: Table Generator definition
DynamicTablesPkg: Acpi Table Generator
DynamicTablesPkg: SMBIOS Table Generator
DynamicTablesPkg: DT Table Generator
DynamicTablesPkg: Standard NameSpace Objects
DynamicTablesPkg: Arm NameSpace Objects
DynamicTablesPkg: Configuration Manager Objects
DynamicTablesPkg: Configuration Manager Protocol
DynamicTablesPkg: Configuration Manager Helper
DynamicTablesPkg: Table Helper Library
DynamicTablesPkg: Dynamic Table Factory Protocol
DynamicTablesPkg: Dynamic Table Factory Dxe
DynamicTablesPkg: Dynamic Table Manager Dxe
DynamicTablesPkg: Arm Raw/DSDT/SSDT Generator
DynamicTablesPkg: Arm ACPI FADT Generator
DynamicTablesPkg: Arm ACPI MADT Generator
DynamicTablesPkg: Arm ACPI GTDT Generator
DynamicTablesPkg: Arm SPCR Table Generator
DynamicTablesPkg: Arm DBG2 Table Generator
DynamicTablesPkg: Arm PCI MCFG Table Generator
DynamicTablesPkg: Arm IORT Table Generator
DynamicTablesPkg: Fix protocol section
DynamicTablesPkg: Rename enum used for ID Mapping
DynamicTablesPkg: Add OEM Info
DynamicTablesPkg: DGB2: Update DBG2_DEBUG_PORT_DDI
DynamicTablesPkg: Remove GIC Distributor Id field
DynamicTablesPkg: Minor updates and fix typos
ArmPkg: Fix writes to GICv3 GICD_IROUTER<n> reg
Revert "DynamicTablesPkg: Minor updates and fix typos"
Revert "DynamicTablesPkg: Remove GIC Distributor Id field"
Revert "DynamicTablesPkg: DGB2: Update DBG2_DEBUG_PORT_DDI"
Revert "DynamicTablesPkg: Add OEM Info"
Revert "DynamicTablesPkg: Rename enum used for ID Mapping"
Revert "DynamicTablesPkg: Fix protocol section"
Sean Brogan (1):
MdeModulePkg/NvmExpressDxe: Report StatusCode for device init failure
Shenglei Zhang (37):
EmulatorPkg: Remove EdkShellBinPkg in FDF and DEC
Nt32Pkg: Remove EdkShellBinPkg in FDF and DEC
OvmfPkg: Remove EdkShellBinPkg in FDF
Vlv2TbltDevicePkg: Remove EdkShellBinPkg with ShellPkg
EdkShellBinPkg: Remove EdkShellBinPkg
EdkShellPkg: Remove EdkShellPkg
Maintainers.txt: Remove EdkShellPkg and EkdShellBinPkg
UnixPkg: Remove UnixPkg and update Maintainers.txt
MdeModulePkg: Remove PcdIdentifyMappingPageTablePtr
ShellPkg: Remove ShellPkg wrapper header files
BaseTools: Remove GenVtf
DuetPkg: Remove DuetPkg
BaseTools: Remove tools only used by DuetPkg
Maintainers.txt: Remove DuetPkg
ShellPkg/UefiShellDebug1CommandsLib: Remove the unused function CharToUpper
MdeModulePkg/EbcDebugger: Change function names
MdePkg/BaseLib: Remove definitions of two functions
MdeModulePkg/EbcDebugger: Use AsciiCharToUpper and CharToUpper
MdeModulePkg/DxeHttpLib: Use BaseLib api AsciiCharToUpper
ShellPkg/Shell: Use BaseLib api CharToUpper
ShellPkg/UefiShellLib: Use BaseLib api CharToUpper
MdePkg: Change function parameter type
MdeModulePkg/S3SaveStateDxe: Change function parameter types
MdeModulePkg/SmmS3SaveStateDxe: Change function parameter types
BaseTools/tools_def.template: Remove CYGGCC
OptionRomPkg/ReadMe.txt: Remove CYGGCC
BaseTools: Update MYTOOLS
BaseTools/tools_def.template: Remove VS2003 and VS2005
OptionRomPkg/ReadMe.txt: Remove VS2005
BaseTools/tools_def.template: Remove UNIXGCC
OvmfPkg/README: Remove UNIXGCC
BaseTools/tools_def.template: Remove ELFGCC
BaseTools/tools_def.template: Remove DDK3790
BaseTools/build_rule.template: Remove GCCLD
MdePkg/BaseLib: Change a variable type in a bitwise operation
MdeModulePkg/PropertiesTableAttributesDxe: Remove this driver
IntelSiliconPkg/MicrocodeUpdateDxe: Error message enhancement
Siyuan Fu (8):
ArmVirtPkg: Replace obsoleted network drivers from platform DSC/FDF.
ArmVirtPkg: Remove redundant library instances in ArmVirtQemuKernel.dsc
MdeModulePkg: Delete Tcp4Dxe in MdeModulePkg.
NetworkPkg: Remove some clarification from TcpDxe.inf
MdeModulePkg: Delete IScsiDxe in MdeModulePkg.
NetworkPkg: Remove some clarification from IScsiDxe.inf
MdeModulePkg: Delete UefiPxeBcDxe in MdeModulePkg.
NetworkPkg: Remove some clarification from UefiPxeBcDxe.inf
Solanki, Digant H (1):
IntelSiliconPkg\Include\IndustryStandard: Update IGD_OPREGION_MBOX3 Structure
Songpeng Li (3):
ShellPkg/TftpDynamicCommand: Change file writing method in tftp
NetworkPkg/IScsiDxe: Remove unused global variables.
NetworkPkg/Dhcp6Dxe: Remove an unused global variable.
Star Zeng (30):
Maintainers.txt: Update FmpDevicePkg maintainer
Maintainers.txt: Update MdeModulePkg maintainers
MdeModulePkg PeiCore: Remove the using of PcdPeiCoreMaxPeimPerFv
SecurityPkg Tcg(2)Pei: Remove the using of PcdPeiCoreMaxFvSupported
MdeModulePkg PeiCore: Remove the using of PcdPeiCoreMaxFvSupported
MdeModulePkg PeiCore: Remove the using of PcdPeiCoreMaxPpiSupported
OvmfPkg: Remove PcdPeiCoreMaxXXX PCDs' statement
Vlv2TbltDevicePkg: Remove PcdPeiCoreMaxXXX PCDs' statement
MdeModulePkg: Remove PcdPeiCoreMaxXXX PCDs
MdeModulePkg Variable: Add some missing changes for 9b18845
MdeModulePkg Variable: Abstract InitRealNonVolatileVariableStore
MdeModulePkg Variable: Move "extern XXX" to Variable.h
MdeModulePkg Variable: Not get NV PCD in VariableWriteServiceInitialize
MdeModulePkg Variable: Abstract VariableWriteServiceInitializeDxe/Smm
MdeModulePkg Variable: Remove CacheOffset in UpdateVariable()
MdeModulePkg Variable: type case VolatileBase to UINTN directly
MdeModulePkg: Add PcdEmuVariableNvModeEnable in dec
MdeModulePkg: Refine description a little for PcdEmuVariableNvStoreReserved
MdeModulePkg Variable: Add emulated variable NV mode support
MdeModulePkg VariablePei: Don't check BOOT_IN_RECOVERY_MODE
ArmVirtXen: Use merged variable driver for emulated NV mode
ArmVirtXen: Link VarCheckUefiLib NULL class library instance
BeagleBoardPkg: Use merged variable driver for emulated NV mode
QuarkMin: Use merged variable driver for emulated NV mode
CorebootPayloadPkg: Use merged variable driver for emulated NV mode
MdeModulePkg VariableStandaloneMm: Add PcdEmuVariableNvModeEnable in inf
MdeModulePkg: Remove EmuVariableRuntimeDxe
MdeModulePkg/PeiCore: Ensure FfsFileHeader 8 bytes aligned
MdeModulePkg/DxeCore: Ensure FfsFileHeader 8 bytes aligned
IntelFrameworkModulePkg/FwVolDxe: Ensure FfsFileHeader 8 bytes aligned
Stefan Berger (1):
OvmfPkg: Add TCG2 Configuration menu to the Device Manager menu
Sughosh Ganu (3):
ArmPkg/Include: Fix the SPM version SVC ID
StandaloneMM: Include the newly added library class for MMU functions
StandaloneMM: Update permissions for Standalone MM drivers memory area
Sumit Garg (2):
ArmPkg/OpteeLib: Add dummy RPC handler
ArmPkg/OpteeLib: Add OPTEE_SUCCESS return code
Sun, Zailiang (1):
Maintainers.txt: update Vlv2*Pkg maintainers.
Tomasz Michalec (2):
MdeModulePkg/SdMmcPciHcDxe: Add UhsSignaling to SdMmcOverride protocol
MdeModulePkg/SdMmcPciHcDxe: Add SwitchClockFreqPost to SdMmcOverride
Vijayenthiran Subramaniam (2):
MdeModulePkg/Variable: add debug logs in VariableServiceSetVariable
NetworkPkg/IScsiDxe: add debug logs for failed SetVariable attempts
Vladimir Olovyannikov (1):
MdeModulePkg/NonDiscoverablePciDeviceDxe: add missing validation
Vladimir Olovyannikov via edk2-devel (1):
ShellPkg/TftpDynamicCommand: Return proper status
Wang Fan (2):
NetworkPkg: Add WiFi Connection Manager to NetworkPkg
NetworkPkg: Fix Duplicate FreePool Error in WCM
Ye Ting (1):
Maintainers.txt: Change package maintainer and reviewer of CryptoPkg.
Yonghong Zhu (1):
Maintainers.txt: Update BaseTools maintainers
Yunhua Feng (3):
BaseTools: nametuple not have verbose parameter in python3
BaseTools: Remove unnecessary super function
BaseTools: replace long by int
Zhang, Chao B (6):
SecurityPkg: TCG Add more Event type
SecurityPkg: Update TCG PFP spec revision.
SecurityPkg/Tcg: Fix Warnings and Remarks reported by IASL
SecurityPkg/TCG: Upgrade UEFI supporting TCG spec info
MdeModulePkg:Tpm2Acpi.h: Upgrade UEFI supporting TCG spec info
Maintainers.txt: Change package maintainer and reviewer of SecurityPkg.
Zhao, ZhiqiangX (1):
BaseTools: AutoGen and GenFds share the parser data.
Zhichao Gao (8):
ShellPkg: add array index check for shell delay option
MdeModulePkg: change the function name ResetSystem
MdeModulePkg: Add the new API ResetSystem in the head file
MdeModulePkg: Add a new API ResetSystem for DXE ResetSystemLib
MdeModulePkg: Add a new API ResetSystem for Null version
MdeModulePkg: Add a new API ResetSystem for PEI ResetSystemLib
MdeModulePkg: Add a runtime library instance of ResetSystemLib
MdeModulePkg: Add the runtime ResetSystemLib in MdeModulePkg.dsc
Zhijux Fan (38):
BaseTools: Update nasm file build rule to support $(INC)
BaseTools: Add $(INC)-like support when compiling .nasm files
BaseTools:Build fail when PCD use in the [DEPEX] section of INF files
BaseTools:build break if the Path contains SingleFile.Ext
BaseTools:The BuildOptionPcd value is wrong
BaseTools: Fix Pcd Array changes build report issue.
BaseTools:Define Macro in Inf file, the pcdvalue Can't convert
BaseTool:Rename xrange() to range()
BaseTools:use iterate list to replace the itertools
BaseTools: Rename iteritems to items
BaseTools: replace get_bytes_le() to bytes_le
BaseTools:Solve the data sorting problem use python3
BaseTools: Update argparse arguments since it not have version now
BaseTools:Similar to octal data rectification
BaseTools/UPT:merge UPT Tool use Python2 and Python3
BaseTools: update Test scripts support python3
BaseTools/Scripts: Porting PackageDocumentTools code to use Python3
Basetools: It went wrong when use os.linesep
BaseTools:Fv BaseAddress must set If it not set
BaseTools:TestTools character encoding issue
BaseTools:Double carriage return inserted from Trim.py on Python3
BaseTools: change the Division Operator
BaseTools:There is extra blank line in datalog
BaseTools: Similar to octal data rectification
BaseTools: Update windows and linux run scripts file to use Python3
BaseTools:Update build tool to print python version information
BaseTools:Linux Python highest version check.
BaseTools: PCD value incorrect in structure pcd sku case.
BaseTools:StructurePCD value display incorrect in "Not used" section.
BaseTools:Fix a ECC issue
BaseTools:BaseTools supports to the driver combination.
BaseTools:Fixed build failure when specifying multiple BUILDTARGET
BaseTools:PCD value error in structure pcd sku case.
BaseTools:Build fail if define [DEPEX] in library inf
BaseTools:Some build generated files content are not ordered on linux
BaseTools:PackageDocumentTools import lib error occurs.
BaseTools:The BOM character is processed when python reads a file
BaseTools:Run packagedoc_cli.py to generate doc failed
yuchenlin (5):
Revert "OvmfPkg/QemuVideoDxe: list "UnalignedIoInternal.h" in the INF file"
Revert "OvmfPkg/QemuVideoDxe: VMWare SVGA device support"
Revert "OvmfPkg/QemuVideoDxe: Helper functions for unaligned port I/O."
Revert "OvmfPkg: VMWare SVGA display device register definitions"
OvmfPkg: simply use the Bochs interface for vmsvga
zwei4 (1):
Vlv2TbltDevicePkg:Fix build and boot failure of Minnowboard Max platform.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
The edk2-stabe201903 release introduced Python3 support to edk2's
BaseTools; however the Python3 enablement breaks in a corner case (which
is nevertheless supported by the edk2 community), namely the in-module
parallelization that we utilize.
This is tracked under
<https://bugzilla.tianocore.org/show_bug.cgi?id=1607>. For now, work
around the issue (in advance) by forcing Python2. (The workaround is a
no-op before we move to edk2-stabe201903 in the roms/edk2 submodule.)
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Adapt the qemu_edk2_get_toolchain() function in "roms/edk2-funcs.sh" in
advance to edk2 commit 8d7cdfae8cb8 ("OvmfPkg: require GCC48 or later",
2019-01-08), which is part of the "edk2-stable201903" tag.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Extract the dense logic for architecture and toolchain massaging from
"tests/uefi-test-tools/build.sh", to a set of small functions. We'll reuse
these functions for building full platform firmware images.
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
With an external data file, preallocate_co() must write the final byte
to the external data file, not to the qcow2 image file.
This is harmless for preallocation of newly created images (only the
qcow2 file size is increased to the virtual disk size while it should be
much smaller), but with preallocated resize, it could in theory cause
visible corruption if the metadata of the image is larger than the data
(e.g. lots of bitmaps).
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Gcc 9 needs some convincing that sopreprbuf really is going to fill
in iov in the call from soreadbuf, even though the failure case
shouldn't happen.
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20190415121740.9881-1-dgilbert@redhat.com>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Filter the qemu-nbd server output to get rid of a direct reference
to my build directory.
Fixes: e9dce9cb
Reported-by: Max Reitz <mreitz@redhat.com>
Signed-off-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
tmpfs does not support O_DIRECT. Detect this case, and skip flipping
@direct if the filesystem does not support it.
Fixes: bf3e50f623
Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
It turns out that having options listed in three places continues to be
a bad idea. I'm still toying with the idea of an improved infrastructure
here, but in the meantime, another bandaid.
There are three locations:
(1) .hx file, formatted as texi
(2) .hx file, formatted as human readable.
(3) .texi file, as section headers, formatted as texi.
You can compare the two summaries within the .hx file like so:
Human-readable command summaries:
`./qemu-img --help | grep 'Command syntax' -A14`
Detokenized texi command summaries:
`grep "@item" qemu-img-cmds.hx | sed -E 's|@var\{([^\}]*?)\}|\1|g'`
You can compare the two separate texi summaries like so:
Texi command summaries:
`grep "@item" qemu-img-cmds.hx"`
Texi command headers:
grep -E "@item.*@var" qemu-img.texi | tail -14
Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Message-id: 20190409210655.777-1-jsnow@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
s390-ccw.img contains support for booting from vfio-ccw dasd passthrough
devices now, and s390-netboot.img is updated since there were changes
to the code that is shared between s390-ccw.img and s390-netboot.img.
Signed-off-by: Thomas Huth <thuth@redhat.com>
When the user does not specify which device to boot from then we end
up guessing. Instead of simply grabbing the first available device let's
be a little bit smarter and only choose devices that might be bootable
like disk, and not console devices.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Message-Id: <1554388475-18329-17-git-send-email-jjherne@linux.ibm.com>
[thuth: Added fix for virtio_is_supported() not being called anymore]
Signed-off-by: Thomas Huth <thuth@redhat.com>
Allows guest to boot from a vfio configured real dasd device.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <1554388475-18329-16-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
The dasd IPL procedure needs to execute a few previously unused
channel commands. Let's define them and their associated data
structures.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Acked-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-15-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
The boot method is different depending on which device type we are
booting from. Let's examine the control unit type to determine if we're
a virtio device. We'll eventually add a case to check for a real dasd device
here as well.
Since we have to call enable_subchannel() in main now, might as well
remove that call from virtio.c : run_ccw(). This requires adding some
additional enable_subchannel calls to not break calls to
virtio_is_supported().
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-14-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Now that we have a Channel I/O library let's modify virtio boot code to
make use of it for running channel programs.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Acked-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-13-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Make a new routine find_boot_device to locate the boot device for all
cases, not just virtio.
The error message for the case where no boot device has been specified
and a suitable boot device cannot be auto detected was specific to
virtio devices. We update this message to remove virtio specific wording.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <1554388475-18329-12-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
We need a method for finding the subchannel of a dasd device. Let's
modify find_dev to handle this since it mostly does what we need. Up to
this point find_dev has been specific to only virtio devices.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Acked-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <1554388475-18329-11-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Add verbose error output for when unexpected i/o errors happen. This eases the
burden of debugging and reporting i/o errors. No error information is printed
in the success case, here is an example of what is output on error:
cio device error
ssid : 0x0000000000000000
cssid : 0x0000000000000000
sch_no: 0x0000000000000000
Interrupt Response Block Data:
Function Ctrl : [Start]
Activity Ctrl : [Start-Pending]
Status Ctrl : [Alert] [Primary] [Secondary] [Status-Pending]
Device Status : [Unit-Check]
Channel Status :
cpa=: 0x000000007f8d6038
prev_ccw=: 0x0000000000000000
this_ccw=: 0x0000000000000000
Eckd Dasd Sense Data (fmt 32-bytes):
Sense Condition Flags :
Residual Count =: 0x0000000000000000
Phys Drive ID =: 0x000000000000009e
low cyl address =: 0x0000000000000000
head addr & hi cyl =: 0x0000000000000000
format/message =: 0x0000000000000008
fmt-dependent[0-7] =: 0x0000000000000004
fmt-dependent[8-15]=: 0xe561282305082fff
prog action code =: 0x0000000000000016
Configuration info =: 0x00000000000040e0
mcode / hi-cyl =: 0x0000000000000000
cyl & head addr [0]=: 0x0000000000000000
cyl & head addr [1]=: 0x0000000000000000
cyl & head addr [2]=: 0x0000000000000000
The Sense Data section is currently only printed for ECKD DASD.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <1554388475-18329-10-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Introduce a library function for executing format-0 and format-1
channel programs and waiting for their completion before continuing
execution.
Add cu_type() to channel io library. This will be used to query control
unit type which is used to determine if we are booting a virtio device or a
real dasd device.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Message-Id: <1554388475-18329-9-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Introduce inline functions to convert between pointers and unsigned 32-bit
ints. These are used to hide the ugliness required to avoid compiler
warnings.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-8-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Create a new header for basic architecture specific definitions and add a
mapping of low core memory. This mapping will be used by the real dasd boot
process.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-7-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Create a separate library for channel i/o related code. This decouples
channel i/o operations from virtio and allows us to make use of them for
the real dasd boot path.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-6-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Add proper typedefs to all structs and modify all bit fields to use consistent
formatting.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Acked-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-5-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Create a boot_setup function to handle getting boot information from
the machine/hypervisor. This decouples common boot logic from the
virtio code path and allows us to make use of it for the real dasd boot
scenario.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Acked-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <1554388475-18329-4-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Move channel i/o setup code out to a separate function. This decouples cio
setup from the virtio code path and allows us to make use of it for booting
dasd devices.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Acked-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Reviewed-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <1554388475-18329-3-git-send-email-jjherne@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Add bootindex property and iplb data for vfio-ccw devices. This allows us to
forward boot information into the bios for vfio-ccw devices.
Refactor s390_get_ccw_device() to return device type. This prevents us from
having to use messy casting logic in several places.
Signed-off-by: Jason J. Herne <jjherne@linux.ibm.com>
Acked-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Message-Id: <1554388475-18329-2-git-send-email-jjherne@linux.ibm.com>
[thuth: fixed "typedef struct VFIOCCWDevice" build failure with clang]
Signed-off-by: Thomas Huth <thuth@redhat.com>
Here's a last minute pull request for 4.0. Turns out my last pull
request, to fix a regression in extended config space access for the
pseries machine didn't fix things hard enough. This PR has a single
patch which improves the fix to work in more cases.
It's a ghastly, ghastly hack, but it's simple and localized. I
already have patches almost ready to go in 4.1 that provides a simpler
and cleaner solution to all this.
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEdfRlhq5hpmzETofcbDjKyiDZs5IFAlywI1gACgkQbDjKyiDZ
s5JDchAAy5LBsVDPH3W/X3Btbrfmk8aY92pWbfZZBfCKVTRYD2HrQ9bqUgK8rDXe
TIPhVLhZsZdxJX6aAMRgymeO8vDdoksSmldGSQe9nBrnywgwoWBMEC4P5anVNGQv
8SSZBuhBaea3lBk8mF2vgJsP9QiLtQvHy/l9lTDaUSVNgws3fqGf5/YBjx7h6E+R
aUdgTvlDvPkm14vZN7W1bkpGYk3J74rVo6qu91zRD9hKzHTuFnRxZE4EQpOKvaNa
Tq8we05kfKdct5JoJXj+NvsT77lgynyt0AXT/TGtRdS2cgZ3JtHq2ZD/93dBMS/d
A5fNClEQ45XW/0dLMzzTN4xP3yII5N4mY78kB58L5PNezxCa+7MvxW/2QEHFskyi
MaWXN/2Dchx9cBvQuueulpaQHUiAYpFVIG9S0OPxG/SDdyqo929F2Z/P152scp3a
ChG9JKVgXtp3JHMWlBPFdOPJhNhtUN9HiqTrydbVka1rMJyAU+8hXpo96BvPZGdf
oH+nEqoDiJLGHp930esQ0F7wTQbSaIF+nEVkF8Q71NLDELnpTBMOc02TLhLocuqJ
cwlDHkw+LN+h+gdzxKtOMMVmL3MG47zsgvY8pgqKItP5i7k3gqEq4lUc75P6Athe
ULVHYQukowD4ns5ngBPZXZyv0zq7EAa8xoT/FAMx92UcNdshqKg=
=sN2O
-----END PGP SIGNATURE-----
Merge remote-tracking branch 'remotes/dgibson/tags/ppc-for-4.0-20190412' into staging
ppc patch queue for 2018-04-12
Here's a last minute pull request for 4.0. Turns out my last pull
request, to fix a regression in extended config space access for the
pseries machine didn't fix things hard enough. This PR has a single
patch which improves the fix to work in more cases.
It's a ghastly, ghastly hack, but it's simple and localized. I
already have patches almost ready to go in 4.1 that provides a simpler
and cleaner solution to all this.
# gpg: Signature made Fri 12 Apr 2019 06:34:16 BST
# gpg: using RSA key 75F46586AE61A66CC44E87DC6C38CACA20D9B392
# gpg: Good signature from "David Gibson <david@gibson.dropbear.id.au>" [full]
# gpg: aka "David Gibson (Red Hat) <dgibson@redhat.com>" [full]
# gpg: aka "David Gibson (ozlabs.org) <dgibson@ozlabs.org>" [full]
# gpg: aka "David Gibson (kernel.org) <dwg@kernel.org>" [unknown]
# Primary key fingerprint: 75F4 6586 AE61 A66C C44E 87DC 6C38 CACA 20D9 B392
* remotes/dgibson/tags/ppc-for-4.0-20190412:
spapr_pci: Fix broken naming of PCI bus
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Recent commit 5cf0d326a0 fixed a regression which was preventing the
guest to access the extended config space of a PCIe device. This was
done by introducing a new PCI bus subtype for PAPR. The original fix
was causing PCI busses to be named "spapr-pci-host-bridge-root-bus.N"
instead of "pci.N", which was making upper layers unhappy of course.
This got worked around by hardcoding the PCI bus name to "pci.0", but
this only works for the default PHB. And we're now hitting:
# qemu-system-ppc64 \
-device spapr-pci-host-bridge,index=1 \
-device e1000e,bus=pci.0 \
-device e1000e,bus=pci.1
qemu-system-ppc64: -device e1000e,bus=pci.1: Bus 'pci.1' not found
David already posted some patches [1] to control PCI extended config
space accesses with a new flag in the base PCI bus class instead of
subtyping. These patches are a bit more intrusive though, and
are targetted for 4.1.
When no name is passed to pci_register_bus(), the core device code
generates a lowercase name based on the QOM typename. The typename
for the base PCI bus class is "PCI", hence the "pci.0", "pci.1"
bus names. Rename the type of the PAPR PCI bus to "pci", so that
the QOM code can generate proper names. This is a hack but it is
enough to fix the regression. And all this will be reworked properly
in 4.1.
[1] https://patchwork.ozlabs.org/project/qemu-devel/list/?series=100486
Fixes: 5cf0d326a0
Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <155500034416.646888.1307366522340665522.stgit@bahia.lab.toulouse-stg.fr.ibm.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
A single patch to avoid an overflow when loading device trees.
-----BEGIN PGP SIGNATURE-----
iQEzBAABCAAdFiEE9sSsRtSTSGjTuM6PIeENKd+XcFQFAlytMDAACgkQIeENKd+X
cFRsGwf/ZdJ+HKAClxK2oFb2Z6bk1kqb1zbeJ1rQlSHD7r9CHnVCs3DBqnY7Oilw
4VGhZiMdS6zCDRb+g+rKBFpfRU3XTygKYTr9na+ADpLcSGeLZlwbbDDFvABvKPpx
4MDVemNRCyaHHdJeZpRxTlALUFBeNCRQWGtUcCp1BP/xjRQc1IbMj/6gEi7rSD13
y7zFVfwLM7QiJpQHTw9VBAgCtLVfRPP7S27Ey+CnKwf97kqLsLspZw0nXfNgm9sk
vrZ1XWcYDO/5BusYo9Kcdie8C1ykiSGMtJax5DFnOhNjK9A8tIx70v24dL5mQMJg
HKzHuXeX4wdL0L12+fBRsL1wAZDtfg==
=6l+a
-----END PGP SIGNATURE-----
Merge remote-tracking branch 'remotes/alistair/tags/pull-device-tree-20190409-1' into staging
Single device tree fix for 4.0
A single patch to avoid an overflow when loading device trees.
# gpg: Signature made Wed 10 Apr 2019 00:52:16 BST
# gpg: using RSA key F6C4AC46D4934868D3B8CE8F21E10D29DF977054
# gpg: Good signature from "Alistair Francis <alistair@alistair23.me>" [full]
# Primary key fingerprint: F6C4 AC46 D493 4868 D3B8 CE8F 21E1 0D29 DF97 7054
* remotes/alistair/tags/pull-device-tree-20190409-1:
device_tree: Fix integer overflowing in load_device_tree()
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
QEMU currently crashes when you try to hot-plug an "nvdimm" device
on older machine types:
$ qemu-system-x86_64 -monitor stdio -M pc-1.1
QEMU 3.1.92 monitor - type 'help' for more information
(qemu) device_add nvdimm,id=nvdimmn1
qemu-system-x86_64: /home/thuth/devel/qemu/util/error.c:57: error_setv:
Assertion `*errp == ((void *)0)' failed.
Aborted (core dumped)
The call to hotplug_handler_pre_plug() in pc_memory_pre_plug() has been
added recently before the check whether nvdimm is enabled. It should
be done after the check. And while we're at it, also check the errp
after the hotplug_handler_pre_plug(), otherwise errors are silently
ignored here.
Fixes: 9040e6dfa8
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-Id: <20190407092314.11066-1-thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
In the accessor functions ld*_he_p() and st*_he_p() we use memcpy()
to perform a load or store to a pointer which might not be aligned
for the size of the type. We rely on the compiler to optimize this
memcpy() into an efficient load or store instruction where possible.
This is required for good performance, but at the moment it is also
required for correct operation, because some users of these functions
require that the access is atomic if the pointer is aligned, which
will only be the case if the compiler has optimized out the memcpy().
(The particular example where we discovered this is the virtio
vring_avail_idx() which calls virtio_lduw_phys_cached() which
eventually ends up calling lduw_he_p().)
Unfortunately some compile environments, such as the fortify-source
setup used in Alpine Linux, define memcpy() to a wrapper function
in a way that inhibits this compiler optimization.
The correct long-term fix here is to add a set of functions for
doing atomic accesses into AddressSpaces (and to other relevant
families of accessor functions like the virtio_*_phys_cached()
ones), and make sure that callsites which want atomic behaviour
use the correct functions.
In the meantime, switch to using __builtin_memcpy() in the
bswap.h accessor functions. This will make us robust against things
like this fortify library in the short term. In the longer term
it will mean that we don't end up with these functions being really
badly-performing even if the semantics of the out-of-line memcpy()
are correct.
Reported-by: Fernando Casas Schössow <casasfernando@outlook.com>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20190318112938.8298-1-peter.maydell@linaro.org>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>