hsvc.h revision c56c1e58d46678af913f4c68f2ef9dcacb5f282f
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling/*
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * CDDL HEADER START
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling *
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * The contents of this file are subject to the terms of the
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * Common Development and Distribution License (the "License").
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * You may not use this file except in compliance with the License.
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling *
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * or http://www.opensolaris.org/os/licensing.
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * See the License for the specific language governing permissions
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * and limitations under the License.
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling *
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * When distributing Covered Code, include this CDDL HEADER in each
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * If applicable, add the following below this CDDL HEADER, with the
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * fields enclosed by brackets "[]" replaced with your own identifying
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * information: Portions Copyright [yyyy] [name of copyright owner]
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling *
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * CDDL HEADER END
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling/*
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
139510fb6efa97dbe5f5479594b308d940cab8d1George Wilson * Use is subject to license terms.
8c04a1fa3f7d569d48fe9b5342d0bd4c533179b9Gary Mills */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#ifndef _SYS_HSVC_H
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define _SYS_HSVC_H
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#pragma ident "%Z%%M% %I% %E% SMI"
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling/*
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * Niagara services information
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#ifdef __cplusplus
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingextern "C" {
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#endif
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling/*
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * Hypervisor service groups
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_SUN4V 0x0000
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_CORE 0x0001
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_VPCI 0x0100
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_LDC 0x0101
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_VSC 0x0102
ad135b5d644628e791c3188a6ecbd9c257961ef8Christopher Siden#define HSVC_GROUP_NCS 0x0103
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_NIAGARA_CPU 0x0200
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_FIRE_PERF 0x0201
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#define HSVC_GROUP_DIAG 0x0300
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
7802d7bf98dec568dadf72286893b1fe5abd8602Matthew Ahrens#ifndef _ASM
7802d7bf98dec568dadf72286893b1fe5abd8602Matthew Ahrens
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#include <sys/types.h>
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3b2aab18808792cbd248a12f1edf139b89833c13Matthew Ahrens/*
1825bc56e5a1f7ef6f0dc3137f3b35f5850c1100Nav Ravindranath * Hypervisor service negotiation data strcture
1825bc56e5a1f7ef6f0dc3137f3b35f5850c1100Nav Ravindranath */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingstruct hsvc_info {
44ecc5327ab4ce0750dcca2a17e05566bf2812e2George Wilson int hsvc_rev; /* data structure revision number */
44ecc5327ab4ce0750dcca2a17e05566bf2812e2George Wilson void *hsvc_private; /* reserved for the framework */
44ecc5327ab4ce0750dcca2a17e05566bf2812e2George Wilson uint64_t hsvc_group; /* hypervisor API group */
44ecc5327ab4ce0750dcca2a17e05566bf2812e2George Wilson uint64_t hsvc_major; /* API group major number */
44ecc5327ab4ce0750dcca2a17e05566bf2812e2George Wilson uint64_t hsvc_minor; /* API group minor number */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling char *hsvc_modname; /* module name */
cde58dbc6a23d4d38db7c8866312be83221c765fMatthew Ahrens};
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingtypedef struct hsvc_info hsvc_info_t;
7fd05ac4dec0c343d2f68f310d3718b715ecfbafMatthew Ahrens
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling/*
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * hsvc_rev field
af3465da8fa420c4ec701e3e57704d537a6f755bMax Grossman */
af3465da8fa420c4ec701e3e57704d537a6f755bMax Grossman#define HSVC_REV_1 1
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling/*
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling * External interface
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingextern int hsvc_register(hsvc_info_t *hsvcreq, uint64_t *supported_minor);
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingextern int hsvc_unregister(hsvc_info_t *hsvcreq);
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Lingextern int hsvc_version(uint64_t hsvc_group, uint64_t *major, uint64_t *minor);
139510fb6efa97dbe5f5479594b308d940cab8d1George Wilson
139510fb6efa97dbe5f5479594b308d940cab8d1George Wilson#endif /* _ASM */
139510fb6efa97dbe5f5479594b308d940cab8d1George Wilson
139510fb6efa97dbe5f5479594b308d940cab8d1George Wilson#ifdef __cplusplus
139510fb6efa97dbe5f5479594b308d940cab8d1George Wilson}
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#endif
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling#endif /* _SYS_HSVC_H */
3f9d6ad73e45c6823b409f93b0c8d4f62861d2d5Lin Ling