From: Jan Beulich Date: Thu, 24 Jun 2021 14:39:02 +0000 (+0200) Subject: libxencall: introduce variant of xencall2() returning long X-Git-Tag: archive/raspbian/4.16.0+51-g0941d6cb-1+rpi1~2^2~42^2~393 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=bef64f2c0019f828824a67f918604fe40768b1de;p=xen.git libxencall: introduce variant of xencall2() returning long Some hypercalls, memory-op in particular, can return values requiring more than 31 bits to represent. Hence the underlying layers need to make sure they won't truncate such values. Signed-off-by: Jan Beulich Acked-by: Ian Jackson Acked-by: Andrew Cooper --- diff --git a/tools/include/xencall.h b/tools/include/xencall.h index 2d0c42ad5e..fc95ed0fe5 100644 --- a/tools/include/xencall.h +++ b/tools/include/xencall.h @@ -113,6 +113,10 @@ int xencall5(xencall_handle *xcall, unsigned int op, uint64_t arg1, uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5); +/* Variant(s) of the above, as needed, returning "long" instead of "int". */ +long xencall2L(xencall_handle *xcall, unsigned int op, + uint64_t arg1, uint64_t arg2); + /* * Allocate and free memory which is suitable for use as a pointer * argument to a hypercall. diff --git a/tools/libs/call/core.c b/tools/libs/call/core.c index 57d3a33e6b..02c4f8e1ae 100644 --- a/tools/libs/call/core.c +++ b/tools/libs/call/core.c @@ -127,6 +127,17 @@ int xencall2(xencall_handle *xcall, unsigned int op, return osdep_hypercall(xcall, &call); } +long xencall2L(xencall_handle *xcall, unsigned int op, + uint64_t arg1, uint64_t arg2) +{ + privcmd_hypercall_t call = { + .op = op, + .arg = { arg1, arg2 }, + }; + + return osdep_hypercall(xcall, &call); +} + int xencall3(xencall_handle *xcall, unsigned int op, uint64_t arg1, uint64_t arg2, uint64_t arg3) { diff --git a/tools/libs/call/libxencall.map b/tools/libs/call/libxencall.map index 6922b96511..ad7518b0e0 100644 --- a/tools/libs/call/libxencall.map +++ b/tools/libs/call/libxencall.map @@ -27,3 +27,8 @@ VERS_1.2 { global: xencall_fd; } VERS_1.1; + +VERS_1.3 { + global: + xencall2L; +} VERS_1.2;