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...

Reply via email to