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