lib: s390: fix guest length in uv_create_guest()
The current code creates secure guests with significantly more memory
than expected, but since none of that memory is ever touched,
everything still works.
Fix the issue by specifying the actual guest length.
The MSL does not contain the length of the guest, but the address of
the last 1M block of guest memory. In order to get the length, MSO
needs to be subtracted, and 1M needs to be added.
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Nico Boehr <nrb@linux.ibm.com>
Link: https://lore.kernel.org/r/20240418110140.62406-1-imbrenda@linux.ibm.com
Signed-off-by: Nico Boehr <nrb@linux.ibm.com>
diff --git a/lib/s390x/uv.c b/lib/s390x/uv.c
index 23a8617..723bb4f 100644
--- a/lib/s390x/uv.c
+++ b/lib/s390x/uv.c
@@ -146,7 +146,7 @@
int cc;
uvcb_cgc.guest_stor_origin = vm->sblk->mso;
- uvcb_cgc.guest_stor_len = vm->sblk->msl;
+ uvcb_cgc.guest_stor_len = vm->sblk->msl - vm->sblk->mso + SZ_1M;
/* Config allocation */
vsize = uvcb_qui.conf_base_virt_stor_len +