xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
* [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource
@ 2021-02-02 19:09 Andrew Cooper
  2021-02-04 11:48 ` Ian Jackson
  2021-02-04 13:29 ` Oleksandr Tyshchenko
  0 siblings, 2 replies; 7+ messages in thread
From: Andrew Cooper @ 2021-02-02 19:09 UTC (permalink / raw)
  To: Xen-devel
  Cc: Andrew Cooper, Ian Jackson, Wei Liu, Jan Beulich,
	Roger Pau Monné,
	Stefano Stabellini, Julien Grall, Volodymyr Babchuk, Oleksandr

For now, simply try to map 40 frames of grant table.  This catches most of the
basic errors with resource sizes found and fixed through the 4.15 dev window.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
---
CC: Ian Jackson <iwj@xenproject.org>
CC: Wei Liu <wl@xen.org>
CC: Jan Beulich <JBeulich@suse.com>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Wei Liu <wl@xen.org>
CC: Stefano Stabellini <sstabellini@kernel.org>
CC: Julien Grall <julien@xen.org>
CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
CC: Oleksandr <olekstysh@gmail.com>

Fails against current staging:

  XENMEM_acquire_resource tests
  Test x86 PV
    d7: grant table
      Fail: Map 7 - Argument list too long
  Test x86 PVH
    d8: grant table
      Fail: Map 7 - Argument list too long

The fix has already been posted:
  [PATCH v9 01/11] xen/memory: Fix mapping grant tables with XENMEM_acquire_resource

and the fixed run is:

  XENMEM_acquire_resource tests
  Test x86 PV
    d7: grant table
  Test x86 PVH
    d8: grant table

ARM folk: would you mind testing this?  I'm pretty sure the create parameters
are suitable, but I don't have any way to test this.

I've got more plans for this, but insufficient time right now.
---
 tools/tests/Makefile                 |   1 +
 tools/tests/resource/.gitignore      |   1 +
 tools/tests/resource/Makefile        |  40 ++++++++++
 tools/tests/resource/test-resource.c | 138 +++++++++++++++++++++++++++++++++++
 4 files changed, 180 insertions(+)
 create mode 100644 tools/tests/resource/.gitignore
 create mode 100644 tools/tests/resource/Makefile
 create mode 100644 tools/tests/resource/test-resource.c

diff --git a/tools/tests/Makefile b/tools/tests/Makefile
index fc9b715951..c45b5fbc1d 100644
--- a/tools/tests/Makefile
+++ b/tools/tests/Makefile
@@ -2,6 +2,7 @@ XEN_ROOT = $(CURDIR)/../..
 include $(XEN_ROOT)/tools/Rules.mk
 
 SUBDIRS-y :=
+SUBDIRS-y := resource
 SUBDIRS-$(CONFIG_X86) += cpu-policy
 SUBDIRS-$(CONFIG_X86) += mce-test
 ifneq ($(clang),y)
diff --git a/tools/tests/resource/.gitignore b/tools/tests/resource/.gitignore
new file mode 100644
index 0000000000..4872e97d4b
--- /dev/null
+++ b/tools/tests/resource/.gitignore
@@ -0,0 +1 @@
+test-resource
diff --git a/tools/tests/resource/Makefile b/tools/tests/resource/Makefile
new file mode 100644
index 0000000000..8a3373e786
--- /dev/null
+++ b/tools/tests/resource/Makefile
@@ -0,0 +1,40 @@
+XEN_ROOT = $(CURDIR)/../../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+TARGET := test-resource
+
+.PHONY: all
+all: $(TARGET)
+
+.PHONY: run
+run: $(TARGET)
+	./$(TARGET)
+
+.PHONY: clean
+clean:
+	$(RM) -f -- *.o .*.d .*.d2 $(TARGET)
+
+.PHONY: distclean
+distclean: clean
+	$(RM) -f -- *~
+
+.PHONY: install
+install: all
+
+.PHONY: uninstall
+uninstall:
+
+CFLAGS += -Werror -D__XEN_TOOLS__
+CFLAGS += $(CFLAGS_xeninclude)
+CFLAGS += $(CFLAGS_libxenctrl)
+CFLAGS += $(CFLAGS_libxenforeginmemory)
+CFLAGS += $(APPEND_CFLAGS)
+
+LDFLAGS += $(LDLIBS_libxenctrl)
+LDFLAGS += $(LDLIBS_libxenforeignmemory)
+LDFLAGS += $(APPEND_LDFLAGS)
+
+test-resource: test-resource.o
+	$(CC) $(LDFLAGS) -o $@ $<
+
+-include $(DEPS_INCLUDE)
diff --git a/tools/tests/resource/test-resource.c b/tools/tests/resource/test-resource.c
new file mode 100644
index 0000000000..81a2a5cd12
--- /dev/null
+++ b/tools/tests/resource/test-resource.c
@@ -0,0 +1,138 @@
+#include <err.h>
+#include <errno.h>
+#include <error.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/mman.h>
+
+#include <xenctrl.h>
+#include <xenforeignmemory.h>
+#include <xendevicemodel.h>
+#include <xen-tools/libs.h>
+
+static unsigned int nr_failures;
+#define fail(fmt, ...)                          \
+({                                              \
+    nr_failures++;                              \
+    (void)printf(fmt, ##__VA_ARGS__);           \
+})
+
+static xc_interface *xch;
+static xenforeignmemory_handle *fh;
+static xendevicemodel_handle *dh;
+
+static void test_gnttab(uint32_t domid, unsigned int nr_frames)
+{
+    xenforeignmemory_resource_handle *res;
+    void *addr = NULL;
+    size_t size;
+    int rc;
+
+    printf("  d%u: grant table\n", domid);
+
+    rc = xenforeignmemory_resource_size(
+        fh, domid, XENMEM_resource_grant_table,
+        XENMEM_resource_grant_table_id_shared, &size);
+    if ( rc )
+        return fail("    Fail: Get size: %d - %s\n", errno, strerror(errno));
+
+    if ( (size >> XC_PAGE_SHIFT) != nr_frames )
+        return fail("    Fail: Get size: expected %u frames, got %zu\n",
+                    nr_frames, size >> XC_PAGE_SHIFT);
+
+    res = xenforeignmemory_map_resource(
+        fh, domid, XENMEM_resource_grant_table,
+        XENMEM_resource_grant_table_id_shared, 0, size >> XC_PAGE_SHIFT,
+        &addr, PROT_READ | PROT_WRITE, 0);
+    if ( !res )
+        return fail("    Fail: Map %d - %s\n", errno, strerror(errno));
+
+    rc = xenforeignmemory_unmap_resource(fh, res);
+    if ( rc )
+        return fail("    Fail: Unmap %d - %s\n", errno, strerror(errno));
+}
+
+static void test_domain_configurations(void)
+{
+    static struct test {
+        const char *name;
+        struct xen_domctl_createdomain create;
+    } tests[] = {
+#if defined(__x86_64__) || defined(__i386__)
+        {
+            .name = "x86 PV",
+            .create = {
+                .max_vcpus = 2,
+                .max_grant_frames = 40,
+            },
+        },
+        {
+            .name = "x86 PVH",
+            .create = {
+                .flags = XEN_DOMCTL_CDF_hvm,
+                .max_vcpus = 2,
+                .max_grant_frames = 40,
+                .arch = {
+                    .emulation_flags = XEN_X86_EMU_LAPIC,
+                },
+            },
+        },
+#elif defined(__aarch64__) || defined(__arm__)
+        {
+            .name = "ARM",
+            .create = {
+                .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
+                .max_vcpus = 2,
+                .max_grant_frames = 40,
+            },
+        },
+#endif
+    };
+
+    for ( unsigned int i = 0; i < ARRAY_SIZE(tests); ++i )
+    {
+        struct test *t = &tests[i];
+        uint32_t domid = 0;
+        int rc;
+
+        printf("Test %s\n", t->name);
+
+        rc = xc_domain_create(xch, &domid, &t->create);
+        if ( rc )
+        {
+            if ( errno == EINVAL || errno == EOPNOTSUPP )
+                printf("  Skip: %d - %s\n", errno, strerror(errno));
+            else
+                fail("  Domain create failure: %d - %s\n",
+                     errno, strerror(errno));
+            continue;
+        }
+
+        test_gnttab(domid, t->create.max_grant_frames);
+
+        rc = xc_domain_destroy(xch, domid);
+        if ( rc )
+            fail("  Failed to destroy domain: %d - %s\n",
+                 errno, strerror(errno));
+    }
+}
+
+int main(int argc, char **argv)
+{
+    printf("XENMEM_acquire_resource tests\n");
+
+    xch = xc_interface_open(NULL, NULL, 0);
+    fh = xenforeignmemory_open(NULL, 0);
+    dh = xendevicemodel_open(NULL, 0);
+
+    if ( !xch )
+        err(1, "xc_interface_open");
+    if ( !fh )
+        err(1, "xenforeignmemory_open");
+    if ( !dh )
+        err(1, "xendevicemodel_open");
+
+    test_domain_configurations();
+
+    return !!nr_failures;
+}
-- 
2.11.0



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource
  2021-02-02 19:09 [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource Andrew Cooper
@ 2021-02-04 11:48 ` Ian Jackson
  2021-02-04 13:29 ` Oleksandr Tyshchenko
  1 sibling, 0 replies; 7+ messages in thread
From: Ian Jackson @ 2021-02-04 11:48 UTC (permalink / raw)
  To: Andrew Cooper
  Cc: Xen-devel, Wei Liu, Jan Beulich, Roger Pau Monné,
	Stefano  Stabellini, Julien Grall, Volodymyr Babchuk, Oleksandr

Andrew Cooper writes ("[PATCH for-4.15] tools/tests: Introduce a test for acquire_resource"):
> For now, simply try to map 40 frames of grant table.  This catches most of the
> basic errors with resource sizes found and fixed through the 4.15 dev window.

FTAOD

Release-Acked-by: Ian Jackson <iwj@xenproject.org>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource
  2021-02-02 19:09 [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource Andrew Cooper
  2021-02-04 11:48 ` Ian Jackson
@ 2021-02-04 13:29 ` Oleksandr Tyshchenko
  2021-02-04 15:38   ` Oleksandr
  1 sibling, 1 reply; 7+ messages in thread
From: Oleksandr Tyshchenko @ 2021-02-04 13:29 UTC (permalink / raw)
  To: Andrew Cooper
  Cc: Xen-devel, Ian Jackson, Wei Liu, Jan Beulich,
	Roger Pau Monné,
	Stefano Stabellini, Julien Grall, Volodymyr Babchuk

[-- Attachment #1: Type: text/plain, Size: 8391 bytes --]

Hi Andrew.
[Sorry for the possible format issues]

On Tue, Feb 2, 2021 at 9:10 PM Andrew Cooper <andrew.cooper3@citrix.com>
wrote:

> For now, simply try to map 40 frames of grant table.  This catches most of
> the
> basic errors with resource sizes found and fixed through the 4.15 dev
> window.
>
> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
> ---
> CC: Ian Jackson <iwj@xenproject.org>
> CC: Wei Liu <wl@xen.org>
> CC: Jan Beulich <JBeulich@suse.com>
> CC: Roger Pau Monné <roger.pau@citrix.com>
> CC: Wei Liu <wl@xen.org>
> CC: Stefano Stabellini <sstabellini@kernel.org>
> CC: Julien Grall <julien@xen.org>
> CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
> CC: Oleksandr <olekstysh@gmail.com>
>
> Fails against current staging:
>
>   XENMEM_acquire_resource tests
>   Test x86 PV
>     d7: grant table
>       Fail: Map 7 - Argument list too long
>   Test x86 PVH
>     d8: grant table
>       Fail: Map 7 - Argument list too long
>
> The fix has already been posted:
>   [PATCH v9 01/11] xen/memory: Fix mapping grant tables with
> XENMEM_acquire_resource
>
> and the fixed run is:
>
>   XENMEM_acquire_resource tests
>   Test x86 PV
>     d7: grant table
>   Test x86 PVH
>     d8: grant table
>
> ARM folk: would you mind testing this?  I'm pretty sure the create
> parameters
> are suitable, but I don't have any way to test this.
>
Yes, as it was agreed on IRC, I will test this today's evening and inform
about the results)



>
> I've got more plans for this, but insufficient time right now.
> ---
>  tools/tests/Makefile                 |   1 +
>  tools/tests/resource/.gitignore      |   1 +
>  tools/tests/resource/Makefile        |  40 ++++++++++
>  tools/tests/resource/test-resource.c | 138
> +++++++++++++++++++++++++++++++++++
>  4 files changed, 180 insertions(+)
>  create mode 100644 tools/tests/resource/.gitignore
>  create mode 100644 tools/tests/resource/Makefile
>  create mode 100644 tools/tests/resource/test-resource.c
>
> diff --git a/tools/tests/Makefile b/tools/tests/Makefile
> index fc9b715951..c45b5fbc1d 100644
> --- a/tools/tests/Makefile
> +++ b/tools/tests/Makefile
> @@ -2,6 +2,7 @@ XEN_ROOT = $(CURDIR)/../..
>  include $(XEN_ROOT)/tools/Rules.mk
>
>  SUBDIRS-y :=
> +SUBDIRS-y := resource
>  SUBDIRS-$(CONFIG_X86) += cpu-policy
>  SUBDIRS-$(CONFIG_X86) += mce-test
>  ifneq ($(clang),y)
> diff --git a/tools/tests/resource/.gitignore
> b/tools/tests/resource/.gitignore
> new file mode 100644
> index 0000000000..4872e97d4b
> --- /dev/null
> +++ b/tools/tests/resource/.gitignore
> @@ -0,0 +1 @@
> +test-resource
> diff --git a/tools/tests/resource/Makefile b/tools/tests/resource/Makefile
> new file mode 100644
> index 0000000000..8a3373e786
> --- /dev/null
> +++ b/tools/tests/resource/Makefile
> @@ -0,0 +1,40 @@
> +XEN_ROOT = $(CURDIR)/../../..
> +include $(XEN_ROOT)/tools/Rules.mk
> +
> +TARGET := test-resource
> +
> +.PHONY: all
> +all: $(TARGET)
> +
> +.PHONY: run
> +run: $(TARGET)
> +       ./$(TARGET)
> +
> +.PHONY: clean
> +clean:
> +       $(RM) -f -- *.o .*.d .*.d2 $(TARGET)
> +
> +.PHONY: distclean
> +distclean: clean
> +       $(RM) -f -- *~
> +
> +.PHONY: install
> +install: all
> +
> +.PHONY: uninstall
> +uninstall:
> +
> +CFLAGS += -Werror -D__XEN_TOOLS__
> +CFLAGS += $(CFLAGS_xeninclude)
> +CFLAGS += $(CFLAGS_libxenctrl)
> +CFLAGS += $(CFLAGS_libxenforeginmemory)
> +CFLAGS += $(APPEND_CFLAGS)
> +
> +LDFLAGS += $(LDLIBS_libxenctrl)
> +LDFLAGS += $(LDLIBS_libxenforeignmemory)
> +LDFLAGS += $(APPEND_LDFLAGS)
> +
> +test-resource: test-resource.o
> +       $(CC) $(LDFLAGS) -o $@ $<
> +
> +-include $(DEPS_INCLUDE)
> diff --git a/tools/tests/resource/test-resource.c
> b/tools/tests/resource/test-resource.c
> new file mode 100644
> index 0000000000..81a2a5cd12
> --- /dev/null
> +++ b/tools/tests/resource/test-resource.c
> @@ -0,0 +1,138 @@
> +#include <err.h>
> +#include <errno.h>
> +#include <error.h>
> +#include <stdio.h>
> +#include <string.h>
> +#include <sys/mman.h>
> +
> +#include <xenctrl.h>
> +#include <xenforeignmemory.h>
> +#include <xendevicemodel.h>
> +#include <xen-tools/libs.h>
> +
> +static unsigned int nr_failures;
> +#define fail(fmt, ...)                          \
> +({                                              \
> +    nr_failures++;                              \
> +    (void)printf(fmt, ##__VA_ARGS__);           \
> +})
> +
> +static xc_interface *xch;
> +static xenforeignmemory_handle *fh;
> +static xendevicemodel_handle *dh;
> +
> +static void test_gnttab(uint32_t domid, unsigned int nr_frames)
> +{
> +    xenforeignmemory_resource_handle *res;
> +    void *addr = NULL;
> +    size_t size;
> +    int rc;
> +
> +    printf("  d%u: grant table\n", domid);
> +
> +    rc = xenforeignmemory_resource_size(
> +        fh, domid, XENMEM_resource_grant_table,
> +        XENMEM_resource_grant_table_id_shared, &size);
> +    if ( rc )
> +        return fail("    Fail: Get size: %d - %s\n", errno,
> strerror(errno));
> +
> +    if ( (size >> XC_PAGE_SHIFT) != nr_frames )
> +        return fail("    Fail: Get size: expected %u frames, got %zu\n",
> +                    nr_frames, size >> XC_PAGE_SHIFT);
> +
> +    res = xenforeignmemory_map_resource(
> +        fh, domid, XENMEM_resource_grant_table,
> +        XENMEM_resource_grant_table_id_shared, 0, size >> XC_PAGE_SHIFT,
> +        &addr, PROT_READ | PROT_WRITE, 0);
> +    if ( !res )
> +        return fail("    Fail: Map %d - %s\n", errno, strerror(errno));
> +
> +    rc = xenforeignmemory_unmap_resource(fh, res);
> +    if ( rc )
> +        return fail("    Fail: Unmap %d - %s\n", errno, strerror(errno));
> +}
> +
> +static void test_domain_configurations(void)
> +{
> +    static struct test {
> +        const char *name;
> +        struct xen_domctl_createdomain create;
> +    } tests[] = {
> +#if defined(__x86_64__) || defined(__i386__)
> +        {
> +            .name = "x86 PV",
> +            .create = {
> +                .max_vcpus = 2,
> +                .max_grant_frames = 40,
> +            },
> +        },
> +        {
> +            .name = "x86 PVH",
> +            .create = {
> +                .flags = XEN_DOMCTL_CDF_hvm,
> +                .max_vcpus = 2,
> +                .max_grant_frames = 40,
> +                .arch = {
> +                    .emulation_flags = XEN_X86_EMU_LAPIC,
> +                },
> +            },
> +        },
> +#elif defined(__aarch64__) || defined(__arm__)
> +        {
> +            .name = "ARM",
> +            .create = {
> +                .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
> +                .max_vcpus = 2,
> +                .max_grant_frames = 40,
> +            },
> +        },
> +#endif
> +    };
> +
> +    for ( unsigned int i = 0; i < ARRAY_SIZE(tests); ++i )
> +    {
> +        struct test *t = &tests[i];
> +        uint32_t domid = 0;
> +        int rc;
> +
> +        printf("Test %s\n", t->name);
> +
> +        rc = xc_domain_create(xch, &domid, &t->create);
> +        if ( rc )
> +        {
> +            if ( errno == EINVAL || errno == EOPNOTSUPP )
> +                printf("  Skip: %d - %s\n", errno, strerror(errno));
> +            else
> +                fail("  Domain create failure: %d - %s\n",
> +                     errno, strerror(errno));
> +            continue;
> +        }
> +
> +        test_gnttab(domid, t->create.max_grant_frames);
> +
> +        rc = xc_domain_destroy(xch, domid);
> +        if ( rc )
> +            fail("  Failed to destroy domain: %d - %s\n",
> +                 errno, strerror(errno));
> +    }
> +}
> +
> +int main(int argc, char **argv)
> +{
> +    printf("XENMEM_acquire_resource tests\n");
> +
> +    xch = xc_interface_open(NULL, NULL, 0);
> +    fh = xenforeignmemory_open(NULL, 0);
> +    dh = xendevicemodel_open(NULL, 0);
> +
> +    if ( !xch )
> +        err(1, "xc_interface_open");
> +    if ( !fh )
> +        err(1, "xenforeignmemory_open");
> +    if ( !dh )
> +        err(1, "xendevicemodel_open");
> +
> +    test_domain_configurations();
> +
> +    return !!nr_failures;
> +}
> --
> 2.11.0
>
>

-- 
Regards,

Oleksandr Tyshchenko

[-- Attachment #2: Type: text/html, Size: 11270 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource
  2021-02-04 13:29 ` Oleksandr Tyshchenko
@ 2021-02-04 15:38   ` Oleksandr
  2021-02-04 15:44     ` Andrew Cooper
  0 siblings, 1 reply; 7+ messages in thread
From: Oleksandr @ 2021-02-04 15:38 UTC (permalink / raw)
  To: Andrew Cooper
  Cc: Xen-devel, Ian Jackson, Wei Liu, Jan Beulich,
	Roger Pau Monné,
	Stefano Stabellini, Julien Grall, Volodymyr Babchuk

[-- Attachment #1: Type: text/plain, Size: 12248 bytes --]


On 04.02.21 15:29, Oleksandr Tyshchenko wrote:

Hi Andrew

>
> Hi Andrew.
> [Sorry for the possible format issues]
>
> On Tue, Feb 2, 2021 at 9:10 PM Andrew Cooper 
> <andrew.cooper3@citrix.com <mailto:andrew.cooper3@citrix.com>> wrote:
>
>     For now, simply try to map 40 frames of grant table.  This catches
>     most of the
>     basic errors with resource sizes found and fixed through the 4.15
>     dev window.
>
>     Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com
>     <mailto:andrew.cooper3@citrix.com>>
>     ---
>     CC: Ian Jackson <iwj@xenproject.org <mailto:iwj@xenproject.org>>
>     CC: Wei Liu <wl@xen.org <mailto:wl@xen.org>>
>     CC: Jan Beulich <JBeulich@suse.com <mailto:JBeulich@suse.com>>
>     CC: Roger Pau Monné <roger.pau@citrix.com
>     <mailto:roger.pau@citrix.com>>
>     CC: Wei Liu <wl@xen.org <mailto:wl@xen.org>>
>     CC: Stefano Stabellini <sstabellini@kernel.org
>     <mailto:sstabellini@kernel.org>>
>     CC: Julien Grall <julien@xen.org <mailto:julien@xen.org>>
>     CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com
>     <mailto:Volodymyr_Babchuk@epam.com>>
>     CC: Oleksandr <olekstysh@gmail.com <mailto:olekstysh@gmail.com>>
>
>     Fails against current staging:
>
>       XENMEM_acquire_resource tests
>       Test x86 PV
>         d7: grant table
>           Fail: Map 7 - Argument list too long
>       Test x86 PVH
>         d8: grant table
>           Fail: Map 7 - Argument list too long
>
>     The fix has already been posted:
>       [PATCH v9 01/11] xen/memory: Fix mapping grant tables with
>     XENMEM_acquire_resource
>
>     and the fixed run is:
>
>       XENMEM_acquire_resource tests
>       Test x86 PV
>         d7: grant table
>       Test x86 PVH
>         d8: grant table
>
>     ARM folk: would you mind testing this?  I'm pretty sure the create
>     parameters
>     are suitable, but I don't have any way to test this.
>
> Yes, as it was agreed on IRC, I will test this today's evening and 
> inform about the results)


OK, well, I decided to test right away because going to be busy in the 
evening)

I am based on:
9dc687f x86/debug: fix page-overflow bug in dbg_rw_guest_mem

I noticed the error during building this test in my Yocto environment on 
Arm:


/media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: 
test-resource.o: undefined reference to symbol 
'xendevicemodel_open@@VERS_1.0'
/media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: 
/media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/git/tools/tests/resource/../../../tools/libs/devicemodel/libxendevicemodel.so.1: 
error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:38: recipe for target 'test-resource' failed


I didn't investigate whether it is related or not. I just added as 
following:

diff --git a/tools/tests/resource/Makefile b/tools/tests/resource/Makefile
index 8a3373e..03b19ef 100644
--- a/tools/tests/resource/Makefile
+++ b/tools/tests/resource/Makefile
@@ -32,6 +32,7 @@ CFLAGS += $(APPEND_CFLAGS)

  LDFLAGS += $(LDLIBS_libxenctrl)
  LDFLAGS += $(LDLIBS_libxenforeignmemory)
+LDFLAGS += $(LDLIBS_libxendevicemodel)
  LDFLAGS += $(APPEND_LDFLAGS)

  test-resource: test-resource.o


I got the following result without and with "[PATCH v9 01/11] 
xen/memory: Fix mapping grant tables with XENMEM_acquire_resource"

root@generic-armv8-xt-dom0:~# test-resource
XENMEM_acquire_resource tests
Test ARM
   d3: grant table
xenforeignmemory: error: ioctl failed: Invalid argument
     Fail: Get size: 22 - Invalid argument


>
>
>     I've got more plans for this, but insufficient time right now.
>     ---
>      tools/tests/Makefile                 |   1 +
>      tools/tests/resource/.gitignore      |   1 +
>      tools/tests/resource/Makefile        |  40 ++++++++++
>      tools/tests/resource/test-resource.c | 138
>     +++++++++++++++++++++++++++++++++++
>      4 files changed, 180 insertions(+)
>      create mode 100644 tools/tests/resource/.gitignore
>      create mode 100644 tools/tests/resource/Makefile
>      create mode 100644 tools/tests/resource/test-resource.c
>
>     diff --git a/tools/tests/Makefile b/tools/tests/Makefile
>     index fc9b715951..c45b5fbc1d 100644
>     --- a/tools/tests/Makefile
>     +++ b/tools/tests/Makefile
>     @@ -2,6 +2,7 @@ XEN_ROOT = $(CURDIR)/../..
>      include $(XEN_ROOT)/tools/Rules.mk
>
>      SUBDIRS-y :=
>     +SUBDIRS-y := resource
>      SUBDIRS-$(CONFIG_X86) += cpu-policy
>      SUBDIRS-$(CONFIG_X86) += mce-test
>      ifneq ($(clang),y)
>     diff --git a/tools/tests/resource/.gitignore
>     b/tools/tests/resource/.gitignore
>     new file mode 100644
>     index 0000000000..4872e97d4b
>     --- /dev/null
>     +++ b/tools/tests/resource/.gitignore
>     @@ -0,0 +1 @@
>     +test-resource
>     diff --git a/tools/tests/resource/Makefile
>     b/tools/tests/resource/Makefile
>     new file mode 100644
>     index 0000000000..8a3373e786
>     --- /dev/null
>     +++ b/tools/tests/resource/Makefile
>     @@ -0,0 +1,40 @@
>     +XEN_ROOT = $(CURDIR)/../../..
>     +include $(XEN_ROOT)/tools/Rules.mk
>     +
>     +TARGET := test-resource
>     +
>     +.PHONY: all
>     +all: $(TARGET)
>     +
>     +.PHONY: run
>     +run: $(TARGET)
>     +       ./$(TARGET)
>     +
>     +.PHONY: clean
>     +clean:
>     +       $(RM) -f -- *.o .*.d .*.d2 $(TARGET)
>     +
>     +.PHONY: distclean
>     +distclean: clean
>     +       $(RM) -f -- *~
>     +
>     +.PHONY: install
>     +install: all
>     +
>     +.PHONY: uninstall
>     +uninstall:
>     +
>     +CFLAGS += -Werror -D__XEN_TOOLS__
>     +CFLAGS += $(CFLAGS_xeninclude)
>     +CFLAGS += $(CFLAGS_libxenctrl)
>     +CFLAGS += $(CFLAGS_libxenforeginmemory)
>     +CFLAGS += $(APPEND_CFLAGS)
>     +
>     +LDFLAGS += $(LDLIBS_libxenctrl)
>     +LDFLAGS += $(LDLIBS_libxenforeignmemory)
>     +LDFLAGS += $(APPEND_LDFLAGS)
>     +
>     +test-resource: test-resource.o
>     +       $(CC) $(LDFLAGS) -o $@ $<
>     +
>     +-include $(DEPS_INCLUDE)
>     diff --git a/tools/tests/resource/test-resource.c
>     b/tools/tests/resource/test-resource.c
>     new file mode 100644
>     index 0000000000..81a2a5cd12
>     --- /dev/null
>     +++ b/tools/tests/resource/test-resource.c
>     @@ -0,0 +1,138 @@
>     +#include <err.h>
>     +#include <errno.h>
>     +#include <error.h>
>     +#include <stdio.h>
>     +#include <string.h>
>     +#include <sys/mman.h>
>     +
>     +#include <xenctrl.h>
>     +#include <xenforeignmemory.h>
>     +#include <xendevicemodel.h>
>     +#include <xen-tools/libs.h>
>     +
>     +static unsigned int nr_failures;
>     +#define fail(fmt, ...)                          \
>     +({                                              \
>     +    nr_failures++;                              \
>     +    (void)printf(fmt, ##__VA_ARGS__);           \
>     +})
>     +
>     +static xc_interface *xch;
>     +static xenforeignmemory_handle *fh;
>     +static xendevicemodel_handle *dh;
>     +
>     +static void test_gnttab(uint32_t domid, unsigned int nr_frames)
>     +{
>     +    xenforeignmemory_resource_handle *res;
>     +    void *addr = NULL;
>     +    size_t size;
>     +    int rc;
>     +
>     +    printf("  d%u: grant table\n", domid);
>     +
>     +    rc = xenforeignmemory_resource_size(
>     +        fh, domid, XENMEM_resource_grant_table,
>     +        XENMEM_resource_grant_table_id_shared, &size);
>     +    if ( rc )
>     +        return fail("    Fail: Get size: %d - %s\n", errno,
>     strerror(errno));
>     +
>     +    if ( (size >> XC_PAGE_SHIFT) != nr_frames )
>     +        return fail("    Fail: Get size: expected %u frames, got
>     %zu\n",
>     +                    nr_frames, size >> XC_PAGE_SHIFT);
>     +
>     +    res = xenforeignmemory_map_resource(
>     +        fh, domid, XENMEM_resource_grant_table,
>     +        XENMEM_resource_grant_table_id_shared, 0, size >>
>     XC_PAGE_SHIFT,
>     +        &addr, PROT_READ | PROT_WRITE, 0);
>     +    if ( !res )
>     +        return fail("    Fail: Map %d - %s\n", errno,
>     strerror(errno));
>     +
>     +    rc = xenforeignmemory_unmap_resource(fh, res);
>     +    if ( rc )
>     +        return fail("    Fail: Unmap %d - %s\n", errno,
>     strerror(errno));
>     +}
>     +
>     +static void test_domain_configurations(void)
>     +{
>     +    static struct test {
>     +        const char *name;
>     +        struct xen_domctl_createdomain create;
>     +    } tests[] = {
>     +#if defined(__x86_64__) || defined(__i386__)
>     +        {
>     +            .name = "x86 PV",
>     +            .create = {
>     +                .max_vcpus = 2,
>     +                .max_grant_frames = 40,
>     +            },
>     +        },
>     +        {
>     +            .name = "x86 PVH",
>     +            .create = {
>     +                .flags = XEN_DOMCTL_CDF_hvm,
>     +                .max_vcpus = 2,
>     +                .max_grant_frames = 40,
>     +                .arch = {
>     +                    .emulation_flags = XEN_X86_EMU_LAPIC,
>     +                },
>     +            },
>     +        },
>     +#elif defined(__aarch64__) || defined(__arm__)
>     +        {
>     +            .name = "ARM",
>     +            .create = {
>     +                .flags = XEN_DOMCTL_CDF_hvm | XEN_DOMCTL_CDF_hap,
>     +                .max_vcpus = 2,
>     +                .max_grant_frames = 40,
>     +            },
>     +        },
>     +#endif
>     +    };
>     +
>     +    for ( unsigned int i = 0; i < ARRAY_SIZE(tests); ++i )
>     +    {
>     +        struct test *t = &tests[i];
>     +        uint32_t domid = 0;
>     +        int rc;
>     +
>     +        printf("Test %s\n", t->name);
>     +
>     +        rc = xc_domain_create(xch, &domid, &t->create);
>     +        if ( rc )
>     +        {
>     +            if ( errno == EINVAL || errno == EOPNOTSUPP )
>     +                printf("  Skip: %d - %s\n", errno, strerror(errno));
>     +            else
>     +                fail("  Domain create failure: %d - %s\n",
>     +                     errno, strerror(errno));
>     +            continue;
>     +        }
>     +
>     +        test_gnttab(domid, t->create.max_grant_frames);
>     +
>     +        rc = xc_domain_destroy(xch, domid);
>     +        if ( rc )
>     +            fail("  Failed to destroy domain: %d - %s\n",
>     +                 errno, strerror(errno));
>     +    }
>     +}
>     +
>     +int main(int argc, char **argv)
>     +{
>     +    printf("XENMEM_acquire_resource tests\n");
>     +
>     +    xch = xc_interface_open(NULL, NULL, 0);
>     +    fh = xenforeignmemory_open(NULL, 0);
>     +    dh = xendevicemodel_open(NULL, 0);
>     +
>     +    if ( !xch )
>     +        err(1, "xc_interface_open");
>     +    if ( !fh )
>     +        err(1, "xenforeignmemory_open");
>     +    if ( !dh )
>     +        err(1, "xendevicemodel_open");
>     +
>     +    test_domain_configurations();
>     +
>     +    return !!nr_failures;
>     +}
>     -- 
>     2.11.0
>
>
>
> -- 
> Regards,
>
> Oleksandr Tyshchenko

-- 
Regards,

Oleksandr Tyshchenko


[-- Attachment #2: Type: text/html, Size: 18833 bytes --]

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource
  2021-02-04 15:38   ` Oleksandr
@ 2021-02-04 15:44     ` Andrew Cooper
  2021-02-04 16:33       ` Oleksandr
  0 siblings, 1 reply; 7+ messages in thread
From: Andrew Cooper @ 2021-02-04 15:44 UTC (permalink / raw)
  To: Oleksandr
  Cc: Xen-devel, Ian Jackson, Wei Liu, Jan Beulich,
	Roger Pau Monné,
	Stefano Stabellini, Julien Grall, Volodymyr Babchuk

[-- Attachment #1: Type: text/plain, Size: 4632 bytes --]

On 04/02/2021 15:38, Oleksandr wrote:
>>
>> Hi Andrew.
>> [Sorry for the possible format issues]
>>
>> On Tue, Feb 2, 2021 at 9:10 PM Andrew Cooper
>> <andrew.cooper3@citrix.com <mailto:andrew.cooper3@citrix.com>> wrote:
>>
>>     For now, simply try to map 40 frames of grant table.  This
>>     catches most of the
>>     basic errors with resource sizes found and fixed through the 4.15
>>     dev window.
>>
>>     Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com
>>     <mailto:andrew.cooper3@citrix.com>>
>>     ---
>>     CC: Ian Jackson <iwj@xenproject.org <mailto:iwj@xenproject.org>>
>>     CC: Wei Liu <wl@xen.org <mailto:wl@xen.org>>
>>     CC: Jan Beulich <JBeulich@suse.com <mailto:JBeulich@suse.com>>
>>     CC: Roger Pau Monné <roger.pau@citrix.com
>>     <mailto:roger.pau@citrix.com>>
>>     CC: Wei Liu <wl@xen.org <mailto:wl@xen.org>>
>>     CC: Stefano Stabellini <sstabellini@kernel.org
>>     <mailto:sstabellini@kernel.org>>
>>     CC: Julien Grall <julien@xen.org <mailto:julien@xen.org>>
>>     CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com
>>     <mailto:Volodymyr_Babchuk@epam.com>>
>>     CC: Oleksandr <olekstysh@gmail.com <mailto:olekstysh@gmail.com>>
>>
>>     Fails against current staging:
>>
>>       XENMEM_acquire_resource tests
>>       Test x86 PV
>>         d7: grant table
>>           Fail: Map 7 - Argument list too long
>>       Test x86 PVH
>>         d8: grant table
>>           Fail: Map 7 - Argument list too long
>>
>>     The fix has already been posted:
>>       [PATCH v9 01/11] xen/memory: Fix mapping grant tables with
>>     XENMEM_acquire_resource
>>
>>     and the fixed run is:
>>
>>       XENMEM_acquire_resource tests
>>       Test x86 PV
>>         d7: grant table
>>       Test x86 PVH
>>         d8: grant table
>>
>>     ARM folk: would you mind testing this?  I'm pretty sure the
>>     create parameters
>>     are suitable, but I don't have any way to test this.
>>
>> Yes, as it was agreed on IRC, I will test this today's evening and
>> inform about the results)
>
>
> OK, well, I decided to test right away because going to be busy in the
> evening)
>
> I am based on:
> 9dc687f x86/debug: fix page-overflow bug in dbg_rw_guest_mem
>
> I noticed the error during building this test in my Yocto environment
> on Arm:
>
>
> /media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld:
> test-resource.o: undefined reference to symbol
> 'xendevicemodel_open@@VERS_1.0'
> /media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld:
> /media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/git/tools/tests/resource/../../../tools/libs/devicemodel/libxendevicemodel.so.1:
> error adding symbols: DSO missing from command line
> collect2: error: ld returned 1 exit status
> Makefile:38: recipe for target 'test-resource' failed
>
>
> I didn't investigate whether it is related or not. I just added as
> following:
>
> diff --git a/tools/tests/resource/Makefile b/tools/tests/resource/Makefile
> index 8a3373e..03b19ef 100644
> --- a/tools/tests/resource/Makefile
> +++ b/tools/tests/resource/Makefile
> @@ -32,6 +32,7 @@ CFLAGS += $(APPEND_CFLAGS)
>  
>  LDFLAGS += $(LDLIBS_libxenctrl)
>  LDFLAGS += $(LDLIBS_libxenforeignmemory)
> +LDFLAGS += $(LDLIBS_libxendevicemodel)
>  LDFLAGS += $(APPEND_LDFLAGS)
>  
>  test-resource: test-resource.o
>

Urgh yes - I didn't fully strip out the libxendevicemodel uses.  I'll
fix that, rather than having this test link against a library which it
doesn't use (yet).

>
> I got the following result without and with "[PATCH v9 01/11]
> xen/memory: Fix mapping grant tables with XENMEM_acquire_resource"
>
> root@generic-armv8-xt-dom0:~# test-resource
> XENMEM_acquire_resource tests
> Test ARM
>   d3: grant table
> xenforeignmemory: error: ioctl failed: Invalid argument
>     Fail: Get size: 22 - Invalid argument
>

Ah yes - you also need a bugfix in the dom0 kernel.  "xen/privcmd: allow
fetching resource sizes" which is in mainline, and also backported to
the LTS trees.

However, this did get past the bit I wasn't sure about for ARM, which is
good.

~Andrew

[-- Attachment #2: Type: text/html, Size: 7499 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource
  2021-02-04 15:44     ` Andrew Cooper
@ 2021-02-04 16:33       ` Oleksandr
  2021-02-04 16:39         ` Andrew Cooper
  0 siblings, 1 reply; 7+ messages in thread
From: Oleksandr @ 2021-02-04 16:33 UTC (permalink / raw)
  To: Andrew Cooper
  Cc: Xen-devel, Ian Jackson, Wei Liu, Jan Beulich,
	Roger Pau Monné,
	Stefano Stabellini, Julien Grall, Volodymyr Babchuk

[-- Attachment #1: Type: text/plain, Size: 5600 bytes --]


Hi Andrew


On 04.02.21 17:44, Andrew Cooper wrote:
> On 04/02/2021 15:38, Oleksandr wrote:
>>>
>>> Hi Andrew.
>>> [Sorry for the possible format issues]
>>>
>>> On Tue, Feb 2, 2021 at 9:10 PM Andrew Cooper 
>>> <andrew.cooper3@citrix.com <mailto:andrew.cooper3@citrix.com>> wrote:
>>>
>>>     For now, simply try to map 40 frames of grant table.  This
>>>     catches most of the
>>>     basic errors with resource sizes found and fixed through the
>>>     4.15 dev window.
>>>
>>>     Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com
>>>     <mailto:andrew.cooper3@citrix.com>>
>>>     ---
>>>     CC: Ian Jackson <iwj@xenproject.org <mailto:iwj@xenproject.org>>
>>>     CC: Wei Liu <wl@xen.org <mailto:wl@xen.org>>
>>>     CC: Jan Beulich <JBeulich@suse.com <mailto:JBeulich@suse.com>>
>>>     CC: Roger Pau Monné <roger.pau@citrix.com
>>>     <mailto:roger.pau@citrix.com>>
>>>     CC: Wei Liu <wl@xen.org <mailto:wl@xen.org>>
>>>     CC: Stefano Stabellini <sstabellini@kernel.org
>>>     <mailto:sstabellini@kernel.org>>
>>>     CC: Julien Grall <julien@xen.org <mailto:julien@xen.org>>
>>>     CC: Volodymyr Babchuk <Volodymyr_Babchuk@epam.com
>>>     <mailto:Volodymyr_Babchuk@epam.com>>
>>>     CC: Oleksandr <olekstysh@gmail.com <mailto:olekstysh@gmail.com>>
>>>
>>>     Fails against current staging:
>>>
>>>       XENMEM_acquire_resource tests
>>>       Test x86 PV
>>>         d7: grant table
>>>           Fail: Map 7 - Argument list too long
>>>       Test x86 PVH
>>>         d8: grant table
>>>           Fail: Map 7 - Argument list too long
>>>
>>>     The fix has already been posted:
>>>       [PATCH v9 01/11] xen/memory: Fix mapping grant tables with
>>>     XENMEM_acquire_resource
>>>
>>>     and the fixed run is:
>>>
>>>       XENMEM_acquire_resource tests
>>>       Test x86 PV
>>>         d7: grant table
>>>       Test x86 PVH
>>>         d8: grant table
>>>
>>>     ARM folk: would you mind testing this?  I'm pretty sure the
>>>     create parameters
>>>     are suitable, but I don't have any way to test this.
>>>
>>> Yes, as it was agreed on IRC, I will test this today's evening and 
>>> inform about the results)
>>
>>
>> OK, well, I decided to test right away because going to be busy in 
>> the evening)
>>
>> I am based on:
>> 9dc687f x86/debug: fix page-overflow bug in dbg_rw_guest_mem
>>
>> I noticed the error during building this test in my Yocto environment 
>> on Arm:
>>
>>
>> /media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: 
>> test-resource.o: undefined reference to symbol 
>> 'xendevicemodel_open@@VERS_1.0'
>> /media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/recipe-sysroot-native/usr/bin/aarch64-poky-linux/../../libexec/aarch64-poky-linux/gcc/aarch64-poky-linux/8.2.0/ld: 
>> /media/b/build/build/tmp/work/x86_64-xt-linux/dom0-image-thin-initramfs/1.0-r0/repo/build/tmp/work/aarch64-poky-linux/xen/4.14.0+gitAUTOINC+e00e0f38c3-r0/git/tools/tests/resource/../../../tools/libs/devicemodel/libxendevicemodel.so.1: 
>> error adding symbols: DSO missing from command line
>> collect2: error: ld returned 1 exit status
>> Makefile:38: recipe for target 'test-resource' failed
>>
>>
>> I didn't investigate whether it is related or not. I just added as 
>> following:
>>
>> diff --git a/tools/tests/resource/Makefile 
>> b/tools/tests/resource/Makefile
>> index 8a3373e..03b19ef 100644
>> --- a/tools/tests/resource/Makefile
>> +++ b/tools/tests/resource/Makefile
>> @@ -32,6 +32,7 @@ CFLAGS += $(APPEND_CFLAGS)
>>
>>  LDFLAGS += $(LDLIBS_libxenctrl)
>>  LDFLAGS += $(LDLIBS_libxenforeignmemory)
>> +LDFLAGS += $(LDLIBS_libxendevicemodel)
>>  LDFLAGS += $(APPEND_LDFLAGS)
>>
>>  test-resource: test-resource.o
>>
>
> Urgh yes - I didn't fully strip out the libxendevicemodel uses. I'll 
> fix that, rather than having this test link against a library which it 
> doesn't use (yet).
>
>>
>> I got the following result without and with "[PATCH v9 01/11] 
>> xen/memory: Fix mapping grant tables with XENMEM_acquire_resource"
>>
>> root@generic-armv8-xt-dom0:~# test-resource
>> XENMEM_acquire_resource tests
>> Test ARM
>>   d3: grant table
>> xenforeignmemory: error: ioctl failed: Invalid argument
>>     Fail: Get size: 22 - Invalid argument
>>
>
> Ah yes - you also need a bugfix in the dom0 kernel.  "xen/privcmd: 
> allow fetching resource sizes" which is in mainline, and also 
> backported to the LTS trees.

Well, my dom0 Linux is old)

uname -a
Linux generic-armv8-xt-dom0 4.14.75-ltsi-yocto-tiny #1 SMP PREEMPT Thu 
Nov 5 10:52:32 UTC 2020 aarch64 GNU/Linux
so I use ported "xen/privcmd: add IOCTL_PRIVCMD_MMAP_RESOURCE".
I didn't find "xen/privcmd: allow fetching resource sizes" for my Linux 
version, so I backported it by myself.

So, with "[PATCH v9 01/11] xen/memory: Fix mapping grant tables with 
XENMEM_acquire_resource"

root@generic-armv8-xt-dom0:~# test-resource
XENMEM_acquire_resource tests
Test ARM
   d7: grant table
(XEN) grant_table.c:1854:d0v1 Expanding d7 grant table from 1 to 32 frames
(XEN) grant_table.c:1854:d0v1 Expanding d7 grant table from 32 to 40 frames

[I didn't test without your patch]


Hope that helps.


>
> However, this did get past the bit I wasn't sure about for ARM, which 
> is good.
>
> ~Andrew

-- 
Regards,

Oleksandr Tyshchenko


[-- Attachment #2: Type: text/html, Size: 9452 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource
  2021-02-04 16:33       ` Oleksandr
@ 2021-02-04 16:39         ` Andrew Cooper
  0 siblings, 0 replies; 7+ messages in thread
From: Andrew Cooper @ 2021-02-04 16:39 UTC (permalink / raw)
  To: Oleksandr
  Cc: Xen-devel, Ian Jackson, Wei Liu, Jan Beulich,
	Roger Pau Monné,
	Stefano Stabellini, Julien Grall, Volodymyr Babchuk

On 04/02/2021 16:33, Oleksandr wrote:
> On 04.02.21 17:44, Andrew Cooper wrote:
>> On 04/02/2021 15:38, Oleksandr wrote:
>>>
>>>
>>> I got the following result without and with "[PATCH v9 01/11]
>>> xen/memory: Fix mapping grant tables with XENMEM_acquire_resource"
>>>
>>> root@generic-armv8-xt-dom0:~# test-resource
>>> XENMEM_acquire_resource tests
>>> Test ARM
>>>   d3: grant table
>>> xenforeignmemory: error: ioctl failed: Invalid argument
>>>     Fail: Get size: 22 - Invalid argument
>>>
>>
>> Ah yes - you also need a bugfix in the dom0 kernel.  "xen/privcmd:
>> allow fetching resource sizes" which is in mainline, and also
>> backported to the LTS trees.
>
> Well, my dom0 Linux is old)
>
> uname -a
> Linux generic-armv8-xt-dom0 4.14.75-ltsi-yocto-tiny #1 SMP PREEMPT Thu
> Nov 5 10:52:32 UTC 2020 aarch64 GNU/Linux
> so I use ported "xen/privcmd: add IOCTL_PRIVCMD_MMAP_RESOURCE".
> I didn't find "xen/privcmd: allow fetching resource sizes" for my
> Linux version, so I backported it by myself.
>
> So, with "[PATCH v9 01/11] xen/memory: Fix mapping grant tables with
> XENMEM_acquire_resource"
>
> root@generic-armv8-xt-dom0:~# test-resource
> XENMEM_acquire_resource tests
> Test ARM
>   d7: grant table
> (XEN) grant_table.c:1854:d0v1 Expanding d7 grant table from 1 to 32 frames
> (XEN) grant_table.c:1854:d0v1 Expanding d7 grant table from 32 to 40
> frames
>
> [I didn't test without your patch]
>
> Hope that helps.
>

Yup - fantastic thankyou.

~Andrew


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-02-04 16:40 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-02 19:09 [PATCH for-4.15] tools/tests: Introduce a test for acquire_resource Andrew Cooper
2021-02-04 11:48 ` Ian Jackson
2021-02-04 13:29 ` Oleksandr Tyshchenko
2021-02-04 15:38   ` Oleksandr
2021-02-04 15:44     ` Andrew Cooper
2021-02-04 16:33       ` Oleksandr
2021-02-04 16:39         ` Andrew Cooper

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).