On 04-03-19, 16:03, Jean-Nicolas Graux wrote: > Current way we find a waiting virtual channel for the next transfer > at the time one physical channel becomes free is not really fair. > > More in details, in case there is more than one channel waiting at a time, > by just going through the arrays of memcpy and slave channels and stopping > as soon as state match waiting state, channels with high indexes can be > penalized. > > Whenever dma engine is substantially overloaded so that we constantly > get several channels waiting, channels with highest indexes might not > be served for a substantial time which in the worse case, might hang > task that wait for dma transfer to complete. > > This patch makes physical channel re-assignment more fair by storing > time in jiffies when a channel is put in waiting state. Whenever a > physical channel has to be re-assigned, this time is used to select > channel that is waiting for the longest time. Applied, thanks -- ~Vinod