mirror of
https://github.com/torvalds/linux.git
synced 2026-05-03 22:12:32 -04:00
drm/i915/gvt: use atomic operations to change the vGPU status
Several vGPU status are used to decide the availability of GVT-g core logics when creating a vGPU. Use atomic operations on changing the vGPU status to avoid the racing. Cc: Zhenyu Wang <zhenyuw@linux.intel.com> Cc: Kevin Tian <kevin.tian@intel.com> Cc: Jason Gunthorpe <jgg@nvidia.com> Cc: intel-gvt-dev@lists.freedesktop.org Suggested-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Zhi Wang <zhi.a.wang@intel.com> Reviewed-by: Zhenyu Wang <zhenyuw@linux.intel.com> Reviewed-by: Kevin Tian <kevin.tian@intel.com> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/20221110122034.3382-2-zhi.a.wang@intel.com
This commit is contained in:
@@ -151,6 +151,22 @@ DEFINE_SIMPLE_ATTRIBUTE(vgpu_scan_nonprivbb_fops,
|
||||
vgpu_scan_nonprivbb_get, vgpu_scan_nonprivbb_set,
|
||||
"0x%llx\n");
|
||||
|
||||
static int vgpu_status_get(void *data, u64 *val)
|
||||
{
|
||||
struct intel_vgpu *vgpu = (struct intel_vgpu *)data;
|
||||
|
||||
*val = 0;
|
||||
|
||||
if (test_bit(INTEL_VGPU_STATUS_ATTACHED, vgpu->status))
|
||||
*val |= (1 << INTEL_VGPU_STATUS_ATTACHED);
|
||||
if (test_bit(INTEL_VGPU_STATUS_ACTIVE, vgpu->status))
|
||||
*val |= (1 << INTEL_VGPU_STATUS_ACTIVE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
DEFINE_SIMPLE_ATTRIBUTE(vgpu_status_fops, vgpu_status_get, NULL, "0x%llx\n");
|
||||
|
||||
/**
|
||||
* intel_gvt_debugfs_add_vgpu - register debugfs entries for a vGPU
|
||||
* @vgpu: a vGPU
|
||||
@@ -162,11 +178,12 @@ void intel_gvt_debugfs_add_vgpu(struct intel_vgpu *vgpu)
|
||||
snprintf(name, 16, "vgpu%d", vgpu->id);
|
||||
vgpu->debugfs = debugfs_create_dir(name, vgpu->gvt->debugfs_root);
|
||||
|
||||
debugfs_create_bool("active", 0444, vgpu->debugfs, &vgpu->active);
|
||||
debugfs_create_file("mmio_diff", 0444, vgpu->debugfs, vgpu,
|
||||
&vgpu_mmio_diff_fops);
|
||||
debugfs_create_file("scan_nonprivbb", 0644, vgpu->debugfs, vgpu,
|
||||
&vgpu_scan_nonprivbb_fops);
|
||||
debugfs_create_file("status", 0644, vgpu->debugfs, vgpu,
|
||||
&vgpu_status_fops);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user