On 5/2/22 11:39, Steffen Eiden wrote:
The UV facility bits shared/unshared must both be set or none.
Signed-off-by: Steffen Eiden <seiden@xxxxxxxxxxxxx>
---
Reviewed-by: Janosch Frank <frankja@xxxxxxxxxxxxx>
s390x/uv-guest.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/s390x/uv-guest.c b/s390x/uv-guest.c
index fd2cfef1..152ad807 100644
--- a/s390x/uv-guest.c
+++ b/s390x/uv-guest.c
@@ -157,6 +157,16 @@ static void test_invalid(void)
report_prefix_pop();
}
+static void test_share_bits(void)
+{
+ bool unshare = uv_query_test_call(BIT_UVC_CMD_REMOVE_SHARED_ACCESS);
+ bool share = uv_query_test_call(BIT_UVC_CMD_SET_SHARED_ACCESS);
+
+ report_prefix_push("query");
+ report(!(share ^ unshare), "share bits are identical");
+ report_prefix_pop();
+}
+
int main(void)
{
bool has_uvc = test_facility(158);
@@ -167,6 +177,12 @@ int main(void)
goto done;
}
+ /*
+ * Needs to be done before the guest-fence,
+ * as the fence tests if both shared bits are present
+ */
+ test_share_bits();
+
if (!uv_os_is_guest()) {
report_skip("Not a protected guest");
goto done;