xref: /openbmc/linux/drivers/vfio/pci/pds/vfio_dev.h (revision 72654bc1)
138fe3975SBrett Creeley /* SPDX-License-Identifier: GPL-2.0 */
238fe3975SBrett Creeley /* Copyright(c) 2023 Advanced Micro Devices, Inc. */
338fe3975SBrett Creeley 
438fe3975SBrett Creeley #ifndef _VFIO_DEV_H_
538fe3975SBrett Creeley #define _VFIO_DEV_H_
638fe3975SBrett Creeley 
738fe3975SBrett Creeley #include <linux/pci.h>
838fe3975SBrett Creeley #include <linux/vfio_pci_core.h>
938fe3975SBrett Creeley 
10f232836aSBrett Creeley #include "dirty.h"
11bb500dbeSBrett Creeley #include "lm.h"
12bb500dbeSBrett Creeley 
1338fe3975SBrett Creeley struct pds_vfio_pci_device {
1438fe3975SBrett Creeley 	struct vfio_pci_core_device vfio_coredev;
1538fe3975SBrett Creeley 
16bb500dbeSBrett Creeley 	struct pds_vfio_lm_file *save_file;
17bb500dbeSBrett Creeley 	struct pds_vfio_lm_file *restore_file;
18f232836aSBrett Creeley 	struct pds_vfio_dirty dirty;
19bb500dbeSBrett Creeley 	struct mutex state_mutex; /* protect migration state */
20bb500dbeSBrett Creeley 	enum vfio_device_mig_state state;
21*72654bc1SBrett Creeley 	struct mutex reset_mutex; /* protect reset_done flow */
22bb500dbeSBrett Creeley 	u8 deferred_reset;
237dabb1bcSBrett Creeley 	enum vfio_device_mig_state deferred_reset_state;
247dabb1bcSBrett Creeley 	struct notifier_block nb;
25bb500dbeSBrett Creeley 
2638fe3975SBrett Creeley 	int vf_id;
2763f77a71SBrett Creeley 	u16 client_id;
2838fe3975SBrett Creeley };
2938fe3975SBrett Creeley 
30f232836aSBrett Creeley void pds_vfio_state_mutex_unlock(struct pds_vfio_pci_device *pds_vfio);
31f232836aSBrett Creeley 
3238fe3975SBrett Creeley const struct vfio_device_ops *pds_vfio_ops_info(void);
3338fe3975SBrett Creeley struct pds_vfio_pci_device *pds_vfio_pci_drvdata(struct pci_dev *pdev);
34bb500dbeSBrett Creeley void pds_vfio_reset(struct pds_vfio_pci_device *pds_vfio);
3538fe3975SBrett Creeley 
3663f77a71SBrett Creeley struct pci_dev *pds_vfio_to_pci_dev(struct pds_vfio_pci_device *pds_vfio);
37bb500dbeSBrett Creeley struct device *pds_vfio_to_dev(struct pds_vfio_pci_device *pds_vfio);
3863f77a71SBrett Creeley 
3938fe3975SBrett Creeley #endif /* _VFIO_DEV_H_ */
40