Hi, all I`m yangcheng, and I found this bug when using the *edk2-platforms/Silicon/Synopsys/DesignWare/Drivers/DwEmmcDxe* driver on my VisionFive2 development board, which does not support the *CMO* instruction set. There are many functions in *DwEmmcDxe.c* that call Cache operations. For example, the *DwEmmcReadBlockData* function below calls *WriteBackDataCacheRange* ().
EFI_STATUS *DwEmmcReadBlockData* ( IN EFI_MMC_HOST_PROTOCOL *This, IN EFI_LBA Lba, IN UINTN Length, IN UINT32* Buffer ) { ....... *WriteBackDataCacheRange* (gpIdmacDesc, DescPages * EFI_PAGE_SIZE); StartDma (Length); Status = SendCommand (mDwEmmcCommand, mDwEmmcArgument); if (EFI_ERROR (Status)) { DEBUG ((DEBUG_ERROR, "Failed to read data, mDwEmmcCommand:%x, mDwEmmcArgument:%x, Status:%r\n", mDwEmmcCommand, mDwEmmcArgument, Status)); goto out; } out: // Restore Tpl gBS->RestoreTPL (Tpl); return Status; } Initially, I didn't set *PcdRiscVFeatureOverride* , so I got an illegal instruction exception. Then I set my *PcdRiscVFeatureOverride* to *0xFFFFFFFFFFFFFFFE* to avoid using the *CMO* instruction set, and I got an *ASSERT*. Most cross-platform driver codes may call Cache management operations. Modifying these driver codes may cost a lot, and I think we may need some better way than ASSERT. -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#113404): https://edk2.groups.io/g/devel/message/113404 Mute This Topic: https://groups.io/mt/103150435/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-