<Dolu>
benh: Hi, i'm working on VexRiscv SMP. About the SMP stuff / DMA coherency, basicaly, VexRiscv SMP is based on write-through invalidate L1 D$
<Dolu>
So, each CPU has a invalidation port, to make the DMA coherent, i was thinking about snooping all DMA writes to invalidate all the CPU related cache line, so seem similar to your idea isn't it ?
<Dolu>
But about the sync stuff, i think that's a bit different, basicaly the invalidation bus is as following :
<Dolu>
3 Streams : inv stream to request invalidation (interconnect -> CPU), ack stream to notify the invalidation is effective (CPU -> interconnect), sync stream to notify the master who produce the invalidation that it is done and coherent. (interconnect -> CPU)
<Dolu>
Basicaly, the DMA can be seen as a proper "HART", my idea was that a CPU can ask the DMA to issue a fence (so basicaly, waiting that all pending sync are done)
<Dolu>
Or maybe the DMA should just simply not consider a memory job done until all the modified memory is consistant ?
<Dolu>
But honestly i do not have much experiences into SMP systems XD, so i might say bullshit.
Dolu has quit [Ping timeout: 272 seconds]
st-gourichon-f has quit [Ping timeout: 240 seconds]
st-gourichon-fid has joined #litex
HoloIRCUser1 has joined #litex
HoloIRCUser2 has joined #litex
HoloIRCUser has quit [Ping timeout: 246 seconds]
HoloIRCUser1 has quit [Ping timeout: 246 seconds]
<scanakci>
is it possible to have ethernet support without depending on any external interrupts? I saw this discussion and looks like it is possible (https://github.com/litex-hub/linux-on-litex-vexriscv/issues/13). I just wanted to make sure that I am not misinterpreting something.
CarlFK has quit [Read error: Connection reset by peer]
Degi has quit [Ping timeout: 260 seconds]
Degi has joined #litex
CarlFK has joined #litex
<futarisIRCcloud>
scanakci: Polling works (slowly).
<scanakci>
thanks @futarisIRCcloud.
gregdavill has quit [Quit: Leaving]
disasm[m] has quit [*.net *.split]
xobs has quit [*.net *.split]
Claude has quit [*.net *.split]
guan has quit [*.net *.split]
pdp7 has quit [*.net *.split]
xobs has joined #litex
disasm[m] has joined #litex
guan has joined #litex
pdp7 has joined #litex
Claude has joined #litex
Dolu has joined #litex
CarlFK has quit [Quit: Leaving.]
<benh>
Dolu: hey
<benh>
Dolu: not sure you need to notify the master per-se...
<benh>
Dolu: Ideally you want to synchronize the control path to the master with the DMA path, so if you really have completely separate "busses"
<benh>
Dolu: you could have something like the MMIO reads by the CPU from that master would have their response held until previous invalidations by that master have completed
<benh>
not necessarily *all* invalidations, just previous ones
<benh>
but there are many different ways ... the MMIO orderingg method is just the most common
<benh>
if you really don't want to go down that path, and prefer just notifying the master, then you can have a status reg that the CPU can read to check that pending DMAs have completed
<benh>
but it's impractical as the master could already be writing data for a different packet
<benh>
anyway, food for thoughts...
synaption[m] has quit [Quit: killed]
john_k[m] has quit [Quit: killed]
david-sawatzke[m has quit [Quit: killed]
sajattack[m] has quit [Quit: killed]
abeljj[m] has quit [Quit: killed]
nrossi has quit [Quit: killed]
bunnie has quit [Quit: killed]
disasm[m] has quit [Quit: killed]
xobs has quit [Quit: killed]
CarlFK has joined #litex
sajattack[m] has joined #litex
synaption[m] has joined #litex
abeljj[m] has joined #litex
david-sawatzke[m has joined #litex
disasm[m] has joined #litex
nrossi has joined #litex
john_k[m] has joined #litex
xobs has joined #litex
bunnie has joined #litex
Dolu has quit [Quit: Leaving]
HoloIRCUser has joined #litex
HoloIRCUser2 has quit [Read error: Connection reset by peer]
Skip has joined #litex
Alberto has joined #litex
Alberto is now known as Guest44387
Guest44387 has quit [Remote host closed the connection]
mocambo has joined #litex
mocambo has quit [Remote host closed the connection]
abeljj[m] has quit [Quit: Idle for 30+ days]
captain_morgan has quit [Read error: Connection reset by peer]