Add hypervisor interfaces for logical domain channels from the hypervisor API docs

remove bogus CDDL
This commit is contained in:
Kip Macy 2006-11-23 03:52:39 +00:00
parent 185877cc43
commit bcbf936a19
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=164540
3 changed files with 185 additions and 36 deletions

View file

@ -1,40 +1,10 @@
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (the "License").
* You may not use this file except in compliance with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
* $FreeBSD$
*/
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _MACHINE_HYPERVISOR_API_H
#define _MACHINE_HYPERVISOR_API_H
/*
* sun4v Hypervisor API
*
* Reference: api.pdf Revision 0.12 dated May 12, 2004.
* io-api.txt version 1.11 dated 10/19/2004
*/
#include <machine/hypervisorvar.h>
#ifndef _ASM
@ -79,6 +49,15 @@ typedef struct trap_trace_entry {
uint64_t tte_f4; /* Entry specific. */
} trap_trace_entry_t;
typedef struct ldc_state_info {
uint64_t lsi_head_offset;
uint64_t lsi_tail_offset;
uint64_t lse_channel_state;
} ldc_state_info_t;
#define LDC_CHANNEL_DOWN 0
#define LDC_CHANNEL_UP 1
extern uint64_t hv_mmu_map_perm_addr(void *, int, uint64_t, int);
extern uint64_t hv_mmu_unmap_perm_addr(void *, int, int);
extern uint64_t hv_set_ctx0(uint64_t, uint64_t);
@ -136,7 +115,14 @@ extern uint64_t hvio_peek(devhandle_t dev_hdl, uint64_t r_addr, uint64_t size,
uint32_t *err_flag, uint64_t *data);
extern uint64_t hvio_poke(devhandle_t dev_hdl, uint64_t r_addr, uint64_t size,
uint64_t data, uint64_t pcidev, uint32_t *err_flag);
extern uint64_t hvio_ldc_tx_qconf(uint64_t ldc_id, uint64_t base_raddr, uint64_t nentries);
extern uint64_t hvio_ldc_tx_qinfo(uint64_t ldc_id, uint64_t *base_raddr, uint64_t *nentries);
extern uint64_t hvio_ldc_tx_get_state(uint64_t ldc_id, ldc_state_info_t *info);
extern uint64_t hvio_ldc_tx_set_qtail(uint64_t ldc_id, uint64_t tail_offset);
extern uint64_t hvio_ldc_rx_get_state(uint64_t ldc_id, ldc_state_info_t *info);
extern uint64_t hvio_ldc_rx_qconf(uint64_t ldc_id, uint64_t base_raddr, uint64_t nentries);
extern uint64_t hvio_ldc_rx_qinfo(uint64_t ldc_id, uint64_t *base_raddr, uint64_t *nentries);
extern uint64_t hvio_ldc_rx_set_qhead(uint64_t ldc_id, uint64_t head_offset);
extern uint64_t hvio_config_get(devhandle_t dev_hdl, pci_device_t pci_device,
pci_config_offset_t off, pci_config_size_t size, pci_cfg_data_t *data);
extern uint64_t hvio_config_put(devhandle_t dev_hdl, pci_device_t pci_device,

View file

@ -149,6 +149,16 @@
#define HVIO_MSG_GETVALID 0xd2
#define HVIO_MSG_SETVALID 0xd3
#define HVIO_LDC_TX_QCONF 0xe0
#define HVIO_LDC_TX_QINFO 0xe1
#define HVIO_LDC_TX_GET_STATE 0xe2
#define HVIO_LDC_TX_SET_QTAIL 0xe3
#define HVIO_LDC_RX_QCONF 0xe4
#define HVIO_LDC_RX_QINFO 0xe5
#define HVIO_LDC_RX_GET_STATE 0xe6
#define HVIO_LDC_RX_SET_QHEAD 0xe7
#define HVIO_SIM_READ 0xf0
#define HVIO_SIM_WRITE 0xf1

View file

@ -156,7 +156,160 @@ ENTRY(hv_cpu_mondo_send)
retl
membar #Sync
END(hv_cpu_mondo_send)
/*
* configure ldc tx queue
* arg0 ldc_id (%o0)
* arg1 base_raddr (%o1)
* arg2 nentries (%o2)
*
* ret0 status (%o0)
*
*/
ENTRY(hvio_ldc_tx_qconf)
mov HVIO_LDC_TX_QCONF, %o5
ta FAST_TRAP
retl
nop
END(hvio_ldc_tx_qconf)
/*
* return configuration info for ldc tx queue
* arg0 ldc_id (%o0)
*
* ret0 status (%o0)
* ret1 base_raddr (%o1)
* ret2 nentries (%o2)
*
*/
ENTRY(hvio_ldc_tx_qinfo)
mov %o1, %o3
mov %o2, %o4
mov HVIO_LDC_TX_QINFO, %o5
ta FAST_TRAP
brnz %o0, 1f
nop
stx %o1, [%o3]
stx %o2, [%o4]
1: retl
nop
END(hvio_ldc_tx_qinfo)
/*
* get the state of the ldc tx queue
* arg0 ldc_id (%o0)
*
* ret0 status (%o0)
* ret1 head_offset (%o1)
* ret2 tail_offset (%o2)
* ret3 channel_state (%o3)
*
*/
ENTRY(hvio_ldc_tx_get_state)
mov %o1, %o4
mov HVIO_LDC_TX_GET_STATE, %o5
ta FAST_TRAP
brnz %o0, 1f
nop
stx %o1, [%o4]
stx %o2, [%o4 + 8]
stx %o3, [%o4 + 16]
1: retl
nop
END(hvio_ldc_tx_get_state)
/*
* update the tail pointer of the ldc tx queue
* arg0 ldc_id (%o0)
* arg1 tail_offset (%o1)
*
* ret0 status (%o0)
*
*/
ENTRY(hvio_ldc_tx_set_qtail)
mov HVIO_LDC_TX_SET_QTAIL, %o5
ta FAST_TRAP
retl
nop
END(hvio_ldc_tx_set_qtail)
/*
* configure ldc rx queue
* arg0 ldc_id (%o0)
* arg1 base_raddr (%o1)
* arg2 nentries (%o2)
*
* ret0 status (%o0)
*
*/
ENTRY(hvio_ldc_rx_qconf)
mov HVIO_LDC_RX_QCONF, %o5
ta FAST_TRAP
retl
nop
END(hvio_ldc_rx_qconf)
/*
* return configuration info for ldc rx queue
* arg0 ldc_id (%o0)
*
* ret0 status (%o0)
* ret1 base_raddr (%o1)
* ret2 nentries (%o2)
*
*/
ENTRY(hvio_ldc_rx_qinfo)
mov %o1, %o3
mov %o2, %o4
mov HVIO_LDC_RX_QINFO, %o5
ta FAST_TRAP
brnz %o0, 1f
nop
stx %o1, [%o3]
stx %o2, [%o4]
1: retl
nop
END(hvio_ldc_rx_qinfo)
/*
* get the state of the ldc rx queue
* arg0 ldc_id (%o0)
*
* ret0 status (%o0)
* ret1 head_offset (%o1)
* ret2 tail_offset (%o2)
* ret3 channel_state (%o3)
*
*/
ENTRY(hvio_ldc_rx_get_state)
mov %o1, %o4
mov HVIO_LDC_RX_GET_STATE, %o5
ta FAST_TRAP
brnz %o0, 1f
nop
stx %o1, [%o4]
stx %o2, [%o4 + 8]
stx %o3, [%o4 + 16]
1: retl
nop
END(hvio_ldc_rx_get_state)
/*
* update the head pointer of the ldc rx queue
* arg0 ldc_id (%o0)
* arg1 head_offset (%o1)
*
* ret0 status (%o0)
*
*/
ENTRY(hvio_ldc_rx_set_qhead)
mov HVIO_LDC_RX_SET_QHEAD, %o5
ta FAST_TRAP
retl
nop
END(hvio_ldc_rx_set_qhead)
/*
* arg0 - devhandle
* arg1 - pci_device
@ -854,8 +1007,8 @@ END(hv_dump_buf_update)
* For memory scrub
* int hv_mem_scrub(uint64_t real_addr, uint64_t length,
* uint64_t *scrubbed_len);
* Retun %o0 -- status
* %o1 -- bytes scrubbed
* Return %o0 -- status
* %o1 -- bytes scrubbed
*/
ENTRY(hv_mem_scrub)
mov %o2, %o4
@ -869,8 +1022,8 @@ END(hv_mem_scrub)
* Flush ecache
* int hv_mem_sync(uint64_t real_addr, uint64_t length,
* uint64_t *flushed_len);
* Retun %o0 -- status
* %o1 -- bytes flushed
* Return %o0 -- status
* %o1 -- bytes flushed
*/
ENTRY(hv_mem_sync)
mov %o2, %o4