mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 09:04:39 +02:00
drm/xe: Move migration support to device-level struct
Upcoming changes will allow users to control VF state and obtain its migration data with a device-level granularity (not tile/gt). Change the data structures to reflect that and move the GT-level migration init to happen after device-level init. Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com> Link: https://patch.msgid.link/20251112132220.516975-3-michal.winiarski@intel.com Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
This commit is contained in:
parent
baf125849a
commit
4a43480ae0
|
|
@ -177,6 +177,7 @@ xe-$(CONFIG_PCI_IOV) += \
|
|||
xe_sriov_pf.o \
|
||||
xe_sriov_pf_control.o \
|
||||
xe_sriov_pf_debugfs.o \
|
||||
xe_sriov_pf_migration.o \
|
||||
xe_sriov_pf_provision.o \
|
||||
xe_sriov_pf_service.o \
|
||||
xe_sriov_pf_sysfs.o \
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@
|
|||
#include "xe_guc.h"
|
||||
#include "xe_guc_ct.h"
|
||||
#include "xe_sriov.h"
|
||||
#include "xe_sriov_pf_migration.h"
|
||||
|
||||
/* Return: number of dwords saved/restored/required or a negative error code on failure */
|
||||
static int guc_action_vf_save_restore(struct xe_guc *guc, u32 vfid, u32 opcode,
|
||||
|
|
@ -115,8 +116,7 @@ static int pf_send_guc_restore_vf_state(struct xe_gt *gt, unsigned int vfid,
|
|||
|
||||
static bool pf_migration_supported(struct xe_gt *gt)
|
||||
{
|
||||
xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt)));
|
||||
return gt->sriov.pf.migration.supported;
|
||||
return xe_sriov_pf_migration_supported(gt_to_xe(gt));
|
||||
}
|
||||
|
||||
static struct mutex *pf_migration_mutex(struct xe_gt *gt)
|
||||
|
|
@ -382,12 +382,6 @@ ssize_t xe_gt_sriov_pf_migration_write_guc_state(struct xe_gt *gt, unsigned int
|
|||
}
|
||||
#endif /* CONFIG_DEBUG_FS */
|
||||
|
||||
static bool pf_check_migration_support(struct xe_gt *gt)
|
||||
{
|
||||
/* XXX: for now this is for feature enabling only */
|
||||
return IS_ENABLED(CONFIG_DRM_XE_DEBUG);
|
||||
}
|
||||
|
||||
/**
|
||||
* xe_gt_sriov_pf_migration_init() - Initialize support for VF migration.
|
||||
* @gt: the &xe_gt
|
||||
|
|
@ -403,8 +397,6 @@ int xe_gt_sriov_pf_migration_init(struct xe_gt *gt)
|
|||
|
||||
xe_gt_assert(gt, IS_SRIOV_PF(xe));
|
||||
|
||||
gt->sriov.pf.migration.supported = pf_check_migration_support(gt);
|
||||
|
||||
if (!pf_migration_supported(gt))
|
||||
return 0;
|
||||
|
||||
|
|
|
|||
|
|
@ -30,9 +30,6 @@ struct xe_gt_sriov_state_snapshot {
|
|||
* Used by the PF driver to maintain non-VF specific per-GT data.
|
||||
*/
|
||||
struct xe_gt_sriov_pf_migration {
|
||||
/** @supported: indicates whether the feature is supported */
|
||||
bool supported;
|
||||
|
||||
/** @snapshot_lock: protects all VFs snapshots */
|
||||
struct mutex snapshot_lock;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include "xe_sriov.h"
|
||||
#include "xe_sriov_pf.h"
|
||||
#include "xe_sriov_pf_helpers.h"
|
||||
#include "xe_sriov_pf_migration.h"
|
||||
#include "xe_sriov_pf_service.h"
|
||||
#include "xe_sriov_pf_sysfs.h"
|
||||
#include "xe_sriov_printk.h"
|
||||
|
|
@ -102,6 +103,10 @@ int xe_sriov_pf_init_early(struct xe_device *xe)
|
|||
if (err)
|
||||
return err;
|
||||
|
||||
err = xe_sriov_pf_migration_init(xe);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
xe_guard_init(&xe->sriov.pf.guard_vfs_enabling, "vfs_enabling");
|
||||
|
||||
xe_sriov_pf_service_init(xe);
|
||||
|
|
|
|||
41
drivers/gpu/drm/xe/xe_sriov_pf_migration.c
Normal file
41
drivers/gpu/drm/xe/xe_sriov_pf_migration.c
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
// SPDX-License-Identifier: MIT
|
||||
/*
|
||||
* Copyright © 2025 Intel Corporation
|
||||
*/
|
||||
|
||||
#include "xe_sriov.h"
|
||||
#include "xe_sriov_pf_migration.h"
|
||||
|
||||
/**
|
||||
* xe_sriov_pf_migration_supported() - Check if SR-IOV VF migration is supported by the device
|
||||
* @xe: the &xe_device
|
||||
*
|
||||
* Return: true if migration is supported, false otherwise
|
||||
*/
|
||||
bool xe_sriov_pf_migration_supported(struct xe_device *xe)
|
||||
{
|
||||
xe_assert(xe, IS_SRIOV_PF(xe));
|
||||
|
||||
return xe->sriov.pf.migration.supported;
|
||||
}
|
||||
|
||||
static bool pf_check_migration_support(struct xe_device *xe)
|
||||
{
|
||||
/* XXX: for now this is for feature enabling only */
|
||||
return IS_ENABLED(CONFIG_DRM_XE_DEBUG);
|
||||
}
|
||||
|
||||
/**
|
||||
* xe_sriov_pf_migration_init() - Initialize support for SR-IOV VF migration.
|
||||
* @xe: the &xe_device
|
||||
*
|
||||
* Return: 0 on success or a negative error code on failure.
|
||||
*/
|
||||
int xe_sriov_pf_migration_init(struct xe_device *xe)
|
||||
{
|
||||
xe_assert(xe, IS_SRIOV_PF(xe));
|
||||
|
||||
xe->sriov.pf.migration.supported = pf_check_migration_support(xe);
|
||||
|
||||
return 0;
|
||||
}
|
||||
16
drivers/gpu/drm/xe/xe_sriov_pf_migration.h
Normal file
16
drivers/gpu/drm/xe/xe_sriov_pf_migration.h
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/* SPDX-License-Identifier: MIT */
|
||||
/*
|
||||
* Copyright © 2025 Intel Corporation
|
||||
*/
|
||||
|
||||
#ifndef _XE_SRIOV_PF_MIGRATION_H_
|
||||
#define _XE_SRIOV_PF_MIGRATION_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct xe_device;
|
||||
|
||||
int xe_sriov_pf_migration_init(struct xe_device *xe);
|
||||
bool xe_sriov_pf_migration_supported(struct xe_device *xe);
|
||||
|
||||
#endif
|
||||
19
drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h
Normal file
19
drivers/gpu/drm/xe/xe_sriov_pf_migration_types.h
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
/* 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>
|
||||
|
||||
/**
|
||||
* struct xe_sriov_pf_migration - Xe device level VF migration data
|
||||
*/
|
||||
struct xe_sriov_pf_migration {
|
||||
/** @supported: indicates whether VF migration feature is supported */
|
||||
bool supported;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -10,6 +10,7 @@
|
|||
#include <linux/types.h>
|
||||
|
||||
#include "xe_guard.h"
|
||||
#include "xe_sriov_pf_migration_types.h"
|
||||
#include "xe_sriov_pf_provision_types.h"
|
||||
#include "xe_sriov_pf_service_types.h"
|
||||
|
||||
|
|
@ -48,6 +49,9 @@ struct xe_device_pf {
|
|||
/** @provision: device level provisioning data. */
|
||||
struct xe_sriov_pf_provision provision;
|
||||
|
||||
/** @migration: device level migration data. */
|
||||
struct xe_sriov_pf_migration migration;
|
||||
|
||||
/** @service: device level service data. */
|
||||
struct xe_sriov_pf_service service;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user