On 03/07/2017 20:11, Russell King - ARM Linux wrote: > I don't think there's an easy solution to this problem - and I'm not > sure that stop_machine() can be made to work in this path (which > needs a process context). I have a suspicion that the Sigma Designs > PCI implementation is just soo insane that it's never going to work > reliably in a multi-SoC kernel without introducing severe performance > issues for everyone else. If I remember correctly, this is the second HW block from tango that has been deemed "too insane for Linux". The first one was the DMA engine, which doesn't interrupt when a transfer is done, but when a new transfer may be programmed. (Though there is a simple work-around for this one, if we give up command pipelining.) Do larger SoC vendors have HW devs working closely with Linux devs, to avoid these design bloopers? Regards.