xref: /onnv-gate/usr/src/uts/i86pc/io/amd_iommu/amd_iommu_acpi.h (revision 12203:bc736fbbcb75)
110535SVikram.Hegde@Sun.COM /*
210535SVikram.Hegde@Sun.COM  * CDDL HEADER START
310535SVikram.Hegde@Sun.COM  *
410535SVikram.Hegde@Sun.COM  * The contents of this file are subject to the terms of the
510535SVikram.Hegde@Sun.COM  * Common Development and Distribution License (the "License").
610535SVikram.Hegde@Sun.COM  * You may not use this file except in compliance with the License.
710535SVikram.Hegde@Sun.COM  *
810535SVikram.Hegde@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
910535SVikram.Hegde@Sun.COM  * or http://www.opensolaris.org/os/licensing.
1010535SVikram.Hegde@Sun.COM  * See the License for the specific language governing permissions
1110535SVikram.Hegde@Sun.COM  * and limitations under the License.
1210535SVikram.Hegde@Sun.COM  *
1310535SVikram.Hegde@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
1410535SVikram.Hegde@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
1510535SVikram.Hegde@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
1610535SVikram.Hegde@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
1710535SVikram.Hegde@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
1810535SVikram.Hegde@Sun.COM  *
1910535SVikram.Hegde@Sun.COM  * CDDL HEADER END
2010535SVikram.Hegde@Sun.COM  */
2110535SVikram.Hegde@Sun.COM /*
22*12203SJerry.Gilliam@Sun.COM  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
2310535SVikram.Hegde@Sun.COM  */
2410535SVikram.Hegde@Sun.COM 
2510535SVikram.Hegde@Sun.COM #ifndef _AMD_IOMMU_ACPI_H
2610535SVikram.Hegde@Sun.COM #define	_AMD_IOMMU_ACPI_H
2710535SVikram.Hegde@Sun.COM 
2810535SVikram.Hegde@Sun.COM #ifdef __cplusplus
2910535SVikram.Hegde@Sun.COM extern "C" {
3010535SVikram.Hegde@Sun.COM #endif
3110535SVikram.Hegde@Sun.COM 
3210535SVikram.Hegde@Sun.COM #include <sys/sunddi.h>
3310535SVikram.Hegde@Sun.COM #include <sys/acpi/acpi.h>
3410535SVikram.Hegde@Sun.COM #include <sys/acpica.h>
3510535SVikram.Hegde@Sun.COM #include <sys/amd_iommu.h>
3610535SVikram.Hegde@Sun.COM #include "amd_iommu_impl.h"
3710535SVikram.Hegde@Sun.COM 
3810535SVikram.Hegde@Sun.COM #ifdef _KERNEL
3910535SVikram.Hegde@Sun.COM 
4010535SVikram.Hegde@Sun.COM #define	IVRS_SIG	"IVRS"
4110535SVikram.Hegde@Sun.COM 
4210535SVikram.Hegde@Sun.COM /*
4310535SVikram.Hegde@Sun.COM  * IVINFO settings
4410535SVikram.Hegde@Sun.COM  */
4510535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVINFO_RSV1	(31 << 16 | 23)
4610535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_HT_ATSRSV	(22 << 16 | 22)
4710535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_VA_SIZE		(21 << 16 | 15)
4810535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_PA_SIZE		(14 << 16 | 8)
4910535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVINFO_RSV2	(7 << 16 | 0)
5010535SVikram.Hegde@Sun.COM 
5110535SVikram.Hegde@Sun.COM /*
5210535SVikram.Hegde@Sun.COM  * IVHD Device entry len field
5310535SVikram.Hegde@Sun.COM  */
5410535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_DEVENTRY_LEN	(7 << 16 | 6)
5510535SVikram.Hegde@Sun.COM 
5610535SVikram.Hegde@Sun.COM /*
5710535SVikram.Hegde@Sun.COM  * IVHD flag fields definition
5810535SVikram.Hegde@Sun.COM  */
5910535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVHD_FLAGS_RSV		(7 << 16 | 5)
6010535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVHD_FLAGS_IOTLBSUP	(4 << 16 | 4)
6110535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVHD_FLAGS_ISOC		(3 << 16 | 3)
6210535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVHD_FLAGS_RESPASSPW	(2 << 16 | 2)
6310535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVHD_FLAGS_PASSPW	(1 << 16 | 1)
6410535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVHD_FLAGS_HTTUNEN	(0 << 16 | 0)
6510535SVikram.Hegde@Sun.COM 
6610535SVikram.Hegde@Sun.COM /*
6710535SVikram.Hegde@Sun.COM  * IVHD IOMMU info fields
6810535SVikram.Hegde@Sun.COM  */
6910535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IOMMU_INFO_RSV1		(15 << 16 | 13)
7010535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IOMMU_INFO_UNITID	(12 << 16 | 8)
7110535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IOMMU_INFO_RSV2		(7 << 16 | 5)
7210535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IOMMU_INFO_MSINUM	(4 << 16 | 0)
7310535SVikram.Hegde@Sun.COM 
7410535SVikram.Hegde@Sun.COM /*
7510535SVikram.Hegde@Sun.COM  * IVHD deventry data settings
7610535SVikram.Hegde@Sun.COM  */
7710535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_LINT1PASS	(7 << 16 | 7)
7810535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_LINT0PASS	(6 << 16 | 6)
7910535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_SYSMGT		(5 << 16 | 4)
8010535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_DATRSV		(3 << 16 | 3)
8110535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_NMIPASS		(2 << 16 | 2)
8210535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_EXTINTPASS	(1 << 16 | 1)
8310535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_INITPASS		(0 << 16 | 0)
8410535SVikram.Hegde@Sun.COM 
8510535SVikram.Hegde@Sun.COM /*
8610535SVikram.Hegde@Sun.COM  * IVHD deventry extended data settings
8710535SVikram.Hegde@Sun.COM  */
8810535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_ATSDISABLED	(31 << 16 | 31)
8910535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_EXTDATRSV	(30 << 16 | 0)
9010535SVikram.Hegde@Sun.COM 
9110535SVikram.Hegde@Sun.COM /*
9210535SVikram.Hegde@Sun.COM  * IVMD flags fields settings
9310535SVikram.Hegde@Sun.COM  */
9410535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVMD_RSV		(7 << 16 | 4)
9510535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVMD_EXCL_RANGE	(3 << 16 | 3)
9610535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVMD_IW		(2 << 16 | 2)
9710535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVMD_IR		(1 << 16 | 1)
9810535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_IVMD_UNITY	(0 << 16 | 0)
9910535SVikram.Hegde@Sun.COM 
10010535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_INFO_HASH_SZ	(256)
10110535SVikram.Hegde@Sun.COM 
10210535SVikram.Hegde@Sun.COM /*
10310535SVikram.Hegde@Sun.COM  * Deventry special device "variety"
10410535SVikram.Hegde@Sun.COM  */
10510535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_SPECIAL_APIC	0x1
10610535SVikram.Hegde@Sun.COM #define	AMD_IOMMU_ACPI_SPECIAL_HPET	0x2
10710535SVikram.Hegde@Sun.COM 
10810535SVikram.Hegde@Sun.COM typedef enum {
10910535SVikram.Hegde@Sun.COM 	DEVENTRY_INVALID = 0,
11010535SVikram.Hegde@Sun.COM 	DEVENTRY_ALL = 1,
11110535SVikram.Hegde@Sun.COM 	DEVENTRY_SELECT,
11210535SVikram.Hegde@Sun.COM 	DEVENTRY_RANGE,
11310535SVikram.Hegde@Sun.COM 	DEVENTRY_RANGE_END,
11410535SVikram.Hegde@Sun.COM 	DEVENTRY_ALIAS_SELECT,
11510535SVikram.Hegde@Sun.COM 	DEVENTRY_ALIAS_RANGE,
11610535SVikram.Hegde@Sun.COM 	DEVENTRY_EXTENDED_SELECT,
11710535SVikram.Hegde@Sun.COM 	DEVENTRY_EXTENDED_RANGE,
11810535SVikram.Hegde@Sun.COM 	DEVENTRY_SPECIAL_DEVICE
11910535SVikram.Hegde@Sun.COM } ivhd_deventry_type_t;
12010535SVikram.Hegde@Sun.COM 
12110535SVikram.Hegde@Sun.COM typedef enum {
12210535SVikram.Hegde@Sun.COM 	IVMD_DEVICE_INVALID = 0,
12310535SVikram.Hegde@Sun.COM 	IVMD_DEVICEID_ALL,
12410535SVikram.Hegde@Sun.COM 	IVMD_DEVICEID_SELECT,
12510535SVikram.Hegde@Sun.COM 	IVMD_DEVICEID_RANGE
12610535SVikram.Hegde@Sun.COM } ivmd_deviceid_type_t;
12710535SVikram.Hegde@Sun.COM 
12810535SVikram.Hegde@Sun.COM typedef struct ivhd_deventry {
12910535SVikram.Hegde@Sun.COM 	uint8_t idev_len;
13010535SVikram.Hegde@Sun.COM 	ivhd_deventry_type_t  idev_type;
13110535SVikram.Hegde@Sun.COM 	int32_t idev_deviceid;
13210535SVikram.Hegde@Sun.COM 	int32_t idev_src_deviceid;
13310535SVikram.Hegde@Sun.COM 	uint8_t idev_handle;
13410535SVikram.Hegde@Sun.COM 	uint8_t idev_variety;
13510535SVikram.Hegde@Sun.COM 	uint8_t idev_Lint1Pass;
13610535SVikram.Hegde@Sun.COM 	uint8_t idev_Lint0Pass;
13710535SVikram.Hegde@Sun.COM 	uint8_t idev_SysMgt;
13810535SVikram.Hegde@Sun.COM 	uint8_t idev_NMIPass;
13910535SVikram.Hegde@Sun.COM 	uint8_t idev_ExtIntPass;
14010535SVikram.Hegde@Sun.COM 	uint8_t idev_INITPass;
14110535SVikram.Hegde@Sun.COM 	uint8_t idev_AtsDisabled;
14210535SVikram.Hegde@Sun.COM 	struct ivhd_deventry *idev_next;
14310535SVikram.Hegde@Sun.COM } ivhd_deventry_t;
14410535SVikram.Hegde@Sun.COM 
14510535SVikram.Hegde@Sun.COM typedef struct ivhd {
14610535SVikram.Hegde@Sun.COM 	uint8_t ivhd_type;
14710535SVikram.Hegde@Sun.COM 	uint8_t ivhd_flags;
14810535SVikram.Hegde@Sun.COM 	uint16_t ivhd_len;
14910535SVikram.Hegde@Sun.COM 	uint16_t ivhd_deviceid;
15010535SVikram.Hegde@Sun.COM 	uint16_t ivhd_cap_off;
15110535SVikram.Hegde@Sun.COM 	uint64_t ivhd_reg_base;
15210535SVikram.Hegde@Sun.COM 	uint16_t ivhd_pci_seg;
15310535SVikram.Hegde@Sun.COM 	uint16_t ivhd_iommu_info;
15410535SVikram.Hegde@Sun.COM 	uint32_t ivhd_resv;
15510535SVikram.Hegde@Sun.COM } ivhd_t;
15610535SVikram.Hegde@Sun.COM 
15710535SVikram.Hegde@Sun.COM typedef struct ivhd_container {
15810535SVikram.Hegde@Sun.COM 	ivhd_t *ivhdc_ivhd;
15910535SVikram.Hegde@Sun.COM 	ivhd_deventry_t *ivhdc_first_deventry;
16010535SVikram.Hegde@Sun.COM 	ivhd_deventry_t *ivhdc_last_deventry;
16110535SVikram.Hegde@Sun.COM 	struct ivhd_container *ivhdc_next;
16210535SVikram.Hegde@Sun.COM } ivhd_container_t;
16310535SVikram.Hegde@Sun.COM 
16410535SVikram.Hegde@Sun.COM typedef struct ivmd {
16510535SVikram.Hegde@Sun.COM 	uint8_t ivmd_type;
16610535SVikram.Hegde@Sun.COM 	uint8_t ivmd_flags;
16710535SVikram.Hegde@Sun.COM 	uint16_t ivmd_len;
16810535SVikram.Hegde@Sun.COM 	uint16_t ivmd_deviceid;
16910535SVikram.Hegde@Sun.COM 	uint16_t ivmd_auxdata;
17010535SVikram.Hegde@Sun.COM 	uint64_t ivmd_resv;
17110535SVikram.Hegde@Sun.COM 	uint64_t ivmd_phys_start;
17210535SVikram.Hegde@Sun.COM 	uint64_t ivmd_phys_len;
17310535SVikram.Hegde@Sun.COM } ivmd_t;
17410535SVikram.Hegde@Sun.COM 
17510535SVikram.Hegde@Sun.COM typedef struct ivmd_container {
17610535SVikram.Hegde@Sun.COM 	ivmd_t *ivmdc_ivmd;
17710535SVikram.Hegde@Sun.COM 	struct ivmd_container *ivmdc_next;
17810535SVikram.Hegde@Sun.COM } ivmd_container_t;
17910535SVikram.Hegde@Sun.COM 
18010535SVikram.Hegde@Sun.COM typedef struct ivrs {
18110535SVikram.Hegde@Sun.COM 	struct acpi_table_header ivrs_hdr;
18210535SVikram.Hegde@Sun.COM 	uint32_t ivrs_ivinfo;
18310535SVikram.Hegde@Sun.COM 	uint64_t ivrs_resv;
18410535SVikram.Hegde@Sun.COM } ivrs_t;
18510535SVikram.Hegde@Sun.COM 
18610535SVikram.Hegde@Sun.COM typedef struct amd_iommu_acpi {
18710535SVikram.Hegde@Sun.COM 	struct ivrs *acp_ivrs;
18810535SVikram.Hegde@Sun.COM 	ivhd_container_t *acp_first_ivhdc;
18910535SVikram.Hegde@Sun.COM 	ivhd_container_t *acp_last_ivhdc;
19010535SVikram.Hegde@Sun.COM 	ivmd_container_t *acp_first_ivmdc;
19110535SVikram.Hegde@Sun.COM 	ivmd_container_t *acp_last_ivmdc;
19210535SVikram.Hegde@Sun.COM } amd_iommu_acpi_t;
19310535SVikram.Hegde@Sun.COM 
19410535SVikram.Hegde@Sun.COM 
19510535SVikram.Hegde@Sun.COM /* Global IVINFo fields */
19610535SVikram.Hegde@Sun.COM typedef struct amd_iommu_acpi_global {
19710535SVikram.Hegde@Sun.COM 	uint8_t acg_HtAtsResv;
19810535SVikram.Hegde@Sun.COM 	uint8_t acg_VAsize;
19910535SVikram.Hegde@Sun.COM 	uint8_t acg_PAsize;
20010535SVikram.Hegde@Sun.COM } amd_iommu_acpi_global_t;
20110535SVikram.Hegde@Sun.COM 
20210535SVikram.Hegde@Sun.COM typedef struct amd_iommu_acpi_ivhd {
20310535SVikram.Hegde@Sun.COM 	int32_t ach_deviceid_start;
20410535SVikram.Hegde@Sun.COM 	int32_t ach_deviceid_end;
20510535SVikram.Hegde@Sun.COM 
20610535SVikram.Hegde@Sun.COM 	/* IVHD deventry type */
20710535SVikram.Hegde@Sun.COM 	ivhd_deventry_type_t ach_dev_type;
20810535SVikram.Hegde@Sun.COM 
20910535SVikram.Hegde@Sun.COM 	/* IVHD flag fields */
21010535SVikram.Hegde@Sun.COM 	uint8_t ach_IotlbSup;
21110535SVikram.Hegde@Sun.COM 	uint8_t ach_Isoc;
21210535SVikram.Hegde@Sun.COM 	uint8_t ach_ResPassPW;
21310535SVikram.Hegde@Sun.COM 	uint8_t ach_PassPW;
21410535SVikram.Hegde@Sun.COM 	uint8_t ach_HtTunEn;
21510535SVikram.Hegde@Sun.COM 
21610535SVikram.Hegde@Sun.COM 	/* IVHD fields */
21710535SVikram.Hegde@Sun.COM 	uint16_t ach_IOMMU_deviceid;
21810535SVikram.Hegde@Sun.COM 	uint16_t ach_IOMMU_cap_off;
21910535SVikram.Hegde@Sun.COM 	uint64_t ach_IOMMU_reg_base;
22010535SVikram.Hegde@Sun.COM 	uint16_t ach_IOMMU_pci_seg;
22110535SVikram.Hegde@Sun.COM 
22210535SVikram.Hegde@Sun.COM 	/* IVHD IOMMU info fields */
22310535SVikram.Hegde@Sun.COM 	uint8_t ach_IOMMU_UnitID;
22410535SVikram.Hegde@Sun.COM 	uint8_t ach_IOMMU_MSInum;
22510535SVikram.Hegde@Sun.COM 
22610535SVikram.Hegde@Sun.COM 	/* IVHD deventry data settings */
22710535SVikram.Hegde@Sun.COM 	uint8_t ach_Lint1Pass;
22810535SVikram.Hegde@Sun.COM 	uint8_t ach_Lint0Pass;
22910535SVikram.Hegde@Sun.COM 	uint8_t ach_SysMgt;
23010535SVikram.Hegde@Sun.COM 	uint8_t ach_NMIPass;
23110535SVikram.Hegde@Sun.COM 	uint8_t ach_ExtIntPass;
23210535SVikram.Hegde@Sun.COM 	uint8_t ach_INITPass;
23310535SVikram.Hegde@Sun.COM 
23410535SVikram.Hegde@Sun.COM 	/* alias */
23510535SVikram.Hegde@Sun.COM 	int32_t ach_src_deviceid;
23610535SVikram.Hegde@Sun.COM 
23710535SVikram.Hegde@Sun.COM 	/* IVHD deventry extended data settings */
23810535SVikram.Hegde@Sun.COM 	uint8_t ach_AtsDisabled;
23910535SVikram.Hegde@Sun.COM 
24010535SVikram.Hegde@Sun.COM 	/* IVHD deventry special device */
24110535SVikram.Hegde@Sun.COM 	uint8_t ach_special_handle;
24210535SVikram.Hegde@Sun.COM 	uint8_t ach_special_variety;
24310535SVikram.Hegde@Sun.COM 
24410535SVikram.Hegde@Sun.COM 	struct amd_iommu_acpi_ivhd *ach_next;
24510535SVikram.Hegde@Sun.COM } amd_iommu_acpi_ivhd_t;
24610535SVikram.Hegde@Sun.COM 
24710535SVikram.Hegde@Sun.COM typedef struct amd_iommu_acpi_ivmd {
24810535SVikram.Hegde@Sun.COM 	int32_t acm_deviceid_start;
24910535SVikram.Hegde@Sun.COM 	int32_t acm_deviceid_end;
25010535SVikram.Hegde@Sun.COM 
25110535SVikram.Hegde@Sun.COM 	/* IVMD type */
25210535SVikram.Hegde@Sun.COM 	ivmd_deviceid_type_t acm_dev_type;
25310535SVikram.Hegde@Sun.COM 
25410535SVikram.Hegde@Sun.COM 	/* IVMD flags */
25510535SVikram.Hegde@Sun.COM 	uint8_t acm_ExclRange;
25610535SVikram.Hegde@Sun.COM 	uint8_t acm_IW;
25710535SVikram.Hegde@Sun.COM 	uint8_t acm_IR;
25810535SVikram.Hegde@Sun.COM 	uint8_t acm_Unity;
25910535SVikram.Hegde@Sun.COM 
26010535SVikram.Hegde@Sun.COM 	/* IVMD mem block */
26110535SVikram.Hegde@Sun.COM 	uint64_t acm_ivmd_phys_start;
26210535SVikram.Hegde@Sun.COM 	uint64_t acm_ivmd_phys_len;
26310535SVikram.Hegde@Sun.COM 
26410535SVikram.Hegde@Sun.COM 	struct amd_iommu_acpi_ivmd *acm_next;
26510535SVikram.Hegde@Sun.COM } amd_iommu_acpi_ivmd_t;
26610535SVikram.Hegde@Sun.COM 
26710535SVikram.Hegde@Sun.COM typedef union {
26810535SVikram.Hegde@Sun.COM 	uint16_t   ent16;
26910535SVikram.Hegde@Sun.COM 	uint8_t	   ent8[2];
27010535SVikram.Hegde@Sun.COM } align_16_t;
27110535SVikram.Hegde@Sun.COM 
27210535SVikram.Hegde@Sun.COM typedef union {
27310535SVikram.Hegde@Sun.COM 	uint32_t   ent32;
27410535SVikram.Hegde@Sun.COM 	uint8_t	   ent8[4];
27510535SVikram.Hegde@Sun.COM } align_32_t;
27610535SVikram.Hegde@Sun.COM 
27710535SVikram.Hegde@Sun.COM typedef union {
27810535SVikram.Hegde@Sun.COM 	ivhd_t *ivhdp;
27910535SVikram.Hegde@Sun.COM 	char   *cp;
28010535SVikram.Hegde@Sun.COM } align_ivhd_t;
28110535SVikram.Hegde@Sun.COM 
28210535SVikram.Hegde@Sun.COM typedef union {
28310535SVikram.Hegde@Sun.COM 	ivmd_t *ivmdp;
28410535SVikram.Hegde@Sun.COM 	char   *cp;
28510535SVikram.Hegde@Sun.COM } align_ivmd_t;
28610535SVikram.Hegde@Sun.COM 
28710535SVikram.Hegde@Sun.COM #pragma pack()
28810535SVikram.Hegde@Sun.COM 
28910535SVikram.Hegde@Sun.COM int amd_iommu_acpi_init(void);
29010535SVikram.Hegde@Sun.COM void amd_iommu_acpi_fini(void);
29110535SVikram.Hegde@Sun.COM amd_iommu_acpi_ivhd_t *amd_iommu_lookup_all_ivhd(void);
29210535SVikram.Hegde@Sun.COM amd_iommu_acpi_ivmd_t *amd_iommu_lookup_all_ivmd(void);
293*12203SJerry.Gilliam@Sun.COM amd_iommu_acpi_ivhd_t *amd_iommu_lookup_any_ivhd(amd_iommu_t *);
29410535SVikram.Hegde@Sun.COM amd_iommu_acpi_ivmd_t *amd_iommu_lookup_any_ivmd(void);
29510535SVikram.Hegde@Sun.COM amd_iommu_acpi_global_t *amd_iommu_lookup_acpi_global(void);
29610535SVikram.Hegde@Sun.COM amd_iommu_acpi_ivhd_t *amd_iommu_lookup_ivhd(int32_t deviceid);
29710535SVikram.Hegde@Sun.COM amd_iommu_acpi_ivmd_t *amd_iommu_lookup_ivmd(int32_t deviceid);
298*12203SJerry.Gilliam@Sun.COM int amd_iommu_acpi_init_devtbl(amd_iommu_t *iommu);
29910535SVikram.Hegde@Sun.COM 
30010535SVikram.Hegde@Sun.COM #endif /* _KERNEL */
30110535SVikram.Hegde@Sun.COM 
30210535SVikram.Hegde@Sun.COM #ifdef __cplusplus
30310535SVikram.Hegde@Sun.COM }
30410535SVikram.Hegde@Sun.COM #endif
30510535SVikram.Hegde@Sun.COM 
30610535SVikram.Hegde@Sun.COM #endif	/* _AMD_IOMMU_ACPI_H */
307