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