Re: [PATCH] iommu/iova: Update cached node pointer when current node fails to get any free IOVA

From: Robin Murphy
Date: Fri Jul 27 2018 - 12:19:00 EST


On 27/07/18 13:56, Ganapatrao Kulkarni wrote:
[...]
did you get any chance to look in to this issue?
i am waiting for your suggestion/patch for this issue!


I got as far as [1], but I wasn't sure how much I liked it, since it still
seems a little invasive for such a specific case (plus I can't remember if
it's actually been debugged or not). I think in the end I started wondering
whether it's even worth bothering with the 32-bit optimisation for PCIe
devices - 4 extra bytes worth of TLP is surely a lot less significant than
every transaction taking up to 50% more bus cycles was for legacy PCI.

how about tracking previous attempt to get 32bit range iova and avoid
further attempts, if it was failed. Later Resume attempts once
replenish happens.
Created patch for the same [2]

Ooh, that's a much neater implementation of essentially the same concept - now why couldn't I think of that? :)

Looks like it should be possible to make it entirely self-contained too, since alloc_iova() is in a position to both test and update the flag based on the limit_pfn passed in.

Robin.


[2] https://github.com/gpkulkarni/linux/commit/e2343a3e1f55cdeb5694103dd354bcb881dc65c3
note, the testing of this patch is in progress.


Robin.

[1]
http://www.linux-arm.org/git?p=linux-rm.git;a=commitdiff;h=a8e0e4af10ebebb3669750e05bf0028e5bd6afe8

thanks
Ganapat