mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-29 09:03:14 +08:00
Create struct for vm bind params
add ioctl helper function for vm bind and vm unbind Related-To: NEO-6591 Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
b71a12c252
commit
b681b2ae10
@@ -56,6 +56,16 @@ struct DistanceInfo {
|
||||
int32_t distance;
|
||||
};
|
||||
|
||||
struct VmBindParams {
|
||||
uint32_t vmId;
|
||||
uint32_t handle;
|
||||
uint64_t start;
|
||||
uint64_t offset;
|
||||
uint64_t length;
|
||||
uint64_t flags;
|
||||
uint64_t extensions;
|
||||
};
|
||||
|
||||
using MemRegionsVec = StackVec<MemoryClassInstance, 5>;
|
||||
|
||||
class IoctlHelper {
|
||||
@@ -100,6 +110,8 @@ class IoctlHelper {
|
||||
virtual void fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) = 0;
|
||||
virtual std::optional<uint64_t> getCopyClassSaturatePCIECapability() = 0;
|
||||
virtual std::optional<uint64_t> getCopyClassSaturateLinkCapability() = 0;
|
||||
virtual int vmBind(Drm *drm, const VmBindParams &vmBindParams) = 0;
|
||||
virtual int vmUnbind(Drm *drm, const VmBindParams &vmBindParams) = 0;
|
||||
};
|
||||
|
||||
class IoctlHelperUpstream : public IoctlHelper {
|
||||
@@ -139,6 +151,8 @@ class IoctlHelperUpstream : public IoctlHelper {
|
||||
void fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override;
|
||||
std::optional<uint64_t> getCopyClassSaturatePCIECapability() override;
|
||||
std::optional<uint64_t> getCopyClassSaturateLinkCapability() override;
|
||||
int vmBind(Drm *drm, const VmBindParams &vmBindParams) override;
|
||||
int vmUnbind(Drm *drm, const VmBindParams &vmBindParams) override;
|
||||
};
|
||||
|
||||
template <PRODUCT_FAMILY gfxProduct>
|
||||
@@ -193,6 +207,8 @@ class IoctlHelperPrelim20 : public IoctlHelper {
|
||||
void fillVmBindExtSyncFence(const std::unique_ptr<uint8_t[]> &vmBindExtSyncFence, uint64_t fenceAddress, uint64_t fenceValue, uint64_t nextExtension) override;
|
||||
std::optional<uint64_t> getCopyClassSaturatePCIECapability() override;
|
||||
std::optional<uint64_t> getCopyClassSaturateLinkCapability() override;
|
||||
int vmBind(Drm *drm, const VmBindParams &vmBindParams) override;
|
||||
int vmUnbind(Drm *drm, const VmBindParams &vmBindParams) override;
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -426,4 +426,25 @@ std::optional<uint64_t> IoctlHelperPrelim20::getCopyClassSaturateLinkCapability(
|
||||
return PRELIM_I915_COPY_CLASS_CAP_SATURATE_LINK;
|
||||
}
|
||||
|
||||
prelim_drm_i915_gem_vm_bind translateVmBindParamsToPrelimStruct(const VmBindParams &vmBindParams) {
|
||||
prelim_drm_i915_gem_vm_bind vmBind{};
|
||||
vmBind.vm_id = vmBindParams.vmId;
|
||||
vmBind.handle = vmBindParams.handle;
|
||||
vmBind.start = vmBindParams.start;
|
||||
vmBind.offset = vmBindParams.offset;
|
||||
vmBind.length = vmBindParams.length;
|
||||
vmBind.flags = vmBindParams.flags;
|
||||
vmBind.extensions = vmBindParams.extensions;
|
||||
return vmBind;
|
||||
}
|
||||
|
||||
int IoctlHelperPrelim20::vmBind(Drm *drm, const VmBindParams &vmBindParams) {
|
||||
auto prelimVmBind = translateVmBindParamsToPrelimStruct(vmBindParams);
|
||||
return IoctlHelper::ioctl(drm, PRELIM_DRM_IOCTL_I915_GEM_VM_BIND, &prelimVmBind);
|
||||
}
|
||||
|
||||
int IoctlHelperPrelim20::vmUnbind(Drm *drm, const VmBindParams &vmBindParams) {
|
||||
auto prelimVmBind = translateVmBindParamsToPrelimStruct(vmBindParams);
|
||||
return IoctlHelper::ioctl(drm, PRELIM_DRM_IOCTL_I915_GEM_VM_UNBIND, &prelimVmBind);
|
||||
}
|
||||
} // namespace NEO
|
||||
|
||||
@@ -189,4 +189,10 @@ std::optional<uint64_t> IoctlHelperUpstream::getCopyClassSaturateLinkCapability(
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
int IoctlHelperUpstream::vmBind(Drm *drm, const VmBindParams &vmBindParams) {
|
||||
return 0;
|
||||
}
|
||||
int IoctlHelperUpstream::vmUnbind(Drm *drm, const VmBindParams &vmBindParams) {
|
||||
return 0;
|
||||
}
|
||||
} // namespace NEO
|
||||
|
||||
Reference in New Issue
Block a user