xref: /onnv-gate/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_log.h (revision 10566:b09132fd6cd8)
1*10535SVikram.Hegde@Sun.COM /*
2*10535SVikram.Hegde@Sun.COM  * CDDL HEADER START
3*10535SVikram.Hegde@Sun.COM  *
4*10535SVikram.Hegde@Sun.COM  * The contents of this file are subject to the terms of the
5*10535SVikram.Hegde@Sun.COM  * Common Development and Distribution License (the "License").
6*10535SVikram.Hegde@Sun.COM  * You may not use this file except in compliance with the License.
7*10535SVikram.Hegde@Sun.COM  *
8*10535SVikram.Hegde@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*10535SVikram.Hegde@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*10535SVikram.Hegde@Sun.COM  * See the License for the specific language governing permissions
11*10535SVikram.Hegde@Sun.COM  * and limitations under the License.
12*10535SVikram.Hegde@Sun.COM  *
13*10535SVikram.Hegde@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*10535SVikram.Hegde@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*10535SVikram.Hegde@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*10535SVikram.Hegde@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*10535SVikram.Hegde@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*10535SVikram.Hegde@Sun.COM  *
19*10535SVikram.Hegde@Sun.COM  * CDDL HEADER END
20*10535SVikram.Hegde@Sun.COM  */
21*10535SVikram.Hegde@Sun.COM /*
22*10535SVikram.Hegde@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23*10535SVikram.Hegde@Sun.COM  * Use is subject to license terms.
24*10535SVikram.Hegde@Sun.COM  */
25*10535SVikram.Hegde@Sun.COM 
26*10535SVikram.Hegde@Sun.COM #ifndef _AMD_IOMMU_LOG_H
27*10535SVikram.Hegde@Sun.COM #define	_AMD_IOMMU_LOG_H
28*10535SVikram.Hegde@Sun.COM 
29*10535SVikram.Hegde@Sun.COM #ifdef __cplusplus
30*10535SVikram.Hegde@Sun.COM extern "C" {
31*10535SVikram.Hegde@Sun.COM #endif
32*10535SVikram.Hegde@Sun.COM 
33*10535SVikram.Hegde@Sun.COM #include <sys/amd_iommu.h>
34*10535SVikram.Hegde@Sun.COM 
35*10535SVikram.Hegde@Sun.COM #ifdef _KERNEL
36*10535SVikram.Hegde@Sun.COM 
37*10535SVikram.Hegde@Sun.COM #define	EV2OFF(e)	((e) << 4)
38*10535SVikram.Hegde@Sun.COM #define	OFF2EV(o)	((o) >> 4)
39*10535SVikram.Hegde@Sun.COM 
40*10535SVikram.Hegde@Sun.COM typedef enum {
41*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_INVALID = 0,
42*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_DEVTAB_ILLEGAL_ENTRY = 1,
43*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_IO_PAGE_FAULT = 2,
44*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_DEVTAB_HW_ERROR = 3,
45*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_PGTABLE_HW_ERROR = 4,
46*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_CMDBUF_ILLEGAL_CMD = 5,
47*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_CMDBUF_HW_ERROR = 6,
48*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_IOTLB_INVAL_TO = 7,
49*10535SVikram.Hegde@Sun.COM 	AMD_IOMMU_EVENT_DEVICE_ILLEGAL_REQ = 8
50*10535SVikram.Hegde@Sun.COM } amd_iommu_event_t;
51*10535SVikram.Hegde@Sun.COM 
52*10535SVikram.Hegde@Sun.COM /* Common to all events */
53*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_TYPE			(31 << 16 | 28)
54*10535SVikram.Hegde@Sun.COM 
55*10535SVikram.Hegde@Sun.COM /* Illegal device Table Entry Event bits */
56*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_ILL_DEVICEID	(15 << 16 | 0)
57*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_ILL_TR		(24 << 16 | 24)
58*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_ILL_RZ		(23 << 16 | 23)
59*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_ILL_RW		(21 << 16 | 21)
60*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_ILL_INTR		(19 << 16 | 19)
61*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_ILL_VADDR_LO	(31 << 16 | 2)
62*10535SVikram.Hegde@Sun.COM 
63*10535SVikram.Hegde@Sun.COM /* IO Page Fault event bits */
64*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_DEVICEID	(15 << 16 | 0)
65*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_TR		(24 << 16 | 24)
66*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_RZ		(23 << 16 | 23)
67*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_PE		(22 << 16 | 22)
68*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_RW		(21 << 16 | 21)
69*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_PR		(20 << 16 | 20)
70*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_INTR		(19 << 16 | 19)
71*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IO_PGFAULT_DOMAINID	(15 << 16 | 0)
72*10535SVikram.Hegde@Sun.COM 
73*10535SVikram.Hegde@Sun.COM 
74*10535SVikram.Hegde@Sun.COM /* Device Table HW Error event bits */
75*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_HWERR_DEVICEID	(15 << 16 | 0)
76*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_HWERR_TYPE	(26 << 16 | 25)
77*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_HWERR_TR		(24 << 16 | 24)
78*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_HWERR_RW		(21 << 16 | 21)
79*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_HWERR_INTR	(19 << 16 | 19)
80*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_HWERR_PHYSADDR_LO	(31 << 16 | 4)
81*10535SVikram.Hegde@Sun.COM 
82*10535SVikram.Hegde@Sun.COM 
83*10535SVikram.Hegde@Sun.COM /* Page Table HW Error event bits */
84*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_PGTABLE_HWERR_DEVICEID	(15 << 16 | 0)
85*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVTAB_HWERR_TYPE	(26 << 16 | 25)
86*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_PGTABLE_HWERR_TR	(24 << 16 | 24)
87*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_PGTABLE_HWERR_RW	(21 << 16 | 21)
88*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_PGTABLE_HWERR_INTR	(19 << 16 | 19)
89*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_PGTABLE_HWERR_DOMAINID  (15 << 16 | 0)
90*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_PGTABLE_HWERR_PHYSADDR_LO	(31 << 16 | 3)
91*10535SVikram.Hegde@Sun.COM 
92*10535SVikram.Hegde@Sun.COM /* Illegal Command Error event bits */
93*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_CMDBUF_ILLEGAL_CMD_PHYS_LO	(31 << 16 | 4)
94*10535SVikram.Hegde@Sun.COM 
95*10535SVikram.Hegde@Sun.COM /* Command Buffer HW Error event bits */
96*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_CMDBUF_HWERR_TYPE	(26 << 16 | 25)
97*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_CMDBUF_HWERR_PHYS_LO	(31 << 16 | 4)
98*10535SVikram.Hegde@Sun.COM 
99*10535SVikram.Hegde@Sun.COM 
100*10535SVikram.Hegde@Sun.COM /* IOTLB Invalidation TO event bits */
101*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IOTLB_INVAL_TO_DEVICEID	(15 << 16 | 0)
102*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IOTLB_INVAL_TO_TYPE	(26 << 16 | 25)
103*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_IOTLB_INVAL_TO_PHYS_LO	(31 << 16 | 4)
104*10535SVikram.Hegde@Sun.COM 
105*10535SVikram.Hegde@Sun.COM /* Illegal Device request event bits */
106*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVICE_ILLEGAL_REQ_DEVICEID	(15 << 16 | 0)
107*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVICE_ILLEGAL_REQ_TYPE		(27 << 16 | 25)
108*10535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_EVENT_DEVICE_ILLEGAL_REQ_TR		(24 << 16 | 24)
109*10535SVikram.Hegde@Sun.COM 
110*10535SVikram.Hegde@Sun.COM #endif /* _KERNEL */
111*10535SVikram.Hegde@Sun.COM 
112*10535SVikram.Hegde@Sun.COM #ifdef __cplusplus
113*10535SVikram.Hegde@Sun.COM }
114*10535SVikram.Hegde@Sun.COM #endif
115*10535SVikram.Hegde@Sun.COM 
116*10535SVikram.Hegde@Sun.COM #endif	/* _AMD_IOMMU_LOG_H */
117