summaryrefslogtreecommitdiff
path: root/MdeModulePkg/Universal/Disk
AgeCommit message (Collapse)Author
2017-04-27MdeModulePkg: Move to new locationGuo Mang
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Guo Mang <mang.guo@intel.com>
2017-03-20MdeModulePkg/RamDiskDxe: fix C string literal catenation in info messagesLaszlo Ersek
RamDiskDxe installs the RamDiskAcpiCheck() Ready To Boot callback function. If EFI_ACPI_TABLE_PROTOCOL and/or EFI_ACPI_SDT_PROTOCOL are not found, then informational messages are logged, and the RAM disks are not published to the (nonexistent) NFIT table. The logic is fine, but the info messages are not concatenated correctly from multiple string literals -- the second parts are passed as (unused) arguments to DEBUG(). Fix the typos. Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Feng Tian <feng.tian@intel.com> Cc: Hao Wu <hao.a.wu@intel.com> Cc: Leif Lindholm <leif.lindholm@linaro.org> Cc: Star Zeng <star.zeng@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2016-10-27MdeModulePkg/Universal: Fix typos in commentsGary Lin
- stardard -> standard - doule -> double - defalut -> default - Pacakge -> Package - globa -> global - responsiblity -> responsibility - outputed -> outputted - specifiecd -> specified - Resuts -> Results - the a -> a - suported -> supported - assocated -> associated - TURE -> TRUE - successfull -> successfully - excute -> execute - reseting -> resetting - Retrive -> Retrieve - funciton -> function - paramter -> parameter - dependecy -> dependency - boundry -> boundary - permenantly -> permanently Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gary Lin <glin@suse.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
2016-10-12MdeModulePkg/CdExpressPei: Use PcdRecoveryFileName PCD.Jiewen Yao
This PCD is used to indicated the recovery file name. The previous name - FvMain.Fv is hardcoded in CdExpressPei. It does not make sense to force the name. Now a platform may use any recovery file name. Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com>
2016-10-08MdeModulePkg/CdExpressPei: Fix capsule size mismatch issue.Jiewen Yao
Current PeiCdExpress driver will return capsule size to be block aligned. It will fail if we check the capsuleImageSize field. The patch correct the returned capsule size. Tested-by: Eric Dong <eric.dong@intel.com> Cc: Feng Tian <feng.tian@intel.com> Cc: Eric Dong <eric.dong@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-07-20MdeModulePkg RamDiskDxe: Not use hardcode 'SectionInstance' to locate SSDTHao Wu
This commit will scan all the EFI raw section instances within the module's FV to make sure the NVDIMM root device SSDT can be properly located. Cc: Feng Tian <feng.tian@intel.com> Cc: Zhang Chao B <chao.b.zhang@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Chao Zhang <chao.b.zhang@intel.com>
2016-06-12MdeModulePkg/RamDiskDxe: Add Memory Type selection support in Ramdisk HIITapan Shah
Adding an option in HII menu so user can choose memory type to use when creating a RAM Disk in system. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Tapan Shah <tapandshah@hpe.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hpe.com>
2016-06-12MdeModulePkg RamDiskDxe: Do not save 'Size' numeric value by varstoreHao Wu
The 'Size' numeric value used when creating a raw RAM disk does not require a varstore to save its previous value in the create raw RAM disk HII page. The expecting behavior is that after a user created a raw RAM disk, the next time when the create raw RAM disk page is entered, the 'Size' numeric will be the default value (EFI_PAGE_SIZE). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Tapan Shah <tapandshah@hpe.com>
2016-05-30MdeModulePkg RamDiskDxe: Fix VS2010 build errorHao Wu
Potentially uninitialized local variables 'TableKey' and 'TableHeader' might be used in functions RamDiskPublishNfit() and RamDiskUnpublishNfit() in file RamDiskProtocol.c. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Qiu Shumin <shumin.qiu@intel.com>
2016-05-25MdeModulePkg RamDiskDxe: VALID_ARCH cleanup to list supported optionsHao Wu
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-05-10MdeModulePkg RamDiskDxe: Fix wrong HII behavior for more than 8 RAM disksHao Wu
The RamDiskDxe driver originally uses a variable-length HII varstore to retrieve the HII checkbox status of each registered RAM disk. However, HII does not support the variable-length varstore feature. Therefore, only the checkbox status for the first 8 RAM disks are tracked for the following definition of HII varstore structure considering the alignment: typedef struct { UINT64 Size; UINT8 RamDiskList[0]; } RAM_DISK_CONFIGURATION; This commit uses the private data of each registered RAM disks to track the HII checkbox status instead to resolve the issue. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-05-10MdeModulePkg RamDiskDxe: Report ACPI NFIT for reserved memory RAM disksHao Wu
The RamDiskDxe now will report RAM disks with reserved memory type to NFIT in the ACPI table. This commit will also make sure that an NVDIMM root device exists in the \SB scope before reporting any RAM disk to NFIT. To properly report the NVDIMM root device, one will need to append the following content in the [Rule.Common.DXE_DRIVER] field in platform FDF files: RAW ACPI Optional |.acpi RAW ASL Optional |.aml Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hpe.com>
2016-03-31MdeModulePkg RamDiskDxe: Fix incorrect RAM disk memory address calculationSamer El-Haj-Mahmoud
EndingAddress is calculated incorrectly. Original code calculates it as (StartingAddress + Size). Correct value should be (StartingAddress + Size - 1. Note: Besides the changes made by Samer, Hao also fixed a similar issue in RamDiskImpl.c Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Samer El-Haj-Mahmoud <elhaj@hpe.com> Signed-off-by: Tapan Shah <tapandshah@hpe.com> Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Tapan Shah <tapandshah@hpe.com>
2016-03-29MdeModulePkg PartitionDxe: Add Re-entry handling logic for BindingStopHao Wu
There are scenario when the BindingStop service of PartitionDxe driver be re-entered. An example will be ejecting a DVD from a SATA DVDROM and then run "reconnect -r" under shell. In this specific case, part of the calling stack will be: PartitionDriverBindingStop() (PartitionDxe) -> Stop first child handle (PartitionDxe) -> ScsiDiskFlushBlocksEx() (ScsiDiskDxe) -> A media change is detected (ScsiDiskDxe) -> Reinstall of BlockIO(2) protocols (ScsiDiskDxe) -> Entering PartitionDriverBindingStop() again (PartitionDxe) -> Potential risk of referencing already stopped child handle (PartitionDxe) ... The current code has potential issue of referencing of already stopped child handle. This commit adds re-entry handling logic to resolve such issue. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-03-29MdeModulePkg DiskIoDxe: Media status check not be done at DiskIo levelHao Wu
Found an issue that file system cannot be started on a DVD when doing the following process: Boot to shell with a DVD inside a SATA DVDROM. Eject the DVD and run "reconnect -r". Put the DVD inside again and run "reconnect -r". The cause is that after executing the second reconnect action, DiskIo immediately returns EFI_NO_MEDIA in function DiskIo2ReadWriteDisk() when checking the media information. However, at this time, the media information does not get updated by the ScsiDisk driver. Therefore, DiskIo driver should left the no media check to ScsiDisk driver. Generally, the media changed and media write protect check should also be left to lower-level device driver. Thus, these two checks in function DiskIo2ReadWriteDisk() are also removed. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-03-29MdeModulePkg PartitionDxe: Some ISO images cannot be recognized properlyHao Wu
Some ISO images cannot be recognized properly when they are on media whose block size is not 2048 bytes. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-03-24MdeModulePkg/RamDiskDxe: Fix typo in HII messageAlcantara, Paulo
s/Configutation/Configuration/ Cc: Feng Tian <feng.tian@intel.com> Cc: Star Zeng <star.zeng@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Paulo Alcantara <paulo.alc.cavalcanti@hp.com> Signed-off-by: Juliano Ciocari <juliano.ciocari@hp.com> Reviewed-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Feng Tian <feng.tian@Intel.com>
2016-03-23MdeModulePkg RamDiskDxe: Remove unnecessary TPL raise operationsHao Wu
There is no asynchronous operations to the registered RAM disks link list maintained within RamDiskDxe driver, therefore, the TPL raise and restore operations when dealing with the link list are unnecessary. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-03-23MdeModulePkg RamDiskDxe: Uninstall DEVICE_PATH_PROTOCOL with correct paramHao Wu
Previously, the code uninstalls the DEVICE_PATH_PROTOCOL with the device path given by caller of the 'RamDiskUnregister' function. The given device path might be different from the one used to install the DEVICE_PATH_PROTOCOL. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-03-23MdeModulePkg RamDiskDxe: Remove unnecessary 'DisconnectController' callsHao Wu
The 'DisconnectController' function calls after 'UninstallMultipleProtocolInterfaces' are unnecessary, since 'DisconnectController' is called inside function 'UninstallMultipleProtocolInterfaces'. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-02-29MdeModulePkg RamDiskDxe: Install Block I/O 2 Protocol on RAM disk devicesHao Wu
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hpe.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-02-29MdeModulePkg: Add RamDiskDxe driver implementationHao Wu
The RamDiskDxe driver will: 1. Produce the EFI RAM Disk Protocol 2. Install RAM disk device path and block I/O related protocols on the RAM disk device handle. 3. Install RAM disk configuration form to HII database Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hpe.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-02-23MdeModulePkg/Partition: Fix 64bit build failure caused by last patchNi, Ruiyu
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2016-02-19MdeModulePkg/Partition: Use proper partition number for MBRRuiyu Ni
UEFI Spec 2.3.1.D Section 9.3.5.1 says Partitions are numbered according to their entry in their respective partition table, starting with 1. Update the code for MBR partition to follow this rule. Ref: https://github.com/tianocore/edk2/issues/50 Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
2015-12-22MdeModulePkg DiskIoDxe: Check for MediaPresent in DiskIo2ReadWriteDisk()Hao Wu
Add check to see if there is a media in the disk device. If not return EFI_NO_MEDIA directly. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19446 6f19259b-4bc3-4df7-8a09-765794883524
2015-12-15MdeModulePkg: Convert all .uni files to utf-8Jordan Justen
To convert these files I ran: $ python3 BaseTools/Scripts/ConvertUni.py MdeModulePkg Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19257 6f19259b-4bc3-4df7-8a09-765794883524
2015-07-07MdeModulePkg/PartitionDxe: Fix media probeRonald Cron
The call in ProbeMediaStatus() to the ReadDisk() function of the EFI_DISK_IO_PROTOCOL interface implemented in DiskIoDxe/DiskIo.c crashed in DiskIo2ReadWriteDisk() because of the NULL value of the destination buffer pointer. Pass the address of a buffer in the stack instead of a NULL pointer. In addition to avoiding the crash, that way, the media probe does not depend anymore on the way the EFI_DISK_IO_PROTOCOL implementation deals with a NULL value of the destination buffer pointer as the UEFI specification does not specify the expected behaviour. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ronald Cron <Ronald.Cron@arm.com> Reviewed-by: Olivier Martin <olivier.martin@arm.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17859 6f19259b-4bc3-4df7-8a09-765794883524
2015-05-21MdeModulePkg/CdExpressPei: Fix build errorFeng Tian
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17489 6f19259b-4bc3-4df7-8a09-765794883524
2015-05-20MdeModulePkg/CdExpressPei: Add RecoveryBlockIo2Ppi supportFeng Tian
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Feng Tian <feng.tian@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17481 6f19259b-4bc3-4df7-8a09-765794883524
2015-01-13Fix IA32 build failure: Use MultU64x32 for 64bit * 32bit.Ruiyu Ni
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16604 6f19259b-4bc3-4df7-8a09-765794883524
2015-01-12MdeModulePkg/PartitionDxe: Fixed El Torito support when the medium is not a ↵Olivier Martin
CDROM El Torito format can be used on different media (eg: USB). A ISO image can be dumped onto a USB mass-storage. These media might not have the same block size as the CDROM media (ie: 2KB). The El Torito code and the specification assumes a LBA 2KB. In addition, the specification says in "12.3.4.4 CD-ROM and DVD-ROM": UEFI code does not assume a fixed block size. I was able to dupliacte the issue by copying a debian ISO on a USB driver. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16600 6f19259b-4bc3-4df7-8a09-765794883524
2014-11-27MdeModulePkg: Misc comments and DEBUG messagesSamer El-Haj-Mahmoud
Fixed some spelling typos in some comments. Added a couple of useful DEBUG messages Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Samer El-Haj-Mahmoud <samer.el-haj-mahmoud@hp.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16450 6f19259b-4bc3-4df7-8a09-765794883524
2014-10-15AtaBusDxe: Fix ReadBlockEx andWriteBlockEx to still signal event when the ↵Ruiyu Ni
BufferSize is 0. DiskIoDxe: Fix ReadDiskEx and WriteDiskEx to not modify the user’s buffer when the BufferSize is 0. DiskIoDxe: Fix ReadDiskEx and WriteDiskEx hang issue when the submitted blockio2 task is completed before submitting another blockio2 task. DiskIoDxe: Fix FlushEx to free the flush task item in callback (memory leak issue). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16215 6f19259b-4bc3-4df7-8a09-765794883524
2014-09-03MdeModulePkg: Convert non DOS format files to DOS format and remove unused ↵Gao, Liming
module UNI files. 1. Module UNI and Package UNI files are not DOS format. Convert them to DOS format. 2. Remove unused SectionExtractionDxeModStrs.uni and SectionExtractionPeiModStrs.uni Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Gao, Liming <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16044 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-28MdeModulePkg: INF/DEC file updates to EDK II packagesZeng, Star
2. Add MODULE_UNI_FILE file that contains the localized Abstract and Description of a module. a. Addresses an information gap between INF files and the UEFI Distribution Packaging Specification XML schema b. There will be an associated update to UPT in BaseTools to consume MODULE_UNI_FILE and associated UNI file during UDP creation that performs the INF -> XML conversion. c. There will be an associated update to UPT in BaseTools to produce MODULE_UNI_FILE and associated UNI file during UDP installation that performs the XML -> INF conversion. 3. Add Module Extra UNI file that provides the localized Name of a module. a. [UserExtensions.TianoCore."ExtraFiles"] provides an easy method for a module to specify extra files not listed in [Sources] or [Binaries] sections to be added to a UDP without having to list the files in the UPT package information data file. b. There will be an associated update to UPT in BaseTools to package up files listed in [UserExtensions.TianoCore."ExtraFiles"] during UDP creation. c. UNI file contains localized name of a module to go along with the localized Abstract and Description from the MODULE_UNI_FILE. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zeng, Star <star.zeng@intel.com> Reviewed-by: Gao, Liming <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15963 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-28MdeModulePkg: INF/DEC file updates to EDK II packagesZeng, Star
1. Usage information in INF file comment blocks are either incomplete or incorrect. This includes usage information for Protocols/PPIs/GUIDs/PCDs/HOBs/Events/BootModes. The syntax for usage information in comment blocks is defined in the EDK II Module Information (INF) Specification Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Zeng, Star <star.zeng@intel.com> Reviewed-by: Gao, Liming <liming.gao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15962 6f19259b-4bc3-4df7-8a09-765794883524
2014-08-19MdeModulePkg/PartitionDxe: Simplify the error handling of ↵Sergey Isakov
DriverBindingSupported(). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Sergey Isakov <isakov-sl@bk.ru> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15828 6f19259b-4bc3-4df7-8a09-765794883524
2014-02-12MdeModulePkg/DiskIo: Introduced 'PcdDiskIoDataBufferBlockNum'Olivier Martin
PcdDiskIoDataBufferBlockNum replaced the hardcoded value into the Disk I/O driver. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> Reviewed-By: Tian, Feng <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15235 6f19259b-4bc3-4df7-8a09-765794883524
2014-01-06MdeModulePkg CdExpressPei: Use correct PeiServices pointer to call low level ↵Star Zeng
BlockIoPpi->ReadBlocks. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15050 6f19259b-4bc3-4df7-8a09-765794883524
2013-12-17Add the missing assignment of EFI_DISK_IO2_TOKEN::Token in FlushDiskEx() ↵Ruiyu Ni
implementation. Without the assignment, system may hang sometimes. Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14991 6f19259b-4bc3-4df7-8a09-765794883524
2013-09-17Fix 3 bugs in DiskIoDxe and PartitionDxe drivers introduced in DiskIo2 ↵Ruiyu Ni
implementation. 1. DiskIo2 shouldn't signal the event when the *Ex interface returns failure status per the UEFI spec. 2. PartitionDxe should close DiskIo2 protocol when error happens in DriverBindingStart() otherwise Fat driver cannot open the DiskIo2 BY_DRIVER. 3. PartitionDxe should create event using TPL_NOTIFY instead of TPL_CALLBACK otherwise asynchronous FileIo may be blocked. Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14680 6f19259b-4bc3-4df7-8a09-765794883524
2013-08-26MdeModulePkg/DiskIoDxe: fix source/destination pointer of overrun transferLaszlo Ersek
DiskIoCreateSubtaskList() may split the transfer into three segments: - a leading segment, called underrun, which is the fractional, trailing subset of the first underlying block, - a middle segment, which is an integral multiple of underlying blocks, - a trailing segment, called overrun, which is the fractional, leading subset of the last underlying block. This is an example read from the /EFI/BOOT/BOOTX64.EFI file, on the RHEL-6.4 installation ISO (debug log enabled with EFI_D_BLKIO). The underlying block size is 2048 bytes (IDE CD-ROM). DiskIo: Create subtasks for task: Offset/BufferSize/Buffer = 0000000000004600/00002000/BD890018 R:Lba/Offset/Length/WorkingBuffer/Buffer = 0000000000000008/00000600/00000200/BD90D000/BD890018 R:Lba/Offset/Length/WorkingBuffer/Buffer = 000000000000000C/00000000/00000600/BD90D000/BD890218 R:Lba/Offset/Length/WorkingBuffer/Buffer = 0000000000000009/00000000/00001800/00000000/BD890218 The first line corresponds to the underrun. The second line corresponds to the overrun. The third line corresponds to the middle segment. In decimal: - task: read 8192 bytes from offset 17920, storing it at BD890018 - underrun: - read block 8 [16384..18432) into the transfer area, - copy 512 bytes from offset 1536 of the transfer area to BD890018 (target buffer offset 0, running total: 512) - middle segment: - read blocks 9, 10, 11 [18432..24576) into the transfer area, - copy 6144 bytes from offset 0 of the transfer area to BD890218 (target buffer offset 512, running total: 6656) - overrun: - read block 12 [24576..26624) into the transfer area, - copy 1536 bytes from offset 0 of the transfer area to BD890218 (!!!) (target buffer offset 512 (!!!), running total 8192) The values marked with (!!!) constitute the bug -- DiskIoCreateSubtaskList() doesn't take the size of the middle segment into account when it calculates the destination (for reads) or source (for writes) pointer for the overrun. This leads to data corruption. When reading, data is copied form the transfer area to the target buffer with CopyMem (Subtask->Buffer, Subtask->WorkingBuffer + Subtask->Offset, Subtask->Length); calls in DiskIo2OnReadWriteComplete() for nonblocking reads, and in DiskIo2ReadWriteDisk() for blocking reads. Therefore it's enough to adjust Subtask->Buffer when it is initialized. (See BD891A18 below.) DiskIo: Create subtasks for task: Offset/BufferSize/Buffer = 0000000000004600/00002000/BD890018 R:Lba/Offset/Length/WorkingBuffer/Buffer = 0000000000000008/00000600/00000200/BD90D000/BD890018 R:Lba/Offset/Length/WorkingBuffer/Buffer = 000000000000000C/00000000/00000600/BD90D000/BD891A18 R:Lba/Offset/Length/WorkingBuffer/Buffer = 0000000000000009/00000000/00001800/00000000/BD890218 The patched call to DiskIoCreateSubtask() is also executed for write requests. The changed Subtask->Buffer initialization fixes the "overrun half writes" in DiskIo2ReadWriteDisk() too: // // A sub task before this one should be a block read operation, causing // the WorkingBuffer filled with the entire one block data. // CopyMem (Subtask->WorkingBuffer + Subtask->Offset, Subtask->Buffer, Subtask->Length); This code doubles for underrun and overrun half-writes. The patch doesn't modify the underrun case. If we're storing the overrun at the beginning of the pre-read last block (which we're going to write out as a full block), then - Subtask->Offset == 0, - Subtask->Length == OverRun, - the first byte *not* accessed in the source area is ((Buffer + UnderRunLength) + BufferSize) + OverRun. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14602 6f19259b-4bc3-4df7-8a09-765794883524
2013-08-22Fix DDK3790 build failure.Ruiyu Ni
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14587 6f19259b-4bc3-4df7-8a09-765794883524
2013-08-21Fix function header comments for DiskIoDestroySubtask.Ruiyu Ni
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14577 6f19259b-4bc3-4df7-8a09-765794883524
2013-08-21MdeModulePkg/DiskIoDxe: Fixed GCC build errorOlivier Martin
Error: Variable "Media" was set but never used. Change-Id: I1297b3de797e436ed403375c801945b3202b532c Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14575 6f19259b-4bc3-4df7-8a09-765794883524
2013-08-20Add DiskIo2 protocol definition to MdePkg.Ruiyu Ni
Change DiskIoDxe to produce DiskIo2 protocol when the BlockIo2 protocol is available. Change PartitionDxe to produce BlockIo2 protocol based on DiskIo2 protocol instead of BlockIo2 protocol. Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Kinney Michael <michael.d.kinney@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14570 6f19259b-4bc3-4df7-8a09-765794883524
2013-07-31MdeModulePkg PartitionDxe: Ensure the NumberOfPartitionEntries * ↵Star Zeng
SizeOfPartitionEntry doesn't overflow. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Chao Zhang <chao.b.zhang@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14520 6f19259b-4bc3-4df7-8a09-765794883524
2012-06-12Add comment for modules which have external input.jyao1
signed-off-by: jiewen.yao@intel.com reviewed-by: guo.dong@intel.com reviewed-by: ting.ye@intel.com reviewed-by: liming.gao@intel.com reviewed-by: elvin.li@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13446 6f19259b-4bc3-4df7-8a09-765794883524
2012-05-09Use PartitionHeader->SizeOfPartitionEntry instead of sizeof ↵niruiyu
(EFI_PARTITION_ENTRY). Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13296 6f19259b-4bc3-4df7-8a09-765794883524
2011-12-011. Remove the unnecessary check of the existing of BlockIo2 in ↵qianouyang
PartitionDriverBindingSupported(). 2. Remove the comments of the BlockIo2 check in PartitionDriverBindingStart(). Signed-off-by: qianouyang Reviewed-by: niruiyu git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12806 6f19259b-4bc3-4df7-8a09-765794883524