[PATCH v4 1/2] kho: add KHOSER_COPY_TYPE(UN)SAFE for phys copy

From: Tarun Sahu

Date: Mon Jun 22 2026 - 18:57:47 EST


Adding KHOSER_COPY_TYPESAFE and KHOSER_COPY_TYPEUNSAFE to copy one
serializeable pointer to another. It basically allows copy of phys val
of the serializeable pointer.

Signed-off-by: Tarun Sahu <tarunsahu@xxxxxxxxxx>
---
include/linux/kho/abi/kexec_handover.h | 11 +++++++++++
1 file changed, 11 insertions(+)

diff --git a/include/linux/kho/abi/kexec_handover.h b/include/linux/kho/abi/kexec_handover.h
index 5e2eb8519bda..c1b61d875dcc 100644
--- a/include/linux/kho/abi/kexec_handover.h
+++ b/include/linux/kho/abi/kexec_handover.h
@@ -139,6 +139,17 @@
(typeof((s).ptr))((s).phys ? phys_to_virt((s).phys) : NULL); \
})

+/* Copies one serializable pointer to another. */
+#define KHOSER_COPY_PTR(dest, src) \
+ ({ \
+ static_assert( \
+ __builtin_types_compatible_p(typeof((dest).ptr), typeof((src).ptr)) || \
+ __builtin_types_compatible_p(typeof((dest).ptr), void *) || \
+ __builtin_types_compatible_p(typeof((src).ptr), void *), \
+ "pointer type mismatch in KHOSER_COPY_PTR" \
+ ); \
+ (dest).phys = (src).phys; \
+ })
/*
* This header is embedded at the beginning of each `kho_vmalloc_chunk`
* and contains a pointer to the next chunk in the linked list,
--
2.55.0.rc0.786.g65d90a0328-goog