root/drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h
/* SPDX-License-Identifier: MIT */
/*
 * Copyright © 2025 Intel Corporation
 */

#ifndef _XE_SRIOV_PF_MIGRATION_TYPES_H_
#define _XE_SRIOV_PF_MIGRATION_TYPES_H_

#include <linux/types.h>
#include <linux/mutex_types.h>
#include <linux/wait.h>

/**
 * struct xe_sriov_pf_migration - Xe device level VF migration data
 */
struct xe_sriov_pf_migration {
        /** @disabled: indicates whether VF migration feature is disabled */
        bool disabled;
};

/**
 * struct xe_sriov_migration_state - Per VF device-level migration related data
 */
struct xe_sriov_migration_state {
        /** @wq: waitqueue used to avoid busy-waiting for snapshot production/consumption */
        wait_queue_head_t wq;
        /** @lock: Mutex protecting the migration data */
        struct mutex lock;
        /** @pending: currently processed data packet of VF resource */
        struct xe_sriov_packet *pending;
        /** @trailer: data packet used to indicate the end of stream */
        struct xe_sriov_packet *trailer;
        /** @descriptor: data packet containing the metadata describing the device */
        struct xe_sriov_packet *descriptor;
};

#endif