42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||
|
/* Copyright(c) 2023 Advanced Micro Devices, Inc. */
|
||
|
|
||
|
#ifndef _DIRTY_H_
|
||
|
#define _DIRTY_H_
|
||
|
|
||
|
struct pds_vfio_region {
|
||
|
unsigned long *host_seq;
|
||
|
unsigned long *host_ack;
|
||
|
u64 bmp_bytes;
|
||
|
u64 size;
|
||
|
u64 start;
|
||
|
u64 page_size;
|
||
|
struct pds_lm_sg_elem *sgl;
|
||
|
dma_addr_t sgl_addr;
|
||
|
u32 dev_bmp_offset_start_byte;
|
||
|
u16 num_sge;
|
||
|
};
|
||
|
|
||
|
struct pds_vfio_dirty {
|
||
|
struct pds_vfio_region *regions;
|
||
|
u8 num_regions;
|
||
|
bool is_enabled;
|
||
|
};
|
||
|
|
||
|
struct pds_vfio_pci_device;
|
||
|
|
||
|
bool pds_vfio_dirty_is_enabled(struct pds_vfio_pci_device *pds_vfio);
|
||
|
void pds_vfio_dirty_set_enabled(struct pds_vfio_pci_device *pds_vfio);
|
||
|
void pds_vfio_dirty_set_disabled(struct pds_vfio_pci_device *pds_vfio);
|
||
|
void pds_vfio_dirty_disable(struct pds_vfio_pci_device *pds_vfio,
|
||
|
bool send_cmd);
|
||
|
|
||
|
int pds_vfio_dma_logging_report(struct vfio_device *vdev, unsigned long iova,
|
||
|
unsigned long length,
|
||
|
struct iova_bitmap *dirty);
|
||
|
int pds_vfio_dma_logging_start(struct vfio_device *vdev,
|
||
|
struct rb_root_cached *ranges, u32 nnodes,
|
||
|
u64 *page_size);
|
||
|
int pds_vfio_dma_logging_stop(struct vfio_device *vdev);
|
||
|
#endif /* _DIRTY_H_ */
|