soc: Fix issues with 64-bit stores to IO bridge
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>
Sun, 23 Oct 2022 02:42:56 +0000 (13:42 +1100)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Sun, 23 Oct 2022 02:47:52 +0000 (13:47 +1100)
commit3f788e87dcc1b3554887451cf60eda1a8e934b37
tree1bd5f217b5d15fed6f28c4714cd7f7a20c7fffcd
parent413f2dc5d6094be1ae14fb0c1b0cf19cb08bda25
soc: Fix issues with 64-bit stores to IO bridge

The IO bridge would latch the top half of write data and selection signals
when issuing the second downstream store. Unfortunately at this point the
bridge has already "accepted" the upstream store from the core (due to
stall being 0 on the cycle when stb/cyc are 1), so the values on the
wishbone signals aren't stable and might already reflect a subsequent
wishbone command.

This causes occasional data corruption of 64-bit stores through the IO
bridge.

While at it, take out a bunch of useless conditions on the data latch
path. It doesn't matter whether we is 0 or 1, we can just always latch
the data, the destination will decide whether to use the content or not,
which should save a bit of hardware.

Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
soc.vhdl