2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
23 */
24
25 #ifndef _AMD_IOMMU_ACPI_H
26 #define _AMD_IOMMU_ACPI_H
27
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31
32 #include <sys/sunddi.h>
33 #include <sys/acpi/acpi.h>
34 #include <sys/acpica.h>
35 #include <sys/amd_iommu.h>
36 #include "amd_iommu_impl.h"
37
38 #ifdef _KERNEL
39
40 #define IVRS_SIG "IVRS"
41
42 /*
43 * IVINFO settings
44 */
45 #define AMD_IOMMU_ACPI_IVINFO_RSV1 (31 << 16 | 23)
46 #define AMD_IOMMU_ACPI_HT_ATSRSV (22 << 16 | 22)
47 #define AMD_IOMMU_ACPI_VA_SIZE (21 << 16 | 15)
48 #define AMD_IOMMU_ACPI_PA_SIZE (14 << 16 | 8)
49 #define AMD_IOMMU_ACPI_IVINFO_RSV2 (7 << 16 | 0)
50
51 /*
52 * IVHD Device entry len field
53 */
54 #define AMD_IOMMU_ACPI_DEVENTRY_LEN (7 << 16 | 6)
55
56 /*
57 * IVHD flag fields definition
58 */
59 #define AMD_IOMMU_ACPI_IVHD_FLAGS_RSV (7 << 16 | 5)
60 #define AMD_IOMMU_ACPI_IVHD_FLAGS_IOTLBSUP (4 << 16 | 4)
61 #define AMD_IOMMU_ACPI_IVHD_FLAGS_ISOC (3 << 16 | 3)
62 #define AMD_IOMMU_ACPI_IVHD_FLAGS_RESPASSPW (2 << 16 | 2)
63 #define AMD_IOMMU_ACPI_IVHD_FLAGS_PASSPW (1 << 16 | 1)
64 #define AMD_IOMMU_ACPI_IVHD_FLAGS_HTTUNEN (0 << 16 | 0)
65
66 /*
67 * IVHD IOMMU info fields
68 */
69 #define AMD_IOMMU_ACPI_IOMMU_INFO_RSV1 (15 << 16 | 13)
|
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2017 Gary Mills
23 * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
24 */
25
26 #ifndef _AMD_IOMMU_ACPI_H
27 #define _AMD_IOMMU_ACPI_H
28
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32
33 #include <sys/sunddi.h>
34 #include <sys/acpi/acpi.h>
35 #include <sys/acpica.h>
36 #include <sys/amd_iommu.h>
37 #include "amd_iommu_impl.h"
38
39 #ifdef _KERNEL
40
41 #define IVRS_SIG "IVRS"
42
43 /*
44 * IVINFO bit fields
45 * Documented at: http://support.amd.com/TechDocs/48882_IOMMU.pdf
46 */
47 #define AMD_IOMMU_ACPI_IVINFO_RSV1 (31 << 16 | 23)
48 #define AMD_IOMMU_ACPI_HT_ATSRSV (22 << 16 | 22)
49 #define AMD_IOMMU_ACPI_VA_SIZE (21 << 16 | 15)
50 #define AMD_IOMMU_ACPI_PA_SIZE (14 << 16 | 8)
51 #define AMD_IOMMU_ACPI_GVA_SIZE (7 << 16 | 5)
52 #define AMD_IOMMU_ACPI_IVINFO_RSV2 (4 << 16 | 1)
53 #define AMD_IOMMU_ACPI_IVINFO_EFRSUP (0 << 16 | 0)
54
55 /*
56 * IVHD Device entry len field
57 */
58 #define AMD_IOMMU_ACPI_DEVENTRY_LEN (7 << 16 | 6)
59
60 /*
61 * IVHD flag fields definition
62 */
63 #define AMD_IOMMU_ACPI_IVHD_FLAGS_RSV (7 << 16 | 5)
64 #define AMD_IOMMU_ACPI_IVHD_FLAGS_IOTLBSUP (4 << 16 | 4)
65 #define AMD_IOMMU_ACPI_IVHD_FLAGS_ISOC (3 << 16 | 3)
66 #define AMD_IOMMU_ACPI_IVHD_FLAGS_RESPASSPW (2 << 16 | 2)
67 #define AMD_IOMMU_ACPI_IVHD_FLAGS_PASSPW (1 << 16 | 1)
68 #define AMD_IOMMU_ACPI_IVHD_FLAGS_HTTUNEN (0 << 16 | 0)
69
70 /*
71 * IVHD IOMMU info fields
72 */
73 #define AMD_IOMMU_ACPI_IOMMU_INFO_RSV1 (15 << 16 | 13)
|