xref: /linux/arch/x86/events/amd/iommu.h (revision 5b26547dd7faa84e1293baa144a0f3e74ed7d4c7)
1*5b26547dSBorislav Petkov /*
2*5b26547dSBorislav Petkov  * Copyright (C) 2013 Advanced Micro Devices, Inc.
3*5b26547dSBorislav Petkov  *
4*5b26547dSBorislav Petkov  * Author: Steven Kinney <Steven.Kinney@amd.com>
5*5b26547dSBorislav Petkov  * Author: Suravee Suthikulpanit <Suraveee.Suthikulpanit@amd.com>
6*5b26547dSBorislav Petkov  *
7*5b26547dSBorislav Petkov  * This program is free software; you can redistribute it and/or modify
8*5b26547dSBorislav Petkov  * it under the terms of the GNU General Public License version 2 as
9*5b26547dSBorislav Petkov  * published by the Free Software Foundation.
10*5b26547dSBorislav Petkov  */
11*5b26547dSBorislav Petkov 
12*5b26547dSBorislav Petkov #ifndef _PERF_EVENT_AMD_IOMMU_H_
13*5b26547dSBorislav Petkov #define _PERF_EVENT_AMD_IOMMU_H_
14*5b26547dSBorislav Petkov 
15*5b26547dSBorislav Petkov /* iommu pc mmio region register indexes */
16*5b26547dSBorislav Petkov #define IOMMU_PC_COUNTER_REG			0x00
17*5b26547dSBorislav Petkov #define IOMMU_PC_COUNTER_SRC_REG		0x08
18*5b26547dSBorislav Petkov #define IOMMU_PC_PASID_MATCH_REG		0x10
19*5b26547dSBorislav Petkov #define IOMMU_PC_DOMID_MATCH_REG		0x18
20*5b26547dSBorislav Petkov #define IOMMU_PC_DEVID_MATCH_REG		0x20
21*5b26547dSBorislav Petkov #define IOMMU_PC_COUNTER_REPORT_REG		0x28
22*5b26547dSBorislav Petkov 
23*5b26547dSBorislav Petkov /* maximun specified bank/counters */
24*5b26547dSBorislav Petkov #define PC_MAX_SPEC_BNKS			64
25*5b26547dSBorislav Petkov #define PC_MAX_SPEC_CNTRS			16
26*5b26547dSBorislav Petkov 
27*5b26547dSBorislav Petkov /* iommu pc reg masks*/
28*5b26547dSBorislav Petkov #define IOMMU_BASE_DEVID			0x0000
29*5b26547dSBorislav Petkov 
30*5b26547dSBorislav Petkov /* amd_iommu_init.c external support functions */
31*5b26547dSBorislav Petkov extern bool amd_iommu_pc_supported(void);
32*5b26547dSBorislav Petkov 
33*5b26547dSBorislav Petkov extern u8 amd_iommu_pc_get_max_banks(u16 devid);
34*5b26547dSBorislav Petkov 
35*5b26547dSBorislav Petkov extern u8 amd_iommu_pc_get_max_counters(u16 devid);
36*5b26547dSBorislav Petkov 
37*5b26547dSBorislav Petkov extern int amd_iommu_pc_get_set_reg_val(u16 devid, u8 bank, u8 cntr,
38*5b26547dSBorislav Petkov 			u8 fxn, u64 *value, bool is_write);
39*5b26547dSBorislav Petkov 
40*5b26547dSBorislav Petkov #endif /*_PERF_EVENT_AMD_IOMMU_H_*/
41