• Kan Liang's avatar
    iommu/vt-d: Retrieve IOMMU perfmon capability information · a6a5006d
    Kan Liang authored
    The performance monitoring infrastructure, perfmon, is to support
    collection of information about key events occurring during operation of
    the remapping hardware, to aid performance tuning and debug. Each
    remapping hardware unit has capability registers that indicate support
    for performance monitoring features and enumerate the capabilities.
    
    Add alloc_iommu_pmu() to retrieve IOMMU perfmon capability information
    for each iommu unit. The information is stored in the iommu->pmu data
    structure. Capability registers are read-only, so it's safe to prefetch
    and store them in the pmu structure. This could avoid unnecessary VMEXIT
    when this code is running in the virtualization environment.
    
    Add free_iommu_pmu() to free the saved capability information when
    freeing the iommu unit.
    
    Add a kernel config option for the IOMMU perfmon feature. Unless a user
    explicitly uses the perf tool to monitor the IOMMU perfmon event, there
    isn't any impact for the existing IOMMU. Enable it by default.
    Signed-off-by: default avatarKan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20230128200428.1459118-3-kan.liang@linux.intel.comSigned-off-by: default avatarLu Baolu <baolu.lu@linux.intel.com>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    a6a5006d
iommu.h 27.9 KB