Re: [PATCH 2/2] iommu/amd: Remove performance counter pre-initialization test

From: David Coe
Date: Sat Apr 10 2021 - 06:03:19 EST


Results for AMD Ryzen 4700U running Ubuntu 21.04β kernel 5.11.0-13

$ sudo dmesg | grep IOMMU
[ 0.490352] pci 0000:00:00.2: AMD-Vi: IOMMU performance counters supported
[ 0.491985] pci 0000:00:00.2: AMD-Vi: Found IOMMU cap 0x40
[ 0.493732] perf/amd_iommu: Detected AMD IOMMU #0 (2 banks, 4 counters/bank).
[ 0.793259] AMD-Vi: AMD IOMMUv2 driver by Joerg Roedel <jroedel@xxxxxxx>

$ systool -m kvm_amd -v
Module = "kvm_amd"

Attributes:
coresize = "114688"
initsize = "0"
initstate = "live"
refcnt = "0"
srcversion = "4371BA17A41823101F90761"
taint = ""
uevent = <store method only>

Parameters:
avic = "0"
dump_invalid_vmcb = "N"
nested = "1"
npt = "1"
nrips = "1"
pause_filter_count_grow= "2"
pause_filter_count_max= "65535"
pause_filter_count_shrink= "0"
pause_filter_count = "3000"
pause_filter_thresh = "128"
sev_es = "0"
sev = "0"
vgif = "1"
vls = "1"

Sections:

$ compgen -G "/sys/kernel/iommu_groups/*/devices/*"
/sys/kernel/iommu_groups/0/devices/0000:00:01.0
/sys/kernel/iommu_groups/2/devices/0000:00:02.2
/sys/kernel/iommu_groups/4/devices/0000:00:08.2
/sys/kernel/iommu_groups/4/devices/0000:03:00.2
/sys/kernel/iommu_groups/4/devices/0000:04:00.0
/sys/kernel/iommu_groups/4/devices/0000:03:00.4
/sys/kernel/iommu_groups/4/devices/0000:03:00.6
/sys/kernel/iommu_groups/4/devices/0000:00:08.1
/sys/kernel/iommu_groups/4/devices/0000:03:00.1
/sys/kernel/iommu_groups/4/devices/0000:03:00.3
/sys/kernel/iommu_groups/4/devices/0000:04:00.1
/sys/kernel/iommu_groups/4/devices/0000:03:00.5
/sys/kernel/iommu_groups/4/devices/0000:00:08.0
/sys/kernel/iommu_groups/4/devices/0000:03:00.0
/sys/kernel/iommu_groups/6/devices/0000:00:18.5
/sys/kernel/iommu_groups/6/devices/0000:00:18.7
/sys/kernel/iommu_groups/6/devices/0000:00:18.0
/sys/kernel/iommu_groups/6/devices/0000:00:18.2
/sys/kernel/iommu_groups/6/devices/0000:00:18.4
/sys/kernel/iommu_groups/6/devices/0000:00:18.6
/sys/kernel/iommu_groups/6/devices/0000:00:18.1
/sys/kernel/iommu_groups/6/devices/0000:00:18.3
/sys/kernel/iommu_groups/8/devices/0000:02:00.0
/sys/kernel/iommu_groups/1/devices/0000:00:02.0
/sys/kernel/iommu_groups/3/devices/0000:00:02.4
/sys/kernel/iommu_groups/5/devices/0000:00:14.0
/sys/kernel/iommu_groups/5/devices/0000:00:14.3
/sys/kernel/iommu_groups/7/devices/0000:01:00.0

$ sudo perf stat -e 'amd_iommu_0/cmd_processed/, amd_iommu_0/cmd_processed_inv/, amd_iommu_0/ign_rd_wr_mmio_1ff8h/, amd_iommu_0/int_dte_hit/, amd_iommu_0/int_dte_mis/, amd_iommu_0/mem_dte_hit/, amd_iommu_0/mem_dte_mis/, amd_iommu_0/mem_iommu_tlb_pde_hit/, amd_iommu_0/mem_iommu_tlb_pde_mis/, amd_iommu_0/mem_iommu_tlb_pte_hit/, amd_iommu_0/mem_iommu_tlb_pte_mis/, amd_iommu_0/mem_pass_excl/, amd_iommu_0/mem_pass_pretrans/, amd_iommu_0/mem_pass_untrans/, amd_iommu_0/mem_target_abort/, amd_iommu_0/mem_trans_total/, amd_iommu_0/page_tbl_read_gst/, amd_iommu_0/page_tbl_read_nst/, amd_iommu_0/page_tbl_read_tot/, amd_iommu_0/smi_blk/, amd_iommu_0/smi_recv/, amd_iommu_0/tlb_inv/, amd_iommu_0/vapic_int_guest/, amd_iommu_0/vapic_int_non_guest/' sleep 10

Performance counter stats for 'system wide':

12 amd_iommu_0/cmd_processed/ (33.28%)
6 amd_iommu_0/cmd_processed_inv/ (33.32%)
0 amd_iommu_0/ign_rd_wr_mmio_1ff8h/ (33.36%)
290 amd_iommu_0/int_dte_hit/ (33.40%)
20 amd_iommu_0/int_dte_mis/ (33.46%)
391 amd_iommu_0/mem_dte_hit/ (33.49%)
3,720 amd_iommu_0/mem_dte_mis/ (33.49%)
44 amd_iommu_0/mem_iommu_tlb_pde_hit/ (33.46%)
810 amd_iommu_0/mem_iommu_tlb_pde_mis/ (33.45%)
35 amd_iommu_0/mem_iommu_tlb_pte_hit/ (33.41%)
746 amd_iommu_0/mem_iommu_tlb_pte_mis/ (33.37%)
0 amd_iommu_0/mem_pass_excl/ (33.32%)
0 amd_iommu_0/mem_pass_pretrans/ (33.28%)
0 amd_iommu_0/mem_pass_untrans/ (33.28%)
0 amd_iommu_0/mem_target_abort/ (33.27%)
715 amd_iommu_0/mem_trans_total/ (33.27%)
0 amd_iommu_0/page_tbl_read_gst/ (33.28%)
36 amd_iommu_0/page_tbl_read_nst/ (33.27%)
36 amd_iommu_0/page_tbl_read_tot/ (33.27%)
0 amd_iommu_0/smi_blk/ (33.28%)
0 amd_iommu_0/smi_recv/ (33.26%)
0 amd_iommu_0/tlb_inv/ (33.23%)
0 amd_iommu_0/vapic_int_guest/ (33.24%)
366 amd_iommu_0/vapic_int_non_guest/ (33.27%)

The immediately obvious difference is the with the enormous count seen on mem_dte_mis on the older Ryzen 2400G. Will do some RTFM but anyone with comments and insight?

841,689,151,202,939 amd_iommu_0/mem_dte_mis/ (33.44%)

Otherwise, all seems to running smoothly (especially for a distribution still in β). Bravo and many thanks all!

--
David Coe