From: Antonio Argenziano <antonio.argenziano@intel.com>
To: igt-dev@lists.freedesktop.org
Cc: Matthew Auld <matthew.auld@intel.com>
Subject: [igt-dev] [RFC 5/5] igt/lib: If mappable aperture is missing return 0 size
Date: Thu, 21 Feb 2019 11:27:45 -0800 [thread overview]
Message-ID: <20190221192745.31178-6-antonio.argenziano@intel.com> (raw)
In-Reply-To: <20190221192745.31178-1-antonio.argenziano@intel.com>
So far the aperture size has been read directly from the bar,
in this patch we return zero if the mappable aperture is not available
as the value stored in the bar might not be accurate. The patch also adds a
'require' when a call to gem_mappable_aperture_size() is made so that
the aperture is guaranteed to exist before checking the size.
Cc: Katarzyna Dec <katarzyna.dec@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Matthew Auld <matthew.auld@intel.com>
Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
---
lib/ioctl_wrappers.c | 28 +++++++++++++++++++---------
lib/ioctl_wrappers.h | 2 +-
tests/i915/gem_concurrent_all.c | 12 ++++++------
tests/i915/gem_cpu_reloc.c | 14 ++++++++++----
tests/i915/gem_mmap.c | 4 ++--
tests/i915/gem_mmap_gtt.c | 10 +++++-----
tests/i915/gem_pwrite.c | 4 ++--
tests/i915/gem_shrink.c | 2 +-
tests/i915/i915_pm_rpm.c | 2 +-
tests/kms_flip.c | 2 +-
tests/prime_mmap.c | 7 +++++--
11 files changed, 53 insertions(+), 34 deletions(-)
diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 25dd8ad3..ab7c7a5e 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -1440,19 +1440,14 @@ uint64_t gem_aperture_size(int fd)
return aperture_size;
}
-/**
- * gem_mappable_aperture_size:
- *
- * Feature test macro to query the kernel for the mappable gpu aperture size.
- * This is the area available for GTT memory mappings.
- *
- * Returns: The mappable gtt address space size.
- */
-uint64_t gem_mappable_aperture_size(void)
+static uint64_t __gem_mappable_aperture_size(int fd)
{
struct pci_device *pci_dev = intel_get_pci_device();
int bar;
+ if (!gem_mmap__has_gtt(fd))
+ return 0; /* Aperture not available */
+
if (intel_gen(pci_dev->device_id) < 3)
bar = 0;
else
@@ -1461,6 +1456,21 @@ uint64_t gem_mappable_aperture_size(void)
return pci_dev->regions[bar].size;
}
+/**
+ * gem_mappable_aperture_size:
+ *
+ * Feature test macro to query the kernel for the mappable gpu aperture size.
+ * This is the area available for GTT memory mappings.
+ *
+ * Returns: The mappable gtt address space size.
+ */
+uint64_t gem_mappable_aperture_size(int fd)
+{
+ gem_require_mmap_gtt(fd);
+
+ return __gem_mappable_aperture_size(fd);
+}
+
/**
* gem_global_aperture_size:
* @fd: open i915 drm file descriptor
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index 693020ed..2d4e06ed 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -169,7 +169,7 @@ uint64_t gem_total_stolen_size(int fd);
uint64_t gem_available_aperture_size(int fd);
uint64_t gem_aperture_size(int fd);
uint64_t gem_global_aperture_size(int fd);
-uint64_t gem_mappable_aperture_size(void);
+uint64_t gem_mappable_aperture_size(int fd);
bool gem_has_softpin(int fd);
bool gem_has_exec_fence(int fd);
diff --git a/tests/i915/gem_concurrent_all.c b/tests/i915/gem_concurrent_all.c
index 1ab608ef..e4fc1426 100644
--- a/tests/i915/gem_concurrent_all.c
+++ b/tests/i915/gem_concurrent_all.c
@@ -1851,7 +1851,7 @@ igt_main
c->name, s->name, "small");
igt_subtest_group {
igt_fixture {
- count = num_buffers(gem_mappable_aperture_size()/4,
+ count = num_buffers(gem_mappable_aperture_size(fd)/4,
s, c, CHECK_RAM);
}
run_modes(name, c, modes, s, count);
@@ -1862,7 +1862,7 @@ igt_main
c->name, s->name, "thrash");
igt_subtest_group {
igt_fixture {
- count = num_buffers(gem_mappable_aperture_size(),
+ count = num_buffers(gem_mappable_aperture_size(fd),
s, c, CHECK_RAM);
}
run_modes(name, c, modes, s, count);
@@ -1894,7 +1894,7 @@ igt_main
c->name, s->name, "shrink");
igt_subtest_group {
igt_fixture {
- count = num_buffers(gem_mappable_aperture_size(),
+ count = num_buffers(gem_mappable_aperture_size(fd),
s, c, CHECK_RAM);
igt_fork_shrink_helper(fd);
@@ -1910,8 +1910,8 @@ igt_main
c->name, s->name, "swap");
igt_subtest_group {
igt_fixture {
- if (intel_get_avail_ram_mb() > gem_mappable_aperture_size()/(1024*1024)) {
- pin_sz = intel_get_avail_ram_mb() - gem_mappable_aperture_size()/(1024*1024);
+ if (intel_get_avail_ram_mb() > gem_mappable_aperture_size(fd)/(1024*1024)) {
+ pin_sz = intel_get_avail_ram_mb() - gem_mappable_aperture_size(fd)/(1024*1024);
igt_debug("Pinning %lld MiB\n", (long long)pin_sz);
pin_sz *= 1024 * 1024;
@@ -1925,7 +1925,7 @@ igt_main
igt_require(pinned);
}
- count = num_buffers(gem_mappable_aperture_size(),
+ count = num_buffers(gem_mappable_aperture_size(fd),
s, c, CHECK_RAM | CHECK_SWAP);
}
run_modes(name, c, modes, s, count);
diff --git a/tests/i915/gem_cpu_reloc.c b/tests/i915/gem_cpu_reloc.c
index 47099862..58fd4470 100644
--- a/tests/i915/gem_cpu_reloc.c
+++ b/tests/i915/gem_cpu_reloc.c
@@ -283,8 +283,11 @@ igt_main
run_test(i915, 1);
igt_subtest("full") {
- uint64_t aper_size = gem_mappable_aperture_size();
- unsigned long count = aper_size / 4096 + 1;
+ uint64_t aper_size;
+ unsigned long count;
+
+ aper_size = gem_mappable_aperture_size(i915);
+ count = aper_size / 4096 + 1;
intel_require_memory(count, 4096, CHECK_RAM);
@@ -292,10 +295,13 @@ igt_main
}
igt_subtest("forked") {
- uint64_t aper_size = gem_mappable_aperture_size();
- unsigned long count = aper_size / 4096 + 1;
+ uint64_t aper_size;
+ unsigned long count;
int ncpus = sysconf(_SC_NPROCESSORS_ONLN);
+ aper_size = gem_mappable_aperture_size(i915);
+ count = aper_size / 4096 + 1;
+
intel_require_memory(count, 4096, CHECK_RAM);
igt_fork(child, ncpus)
diff --git a/tests/i915/gem_mmap.c b/tests/i915/gem_mmap.c
index 0ed15878..4e30fec1 100644
--- a/tests/i915/gem_mmap.c
+++ b/tests/i915/gem_mmap.c
@@ -53,10 +53,10 @@ test_huge_bo(int huge)
switch (huge) {
case -1:
- huge_object_size = gem_mappable_aperture_size() / 2;
+ huge_object_size = gem_mappable_aperture_size(fd) / 2;
break;
case 0:
- huge_object_size = gem_mappable_aperture_size() + PAGE_SIZE;
+ huge_object_size = gem_mappable_aperture_size(fd) + PAGE_SIZE;
break;
case 1:
huge_object_size = gem_aperture_size(fd) + PAGE_SIZE;
diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
index 99da49f6..3add4b93 100644
--- a/tests/i915/gem_mmap_gtt.c
+++ b/tests/i915/gem_mmap_gtt.c
@@ -527,7 +527,7 @@ test_huge_bo(int fd, int huge, int tiling)
switch (huge) {
case -1:
- size = gem_mappable_aperture_size() / 2;
+ size = gem_mappable_aperture_size(fd) / 2;
/* Power of two fence size, natural fence
* alignment, and the guard page at the end
@@ -542,7 +542,7 @@ test_huge_bo(int fd, int huge, int tiling)
size /= 2;
break;
case 0:
- size = gem_mappable_aperture_size() + PAGE_SIZE;
+ size = gem_mappable_aperture_size(fd) + PAGE_SIZE;
break;
default:
size = gem_global_aperture_size(fd) + PAGE_SIZE;
@@ -623,13 +623,13 @@ test_huge_copy(int fd, int huge, int tiling_a, int tiling_b, int ncpus)
switch (huge) {
case -2:
- huge_object_size = gem_mappable_aperture_size() / 4;
+ huge_object_size = gem_mappable_aperture_size(fd) / 4;
break;
case -1:
- huge_object_size = gem_mappable_aperture_size() / 2;
+ huge_object_size = gem_mappable_aperture_size(fd) / 2;
break;
case 0:
- huge_object_size = gem_mappable_aperture_size() + PAGE_SIZE;
+ huge_object_size = gem_mappable_aperture_size(fd) + PAGE_SIZE;
break;
case 1:
huge_object_size = gem_global_aperture_size(fd) + PAGE_SIZE;
diff --git a/tests/i915/gem_pwrite.c b/tests/i915/gem_pwrite.c
index 696bd316..5cae121a 100644
--- a/tests/i915/gem_pwrite.c
+++ b/tests/i915/gem_pwrite.c
@@ -89,7 +89,7 @@ static void test_big_cpu(int fd, int scale, unsigned flags)
switch (scale) {
case 0:
- size = gem_mappable_aperture_size() + 4096;
+ size = gem_mappable_aperture_size(fd) + 4096;
break;
case 1:
size = gem_global_aperture_size(fd) + 4096;
@@ -151,7 +151,7 @@ static void test_big_gtt(int fd, int scale, unsigned flags)
igt_require(gem_mmap__has_wc(fd));
switch (scale) {
case 0:
- size = gem_mappable_aperture_size() + 4096;
+ size = gem_mappable_aperture_size(fd) + 4096;
break;
case 1:
size = gem_global_aperture_size(fd) + 4096;
diff --git a/tests/i915/gem_shrink.c b/tests/i915/gem_shrink.c
index 9c54fcb4..598e1ebf 100644
--- a/tests/i915/gem_shrink.c
+++ b/tests/i915/gem_shrink.c
@@ -411,7 +411,7 @@ igt_main
* we expect the shrinker to start purging objects,
* and possibly fail.
*/
- alloc_size = gem_mappable_aperture_size() / 2;
+ alloc_size = gem_mappable_aperture_size(fd) / 2;
num_processes = 1 + (mem_size / (alloc_size >> 20));
igt_info("Using %d processes and %'lluMiB per process\n",
diff --git a/tests/i915/i915_pm_rpm.c b/tests/i915/i915_pm_rpm.c
index 01ab8390..8e8cb073 100644
--- a/tests/i915/i915_pm_rpm.c
+++ b/tests/i915/i915_pm_rpm.c
@@ -1371,7 +1371,7 @@ static void gem_evict_pwrite_subtest(void)
gem_require_mmap_gtt(drm_fd);
- num_trash_bos = gem_mappable_aperture_size() / (1024*1024) + 1;
+ num_trash_bos = gem_mappable_aperture_size(drm_fd) / (1024*1024) + 1;
trash_bos = malloc(num_trash_bos * sizeof(*trash_bos));
igt_assert(trash_bos);
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 798fc4e8..005b1f28 100755
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -1231,7 +1231,7 @@ static void run_test_on_crtc_set(struct test_output *o, int *crtc_idxs,
/* 256 MB is usually the maximum mappable aperture,
* (make it 4x times that to ensure failure) */
if (o->flags & TEST_BO_TOOBIG) {
- bo_size = 4*gem_mappable_aperture_size();
+ bo_size = 4*gem_mappable_aperture_size(drm_fd);
igt_require(bo_size < gem_global_aperture_size(drm_fd));
}
diff --git a/tests/prime_mmap.c b/tests/prime_mmap.c
index e6258651..c96ab772 100644
--- a/tests/prime_mmap.c
+++ b/tests/prime_mmap.c
@@ -448,8 +448,11 @@ test_aperture_limit(void)
char *ptr1, *ptr2;
uint32_t handle1, handle2;
/* Two buffers the sum of which > mappable aperture */
- uint64_t size1 = (gem_mappable_aperture_size() * 7) / 8;
- uint64_t size2 = (gem_mappable_aperture_size() * 3) / 8;
+ uint64_t size1;
+ uint64_t size2;
+
+ size1 = (gem_mappable_aperture_size(fd) * 7) / 8;
+ size2 = (gem_mappable_aperture_size(fd) * 3) / 8;
handle1 = gem_create(fd, size1);
fill_bo(handle1, BO_SIZE);
--
2.20.1
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev
next prev parent reply other threads:[~2019-02-21 19:28 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-21 19:27 [igt-dev] [RFC 0/5] Modify tests for unavailable mappable aperture Antonio Argenziano
2019-02-21 19:27 ` [igt-dev] [RFC 1/5] tests/prime_self_import: Swap gtt mapping for cpu Antonio Argenziano
2019-02-21 19:46 ` Chris Wilson
2019-02-21 21:51 ` Antonio Argenziano
2019-02-21 22:08 ` Chris Wilson
2019-02-21 22:38 ` [igt-dev] [PATCH i-g-t] " Antonio Argenziano
2019-02-21 23:37 ` Chris Wilson
2019-02-22 16:50 ` Antonio Argenziano
2019-02-22 16:55 ` Chris Wilson
2019-02-22 17:19 ` Antonio Argenziano
2019-02-21 19:27 ` [igt-dev] [RFC 2/5] lib/ioctl_wrappers: add mmap_offset support Antonio Argenziano
2019-02-21 19:47 ` Chris Wilson
2019-02-21 21:13 ` Antonio Argenziano
2019-02-21 21:19 ` Chris Wilson
2019-02-22 21:59 ` [igt-dev] [PATCH i-g-t] lib/i915: " Antonio Argenziano
2019-02-22 22:01 ` Antonio Argenziano
2019-02-22 22:13 ` Chris Wilson
2019-02-22 22:29 ` Chris Wilson
2019-02-22 22:44 ` Antonio Argenziano
2019-02-25 18:28 ` [igt-dev] [PATCH i-g-t v3 1/2] " Antonio Argenziano
2019-02-25 18:28 ` [igt-dev] [PATCH i-g-t v3 2/2] tests/i915/gem_mmap_wc: Add local MMAP wrapper Antonio Argenziano
2019-02-25 22:24 ` Chris Wilson
2019-02-25 22:33 ` Antonio Argenziano
2019-02-25 22:46 ` [igt-dev] [PATCH i-g-t v3 1/2] lib/i915: add mmap_offset support Chris Wilson
2019-02-21 19:27 ` [igt-dev] [RFC 3/5] igt/lib: Add wrapper to check if gtt mapping is available Antonio Argenziano
2019-02-21 19:49 ` Chris Wilson
2019-02-21 21:37 ` Antonio Argenziano
2019-02-21 21:54 ` Chris Wilson
2019-02-22 22:20 ` [igt-dev] [PATCH i-g-t v2] " Antonio Argenziano
2019-02-21 19:27 ` [igt-dev] [RFC 4/5] igt/i915: Require GTT mapping to be available when needed Antonio Argenziano
2019-02-21 19:57 ` Chris Wilson
2019-02-23 0:01 ` Antonio Argenziano
2019-02-23 0:17 ` Chris Wilson
2019-04-09 0:12 ` Vanshidhar Konda
2019-02-21 19:27 ` Antonio Argenziano [this message]
2019-02-21 20:01 ` [igt-dev] [RFC 5/5] igt/lib: If mappable aperture is missing return 0 size Chris Wilson
2019-02-21 21:45 ` Antonio Argenziano
2019-02-21 21:51 ` Chris Wilson
2019-03-07 15:51 ` Antonio Argenziano
2019-03-07 15:58 ` Chris Wilson
2019-03-07 16:29 ` Antonio Argenziano
2019-03-07 16:45 ` Chris Wilson
2019-03-07 16:50 ` Chris Wilson
2019-03-07 17:03 ` Antonio Argenziano
2019-02-21 20:25 ` [igt-dev] ✓ Fi.CI.BAT: success for Modify tests for unavailable mappable aperture Patchwork
2019-02-21 23:24 ` [igt-dev] ✓ Fi.CI.BAT: success for Modify tests for unavailable mappable aperture (rev2) Patchwork
2019-02-22 8:04 ` [igt-dev] ✓ Fi.CI.IGT: success for Modify tests for unavailable mappable aperture Patchwork
2019-02-22 12:26 ` [igt-dev] ✓ Fi.CI.IGT: success for Modify tests for unavailable mappable aperture (rev2) Patchwork
2019-02-22 22:10 ` [igt-dev] ✗ Fi.CI.BAT: failure for Modify tests for unavailable mappable aperture (rev3) Patchwork
2019-02-22 22:30 ` [igt-dev] ✗ Fi.CI.BAT: failure for Modify tests for unavailable mappable aperture (rev4) Patchwork
2019-02-25 18:37 ` [igt-dev] ✗ Fi.CI.BAT: failure for Modify tests for unavailable mappable aperture (rev6) Patchwork
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190221192745.31178-6-antonio.argenziano@intel.com \
--to=antonio.argenziano@intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=matthew.auld@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox