On 3/12/20 4:54 PM, Dalon L Westergreen wrote: [...] (thanks for fixing your mailer :))
>>>>>> >>>>>> The problem was that this was causing weird sporadic hangs on Gen5, >>>>>> which is why it was removed. So until there is an explanation for >>>>>> those >>>>>> hangs, I'm not really OK with this. >>>>> >>>>> These sporadic hangs you saw were on devices without an FPGA image >>>>> directly >>>>> accessing the SDRAM ports, right? >>>> >>>> Yes >>>> >>>>>> Maybe the application of static config should happen in SPL, before >>>>>> the >>>>>> DRAM is running, or something like that ? >>>>> >>>>> Thinking this further, limiting it to applying in SPL is not a good idea >>>>> since >>>>> that prevents us from implementing different FPGA images/configs by >>>>> loading a >>>>> config later in the boot (i.e. in U-Boot from a FIT-image). >>>> >>>> Well, but later we have SDRAM running and we cannot make it go idle, can >>>> we? >>>> > > Unfortunately the sdram cfg apply must occur AFTER the fpga is configured. > This > is because the FPGA drives configuration bits, around the interfaces datawidth > for example, that are used in setting up the dram interface. I believe the > intent is for the command to only run when the ridge enable function is > called. So that's one part of the fix -- only run this apply_static_cfg if the bitstream uses the F2S bridge. >>>>> Would it work to make setting this optional, i.e. only write the bit if >>>>> an FPGA >>>>> config actually uses these ports? Then it couldn't lead to problems on >>>>> other >>>>> hardware... >>>> >>>> Can you make SDRAM bus really idle ? >>> >>> From the CPU side, that should work, no? Of course you have to make sure no >>> other peripheraly (including FPGA!) are using the RAM. >>> >>> And if this would be an explicit command, people needing this could >>> experiment with it - and hopefully give better hints as to what's going >>> wrong >>> if we *do* see problems again. >> >> Maybe altera has something hidden somewhere in the bus tunables ? :) > > The only trick i am aware of, and Ley Foon, please comment, is isolating > relevant code to the caches before executing. How do you make sure some DMA doesn't do something funny or some pending write doesn't trigger DRAM write ? There is more than the CPU that can access the DRAM and cause bus traffic.