linux/drivers/iommu/intel/perf.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * perf.h - performance monitor header
   4 *
   5 * Copyright (C) 2021 Intel Corporation
   6 *
   7 * Author: Lu Baolu <baolu.lu@linux.intel.com>
   8 */
   9
  10enum latency_type {
  11        DMAR_LATENCY_INV_IOTLB = 0,
  12        DMAR_LATENCY_INV_DEVTLB,
  13        DMAR_LATENCY_INV_IEC,
  14        DMAR_LATENCY_PRQ,
  15        DMAR_LATENCY_NUM
  16};
  17
  18enum latency_count {
  19        COUNTS_10e2 = 0,        /* < 0.1us      */
  20        COUNTS_10e3,            /* 0.1us ~ 1us  */
  21        COUNTS_10e4,            /* 1us ~ 10us   */
  22        COUNTS_10e5,            /* 10us ~ 100us */
  23        COUNTS_10e6,            /* 100us ~ 1ms  */
  24        COUNTS_10e7,            /* 1ms ~ 10ms   */
  25        COUNTS_10e8_plus,       /* 10ms and plus*/
  26        COUNTS_MIN,
  27        COUNTS_MAX,
  28        COUNTS_SUM,
  29        COUNTS_NUM
  30};
  31
  32struct latency_statistic {
  33        bool enabled;
  34        u64 counter[COUNTS_NUM];
  35        u64 samples;
  36};
  37
  38#ifdef CONFIG_DMAR_PERF
  39int dmar_latency_enable(struct intel_iommu *iommu, enum latency_type type);
  40void dmar_latency_disable(struct intel_iommu *iommu, enum latency_type type);
  41bool dmar_latency_enabled(struct intel_iommu *iommu, enum latency_type type);
  42void dmar_latency_update(struct intel_iommu *iommu, enum latency_type type,
  43                         u64 latency);
  44int dmar_latency_snapshot(struct intel_iommu *iommu, char *str, size_t size);
  45#else
  46static inline int
  47dmar_latency_enable(struct intel_iommu *iommu, enum latency_type type)
  48{
  49        return -EINVAL;
  50}
  51
  52static inline void
  53dmar_latency_disable(struct intel_iommu *iommu, enum latency_type type)
  54{
  55}
  56
  57static inline bool
  58dmar_latency_enabled(struct intel_iommu *iommu, enum latency_type type)
  59{
  60        return false;
  61}
  62
  63static inline void
  64dmar_latency_update(struct intel_iommu *iommu, enum latency_type type, u64 latency)
  65{
  66}
  67
  68static inline int
  69dmar_latency_snapshot(struct intel_iommu *iommu, char *str, size_t size)
  70{
  71        return 0;
  72}
  73#endif /* CONFIG_DMAR_PERF */
  74