gem5  v21.2.1.1
Classes | Namespaces
ufs_device.hh File Reference
#include <deque>
#include <functional>
#include "base/addr_range.hh"
#include "base/bitfield.hh"
#include "base/statistics.hh"
#include "debug/UFSHostDevice.hh"
#include "dev/arm/abstract_nvm.hh"
#include "dev/arm/base_gic.hh"
#include "dev/storage/disk_image.hh"
#include "dev/dma_device.hh"
#include "dev/io_device.hh"
#include "mem/packet.hh"
#include "mem/packet_access.hh"
#include "params/UFSHostDevice.hh"
#include "sim/serialize.hh"
#include "sim/stats.hh"

Go to the source code of this file.


class  gem5::UFSHostDevice
 Host controller layer: This is your Host controller This layer handles the UFS functionality. More...
struct  gem5::UFSHostDevice::HCIMem
 Host Controller Interface This is a set of registers that allow the driver to control the transactions to the flash devices. More...
struct  gem5::UFSHostDevice::UTPUPIUHeader
 All the data structures are defined in the UFS standard This standard be found at the JEDEC website free of charge (login required): More...
struct  gem5::UFSHostDevice::UTPUPIURSP
 struct UTPUPIURSP - Response UPIU structure header: UPIU header DW-0 to DW-2 residualTransferCount: Residual transfer count DW-3 reserved: Reserved DW-4 to DW-7 senseDataLen: Sense data length DW-8 U16 senseData: Sense data field DW-8 to DW-12 More...
struct  gem5::UFSHostDevice::UTPUPIUTaskReq
 struct UTPUPIUTaskReq - Task request UPIU structure header - UPIU header structure DW0 to DW-2 inputParam1: Input param 1 DW-3 inputParam2: Input param 2 DW-4 inputParam3: Input param 3 DW-5 reserved: Reserver DW-6 to DW-7 More...
struct  gem5::UFSHostDevice::UFSHCDSGEntry
 struct UFSHCDSGEntry - UFSHCI PRD Entry baseAddr: Lower 32bit physical address DW-0 upperAddr: Upper 32bit physical address DW-1 reserved: Reserved for future use DW-2 size: size of physical segment DW-3 More...
struct  gem5::UFSHostDevice::UTPTransferCMDDesc
 struct UTPTransferCMDDesc - UFS Commad Descriptor structure commandUPIU: Command UPIU Frame address responseUPIU: Response UPIU Frame address PRDTable: Physcial Region Descriptor All lengths as defined by JEDEC220 More...
struct  gem5::UFSHostDevice::UPIUMessage
 UPIU tranfer message. More...
struct  gem5::UFSHostDevice::UTPTransferReqDesc
 struct UTPTransferReqDesc - UTRD structure header: UTRD header DW-0 to DW-3 commandDescBaseAddrLo: UCD base address low DW-4 commandDescBaseAddrHi: UCD base address high DW-5 responseUPIULength: response UPIU length DW-6 responseUPIUOffset: response UPIU offset DW-6 PRDTableLength: Physical region descriptor length DW-7 PRDTableOffset: Physical region descriptor offset DW-7 More...
struct  gem5::UFSHostDevice::UTPTransferReqDesc::RequestDescHeader
 struct RequestDescHeader dword0: Descriptor Header DW0 dword1: Descriptor Header DW1 dword2: Descriptor Header DW2 dword3: Descriptor Header DW3 More...
struct  gem5::UFSHostDevice::SCSIReply
 SCSI reply structure. More...
struct  gem5::UFSHostDevice::LUNInfo
 Logic unit information structure. More...
struct  gem5::UFSHostDevice::transferInfo
 Different events, and scenarios require different types of information. More...
struct  gem5::UFSHostDevice::transferDoneInfo
 transfer completion info. More...
struct  gem5::UFSHostDevice::transferStart
 Transfer start information. More...
struct  gem5::UFSHostDevice::taskStart
 Task start information. More...
struct  gem5::UFSHostDevice::SCSIResumeInfo
 After a SCSI command has been identified, the SCSI resume function will handle it. More...
struct  gem5::UFSHostDevice::writeToDiskBurst
 Disk transfer burst information. More...
struct  gem5::UFSHostDevice::UFSHostDeviceStats
 Statistics. More...
class  gem5::UFSHostDevice::UFSSCSIDevice
 device layer: This is your Logic unit This layer implements the SCSI functionality of the UFS Device One logic unit controls one or more disk partitions More...


 Reference material can be found at the JEDEC website: UFS standard UFS HCI specification

Detailed Description

This is a base class for UFS devices The UFS interface consists out of one host controller which connects a number of devices which together contain up to 8 logic units. A Logical Unit is an externally addressable, independent, processing entity that processes SCSI tasks (commands) and performs task management functions. The decision has been made to abstract the device away, and model the different logic units. Effectively this means that there is one Host layer which handles all the UFS commands (everything UTP, UPIU and UNIpro related) and a SCSI layer, which handles the SCSI interpretation and the interaction with the "disk" (effectively the LBA that that particular Logic Unit controls). Each Logic unit should therefor control a disk image and a timing model. The UFS protocol has three types of commands (explained later). Each has different phases and each phase need to wait for its particular data. This is the reason that this model contains a lot of events. For clarity, a state diagram in doxygen has been provided. To fully apreciate the stages that the model flows through, the states have been broken into three state diagrams. It is best if one imagines the command flow state machine to be happening in the UFSHost layer, and the other two to flow through all the layers of the model (UFS host, SCSI and NVM model). See it as a quarry, one state diagram is moving the crane into place, and the other ones are transporting the dirt down, or the valuables up. For complete information about the working of UFS please refer to or The documents are available free of charge, although you will need to have an acount.

Definition in file ufs_device.hh.

Generated on Wed May 4 2022 12:14:17 for gem5 by doxygen 1.8.17