[llvm] [OFFLOAD] Add missing memory data locking API for libomptarget migration (PR #172229)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 14 13:54:55 PST 2025
https://github.com/fineg74 created https://github.com/llvm/llvm-project/pull/172229
Add missing liboffload memory data locking API for libomptarget migration
This PR adds liboffload memory data locking API that needed to make libomptarget to use liboffload
>From afe6006c32d9c9bf6cb16655f42518c5b66aa662 Mon Sep 17 00:00:00 2001
From: "Fine, Gregory" <gregory.fine at intel.com>
Date: Fri, 12 Dec 2025 14:06:54 -0800
Subject: [PATCH] Add memory data lock API
---
offload/liboffload/API/Memory.td | 24 ++++++++++++++++++++++++
offload/liboffload/src/OffloadImpl.cpp | 15 +++++++++++++++
2 files changed, 39 insertions(+)
diff --git a/offload/liboffload/API/Memory.td b/offload/liboffload/API/Memory.td
index 79e8038330048..cf77055837155 100644
--- a/offload/liboffload/API/Memory.td
+++ b/offload/liboffload/API/Memory.td
@@ -131,3 +131,27 @@ def olMemFill : Function {
Return<"OL_ERRC_INVALID_SIZE", ["`FillSize % PatternSize != 0`"]>
];
}
+
+def olMemDataLock : Function {
+ let desc = "Locks / pins host memory using the plugin runtime.";
+ let params = [
+ Param<"ol_device_handle_t", "Device", "handle of the device to allocate on", PARAM_IN>,
+ Param<"void *", "Ptr", "Host Pointer", PARAM_IN>,
+ Param<"size_t", "Size", "size of the allocation in bytes", PARAM_IN>,
+ Param<"void**", "LockedPtr", "output for the allocated pointer", PARAM_OUT>
+ ];
+ let returns = [
+ Return<"OL_ERRC_INVALID_SIZE", [
+ "`Size == 0`"
+ ]>
+ ];
+}
+
+def olMemDataUnLock : Function {
+ let desc = "Unlocks / unpins host memory using the plugin runtime.";
+ let params = [
+ Param<"ol_device_handle_t", "Device", "handle of the device to allocate on", PARAM_IN>,
+ Param<"void *", "Ptr", "Host Pointer", PARAM_IN>
+ ];
+ let returns = [];
+}
diff --git a/offload/liboffload/src/OffloadImpl.cpp b/offload/liboffload/src/OffloadImpl.cpp
index eab9627217ca8..f17a2e7c5a7e8 100644
--- a/offload/liboffload/src/OffloadImpl.cpp
+++ b/offload/liboffload/src/OffloadImpl.cpp
@@ -1214,5 +1214,20 @@ Error olLaunchHostFunction_impl(ol_queue_handle_t Queue,
Queue->AsyncInfo);
}
+Error olMemDataLock_impl(ol_device_handle_t Device, void *Ptr, size_t Size,
+ void** LockedPtr) {
+ Expected<void*> LockedPtrOrErr = Device->Device->dataLock(Ptr, Size);
+ if (!LockedPtrOrErr)
+ return LockedPtrOrErr.takeError();
+
+ *LockedPtr = *LockedPtrOrErr;
+
+ return Error::success();
+}
+
+Error olMemDataUnLock_impl(ol_device_handle_t Device, void *Ptr) {
+ return Device->Device->dataUnlock(Ptr);
+}
+
} // namespace offload
} // namespace llvm
More information about the llvm-commits
mailing list