xref: /illumos-gate/usr/src/uts/intel/io/vmm/io/ppt.h (revision 32640292)
17c8c0b82SPatrick Mooney /*-
2*32640292SAndy Fiddaman  * SPDX-License-Identifier: BSD-2-Clause
37c8c0b82SPatrick Mooney  *
47c8c0b82SPatrick Mooney  * Copyright (c) 2011 NetApp, Inc.
57c8c0b82SPatrick Mooney  * All rights reserved.
67c8c0b82SPatrick Mooney  *
77c8c0b82SPatrick Mooney  * Redistribution and use in source and binary forms, with or without
87c8c0b82SPatrick Mooney  * modification, are permitted provided that the following conditions
97c8c0b82SPatrick Mooney  * are met:
107c8c0b82SPatrick Mooney  * 1. Redistributions of source code must retain the above copyright
117c8c0b82SPatrick Mooney  *    notice, this list of conditions and the following disclaimer.
127c8c0b82SPatrick Mooney  * 2. Redistributions in binary form must reproduce the above copyright
137c8c0b82SPatrick Mooney  *    notice, this list of conditions and the following disclaimer in the
147c8c0b82SPatrick Mooney  *    documentation and/or other materials provided with the distribution.
157c8c0b82SPatrick Mooney  *
167c8c0b82SPatrick Mooney  * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
177c8c0b82SPatrick Mooney  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
187c8c0b82SPatrick Mooney  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
197c8c0b82SPatrick Mooney  * ARE DISCLAIMED.  IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
207c8c0b82SPatrick Mooney  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
217c8c0b82SPatrick Mooney  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
227c8c0b82SPatrick Mooney  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
237c8c0b82SPatrick Mooney  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
247c8c0b82SPatrick Mooney  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
257c8c0b82SPatrick Mooney  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
267c8c0b82SPatrick Mooney  * SUCH DAMAGE.
277c8c0b82SPatrick Mooney  */
287c8c0b82SPatrick Mooney 
297c8c0b82SPatrick Mooney #ifndef _IO_PPT_H_
307c8c0b82SPatrick Mooney #define	_IO_PPT_H_
317c8c0b82SPatrick Mooney 
32e0994bd2SPatrick Mooney void ppt_unassign_all(struct vm *vm);
337c8c0b82SPatrick Mooney int ppt_map_mmio(struct vm *vm, int pptfd, vm_paddr_t gpa, size_t len,
347c8c0b82SPatrick Mooney     vm_paddr_t hpa);
357c8c0b82SPatrick Mooney int ppt_unmap_mmio(struct vm *vm, int pptfd, vm_paddr_t gpa, size_t len);
367c8c0b82SPatrick Mooney int ppt_setup_msi(struct vm *vm, int vcpu, int pptfd, uint64_t addr,
377c8c0b82SPatrick Mooney     uint64_t msg, int numvec);
387c8c0b82SPatrick Mooney int ppt_setup_msix(struct vm *vm, int vcpu, int pptfd, int idx, uint64_t addr,
397c8c0b82SPatrick Mooney     uint64_t msg, uint32_t vector_control);
407c8c0b82SPatrick Mooney int ppt_disable_msix(struct vm *vm, int pptfd);
417c8c0b82SPatrick Mooney int ppt_assigned_devices(struct vm *vm);
427c8c0b82SPatrick Mooney boolean_t ppt_is_mmio(struct vm *vm, vm_paddr_t gpa);
437c8c0b82SPatrick Mooney int ppt_get_limits(struct vm *vm, int pptfd, int *msilimit, int *msixlimit);
447c8c0b82SPatrick Mooney 
457c8c0b82SPatrick Mooney /*
467c8c0b82SPatrick Mooney  * The following functions should never be called directly.
477c8c0b82SPatrick Mooney  * Use 'vm_assign_pptdev()' and 'vm_unassign_pptdev()' instead.
487c8c0b82SPatrick Mooney  */
497c8c0b82SPatrick Mooney int ppt_assign_device(struct vm *vm, int pptfd);
507c8c0b82SPatrick Mooney int ppt_unassign_device(struct vm *vm, int pptfd);
517c8c0b82SPatrick Mooney #endif
52