On 31/05/17 18:52, Robin Murphy wrote: > The call to pci_for_each_dma_alias() in the ITS PCI code has aroused > suspicion in the past, and upon closer inspection does turn out to be > completely backwards. Rather than iterating through each RID alias of > the given device, what we actually want to be doing here is iterating > through all the *other* devices which may also alias the same RID, in > order to size the table for the worst case. > > Do the right thing by ignoring the initial DMA aliases themselves and > just using that walk to detect an aliasing bridge, then walking back > down the bus topology as necessary to actually count everything else. > > Our alias handling still isn't perfect, since we don't account for the > cases of certain bridges only taking ownership of transactions under > particular circumstances, but without completely reworking the ITS code > to cope with the notion of multiple DevIDs per device, it'll have to do. > > Signed-off-by: Robin Murphy <[email protected]>
Ah, that's pretty neat. Reviewed-by: Marc Zyngier <[email protected]> I'll queue this for 4.13. Thanks, M. -- Jazz is not dead. It just smells funny...

