From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org
Cc: akash.goel@intel.com
Subject: Re: [PATCH 1/3] igt/gem_stolen: Verify contents of stolen-backed objects across hibernation
Date: Fri, 3 Jun 2016 11:52:49 +0100 [thread overview]
Message-ID: <57516181.50209@linux.intel.com> (raw)
In-Reply-To: <1464943891-15470-1-git-send-email-ankitprasad.r.sharma@intel.com>
On 03/06/16 09:51, ankitprasad.r.sharma@intel.com wrote:
> From: Ankitprasad Sharma <ankitprasad.r.sharma@intel.com>
>
> This patch verifies if the contents of the stolen backed object were
> preserved across hibernation. This is to validate kernel changes related
> to moving stolen-backed objects to shmem on hibernation.
>
> v2: Added comment, Use igt_assert_eq() instead of igt_assert(), Made loops
> more readable (Tvrtko)
>
> v3: Corrected assertion (Tvrtko)
>
> Signed-off-by: Ankitprasad Sharma <ankitprasad.r.sharma@intel.com>
> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> ---
> tests/gem_stolen.c | 95 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 95 insertions(+)
>
> diff --git a/tests/gem_stolen.c b/tests/gem_stolen.c
> index 07fdd39..3a3cf81 100644
> --- a/tests/gem_stolen.c
> +++ b/tests/gem_stolen.c
> @@ -290,6 +290,98 @@ static void stolen_fill_purge_test(int fd)
> gem_close(fd, handle[i]);
> }
>
> +static void stolen_hibernate(int fd)
> +{
> + drm_intel_bo *bo;
> + drm_intel_bo *src, *dest;
> + int obj_count = 0, i = 0;
> + int ret, j;
> + uint32_t handle[MAX_OBJECTS], src_handle;
> + uint32_t *virt;
> +
> + gem_require_stolen_support(fd);
> +
> + src_handle = gem_create(fd, SIZE);
> + src = gem_handle_to_libdrm_bo(bufmgr, fd,
> + "bo", src_handle);
> + igt_assert(src != NULL);
> +
> + ret = drm_intel_gem_bo_map_gtt(src);
> + igt_assert_eq(ret, 0);
> +
> + virt = src->virtual;
> + for (j = 0; j < SIZE/DWORD_SIZE; j++) {
> + igt_assert_eq(virt[j], 0);
> + virt[j] = j;
> + }
> +
> + drm_intel_bo_unmap(src);
> + /* Exhaust Stolen space */
> + for (i = 0; i < MAX_OBJECTS; i++) {
> + handle[i] = __gem_create_stolen(fd, SIZE);
> + if (!handle[i])
> + break;
> +
> + bo = gem_handle_to_libdrm_bo(bufmgr, fd,
> + "verify_bo", handle[i]);
> + igt_assert(bo != NULL);
> + ret = drm_intel_gem_bo_map_gtt(bo);
> + igt_assert_eq(ret, 0);
> +
> + virt = bo->virtual;
> + for (j = 0; j < SIZE/DWORD_SIZE; j++)
> + igt_assert_eq(virt[j], 0);
> +
> + drm_intel_bo_unmap(bo);
> + drm_intel_bo_unreference(bo);
> +
> + obj_count++;
> + }
> +
> + /* Assert if atleast one object is allocated from stolen, that
> + * is good enough to verify the content preservation across
> + * hibernation.
> + */
> + igt_assert(obj_count > 0);
> +
> + /* Copy data to all stolen backed objects */
> + for (i = 0; i < obj_count; i++) {
> + dest = gem_handle_to_libdrm_bo(bufmgr, fd,
> + "dst_bo", handle[i]);
> + igt_assert(dest != NULL);
> + /* Copy contents to stolen backed objects via blt and
> + * verify post-hibernation, this also helps in identifying
> + * that the operation was completed before going to
> + * hibernation.
> + */
> + intel_copy_bo(batch, dest, src, SIZE);
> + }
> +
> + drm_intel_bo_unreference(src);
> +
> + igt_system_hibernate_autoresume();
> + /* Check if the object's memory contents are intact
> + * across hibernation.
> + */
> + for (i = 0; i < obj_count; i++) {
> + bo = gem_handle_to_libdrm_bo(bufmgr, fd,
> + "verify_bo", handle[i]);
> + igt_assert(bo != NULL);
> + ret = drm_intel_gem_bo_map_gtt(bo);
> + igt_assert_eq(ret, 0);
> + virt = bo->virtual;
> + for (j = 0; j < SIZE/DWORD_SIZE; j++)
> + igt_assert_eq(virt[j], j);
> +
> + drm_intel_bo_unmap(bo);
> + drm_intel_bo_unreference(bo);
> + }
> +
> + gem_close(fd, src_handle);
> + for (i = 0; i < obj_count; i++)
> + gem_close(fd, handle[i]);
> +}
> +
> static void
> stolen_no_mmap(int fd)
> {
> @@ -353,6 +445,9 @@ igt_main
> igt_subtest("stolen-fill-purge")
> stolen_fill_purge_test(fd);
>
> + igt_subtest("stolen-hibernate")
> + stolen_hibernate(fd);
> +
> igt_fixture {
> intel_batchbuffer_free(batch);
> drm_intel_bufmgr_destroy(bufmgr);
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2016-06-03 10:52 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-03 8:51 [PATCH 1/3] igt/gem_stolen: Verify contents of stolen-backed objects across hibernation ankitprasad.r.sharma
2016-06-03 8:51 ` [PATCH 2/3] igt/gem_stolen: Fix for no_mmap subtest ankitprasad.r.sharma
2016-06-03 10:53 ` Tvrtko Ursulin
2016-06-03 8:51 ` [PATCH 3/3] igt/gem_stolen: Check for available stolen memory size ankitprasad.r.sharma
2016-06-03 10:58 ` Tvrtko Ursulin
2016-06-06 9:25 ` Ankitprasad Sharma
2016-06-03 10:52 ` Tvrtko Ursulin [this message]
2016-06-03 11:32 ` ✗ Ro.CI.BAT: failure for series starting with [1/3] igt/gem_stolen: Verify contents of stolen-backed objects across hibernation Patchwork
2016-06-03 11:39 ` Patchwork
-- strict thread matches above, loose matches on Subject: below --
2016-06-06 9:21 [PATCH 1/3] " ankitprasad.r.sharma
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=57516181.50209@linux.intel.com \
--to=tvrtko.ursulin@linux.intel.com \
--cc=akash.goel@intel.com \
--cc=ankitprasad.r.sharma@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.