1*f232836aSBrett Creeley /* SPDX-License-Identifier: GPL-2.0 */ 2*f232836aSBrett Creeley /* Copyright(c) 2023 Advanced Micro Devices, Inc. */ 3*f232836aSBrett Creeley 4*f232836aSBrett Creeley #ifndef _DIRTY_H_ 5*f232836aSBrett Creeley #define _DIRTY_H_ 6*f232836aSBrett Creeley 7*f232836aSBrett Creeley struct pds_vfio_bmp_info { 8*f232836aSBrett Creeley unsigned long *bmp; 9*f232836aSBrett Creeley u32 bmp_bytes; 10*f232836aSBrett Creeley struct pds_lm_sg_elem *sgl; 11*f232836aSBrett Creeley dma_addr_t sgl_addr; 12*f232836aSBrett Creeley u16 num_sge; 13*f232836aSBrett Creeley }; 14*f232836aSBrett Creeley 15*f232836aSBrett Creeley struct pds_vfio_dirty { 16*f232836aSBrett Creeley struct pds_vfio_bmp_info host_seq; 17*f232836aSBrett Creeley struct pds_vfio_bmp_info host_ack; 18*f232836aSBrett Creeley u64 region_size; 19*f232836aSBrett Creeley u64 region_start; 20*f232836aSBrett Creeley u64 region_page_size; 21*f232836aSBrett Creeley bool is_enabled; 22*f232836aSBrett Creeley }; 23*f232836aSBrett Creeley 24*f232836aSBrett Creeley struct pds_vfio_pci_device; 25*f232836aSBrett Creeley 26*f232836aSBrett Creeley bool pds_vfio_dirty_is_enabled(struct pds_vfio_pci_device *pds_vfio); 27*f232836aSBrett Creeley void pds_vfio_dirty_set_enabled(struct pds_vfio_pci_device *pds_vfio); 28*f232836aSBrett Creeley void pds_vfio_dirty_set_disabled(struct pds_vfio_pci_device *pds_vfio); 29*f232836aSBrett Creeley void pds_vfio_dirty_disable(struct pds_vfio_pci_device *pds_vfio, 30*f232836aSBrett Creeley bool send_cmd); 31*f232836aSBrett Creeley 32*f232836aSBrett Creeley int pds_vfio_dma_logging_report(struct vfio_device *vdev, unsigned long iova, 33*f232836aSBrett Creeley unsigned long length, 34*f232836aSBrett Creeley struct iova_bitmap *dirty); 35*f232836aSBrett Creeley int pds_vfio_dma_logging_start(struct vfio_device *vdev, 36*f232836aSBrett Creeley struct rb_root_cached *ranges, u32 nnodes, 37*f232836aSBrett Creeley u64 *page_size); 38*f232836aSBrett Creeley int pds_vfio_dma_logging_stop(struct vfio_device *vdev); 39*f232836aSBrett Creeley #endif /* _DIRTY_H_ */ 40