Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Avoid streaming non-idempotent register writes? #8

Open
lukego opened this issue May 25, 2018 · 1 comment
Open

Avoid streaming non-idempotent register writes? #8

lukego opened this issue May 25, 2018 · 1 comment

Comments

@lukego
Copy link
Owner

lukego commented May 25, 2018

Suggestion from @blitz via Twitter: Avoid non-idempotent streaming writes to the same register, such as the way the host writes multiple addresses back-to-back into TX_BLOCK_SEND and requires the device to process all of them in FIFO order. Awkward to handle this on the hardware side? What is a better approach?

@blitz
Copy link

blitz commented Jun 6, 2018

What about having a ringbuffer of <pointer, length> in MMIO space plus another register that serves as doorbell. The ringbuffer can map directly to DRAM on the device side. The doorbell register can be the tail pointer for the ringbuffer. This can also map to DRAM and the device only additionally needs to log when a write to this address was seen. But there is no need of queueing anything on the device side.
When the device consumes buffers, it can write back the ring head pointer via DMA to host memory.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants