gem5  v20.1.0.0
Public Types | Public Member Functions | Public Attributes | Private Types | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
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 UFSHostDevice::UFSSCSIDevice:
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 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 SimObject
const Paramsparams () const
 
 SimObject (const Params *_params)
 
virtual ~SimObject ()
 
virtual const std::string name () const
 
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 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 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 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 Stats::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 (Stats::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...
 
 Group ()=delete
 
 Group (const Group &)=delete
 
Groupoperator= (const Group &)=delete
 

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 SimObject
const SimObjectParams * _params
 Cached copy of the object parameters. More...
 
- Private Attributes inherited from 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 SimObject
static void serializeAll (CheckpointOut &cp)
 Serialize 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 Private Member Functions inherited from Serializable
static const std::string & currentSection ()
 Gets the fully-qualified name of the active section. More...
 
static void serializeAll (const std::string &cpt_dir)
 Serializes all the SimObjects. More...
 
static void unserializeGlobals (CheckpointIn &cp)
 

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 536 of file ufs_device.hh.

Member Typedef Documentation

◆ Callback

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

Definition at line 539 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 759 of file ufs_device.hh.

◆ SCSISenseCodes

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

Definition at line 810 of file ufs_device.hh.

◆ SCSIStatusCodes

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

Definition at line 792 of file ufs_device.hh.

Constructor & Destructor Documentation

◆ UFSSCSIDevice()

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

Constructor and destructor.

Reference material can be found at the JEDEC website: UFS standard http://www.jedec.org/standards-documents/results/jesd220 UFS HCI specification http://www.jedec.org/standards-documents/results/jesd223.

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 75 of file ufs_device.cc.

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

◆ ~UFSSCSIDevice()

UFSHostDevice::UFSSCSIDevice::~UFSSCSIDevice ( )

Definition at line 143 of file ufs_device.cc.

Member Function Documentation

◆ clearReadSignal()

void UFSHostDevice::UFSSCSIDevice::clearReadSignal ( )
inline

Clear signal.

Handle for the host to clear the read complete signal.

Definition at line 597 of file ufs_device.hh.

References readCompleted.

◆ clearSignal()

void UFSHostDevice::UFSSCSIDevice::clearSignal ( )
inline

Clear signal.

Handle for the host to clear the transfer complete signal.

Definition at line 582 of file ufs_device.hh.

References transferCompleted.

◆ finishedCommand()

bool 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 576 of file ufs_device.hh.

References transferCompleted.

◆ finishedRead()

bool 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 591 of file ufs_device.hh.

References readCompleted.

◆ readCallback()

void 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 2220 of file ufs_device.cc.

Referenced by UFSSCSIDevice().

◆ readFlash()

void 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 688 of file ufs_device.cc.

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

◆ SCSICMDHandle()

struct UFSHostDevice::SCSIReply 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 157 of file ufs_device.cc.

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

◆ setReadSignal()

void UFSHostDevice::UFSSCSIDevice::setReadSignal ( )
inlineprivate

set signal to indicate that the read action has been completed

Definition at line 679 of file ufs_device.hh.

References readCompleted.

◆ setSignal()

void UFSHostDevice::UFSSCSIDevice::setSignal ( )
inlineprivate

set signal to indicate that the transaction has been completed.

Definition at line 674 of file ufs_device.hh.

References transferCompleted.

◆ setTotalWrite()

void 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 612 of file ufs_device.hh.

◆ SSDReadDone()

void 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 2199 of file ufs_device.cc.

References DPRINTF.

◆ SSDReadStart()

void 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 2178 of file ufs_device.cc.

◆ SSDWriteDone()

void 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 2048 of file ufs_device.cc.

References DPRINTF.

Referenced by UFSSCSIDevice().

◆ SSDWriteStart()

void UFSHostDevice::UFSSCSIDevice::SSDWriteStart ( )

SSD write start.

Starts the write action in the timing model

Definition at line 2029 of file ufs_device.cc.

References DPRINTF.

◆ statusCheck()

void 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 671 of file ufs_device.cc.

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

◆ writeFlash()

void 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 702 of file ufs_device.cc.

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

Member Data Documentation

◆ amountOfReadTransfers

uint32_t UFSHostDevice::UFSSCSIDevice::amountOfReadTransfers
private

Definition at line 723 of file ufs_device.hh.

◆ amountOfWriteTransfers

uint32_t UFSHostDevice::UFSSCSIDevice::amountOfWriteTransfers
private

transaction progress tracking

Definition at line 722 of file ufs_device.hh.

◆ blkSize

const uint32_t UFSHostDevice::UFSSCSIDevice::blkSize
private

Logic unit dimensions.

Definition at line 692 of file ufs_device.hh.

◆ cachingPage

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

Definition at line 753 of file ufs_device.hh.

◆ capacityLower

const uint32_t UFSHostDevice::UFSSCSIDevice::capacityLower
private

Definition at line 695 of file ufs_device.hh.

◆ capacityUpper

const uint32_t UFSHostDevice::UFSSCSIDevice::capacityUpper
private

Definition at line 696 of file ufs_device.hh.

◆ controlPage

const unsigned int 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 751 of file ufs_device.hh.

◆ deviceReadCallback

Callback UFSHostDevice::UFSSCSIDevice::deviceReadCallback
private

Definition at line 729 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ diskSize

const uint64_t UFSHostDevice::UFSSCSIDevice::diskSize
private

Definition at line 694 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ flashDevice

AbstractNVM* UFSHostDevice::UFSSCSIDevice::flashDevice
private

Definition at line 687 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ flashDisk

DiskImage* UFSHostDevice::UFSSCSIDevice::flashDisk
private

The objects this model links to.

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

Definition at line 679 of file ufs_device.hh.

◆ lunAvail

const uint32_t UFSHostDevice::UFSSCSIDevice::lunAvail
private

Definition at line 693 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ lunID

const uint32_t UFSHostDevice::UFSSCSIDevice::lunID
private

Definition at line 703 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ lunInfo

struct LUNInfo UFSHostDevice::UFSSCSIDevice::lunInfo
private

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

Definition at line 702 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ memReadCallback

Callback UFSHostDevice::UFSSCSIDevice::memReadCallback
private

Callbacks between Device and Memory.

Definition at line 734 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ memWriteCallback

Callback UFSHostDevice::UFSSCSIDevice::memWriteCallback
private

Definition at line 735 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ readCompleted

bool UFSHostDevice::UFSSCSIDevice::readCompleted
private

Definition at line 711 of file ufs_device.hh.

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

◆ recoveryPage

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

Definition at line 752 of file ufs_device.hh.

◆ SCSIInfoQueue

std::deque<struct SCSIResumeInfo> 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 628 of file ufs_device.hh.

◆ signalDone

Callback UFSHostDevice::UFSSCSIDevice::signalDone
private

Callbacks between Host and Device.

Definition at line 728 of file ufs_device.hh.

Referenced by UFSSCSIDevice().

◆ SSDReadInfo

std::deque<struct transferInfo> 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 634 of file ufs_device.hh.

◆ SSDWriteDoneInfo

std::deque<struct transferInfo> 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 642 of file ufs_device.hh.

◆ totalRead

uint32_t UFSHostDevice::UFSSCSIDevice::totalRead
private

Total amount transactions that need to be made.

Definition at line 716 of file ufs_device.hh.

◆ totalWrite

uint32_t UFSHostDevice::UFSSCSIDevice::totalWrite
private

Definition at line 717 of file ufs_device.hh.

◆ transferCompleted

bool UFSHostDevice::UFSSCSIDevice::transferCompleted
private

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

Definition at line 710 of file ufs_device.hh.

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

◆ transferInfo

transferDoneInfo UFSHostDevice::UFSSCSIDevice::transferInfo

End of transfer information.

Definition at line 612 of file ufs_device.hh.

◆ UPIUHeaderDataIndWord0

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

Definition at line 741 of file ufs_device.hh.

◆ UPIUHeaderDataIndWord1

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

Definition at line 742 of file ufs_device.hh.

◆ UPIUHeaderDataIndWord2

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

Definition at line 743 of file ufs_device.hh.


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

Generated on Wed Sep 30 2020 14:02:33 for gem5 by doxygen 1.8.17