Modify

Opened 9 years ago

Closed 9 years ago

#242 closed defect (fixed)

IPEDMA gen3 ignores value of last_read

Reported by: Suren A. Chilingaryan Owned by:
Priority: major Milestone:
Component: Application Version:
Keywords: Cc: Suren A. Chilingaryan, Michele Caselle, Uros Stevanovic

Description

I believe something is wrong with gen3 DMA. It is working fine for a while, but then writing to the buffer it is not allowed to. I am configuring 16 buffers and iterating. As readout is currently not fast enough, the DMA buffers are getting full fast and the hardware is waiting for driver to read and immediately quickly fills the newly provided buffers. So, at some point situation as follows:

I am preparing to read buffer 13 (all numbering from 1).
'last_written' points to buffer 11.
register 0x58 = 0xc (12)

now I have processed buffer 13 and set register 0x58 to 0xd (13) indicating that buffer 12 (!) can be overwritten. However:
'last_written' jumps to buffer 13.
register 0x58 = 0xd (13)

According to my knowledge the value 0xd should protect buffer 13 from being overwritten. Thats not directly match the documentation which states, "The driver must write the number (not the address!) of the last descriptor read". However, Lorenzo told me that it should be actually "+1" and it's matches that I observer in normal circumstances. I.e. if I start DMA anew, set 0x58 to 16, the last written descriptor will be 15, not 16.

Attachments (0)

Change History (2)

comment:1 Changed 9 years ago by Lorenzo Rota

It seems to be fixed by moving "last_address_writen" assignment 1 clk cycle before (under MWR_QWN state).

comment:2 Changed 9 years ago by Suren A. Chilingaryan

Resolution: fixed
Status: newclosed

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The ticket will remain with no owner.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.