mirror of https://github.com/acidanthera/audk.git
30a35388d1
When looping through all PCI functions, code should not look for functions 1-7 if function 0 is not present or if function 0 indicates the device is not multifunction. Prior to this fix the code would use stale data in a buffer to determine if a device is multifunction even if function 0 is not present. This fixes a code bug and provides very small performance improvements. PCI 2.3 Specification states: They [multifunction devices] are also required to always implement function 0 in the device. Implementing other functions is optional and may be assigned in any order. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Joseph Shifflett <joseph.shifflett@hpe.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18575 6f19259b-4bc3-4df7-8a09-765794883524 |
||
---|---|---|
.. | ||
AcpiResetDxe | ||
BiosVideoThunkDxe | ||
BootSector | ||
DxeIpl | ||
EfiLdr | ||
FSVariable | ||
FvbRuntimeService | ||
Include | ||
LegacyMetronome | ||
Library | ||
PciBusNoEnumerationDxe | ||
PciRootBridgeNoEnumerationDxe | ||
SataControllerDxe | ||
SmbiosGenDxe | ||
Contributions.txt | ||
CreateBootDisk.bat | ||
CreateBootDisk.sh | ||
DuetPkg.dec | ||
DuetPkg.fdf | ||
DuetPkgIa32.dsc | ||
DuetPkgX64.dsc | ||
GetVariables.bat | ||
License.txt | ||
PostBuild.bat | ||
PostBuild.sh | ||
ReadMe.txt | ||
build32.sh | ||
build64.sh |
ReadMe.txt
Developer's UEFI Emulation (DUET) on Edk2 A. Build DUET image on Windows Platform ======================================== 1. Tools preparation To build DUET image, following tools are required: 1). *Visual Studio 2005* Assume installed at <VS_PATH>, e.g.: C:\Program Files\Microsoft Visual Studio .NET 2003\. 2). WinDDK Assume installed at <WIN_DDK_PATH>, e.g.: C:\WINDDK\3790.1830\. 2. Build steps 2.1 Build Duet Platform module 1). run cmd.exe to open command line window. 2). enter workspace root directory such as c:\edk2_tree 2). run "edksetup.bat" 3). run "build -p DuetPkg\DuetPkg.dsc -a IA32" for IA32 architecture platform or "build -p DuetPkg\DuetPkg.dsc -a X64" for X64 architecture platform. 2.2 Execute post build actions 1). enter <Workspace>\DuetPkg directory. 2). run "PostBuild.bat IA32" for IA32 architecture platform or "PostBuild.bat X64" for X64 architecture platform. Create bootable disk ====================== 3. Create boot disk The following steps are same for IA32 architecture platform or X64 architecture platform. 3.1 Create floppy boot disk 1). enter <Workspace>\DuetPkg directory. 2). Insert a floppy disk to drive 3). run "CreateBootDisk.bat floppy a: FAT12 IA32" if floppy drive is a: disk and Arch to boot is IA32. or run "CreateBootDisk.bat floppy a: FAT12 X64" if floppy drive is a: disk and Arch to boot is X64. 3.2 Create usb boot disk 1). enter <Workspace>\DuetPkg directory. 2). Plugin usb disk 3). run "CreateBootDisk.bat usb e: FAT16 IA32" if usb drive is e: and FAT format is FAT16 and Arch to boot is IA32. or "CreateBootDisk.bat usb e: FAT16 X64" if usb drive is e: and FAT format is FAT16 and Arch to boot is X64. or "CreateBootDisk.bat usb e: FAT32 IA32" if usb drive is e: and FAT format is FAT32 and Arch to boot is IA32. or "CreateBootDisk.bat usb e: FAT32 X64" if usb drive is e: and FAT format is FAT32 and Arch to boot is X64. 4). UnPlug usb disk and plugin it again. 5). run "CreateBootDisk.bat usb e: FAT16 IA32 step2" if usb drive is e: and FAT format is FAT16 and Arch to boot is IA32. or "CreateBootDisk.bat usb e: FAT16 X64 step2" if usb drive is e: and FAT format is FAT16 and Arch to boot is X64. or "CreateBootDisk.bat usb e: FAT32 IA32 step2" if usb drive is e: and FAT format is FAT32 and Arch to boot is IA32. or "CreateBootDisk.bat usb e: FAT32 X64 step2" if usb drive is e: and FAT format is FAT32 and Arch to boot is X64. B. Build DUET image on Linux Platform ====================================== 1. Tools preparation To build DUET image, GCC44 is required: 1). Base on below link to create GCC44 build environment. http://tianocore.sourceforge.net/wiki/Using_EDK_II_with_Native_GCC 2. Build steps 2.1 Build Duet Platform module 1). Open the terminal. 2). enter workspace root directory such as /edk2_tree 3). run ". edksetup.sh BaseTools" 4). run "build -p DuetPkg/DuetPkg.dsc -a IA32 -t GCC44" for IA32 architecture platform or "build -p DuetPkg/DuetPkg.dsc -a X64 -t GCC44" for X64 architecture platform. 2.2 Execute post build actions 1). enter /edk2_tree/DuetPkg directory. 2). run "./PostBuild.sh IA32 GCC44" for IA32 architecture platform or "./PostBuild.sh X64 GCC44" for X64 architecture platform. NOTE: After post build action, you should check the size of EfiLdr at $WORKSPACE/Build/DuetPkg/DEBUG_GCC44 directory, it must less than 470k. If not, you should manually remove some unnecessary drivers at DuetPkg.fdf file. 3. Create bootable disk The following steps are same for IA32 architecture platform or X64 architecture platform. Now only support floopy. 3.1 Create floppy boot disk 1). enter /edk2_tree/DuetPkg directory. 2). Insert a floppy disk to drive 3). run "CreateBootDisk.sh" to build floppy drive such as "./CreateBootDisk.sh floppy /media/floppy0 /dev/fd0 FAT12 IA32"