lkml.org 
[lkml]   [2023]   [Jan]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 12/12] iommu/vt-d: Enable IOMMU perfmon support
    Date
    From: Kan Liang <kan.liang@linux.intel.com>

    Register and enable an IOMMU perfmon for each active IOMMU device.

    The failure of IOMMU perfmon registration doesn't impact other
    functionalities of an IOMMU device.

    Signed-off-by: Kan Liang <kan.liang@linux.intel.com>
    Link: https://lore.kernel.org/r/20230128200428.1459118-8-kan.liang@linux.intel.com
    Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
    ---
    drivers/iommu/intel/dmar.c | 3 +++
    drivers/iommu/intel/iommu.c | 3 +++
    2 files changed, 6 insertions(+)

    diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c
    index 43db6ebe8b57..6acfe879589c 100644
    --- a/drivers/iommu/intel/dmar.c
    +++ b/drivers/iommu/intel/dmar.c
    @@ -1144,6 +1144,8 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
    err = iommu_device_register(&iommu->iommu, &intel_iommu_ops, NULL);
    if (err)
    goto err_sysfs;
    +
    + iommu_pmu_register(iommu);
    }

    drhd->iommu = iommu;
    @@ -1166,6 +1168,7 @@ static int alloc_iommu(struct dmar_drhd_unit *drhd)
    static void free_iommu(struct intel_iommu *iommu)
    {
    if (intel_iommu_enabled && !iommu->drhd->ignored) {
    + iommu_pmu_unregister(iommu);
    iommu_device_unregister(&iommu->iommu);
    iommu_device_sysfs_remove(&iommu->iommu);
    }
    diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c
    index e314c30d371a..691b306fada5 100644
    --- a/drivers/iommu/intel/iommu.c
    +++ b/drivers/iommu/intel/iommu.c
    @@ -29,6 +29,7 @@
    #include "../iommu-sva.h"
    #include "pasid.h"
    #include "cap_audit.h"
    +#include "perfmon.h"

    #define ROOT_SIZE VTD_PAGE_SIZE
    #define CONTEXT_SIZE VTD_PAGE_SIZE
    @@ -4012,6 +4013,8 @@ int __init intel_iommu_init(void)
    intel_iommu_groups,
    "%s", iommu->name);
    iommu_device_register(&iommu->iommu, &intel_iommu_ops, NULL);
    +
    + iommu_pmu_register(iommu);
    }
    up_read(&dmar_global_lock);

    --
    2.34.1
    \
     
     \ /
      Last update: 2023-03-27 00:03    [W:4.878 / U:0.020 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site