xref: /titanic_52/usr/src/uts/sun4v/sys/hsvc.h (revision 3b890a5b92df88d9d90b2d7ac57e8c1e93e59e6a)
1c56c1e58Sgirish /*
2c56c1e58Sgirish  * CDDL HEADER START
3c56c1e58Sgirish  *
4c56c1e58Sgirish  * The contents of this file are subject to the terms of the
5c56c1e58Sgirish  * Common Development and Distribution License (the "License").
6c56c1e58Sgirish  * You may not use this file except in compliance with the License.
7c56c1e58Sgirish  *
8c56c1e58Sgirish  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9c56c1e58Sgirish  * or http://www.opensolaris.org/os/licensing.
10c56c1e58Sgirish  * See the License for the specific language governing permissions
11c56c1e58Sgirish  * and limitations under the License.
12c56c1e58Sgirish  *
13c56c1e58Sgirish  * When distributing Covered Code, include this CDDL HEADER in each
14c56c1e58Sgirish  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15c56c1e58Sgirish  * If applicable, add the following below this CDDL HEADER, with the
16c56c1e58Sgirish  * fields enclosed by brackets "[]" replaced with your own identifying
17c56c1e58Sgirish  * information: Portions Copyright [yyyy] [name of copyright owner]
18c56c1e58Sgirish  *
19c56c1e58Sgirish  * CDDL HEADER END
20c56c1e58Sgirish  */
21c56c1e58Sgirish /*
22c56c1e58Sgirish  * Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
23c56c1e58Sgirish  * Use is subject to license terms.
24c56c1e58Sgirish  */
25c56c1e58Sgirish 
26c56c1e58Sgirish #ifndef _SYS_HSVC_H
27c56c1e58Sgirish #define	_SYS_HSVC_H
28c56c1e58Sgirish 
29c56c1e58Sgirish #pragma ident	"%Z%%M%	%I%	%E% SMI"
30c56c1e58Sgirish 
31c56c1e58Sgirish 
32c56c1e58Sgirish /*
33c56c1e58Sgirish  * Niagara services information
34c56c1e58Sgirish  */
35c56c1e58Sgirish 
36c56c1e58Sgirish #ifdef __cplusplus
37c56c1e58Sgirish extern "C" {
38c56c1e58Sgirish #endif
39c56c1e58Sgirish 
40c56c1e58Sgirish 
41c56c1e58Sgirish /*
42c56c1e58Sgirish  * Hypervisor service groups
43c56c1e58Sgirish  */
44c56c1e58Sgirish #define	HSVC_GROUP_SUN4V		0x0000
45c56c1e58Sgirish #define	HSVC_GROUP_CORE			0x0001
461ae08745Sheppo #define	HSVC_GROUP_INTR			0x0002
47*3b890a5bSjb145095 #define	HSVC_GROUP_SOFT_STATE		0x0003
48c56c1e58Sgirish #define	HSVC_GROUP_VPCI			0x0100
49c56c1e58Sgirish #define	HSVC_GROUP_LDC			0x0101
50c56c1e58Sgirish #define	HSVC_GROUP_VSC			0x0102
51c56c1e58Sgirish #define	HSVC_GROUP_NCS			0x0103
5244961713Sgirish #define	HSVC_GROUP_RNG			0x0104
53c56c1e58Sgirish #define	HSVC_GROUP_NIAGARA_CPU		0x0200
54c56c1e58Sgirish #define	HSVC_GROUP_FIRE_PERF		0x0201
5544961713Sgirish #define	HSVC_GROUP_NIAGARA2_CPU		0x0202
5644961713Sgirish #define	HSVC_GROUP_NIU			0x0204
57c56c1e58Sgirish #define	HSVC_GROUP_DIAG			0x0300
58c56c1e58Sgirish 
59c56c1e58Sgirish #ifndef _ASM
60c56c1e58Sgirish 
61c56c1e58Sgirish #include <sys/types.h>
62c56c1e58Sgirish 
63c56c1e58Sgirish /*
64c56c1e58Sgirish  * Hypervisor service negotiation data strcture
65c56c1e58Sgirish  */
66c56c1e58Sgirish struct hsvc_info {
67c56c1e58Sgirish 	int		hsvc_rev;	/* data structure revision number */
68c56c1e58Sgirish 	void		*hsvc_private;	/* reserved for the framework */
69c56c1e58Sgirish 	uint64_t	hsvc_group;	/* hypervisor API group */
70c56c1e58Sgirish 	uint64_t	hsvc_major;	/* API group major number */
71c56c1e58Sgirish 	uint64_t	hsvc_minor;	/* API group minor number */
72c56c1e58Sgirish 	char		*hsvc_modname;	/* module name */
73c56c1e58Sgirish };
74c56c1e58Sgirish 
75c56c1e58Sgirish typedef struct hsvc_info hsvc_info_t;
76c56c1e58Sgirish 
77c56c1e58Sgirish /*
78c56c1e58Sgirish  * hsvc_rev field
79c56c1e58Sgirish  */
80c56c1e58Sgirish #define	HSVC_REV_1		1
81c56c1e58Sgirish 
82c56c1e58Sgirish /*
83c56c1e58Sgirish  * External interface
84c56c1e58Sgirish  */
85c56c1e58Sgirish extern int hsvc_register(hsvc_info_t *hsvcreq, uint64_t *supported_minor);
86c56c1e58Sgirish extern int hsvc_unregister(hsvc_info_t *hsvcreq);
87c56c1e58Sgirish extern int hsvc_version(uint64_t hsvc_group, uint64_t *major, uint64_t *minor);
88c56c1e58Sgirish 
89c56c1e58Sgirish #endif /* _ASM */
90c56c1e58Sgirish 
91c56c1e58Sgirish #ifdef __cplusplus
92c56c1e58Sgirish }
93c56c1e58Sgirish #endif
94c56c1e58Sgirish 
95c56c1e58Sgirish #endif /* _SYS_HSVC_H */
96