A splendidly prompt piece of cherry-picking. Many thanks.
I've checked your test release on my Ryzen 2400G on current Ubuntu 20.10 and it still gives the diagostic:
AMD-Vi: Unable to read/write to IOMMU perf counter
It's to be expected! The little crew engaged with testing Suravee Suthikulpanit's patch [1] are finding that the 2400G (that's me) needs 120 msec for power-gating and the 2200G (that's Paul Menzel] needs >200 msecs. Suravee's RFC v3 provides 5 x 20 msecs delay which just isn't enough for these lesser Ryzen's :-).
If you change Suravee's patch line
for (retry = 5; retry; retry--) {
to
for (retry = 25; retry; retry--) {
all will be well (imho). The maximum delay is indeed outrageous but only that really necessary to enable IOMMU is actually used. Eventually a proper solution will be found (in firmware or silicon) but (unlike at present) the many users of entry-level Ryzen CPU's will not have their IOMMU crippled during linux boot-up.
Incidentally, if you do rebuild your (very kind) test-release with the above change (please, please), could you also include the deb package for linux-tools for the same kernel. Things like the command "perf stat -a -e amd_iommu/mem_trans_total/ test" (used to test IOMMU performance in user-space) are tied to the running kernel-version and will then work.
Hi Alex!
A splendidly prompt piece of cherry-picking. Many thanks.
I've checked your test release on my Ryzen 2400G on current Ubuntu 20.10 and it still gives the diagostic:
AMD-Vi: Unable to read/write to IOMMU perf counter
It's to be expected! The little crew engaged with testing Suravee Suthikulpanit's patch [1] are finding that the 2400G (that's me) needs 120 msec for power-gating and the 2200G (that's Paul Menzel] needs >200 msecs. Suravee's RFC v3 provides 5 x 20 msecs delay which just isn't enough for these lesser Ryzen's :-).
If you change Suravee's patch line
for (retry = 5; retry; retry--) {
to
for (retry = 25; retry; retry--) {
all will be well (imho). The maximum delay is indeed outrageous but only that really necessary to enable IOMMU is actually used. Eventually a proper solution will be found (in firmware or silicon) but (unlike at present) the many users of entry-level Ryzen CPU's will not have their IOMMU crippled during linux boot-up.
Incidentally, if you do rebuild your (very kind) test-release with the above change (please, please), could you also include the deb package for linux-tools for the same kernel. Things like the command "perf stat -a -e amd_iommu/ mem_trans_ total/ test" (used to test IOMMU performance in user-space) are tied to the running kernel-version and will then work.
Best regards and again many thanks
David
[1] https:/ /bugzilla. kernel. org/show_ bug.cgi? id=201753