gem5  v21.1.0.2
Public Types | Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
gem5::UFSHostDevice::UFSSCSIDevice Class Reference

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...

Inheritance diagram for gem5::UFSHostDevice::UFSSCSIDevice:
gem5::SimObject

Public Types

using Callback = std::function< void()>
 

Public Member Functions

 UFSSCSIDevice (const UFSHostDeviceParams &p, uint32_t lun_id, const Callback &transfer_cb, const Callback &read_cb)
 Constructor and destructor. More...
 
 ~UFSSCSIDevice ()
 
struct SCSIReply SCSICMDHandle (uint32_t *SCSI_msg)
 SCSI command handle function; determines what the command is and returns a reply structure that allows the host device to continue with the transfer. More...
 
void readFlash (uint8_t *readaddr, uint64_t offset, uint32_t size)
 Disk access functions. More...
 
void writeFlash (uint8_t *writeaddr, uint64_t offset, uint32_t size)
 Write flash. More...
 
bool finishedCommand () const
 finished command. More...
 
void clearSignal ()
 Clear signal. More...
 
bool finishedRead () const
 Finished read. More...
 
void clearReadSignal ()
 Clear signal. More...
 
void SSDReadStart (uint32_t total_read)
 Start the transactions to (and from) the disk The host will queue all the transactions. More...
 
void SSDWriteStart ()
 SSD write start. More...
 
void setTotalWrite (uint32_t total_write)
 Sets total amount of write transactions that needs to be made. More...
 

Public Attributes

transferDoneInfo transferInfo
 End of transfer information. More...
 
std::deque< struct SCSIResumeInfoSCSIInfoQueue
 Information message queues, as there can be multiple messages queued for handling in this system. More...
 
std::deque< struct transferInfoSSDReadInfo
 SSDReadInfo: Structure from disk to dma, that contains data, and helper info to get it to the right place in the memory. More...
 
std::deque< struct transferInfoSSDWriteDoneInfo
 SSDWriteDoneInfo: Structure from dma to disk, that contains data, and helper info to get it to the right place in the memory. More...
 

Private Types

enum  SCSICommandSet {
  SCSIInquiry = 0x12, SCSIRead6 = 0x08, SCSIRead10 = 0x28, SCSIRead16 = 0x88,
  SCSIReadCapacity10 = 0x25, SCSIReadCapacity16 = 0x9E, SCSIReportLUNs = 0xA0, SCSIStartStop = 0x1B,
  SCSITestUnitReady = 0x00, SCSIVerify10 = 0x2F, SCSIWrite6 = 0x0A, SCSIWrite10 = 0x2A,
  SCSIWrite16 = 0x8A, SCSIFormatUnit = 0x04, SCSISendDiagnostic = 0x1D, SCSISynchronizeCache = 0x35,
  SCSIModeSelect10 = 0x55, SCSIModeSense6 = 0x1A, SCSIModeSense10 = 0x5A, SCSIRequestSense = 0x03,
  SCSIUnmap = 0x42, SCSIWriteBuffer = 0x3B, SCSIReadBuffer = 0x3C, SCSIMaintenanceIn = 0xA3
}
 
enum  SCSIStatusCodes {
  SCSIGood = 0x00, SCSICheckCondition = 0x02, SCSIConditionGood = 0x04, SCSIBusy = 0x08,
  SCSIIntermediateGood = 0x10, SCSIIntermediatCGood = 0x14, SCSIReservationConflict = 0x18, SCSICommandTerminated = 0x22,
  SCSITaskSetFull = 0x28, SCSIACAActive = 0x30, SCSITaskAborted = 0x40
}
 
enum  SCSISenseCodes {
  SCSINoSense = 0x00, SCSIRecoverdError = 0x01, SCSINotReady = 0x02, SCSIMediumError = 0x03,
  SCSIHardwareError = 0x04, SCSIIllegalRequest = 0x05, SCSIUnitAttention = 0x06, SCSIDataProtect = 0x07,
  SCSIBlankCheck = 0x08, SCSIAbortedCommand = 0x0B, SCSIVolumeOverflow = 0x0D, SCSIMisCompare = 0x0E
}
 
- Private Types inherited from gem5::SimObject
typedef SimObjectParams Params
 

Private Member Functions

void readCallback ()
 Functions to indicate that the action to the SSD has completed. More...
 
void SSDReadDone ()
 SSD Read done; Determines if the final callback of the transaction should be made at the end of a read transfer. More...
 
void SSDWriteDone ()
 SSD Write Done; This is the callback function for the memory model. More...
 
void statusCheck (uint8_t status, uint8_t *sensecodelist)
 Status of SCSI. More...
 
void setSignal ()
 set signal to indicate that the transaction has been completed. More...
 
void setReadSignal ()
 set signal to indicate that the read action has been completed More...
 
- Private Member Functions inherited from gem5::SimObject
const Paramsparams () const
 
 SimObject (const Params &p)
 
virtual ~SimObject ()
 
virtual void init ()
 init() is called after all C++ SimObjects have been created and all ports are connected. More...
 
virtual void loadState (CheckpointIn &cp)
 loadState() is called on each SimObject when restoring from a checkpoint. More...
 
virtual void initState ()
 initState() is called on each SimObject when not restoring from a checkpoint. More...
 
virtual void regProbePoints ()
 Register probe points for this object. More...
 
virtual void regProbeListeners ()
 Register probe listeners for this object. More...
 
ProbeManagergetProbeManager ()
 Get the probe manager for this object. More...
 
virtual PortgetPort (const std::string &if_name, PortID idx=InvalidPortID)
 Get a port with a given name and index. More...
 
virtual void startup ()
 startup() is the final initialization call before simulation. More...
 
DrainState drain () override
 Provide a default implementation of the drain interface for objects that don't need draining. More...
 
virtual void memWriteback ()
 Write back dirty buffers to memory using functional writes. More...
 
virtual void memInvalidate ()
 Invalidate the contents of memory buffers. More...
 
void serialize (CheckpointOut &cp) const override
 Serialize an object. More...
 
void unserialize (CheckpointIn &cp) override
 Unserialize an object. More...
 
- Private Member Functions inherited from gem5::EventManager
EventQueueeventQueue () const
 
void schedule (Event &event, Tick when)
 
void deschedule (Event &event)
 
void reschedule (Event &event, Tick when, bool always=false)
 
void schedule (Event *event, Tick when)
 
void deschedule (Event *event)
 
void reschedule (Event *event, Tick when, bool always=false)
 
void wakeupEventQueue (Tick when=(Tick) -1)
 This function is not needed by the usual gem5 event loop but may be necessary in derived EventQueues which host gem5 on other schedulers. More...
 
void setCurTick (Tick newVal)
 
 EventManager (EventManager &em)
 Event manger manages events in the event queue. More...
 
 EventManager (EventManager *em)
 
 EventManager (EventQueue *eq)
 
- Private Member Functions inherited from gem5::Serializable
 Serializable ()
 
virtual ~Serializable ()
 
void serializeSection (CheckpointOut &cp, const char *name) const
 Serialize an object into a new section. More...
 
void serializeSection (CheckpointOut &cp, const std::string &name) const
 
void unserializeSection (CheckpointIn &cp, const char *name)
 Unserialize an a child object. More...
 
void unserializeSection (CheckpointIn &cp, const std::string &name)
 
- Private Member Functions inherited from gem5::Drainable
DrainState drainState () const
 Return the current drain state of an object. More...
 
virtual void notifyFork ()
 Notify a child process of a fork. More...
 
 Drainable ()
 
virtual ~Drainable ()
 
virtual void drainResume ()
 Resume execution after a successful drain. More...
 
void signalDrainDone () const
 Signal that an object is drained. More...
 
- Private Member Functions inherited from gem5::statistics::Group
 Group (Group *parent, const char *name=nullptr)
 Construct a new statistics group. More...
 
virtual ~Group ()
 
virtual void regStats ()
 Callback to set stat parameters. More...
 
virtual void resetStats ()
 Callback to reset stats. More...
 
virtual void preDumpStats ()
 Callback before stats are dumped. More...
 
void addStat (statistics::Info *info)
 Register a stat with this group. More...
 
const std::map< std::string, Group * > & getStatGroups () const
 Get all child groups associated with this object. More...
 
const std::vector< Info * > & getStats () const
 Get all stats associated with this object. More...
 
void addStatGroup (const char *name, Group *block)
 Add a stat block as a child of this block. More...
 
const InforesolveStat (std::string name) const
 Resolve a stat by its name within this group. More...
 
void mergeStatGroup (Group *block)
 Merge the contents (stats & children) of a block to this block. More...
 
 Group ()=delete
 
 Group (const Group &)=delete
 
Groupoperator= (const Group &)=delete
 
- Private Member Functions inherited from gem5::Named
 Named (const std::string &name_)
 
virtual ~Named ()=default
 
virtual std::string name () const
 

Private Attributes

DiskImageflashDisk
 The objects this model links to. More...
 
AbstractNVMflashDevice
 
const uint32_t blkSize
 Logic unit dimensions. More...
 
const uint32_t lunAvail
 
const uint64_t diskSize
 
const uint32_t capacityLower
 
const uint32_t capacityUpper
 
struct LUNInfo lunInfo
 Logic unit info; needed for SCSI Info messages and LU identification. More...
 
const uint32_t lunID
 
bool transferCompleted
 Signals to Host layer 1: signal for transaction completion 2: signal for read action completion. More...
 
bool readCompleted
 
uint32_t totalRead
 Total amount transactions that need to be made. More...
 
uint32_t totalWrite
 
uint32_t amountOfWriteTransfers
 transaction progress tracking More...
 
uint32_t amountOfReadTransfers
 
Callback signalDone
 Callbacks between Host and Device. More...
 
Callback deviceReadCallback
 
Callback memReadCallback
 Callbacks between Device and Memory. More...
 
Callback memWriteCallback
 
- Private Attributes inherited from gem5::SimObject
const SimObjectParams & _params
 Cached copy of the object parameters. More...
 
- Private Attributes inherited from gem5::EventManager
EventQueueeventq
 A pointer to this object's event queue. More...
 

Static Private Attributes

static const unsigned int UPIUHeaderDataIndWord0 = 0x0000C022
 
static const unsigned int UPIUHeaderDataIndWord1 = 0x00000000
 
static const unsigned int UPIUHeaderDataIndWord2 = 0x40000000
 
static const unsigned int controlPage [3]
 These pages are SCSI specific. More...
 
static const unsigned int recoveryPage [3]
 
static const unsigned int cachingPage [5]
 

Additional Inherited Members

- Static Private Member Functions inherited from gem5::SimObject
static void serializeAll (const std::string &cpt_dir)
 Create a checkpoint by serializing all SimObjects in the system. More...
 
static SimObjectfind (const char *name)
 Find the SimObject with the given name and return a pointer to it. More...
 
static void setSimObjectResolver (SimObjectResolver *resolver)
 There is a single object name resolver, and it is only set when simulation is restoring from checkpoints. More...
 
static SimObjectResolvergetSimObjectResolver ()
 There is a single object name resolver, and it is only set when simulation is restoring from checkpoints. More...
 
- Static Private Member Functions inherited from gem5::Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void generateCheckpointOut (const std::string &cpt_dir, std::ofstream &outstream)
 Generate a checkpoint file so that the serialization can be routed to it. More...
 

Detailed Description

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

Definition at line 559 of file ufs_device.hh.

Member Typedef Documentation

◆ Callback

using gem5::UFSHostDevice::UFSSCSIDevice::Callback = std::function<void()>

Definition at line 562 of file ufs_device.hh.

Member Enumeration Documentation

◆ SCSICommandSet

Enumerator
SCSIInquiry 
SCSIRead6 
SCSIRead10 
SCSIRead16 
SCSIReadCapacity10 
SCSIReadCapacity16 
SCSIReportLUNs 
SCSIStartStop 
SCSITestUnitReady 
SCSIVerify10 
SCSIWrite6 
SCSIWrite10 
SCSIWrite16 
SCSIFormatUnit 
SCSISendDiagnostic 
SCSISynchronizeCache 
SCSIModeSelect10 
SCSIModeSense6 
SCSIModeSense10 
SCSIRequestSense 
SCSIUnmap 
SCSIWriteBuffer 
SCSIReadBuffer 
SCSIMaintenanceIn 

Definition at line 782 of file ufs_device.hh.

◆ SCSISenseCodes

Enumerator
SCSINoSense 
SCSIRecoverdError 
SCSINotReady 
SCSIMediumError 
SCSIHardwareError 
SCSIIllegalRequest 
SCSIUnitAttention 
SCSIDataProtect 
SCSIBlankCheck 
SCSIAbortedCommand 
SCSIVolumeOverflow 
SCSIMisCompare 

Definition at line 835 of file ufs_device.hh.

◆ SCSIStatusCodes

Enumerator
SCSIGood 
SCSICheckCondition 
SCSIConditionGood 
SCSIBusy 
SCSIIntermediateGood 
SCSIIntermediatCGood 
SCSIReservationConflict 
SCSICommandTerminated 
SCSITaskSetFull 
SCSIACAActive 
SCSITaskAborted 

Definition at line 816 of file ufs_device.hh.

Constructor & Destructor Documentation

◆ UFSSCSIDevice()

gem5::UFSHostDevice::UFSSCSIDevice::UFSSCSIDevice ( const UFSHostDeviceParams &  p,
uint32_t  lun_id,
const Callback transfer_cb,
const Callback read_cb 
)

Constructor and destructor.

Constructor and destructor functions of UFSHCM device.

These callbacks are used to communicate the events that are triggered upstream; e.g. from the Memory Device to the UFS SCSI Device or from the UFS SCSI device to the UFS host.

make ascii out of lun_id (and add more characters) UFS allows up to 8 logic units, so the numbering should work out

Definition at line 78 of file ufs_device.cc.

References deviceReadCallback, diskSize, DPRINTF, gem5::UFSHostDevice::LUNInfo::dWord0, gem5::UFSHostDevice::LUNInfo::dWord1, flashDevice, gem5::AbstractNVM::initializeMemory(), lunAvail, lunID, lunInfo, memReadCallback, memWriteCallback, gem5::UFSHostDevice::LUNInfo::product0, gem5::UFSHostDevice::LUNInfo::product1, gem5::UFSHostDevice::LUNInfo::product2, gem5::UFSHostDevice::LUNInfo::product3, gem5::UFSHostDevice::LUNInfo::productRevision, readCallback(), SectorSize, signalDone, SSDWriteDone(), gem5::UFSHostDevice::LUNInfo::vendor0, and gem5::UFSHostDevice::LUNInfo::vendor1.

◆ ~UFSSCSIDevice()

gem5::UFSHostDevice::UFSSCSIDevice::~UFSSCSIDevice ( )

Definition at line 146 of file ufs_device.cc.

Member Function Documentation

◆ clearReadSignal()

void gem5::UFSHostDevice::UFSSCSIDevice::clearReadSignal ( )
inline

Clear signal.

Handle for the host to clear the read complete signal.

Definition at line 620 of file ufs_device.hh.

References readCompleted.

◆ clearSignal()

void gem5::UFSHostDevice::UFSSCSIDevice::clearSignal ( )
inline

Clear signal.

Handle for the host to clear the transfer complete signal.

Definition at line 605 of file ufs_device.hh.

References transferCompleted.

◆ finishedCommand()

bool gem5::UFSHostDevice::UFSSCSIDevice::finishedCommand ( ) const
inline

finished command.

Probe to find out wether this logic unit finished its transfer and triggered the callback; The host needs this to handle the final part of the transaction.

Definition at line 599 of file ufs_device.hh.

References transferCompleted.

◆ finishedRead()

bool gem5::UFSHostDevice::UFSSCSIDevice::finishedRead ( ) const
inline

Finished read.

Probe to find out which logic unit finished its read. This is needed, because multiple units can do transactions at the same time, and need to push back data at the right time in the right order. (because writes work the other way round, they do not need this mechanism)

Definition at line 614 of file ufs_device.hh.

References readCompleted.

◆ readCallback()

void gem5::UFSHostDevice::UFSSCSIDevice::readCallback ( )
private

Functions to indicate that the action to the SSD has completed.

Read callback, on the way from the disk to the DMA.

Read Call back; This is the callback function for the memory model

Called by the flash layer. Intermediate step to the host layer

Callback; make sure data is transfered upstream: UFSHostDevice::readCallback

Definition at line 2198 of file ufs_device.cc.

Referenced by UFSSCSIDevice().

◆ readFlash()

void gem5::UFSHostDevice::UFSSCSIDevice::readFlash ( uint8_t *  readaddr,
uint64_t  offset,
uint32_t  size 
)

Disk access functions.

read from the flashdisk

These will transfer the data from/to the disk Read flash. read the data from the disk image. This function doesn't model timing behaviour

read from image, and get to memory

Definition at line 691 of file ufs_device.cc.

References gem5::X86ISA::count, gem5::ArmISA::offset, and SectorSize.

◆ SCSICMDHandle()

struct UFSHostDevice::SCSIReply gem5::UFSHostDevice::UFSSCSIDevice::SCSICMDHandle ( uint32_t *  SCSI_msg)

SCSI command handle function; determines what the command is and returns a reply structure that allows the host device to continue with the transfer.

UFS specific SCSI handling function.

The following attributes may still be added: SCSI format unit, Send diagnostic and UNMAP; Synchronize Cache and buffer read/write could not be tested yet All parameters can be found in: Universal Flash Storage (UFS) JESD220 FEB 2011 (JEDEC) http://www.jedec.org/standards-documents/results/jesd220 (a JEDEC acount may be required {free of charge})

Create the standard SCSI reponse information These values might changes over the course of a transfer

Determine what the message is and fill the response packet

SCSI inquiry: tell about this specific logic unit

Read command. Number indicates the length of the command.

BE and not nicely aligned. Apart from that it only has information in five bits of the first byte that is relevant for this field.

Renew status check, for the request may have been illegal

BE and not nicely aligned.

Renew status check, for the request may have been illegal

BE and not nicely aligned.

Renew status check, for the request may have been illegal

read the capacity of the device

Find out how many Logic Units this device has.

See if the blocks that the host plans to request are in range of the device.

BE and not nicely aligned.

Renew status check, for the request may have been illegal

Write command.

BE and not nicely aligned. Apart from that it only has information in five bits of the first byte that is relevant for this field.

Renew status check, for the request may have been illegal

BE and not nicely aligned.

Renew status check, for the request may have been illegal

BE and not nicely aligned.

Renew status check, for the request may have been illegal

Get more discriptive information about the SCSI functionality within this logic unit.

BE and not nicely aligned.

less trivial than normal read. Size is in bytes instead of blocks, and it is assumed (though not guaranteed) that reading is from cache.

BE and not nicely aligned.

linux sends this command three times from kernel 3.9 onwards, UFS does not support it, nor does this model. Linux knows this, but tries anyway (useful for some SD card types). Lets make clear we don't want it and just ignore it.

Definition at line 160 of file ufs_device.cc.

References gem5::betoh(), gem5::X86ISA::count, gem5::UFSHostDevice::UPIUMessage::dataCount, gem5::UFSHostDevice::UPIUMessage::dataMsg, DPRINTF, gem5::UFSHostDevice::UTPUPIUHeader::dWord0, gem5::UFSHostDevice::UTPUPIUHeader::dWord1, gem5::UFSHostDevice::UTPUPIUHeader::dWord2, gem5::UFSHostDevice::SCSIReply::expectMore, gem5::UFSHostDevice::UPIUMessage::header, inform, gem5::UFSHostDevice::SCSIReply::LUN, gem5::UFSHostDevice::lunAvail, gem5::UFSHostDevice::SCSIReply::message, gem5::UFSHostDevice::SCSIReply::msgSize, gem5::UFSHostDevice::SCSIReply::offset, gem5::UFSHostDevice::SCSIReply::reset(), gem5::UFSHostDevice::SCSIReply::senseCode, gem5::UFSHostDevice::SCSIReply::senseSize, and gem5::UFSHostDevice::SCSIReply::status.

◆ setReadSignal()

void gem5::UFSHostDevice::UFSSCSIDevice::setReadSignal ( )
inlineprivate

set signal to indicate that the read action has been completed

Definition at line 702 of file ufs_device.hh.

References readCompleted.

◆ setSignal()

void gem5::UFSHostDevice::UFSSCSIDevice::setSignal ( )
inlineprivate

set signal to indicate that the transaction has been completed.

Definition at line 697 of file ufs_device.hh.

References transferCompleted.

◆ setTotalWrite()

void gem5::UFSHostDevice::UFSSCSIDevice::setTotalWrite ( uint32_t  total_write)
inline

Sets total amount of write transactions that needs to be made.

First they need to be fetched via DMA, so this value is needed in a later stage.

Definition at line 635 of file ufs_device.hh.

◆ SSDReadDone()

void gem5::UFSHostDevice::UFSSCSIDevice::SSDReadDone ( )
private

SSD Read done; Determines if the final callback of the transaction should be made at the end of a read transfer.

SSDisk read done.

Callback: transferdone

Definition at line 2177 of file ufs_device.cc.

References DPRINTF.

◆ SSDReadStart()

void gem5::UFSHostDevice::UFSSCSIDevice::SSDReadStart ( uint32_t  total_read)

Start the transactions to (and from) the disk The host will queue all the transactions.

SSDisk start read; this function was created to keep the interfaces between the layers simpler.

Once the next phase commences, this function should be started.

Without this function UFSHost would need to know about the flashdevice.

Load all the read request to the Memory device. It will call back when done.

Definition at line 2156 of file ufs_device.cc.

◆ SSDWriteDone()

void gem5::UFSHostDevice::UFSSCSIDevice::SSDWriteDone ( )
private

SSD Write Done; This is the callback function for the memory model.

SSDisk write done.

test whether call was correct

are we there yet? (did we do everything)

Definition at line 2026 of file ufs_device.cc.

References DPRINTF.

Referenced by UFSSCSIDevice().

◆ SSDWriteStart()

void gem5::UFSHostDevice::UFSSCSIDevice::SSDWriteStart ( )

SSD write start.

Starts the write action in the timing model

Definition at line 2007 of file ufs_device.cc.

References DPRINTF.

◆ statusCheck()

void gem5::UFSHostDevice::UFSSCSIDevice::statusCheck ( uint8_t  status,
uint8_t *  sensecodelist 
)
private

Status of SCSI.

SCSI status check function.

This may be linked to a status check in the future. For now it (mainly) fills a data structure with sense information for a successfull transaction

generic device test, creates sense codes Future versions may include TODO: device checks, which is why this is in a separate function.

Definition at line 674 of file ufs_device.cc.

References gem5::X86ISA::count, and gem5::ArmISA::status.

◆ writeFlash()

void gem5::UFSHostDevice::UFSSCSIDevice::writeFlash ( uint8_t *  writeaddr,
uint64_t  offset,
uint32_t  size 
)

Write flash.

Write to the flashdisk.

write the data to the disk image. This function doesn't model timing behaviour

Get from fifo and write to image

Definition at line 705 of file ufs_device.cc.

References gem5::X86ISA::count, gem5::ArmISA::offset, and SectorSize.

Member Data Documentation

◆ amountOfReadTransfers

uint32_t gem5::UFSHostDevice::UFSSCSIDevice::amountOfReadTransfers
private

Definition at line 746 of file ufs_device.hh.

◆ amountOfWriteTransfers

uint32_t gem5::UFSHostDevice::UFSSCSIDevice::amountOfWriteTransfers
private

transaction progress tracking

Definition at line 745 of file ufs_device.hh.

◆ blkSize

const uint32_t gem5::UFSHostDevice::UFSSCSIDevice::blkSize
private

Logic unit dimensions.

Definition at line 715 of file ufs_device.hh.

◆ cachingPage

const unsigned int gem5::UFSHostDevice::UFSSCSIDevice::cachingPage
staticprivate
Initial value:
=
{0x00011208, 0x00000000,
0x00000000, 0x00000020,
0x00000000}

Definition at line 776 of file ufs_device.hh.

◆ capacityLower

const uint32_t gem5::UFSHostDevice::UFSSCSIDevice::capacityLower
private

Definition at line 718 of file ufs_device.hh.

◆ capacityUpper

const uint32_t gem5::UFSHostDevice::UFSSCSIDevice::capacityUpper
private

Definition at line 719 of file ufs_device.hh.

◆ controlPage

const unsigned int gem5::UFSHostDevice::UFSSCSIDevice::controlPage
staticprivate
Initial value:
=
{0x01400A0A, 0x00000000,
0x0000FFFF}

These pages are SCSI specific.

For more information refer to: Universal Flash Storage (UFS) JESD220 FEB 2011 (JEDEC) http://www.jedec.org/standards-documents/results/jesd220

Definition at line 774 of file ufs_device.hh.

◆ deviceReadCallback

Callback gem5::UFSHostDevice::UFSSCSIDevice::deviceReadCallback
private

Definition at line 752 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ diskSize

const uint64_t gem5::UFSHostDevice::UFSSCSIDevice::diskSize
private

Definition at line 717 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ flashDevice

AbstractNVM* gem5::UFSHostDevice::UFSSCSIDevice::flashDevice
private

Definition at line 710 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ flashDisk

DiskImage* gem5::UFSHostDevice::UFSSCSIDevice::flashDisk
private

The objects this model links to.

1: the disk data model 2: the memory timing model

Definition at line 702 of file ufs_device.hh.

◆ lunAvail

const uint32_t gem5::UFSHostDevice::UFSSCSIDevice::lunAvail
private

Definition at line 716 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ lunID

const uint32_t gem5::UFSHostDevice::UFSSCSIDevice::lunID
private

Definition at line 726 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ lunInfo

struct LUNInfo gem5::UFSHostDevice::UFSSCSIDevice::lunInfo
private

Logic unit info; needed for SCSI Info messages and LU identification.

Definition at line 725 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ memReadCallback

Callback gem5::UFSHostDevice::UFSSCSIDevice::memReadCallback
private

Callbacks between Device and Memory.

Definition at line 757 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ memWriteCallback

Callback gem5::UFSHostDevice::UFSSCSIDevice::memWriteCallback
private

Definition at line 758 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ readCompleted

bool gem5::UFSHostDevice::UFSSCSIDevice::readCompleted
private

Definition at line 734 of file ufs_device.hh.

Referenced by clearReadSignal(), finishedRead(), and setReadSignal().

◆ recoveryPage

const unsigned int gem5::UFSHostDevice::UFSSCSIDevice::recoveryPage
staticprivate
Initial value:
=
{0x03800A01, 0x00000000,
0xFFFF0003}

Definition at line 775 of file ufs_device.hh.

◆ SCSIInfoQueue

std::deque<struct SCSIResumeInfo> gem5::UFSHostDevice::UFSSCSIDevice::SCSIInfoQueue

Information message queues, as there can be multiple messages queued for handling in this system.

These are the main communication interfaces between the Host and the device layers SCSIInfoQueue: each LU handles its own SCSI commands.

Definition at line 651 of file ufs_device.hh.

◆ signalDone

Callback gem5::UFSHostDevice::UFSSCSIDevice::signalDone
private

Callbacks between Host and Device.

Definition at line 751 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ SSDReadInfo

std::deque<struct transferInfo> gem5::UFSHostDevice::UFSSCSIDevice::SSDReadInfo

SSDReadInfo: Structure from disk to dma, that contains data, and helper info to get it to the right place in the memory.

Definition at line 657 of file ufs_device.hh.

◆ SSDWriteDoneInfo

std::deque<struct transferInfo> gem5::UFSHostDevice::UFSSCSIDevice::SSDWriteDoneInfo

SSDWriteDoneInfo: Structure from dma to disk, that contains data, and helper info to get it to the right place in the memory.

The done is added because it is going to the last phase of the write transfer.

Definition at line 665 of file ufs_device.hh.

◆ totalRead

uint32_t gem5::UFSHostDevice::UFSSCSIDevice::totalRead
private

Total amount transactions that need to be made.

Definition at line 739 of file ufs_device.hh.

◆ totalWrite

uint32_t gem5::UFSHostDevice::UFSSCSIDevice::totalWrite
private

Definition at line 740 of file ufs_device.hh.

◆ transferCompleted

bool gem5::UFSHostDevice::UFSSCSIDevice::transferCompleted
private

Signals to Host layer 1: signal for transaction completion 2: signal for read action completion.

Definition at line 733 of file ufs_device.hh.

Referenced by clearSignal(), finishedCommand(), and setSignal().

◆ transferInfo

transferDoneInfo gem5::UFSHostDevice::UFSSCSIDevice::transferInfo

End of transfer information.

Definition at line 635 of file ufs_device.hh.

◆ UPIUHeaderDataIndWord0

const unsigned int gem5::UFSHostDevice::UFSSCSIDevice::UPIUHeaderDataIndWord0 = 0x0000C022
staticprivate

Definition at line 764 of file ufs_device.hh.

◆ UPIUHeaderDataIndWord1

const unsigned int gem5::UFSHostDevice::UFSSCSIDevice::UPIUHeaderDataIndWord1 = 0x00000000
staticprivate

Definition at line 765 of file ufs_device.hh.

◆ UPIUHeaderDataIndWord2

const unsigned int gem5::UFSHostDevice::UFSSCSIDevice::UPIUHeaderDataIndWord2 = 0x40000000
staticprivate

Definition at line 766 of file ufs_device.hh.


The documentation for this class was generated from the following files:

Generated on Tue Sep 21 2021 12:28:20 for gem5 by doxygen 1.8.17