On 2020-09-28 10:22, Janosch Frank wrote:
On 9/25/20 6:02 PM, Pierre Morel wrote:
When communicating with the host we need to share part of
the memory.
Let's implement the ultravisor calls for this.
Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx>
Suggested-by: Janosch Frank <frankja@xxxxxxxxxxxxx>
---
lib/s390x/asm/uv.h | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/lib/s390x/asm/uv.h b/lib/s390x/asm/uv.h
index 4c2fc48..19019e4 100644
--- a/lib/s390x/asm/uv.h
+++ b/lib/s390x/asm/uv.h
@@ -71,4 +71,37 @@ static inline int uv_call(unsigned long r1, unsigned long r2)
return cc;
}
+static inline int share(unsigned long addr, u16 cmd)
+{
+ struct uv_cb_share uvcb = {
+ .header.cmd = cmd,
+ .header.len = sizeof(uvcb),
+ .paddr = addr
+ };
+
+ uv_call(0, (u64)&uvcb);
+ return uvcb.header.rc;
That's not a great idea, rc is > 1 for error codes...
In the kernel we check for the cc instead since uv_call() has only 0/1
as possible cc return values.
hum, Yes.
I will add some report too here in case of error.
--
Pierre Morel
IBM Lab Boeblingen