Message ID | 20210510135148.1904-5-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: uv: Extend guest test and add host test | expand |
On Mon, 10 May 2021 13:51:46 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > Testing for facility only means the UV Call facility is available. > The UV will only indicate the share/unshare calls for a protected > guest 2, so let's also check that. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > --- > lib/s390x/malloc_io.c | 5 +++-- > s390x/uv-guest.c | 6 ++++++ > 2 files changed, 9 insertions(+), 2 deletions(-) Reviewed-by: Cornelia Huck <cohuck@redhat.com>
diff --git a/lib/s390x/malloc_io.c b/lib/s390x/malloc_io.c index 1dcf1691..78582eac 100644 --- a/lib/s390x/malloc_io.c +++ b/lib/s390x/malloc_io.c @@ -19,6 +19,7 @@ #include <alloc_page.h> #include <asm/facility.h> #include <bitops.h> +#include <uv.h> static int share_pages(void *p, int count) { @@ -47,7 +48,7 @@ void *alloc_io_mem(int size, int flags) assert(size); p = alloc_pages_flags(order, AREA_DMA31 | flags); - if (!p || !test_facility(158)) + if (!p || !uv_os_is_guest()) return p; n = share_pages(p, 1 << order); @@ -65,7 +66,7 @@ void free_io_mem(void *p, int size) assert(IS_ALIGNED((uintptr_t)p, PAGE_SIZE)); - if (test_facility(158)) + if (uv_os_is_guest()) unshare_pages(p, 1 << order); free_pages(p); } diff --git a/s390x/uv-guest.c b/s390x/uv-guest.c index 393d7f5c..e99029a7 100644 --- a/s390x/uv-guest.c +++ b/s390x/uv-guest.c @@ -16,6 +16,7 @@ #include <asm/facility.h> #include <asm/uv.h> #include <sclp.h> +#include <uv.h> static unsigned long page; @@ -142,6 +143,11 @@ int main(void) goto done; } + if (!uv_os_is_guest()) { + report_skip("Not a protected guest"); + goto done; + } + page = (unsigned long)alloc_page(); test_priv(); test_invalid();