162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci/* Copyright(c) 2023 Advanced Micro Devices, Inc. */ 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci#ifndef _VFIO_DEV_H_ 562306a36Sopenharmony_ci#define _VFIO_DEV_H_ 662306a36Sopenharmony_ci 762306a36Sopenharmony_ci#include <linux/pci.h> 862306a36Sopenharmony_ci#include <linux/vfio_pci_core.h> 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci#include "dirty.h" 1162306a36Sopenharmony_ci#include "lm.h" 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_cistruct pds_vfio_pci_device { 1462306a36Sopenharmony_ci struct vfio_pci_core_device vfio_coredev; 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci struct pds_vfio_lm_file *save_file; 1762306a36Sopenharmony_ci struct pds_vfio_lm_file *restore_file; 1862306a36Sopenharmony_ci struct pds_vfio_dirty dirty; 1962306a36Sopenharmony_ci struct mutex state_mutex; /* protect migration state */ 2062306a36Sopenharmony_ci enum vfio_device_mig_state state; 2162306a36Sopenharmony_ci struct mutex reset_mutex; /* protect reset_done flow */ 2262306a36Sopenharmony_ci u8 deferred_reset; 2362306a36Sopenharmony_ci enum vfio_device_mig_state deferred_reset_state; 2462306a36Sopenharmony_ci struct notifier_block nb; 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci int vf_id; 2762306a36Sopenharmony_ci u16 client_id; 2862306a36Sopenharmony_ci}; 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_civoid pds_vfio_state_mutex_unlock(struct pds_vfio_pci_device *pds_vfio); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ciconst struct vfio_device_ops *pds_vfio_ops_info(void); 3362306a36Sopenharmony_cistruct pds_vfio_pci_device *pds_vfio_pci_drvdata(struct pci_dev *pdev); 3462306a36Sopenharmony_civoid pds_vfio_reset(struct pds_vfio_pci_device *pds_vfio); 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_cistruct pci_dev *pds_vfio_to_pci_dev(struct pds_vfio_pci_device *pds_vfio); 3762306a36Sopenharmony_cistruct device *pds_vfio_to_dev(struct pds_vfio_pci_device *pds_vfio); 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci#endif /* _VFIO_DEV_H_ */ 40