1*bb4ee6a4SAndroid Build Coastguard Worker // Copyright 2019 The ChromiumOS Authors 2*bb4ee6a4SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*bb4ee6a4SAndroid Build Coastguard Worker // found in the LICENSE file. 4*bb4ee6a4SAndroid Build Coastguard Worker 5*bb4ee6a4SAndroid Build Coastguard Worker //! Linux VFIO (Virtual Function I/O) bindings. 6*bb4ee6a4SAndroid Build Coastguard Worker //! 7*bb4ee6a4SAndroid Build Coastguard Worker //! <https://www.kernel.org/doc/html/latest/driver-api/vfio.html> 8*bb4ee6a4SAndroid Build Coastguard Worker 9*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_upper_case_globals)] 10*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_camel_case_types)] 11*bb4ee6a4SAndroid Build Coastguard Worker #![allow(non_snake_case)] 12*bb4ee6a4SAndroid Build Coastguard Worker 13*bb4ee6a4SAndroid Build Coastguard Worker use base::ioctl_io_nr; 14*bb4ee6a4SAndroid Build Coastguard Worker 15*bb4ee6a4SAndroid Build Coastguard Worker pub mod plat; 16*bb4ee6a4SAndroid Build Coastguard Worker pub mod vfio; 17*bb4ee6a4SAndroid Build Coastguard Worker 18*bb4ee6a4SAndroid Build Coastguard Worker use crate::plat::ACPI_EVT_FORWARD_BASE; 19*bb4ee6a4SAndroid Build Coastguard Worker use crate::plat::PLAT_IRQ_FORWARD_BASE; 20*bb4ee6a4SAndroid Build Coastguard Worker use crate::plat::PLAT_IRQ_FORWARD_TYPE; 21*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_device_feature; 22*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_device_info; 23*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_device_low_power_entry_with_wakeup; 24*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_group_status; 25*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_info_cap_header; 26*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_dma_map; 27*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_dma_unmap; 28*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_info; 29*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_info_cap_iova_range; 30*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iommu_type1_info_cap_iova_range_header; 31*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_iova_range; 32*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_irq_info; 33*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_irq_set; 34*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info; 35*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info_cap_sparse_mmap; 36*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info_cap_type; 37*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_info_with_cap; 38*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::vfio_region_sparse_mmap_area; 39*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_TYPE1v2_IOMMU; 40*bb4ee6a4SAndroid Build Coastguard Worker use crate::vfio::VFIO_BASE; 41*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY; 42*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_LOW_POWER_ENTRY_WITH_WAKEUP; 43*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_LOW_POWER_EXIT; 44*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FEATURE_SET; 45*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FLAGS_PCI; 46*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DEVICE_FLAGS_PLATFORM; 47*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DMA_MAP_FLAG_READ; 48*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_DMA_MAP_FLAG_WRITE; 49*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_GROUP_FLAGS_VIABLE; 50*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IOMMU_INFO_CAPS; 51*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IOMMU_INFO_PGSIZES; 52*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IOMMU_TYPE1_INFO_CAP_IOVA_RANGE; 53*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_INFO_AUTOMASKED; 54*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_ACTION_MASK; 55*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_ACTION_TRIGGER; 56*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_ACTION_UNMASK; 57*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_DATA_EVENTFD; 58*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_IRQ_SET_DATA_NONE; 59*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_BAR0_REGION_INDEX; 60*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_CONFIG_REGION_INDEX; 61*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_INTX_IRQ_INDEX; 62*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_MSIX_IRQ_INDEX; 63*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_MSI_IRQ_INDEX; 64*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_REQ_IRQ_INDEX; 65*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PCI_ROM_REGION_INDEX; 66*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_PKVM_PVIOMMU; 67*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_CAP_MSIX_MAPPABLE; 68*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_CAP_SPARSE_MMAP; 69*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_CAP_TYPE; 70*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_FLAG_CAPS; 71*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_FLAG_MMAP; 72*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_INFO_FLAG_WRITE; 73*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION; 74*bb4ee6a4SAndroid Build Coastguard Worker pub use crate::vfio::VFIO_REGION_TYPE_PCI_VENDOR_TYPE; 75*bb4ee6a4SAndroid Build Coastguard Worker use crate::vfio::VFIO_TYPE; 76*bb4ee6a4SAndroid Build Coastguard Worker 77*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GET_API_VERSION, VFIO_TYPE, VFIO_BASE); 78*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_CHECK_EXTENSION, VFIO_TYPE, VFIO_BASE + 1); 79*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_SET_IOMMU, VFIO_TYPE, VFIO_BASE + 2); 80*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_GET_STATUS, VFIO_TYPE, VFIO_BASE + 3); 81*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_SET_CONTAINER, VFIO_TYPE, VFIO_BASE + 4); 82*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_UNSET_CONTAINER, VFIO_TYPE, VFIO_BASE + 5); 83*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_GROUP_GET_DEVICE_FD, VFIO_TYPE, VFIO_BASE + 6); 84*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_INFO, VFIO_TYPE, VFIO_BASE + 7); 85*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_REGION_INFO, VFIO_TYPE, VFIO_BASE + 8); 86*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_IRQ_INFO, VFIO_TYPE, VFIO_BASE + 9); 87*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_SET_IRQS, VFIO_TYPE, VFIO_BASE + 10); 88*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_RESET, VFIO_TYPE, VFIO_BASE + 11); 89*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!( 90*bb4ee6a4SAndroid Build Coastguard Worker VFIO_DEVICE_GET_PCI_HOT_RESET_INFO, 91*bb4ee6a4SAndroid Build Coastguard Worker VFIO_TYPE, 92*bb4ee6a4SAndroid Build Coastguard Worker VFIO_BASE + 12 93*bb4ee6a4SAndroid Build Coastguard Worker ); 94*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_PCI_HOT_RESET, VFIO_TYPE, VFIO_BASE + 13); 95*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_QUERY_GFX_PLANE, VFIO_TYPE, VFIO_BASE + 14); 96*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_GET_GFX_DMABUF, VFIO_TYPE, VFIO_BASE + 15); 97*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_IOEVENTFD, VFIO_TYPE, VFIO_BASE + 16); 98*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_GET_INFO, VFIO_TYPE, VFIO_BASE + 12); 99*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_MAP_DMA, VFIO_TYPE, VFIO_BASE + 13); 100*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_UNMAP_DMA, VFIO_TYPE, VFIO_BASE + 14); 101*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_ENABLE, VFIO_TYPE, VFIO_BASE + 15); 102*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_IOMMU_DISABLE, VFIO_TYPE, VFIO_BASE + 16); 103*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_FEATURE, VFIO_TYPE, VFIO_BASE + 17); 104*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!(VFIO_DEVICE_ACPI_DSM, VFIO_TYPE, VFIO_BASE + 18); 105*bb4ee6a4SAndroid Build Coastguard Worker 106*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!( 107*bb4ee6a4SAndroid Build Coastguard Worker PLAT_IRQ_FORWARD_SET, 108*bb4ee6a4SAndroid Build Coastguard Worker PLAT_IRQ_FORWARD_TYPE, 109*bb4ee6a4SAndroid Build Coastguard Worker PLAT_IRQ_FORWARD_BASE 110*bb4ee6a4SAndroid Build Coastguard Worker ); 111*bb4ee6a4SAndroid Build Coastguard Worker 112*bb4ee6a4SAndroid Build Coastguard Worker ioctl_io_nr!( 113*bb4ee6a4SAndroid Build Coastguard Worker ACPI_EVT_FORWARD_SET, 114*bb4ee6a4SAndroid Build Coastguard Worker PLAT_IRQ_FORWARD_TYPE, 115*bb4ee6a4SAndroid Build Coastguard Worker ACPI_EVT_FORWARD_BASE 116*bb4ee6a4SAndroid Build Coastguard Worker ); 117