/*
* Copyright (c) 2014-2017, NVIDIA Corporation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#undef TRACE_SYSTEM
#define TRACE_SYSTEM arm_smmu
#if !defined(_TRACE_ARM_SMMU_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_ARM_SMMU_H
#include
TRACE_EVENT(arm_smmu_tlb_inv_context,
TP_PROTO(u64 time_before, int cbndx),
TP_ARGS(time_before, cbndx),
TP_STRUCT__entry(
__field(u64, timediff)
__field(int, cbndx)
),
TP_fast_assign(
__entry->timediff = local_clock() - time_before;
__entry->cbndx = cbndx;
),
TP_printk("time taken=%llu ns, cbndx=%d",
__entry->timediff, __entry->cbndx)
);
TRACE_EVENT(arm_smmu_tlb_inv_range,
TP_PROTO(u64 time_before, int cbndx,
dma_addr_t iova, size_t size),
TP_ARGS(time_before, cbndx, iova, size),
TP_STRUCT__entry(
__field(u64, timediff)
__field(int, cbndx)
__field(dma_addr_t, iova)
__field(size_t, size)
),
TP_fast_assign(
__entry->timediff = local_clock() - time_before;
__entry->cbndx = cbndx;
__entry->iova = iova;
__entry->size = size;
),
TP_printk("time taken=%llu ns, cbndx=%d, iova=%pad, size=0x%zx",
__entry->timediff, __entry->cbndx, &__entry->iova,
__entry->size)
);
TRACE_EVENT(arm_smmu_handle_mapping,
TP_PROTO(u64 time_before, int cbndx,
dma_addr_t iova, phys_addr_t phys, size_t bytes, int prot),
TP_ARGS(time_before, cbndx, iova,
phys, bytes, prot),
TP_STRUCT__entry(
__field(u64, time_diff)
__field(int, cbndx)
__field(dma_addr_t, iova)
__field(phys_addr_t, phys)
__field(size_t, bytes)
__field(int, prot)
),
TP_fast_assign(
__entry->time_diff = local_clock() - time_before;
__entry->cbndx = cbndx;
__entry->iova = iova;
__entry->phys = phys;
__entry->bytes = bytes;
__entry->prot = prot;
),
TP_printk("time taken=%llu ns, cbndx=%d, iova=%pad, phys=%pap, size=0x%zx, prot=0x%x",
__entry->time_diff, __entry->cbndx, &__entry->iova,
&__entry->phys, __entry->bytes, __entry->prot)
);
TRACE_EVENT(arm_smmu_unmap,
TP_PROTO(u64 time_before,
dma_addr_t iova, size_t size),
TP_ARGS(time_before, iova, size),
TP_STRUCT__entry(
__field(u64, timediff)
__field(dma_addr_t, iova)
__field(size_t, size)
),
TP_fast_assign(
__entry->timediff = local_clock() - time_before;
__entry->iova = iova;
__entry->size = size;
),
TP_printk("time taken=%llu ns, iova=%pad, size=0x%zx",
__entry->timediff, &__entry->iova, __entry->size)
);
#endif /* _TRACE_ARM_SMMU_H */
#include