[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 26/40] tests/tcg: make test-mmap a little less aggressive
From: |
Alex Bennée |
Subject: |
[PULL 26/40] tests/tcg: make test-mmap a little less aggressive |
Date: |
Mon, 12 Jul 2021 13:26:39 +0100 |
The check_aligned_anonymous_unfixed_mmaps and
check_aligned_anonymous_unfixed_colliding_mmaps do a lot of mmap's and
copying of data. This is especially unfriendly to targets like hexagon
which have quite large pages and need to do sanity checks on each
memory access.
While we are at it clean-up the white space and style issues from the
legacy code. As we no longer do quite so much needless memory access
we can also remove the hexagon timeout hack.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Taylor Simpson <tsimpson@quicinc.com>
Message-Id: <20210709143005.1554-27-alex.bennee@linaro.org>
diff --git a/tests/tcg/multiarch/test-mmap.c b/tests/tcg/multiarch/test-mmap.c
index 11d0e777b1..96257f8ebe 100644
--- a/tests/tcg/multiarch/test-mmap.c
+++ b/tests/tcg/multiarch/test-mmap.c
@@ -49,64 +49,62 @@ size_t test_fsize;
void check_aligned_anonymous_unfixed_mmaps(void)
{
- void *p1;
- void *p2;
- void *p3;
- void *p4;
- void *p5;
- uintptr_t p;
- int i;
-
- fprintf(stdout, "%s", __func__);
- for (i = 0; i < 0x1fff; i++)
- {
- size_t len;
-
- len = pagesize + (pagesize * i & 7);
- p1 = mmap(NULL, len, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- p2 = mmap(NULL, len, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- p3 = mmap(NULL, len, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- p4 = mmap(NULL, len, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- p5 = mmap(NULL, len, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
- /* Make sure we get pages aligned with the pagesize. The
- target expects this. */
- fail_unless (p1 != MAP_FAILED);
- fail_unless (p2 != MAP_FAILED);
- fail_unless (p3 != MAP_FAILED);
- fail_unless (p4 != MAP_FAILED);
- fail_unless (p5 != MAP_FAILED);
- p = (uintptr_t) p1;
- D(printf ("p=%x\n", p));
- fail_unless ((p & pagemask) == 0);
- p = (uintptr_t) p2;
- fail_unless ((p & pagemask) == 0);
- p = (uintptr_t) p3;
- fail_unless ((p & pagemask) == 0);
- p = (uintptr_t) p4;
- fail_unless ((p & pagemask) == 0);
- p = (uintptr_t) p5;
- fail_unless ((p & pagemask) == 0);
-
- /* Make sure we can read from the entire area. */
- memcpy (dummybuf, p1, pagesize);
- memcpy (dummybuf, p2, pagesize);
- memcpy (dummybuf, p3, pagesize);
- memcpy (dummybuf, p4, pagesize);
- memcpy (dummybuf, p5, pagesize);
-
- munmap (p1, len);
- munmap (p2, len);
- munmap (p3, len);
- munmap (p4, len);
- munmap (p5, len);
- }
- fprintf(stdout, " passed\n");
+ void *p1;
+ void *p2;
+ void *p3;
+ void *p4;
+ void *p5;
+ uintptr_t p;
+ int i;
+ fprintf(stdout, "%s", __func__);
+ for (i = 0; i < 8; i++) {
+ size_t len;
+ len = pagesize + (pagesize * i);
+ p1 = mmap(NULL, len, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ p2 = mmap(NULL, len, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ p3 = mmap(NULL, len, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ p4 = mmap(NULL, len, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ p5 = mmap(NULL, len, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+ /*
+ * Make sure we get pages aligned with the pagesize. The
+ * target expects this.
+ */
+ fail_unless(p1 != MAP_FAILED);
+ fail_unless(p2 != MAP_FAILED);
+ fail_unless(p3 != MAP_FAILED);
+ fail_unless(p4 != MAP_FAILED);
+ fail_unless(p5 != MAP_FAILED);
+ p = (uintptr_t) p1;
+ D(printf("p=%x\n", p));
+ fail_unless((p & pagemask) == 0);
+ p = (uintptr_t) p2;
+ fail_unless((p & pagemask) == 0);
+ p = (uintptr_t) p3;
+ fail_unless((p & pagemask) == 0);
+ p = (uintptr_t) p4;
+ fail_unless((p & pagemask) == 0);
+ p = (uintptr_t) p5;
+ fail_unless((p & pagemask) == 0);
+
+ /* Make sure we can read from the entire area. */
+ memcpy(dummybuf, p1, pagesize);
+ memcpy(dummybuf, p2, pagesize);
+ memcpy(dummybuf, p3, pagesize);
+ memcpy(dummybuf, p4, pagesize);
+ memcpy(dummybuf, p5, pagesize);
+ munmap(p1, len);
+ munmap(p2, len);
+ munmap(p3, len);
+ munmap(p4, len);
+ munmap(p5, len);
+ }
+ fprintf(stdout, " passed\n");
}
void check_large_anonymous_unfixed_mmap(void)
@@ -135,52 +133,54 @@ void check_large_anonymous_unfixed_mmap(void)
void check_aligned_anonymous_unfixed_colliding_mmaps(void)
{
- char *p1;
- char *p2;
- char *p3;
- uintptr_t p;
- int i;
-
- fprintf(stdout, "%s", __func__);
- for (i = 0; i < 0x2fff; i++)
- {
- int nlen;
- p1 = mmap(NULL, pagesize, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- fail_unless (p1 != MAP_FAILED);
- p = (uintptr_t) p1;
- fail_unless ((p & pagemask) == 0);
- memcpy (dummybuf, p1, pagesize);
-
- p2 = mmap(NULL, pagesize, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- fail_unless (p2 != MAP_FAILED);
- p = (uintptr_t) p2;
- fail_unless ((p & pagemask) == 0);
- memcpy (dummybuf, p2, pagesize);
-
-
- munmap (p1, pagesize);
- nlen = pagesize * 8;
- p3 = mmap(NULL, nlen, PROT_READ,
- MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
- fail_unless (p3 != MAP_FAILED);
-
- /* Check if the mmaped areas collide. */
- if (p3 < p2
- && (p3 + nlen) > p2)
- fail_unless (0);
-
- memcpy (dummybuf, p3, pagesize);
-
- /* Make sure we get pages aligned with the pagesize. The
- target expects this. */
- p = (uintptr_t) p3;
- fail_unless ((p & pagemask) == 0);
- munmap (p2, pagesize);
- munmap (p3, nlen);
- }
- fprintf(stdout, " passed\n");
+ char *p1;
+ char *p2;
+ char *p3;
+ uintptr_t p;
+ int i;
+
+ fprintf(stdout, "%s", __func__);
+ for (i = 0; i < 2; i++) {
+ int nlen;
+ p1 = mmap(NULL, pagesize, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ fail_unless(p1 != MAP_FAILED);
+ p = (uintptr_t) p1;
+ fail_unless((p & pagemask) == 0);
+ memcpy(dummybuf, p1, pagesize);
+
+ p2 = mmap(NULL, pagesize, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ fail_unless(p2 != MAP_FAILED);
+ p = (uintptr_t) p2;
+ fail_unless((p & pagemask) == 0);
+ memcpy(dummybuf, p2, pagesize);
+
+
+ munmap(p1, pagesize);
+ nlen = pagesize * 8;
+ p3 = mmap(NULL, nlen, PROT_READ,
+ MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+ fail_unless(p3 != MAP_FAILED);
+
+ /* Check if the mmaped areas collide. */
+ if (p3 < p2
+ && (p3 + nlen) > p2) {
+ fail_unless(0);
+ }
+
+ memcpy(dummybuf, p3, pagesize);
+
+ /*
+ * Make sure we get pages aligned with the pagesize. The
+ * target expects this.
+ */
+ p = (uintptr_t) p3;
+ fail_unless((p & pagemask) == 0);
+ munmap(p2, pagesize);
+ munmap(p3, nlen);
+ }
+ fprintf(stdout, " passed\n");
}
void check_aligned_anonymous_fixed_mmaps(void)
diff --git a/tests/tcg/hexagon/Makefile.target
b/tests/tcg/hexagon/Makefile.target
index 0992787d50..050cd61c1a 100644
--- a/tests/tcg/hexagon/Makefile.target
+++ b/tests/tcg/hexagon/Makefile.target
@@ -18,15 +18,6 @@
# Hexagon doesn't support gdb, so skip the EXTRA_RUNS
EXTRA_RUNS =
-# Hexagon has 64K pages, so increase the timeout to keep
-# test-mmap from timing out
-ifeq ($(CONFIG_DEBUG_TCG),y)
-TIMEOUT=800
-else
-TIMEOUT=500
-endif
-
-
CFLAGS += -Wno-incompatible-pointer-types -Wno-undefined-internal
CFLAGS += -fno-unroll-loops
--
2.20.1
- [PULL 10/40] tests/docker: don't use BUILDKIT in GitLab either, (continued)
- [PULL 10/40] tests/docker: don't use BUILDKIT in GitLab either, Alex Bennée, 2021/07/12
- [PULL 36/40] plugins: Added a new cache modelling plugin, Alex Bennée, 2021/07/12
- [PULL 29/40] configure: don't allow plugins to be enabled for a non-TCG build, Alex Bennée, 2021/07/12
- [PULL 27/40] plugins: fix-up handling of internal hostaddr for 32 bit, Alex Bennée, 2021/07/12
- [PULL 33/40] contrib/plugins: enable -Wall for building plugins, Alex Bennée, 2021/07/12
- [PULL 35/40] docs/devel: tcg-plugins: add execlog plugin description, Alex Bennée, 2021/07/12
- [PULL 11/40] tests/docker: use project specific container registries, Alex Bennée, 2021/07/12
- [PULL 13/40] tests/docker: remove FEATURES env var from templates, Alex Bennée, 2021/07/12
- [PULL 24/40] tests/vm: update NetBSD to 9.2, Alex Bennée, 2021/07/12
- [PULL 23/40] tests/docker: expand opensuse-leap package list, Alex Bennée, 2021/07/12
- [PULL 26/40] tests/tcg: make test-mmap a little less aggressive,
Alex Bennée <=
- [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Alex Bennée, 2021/07/12
- Re: [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Christian Borntraeger, 2021/07/16
- Re: [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Christian Borntraeger, 2021/07/16
- Re: [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Alex Bennée, 2021/07/16
- Re: [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Richard Henderson, 2021/07/16
- Re: [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Christian Borntraeger, 2021/07/16
- Re: [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Christian Borntraeger, 2021/07/16
- Re: [PULL 32/40] tcg/plugins: enable by default for most TCG builds, Richard Henderson, 2021/07/16
[PULL 34/40] contrib/plugins: add execlog to log instruction execution and memory access, Alex Bennée, 2021/07/12
[PULL 22/40] tests/docker: expand ubuntu2004 package list, Alex Bennée, 2021/07/12