From: Yuanhan Liu <yuanhan.liu@linux.intel.com>
To: Eric Anholt <eric@anholt.net>
Cc: intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH 1/2] intel: Add support for overriding the PCI ID via an environment variable
Date: Thu, 8 Mar 2012 10:35:16 +0800 [thread overview]
Message-ID: <20120308023516.GS17001@yliu-dev.sh.intel.com> (raw)
In-Reply-To: <1331148067-8932-1-git-send-email-eric@anholt.net>
On Wed, Mar 07, 2012 at 11:21:06AM -0800, Eric Anholt wrote:
> From: Kenneth Graunke <kenneth@whitecape.org>
>
> For example:
>
> export INTEL_DEVID_OVERRIDE=0x162
>
> If this variable is set, don't actually submit the batchbuffer to the
> GPU, it probably contains commands for the wrong generation of hardware.
>
> v2: Introduce a getter for the overridden devid, and avoid getenv per exec.
>
> Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
> Signed-off-by: Eric Anholt <eric@anholt.net>
Hi Eric and Kenneth,
Thank you very much for making the whole aub dump stuff in mainline!
Reviewed-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
(I have some comments about patch 2/2)
> ---
> intel/intel_bufmgr.h | 1 +
> intel/intel_bufmgr_gem.c | 56 ++++++++++++++++++++++++++++++++++++++-------
> 2 files changed, 48 insertions(+), 9 deletions(-)
>
> diff --git a/intel/intel_bufmgr.h b/intel/intel_bufmgr.h
> index 85da8b9..8036031 100644
> --- a/intel/intel_bufmgr.h
> +++ b/intel/intel_bufmgr.h
> @@ -157,6 +157,7 @@ void drm_intel_gem_bo_start_gtt_access(drm_intel_bo *bo, int write_enable);
> int drm_intel_get_pipe_from_crtc_id(drm_intel_bufmgr *bufmgr, int crtc_id);
>
> int drm_intel_get_aperture_sizes(int fd, size_t *mappable, size_t *total);
> +int drm_intel_bufmgr_gem_get_devid(drm_intel_bufmgr *bufmgr);
>
> /* drm_intel_bufmgr_fake.c */
> drm_intel_bufmgr *drm_intel_bufmgr_fake_init(int fd,
> diff --git a/intel/intel_bufmgr_gem.c b/intel/intel_bufmgr_gem.c
> index 0f33b71..ba38e50 100644
> --- a/intel/intel_bufmgr_gem.c
> +++ b/intel/intel_bufmgr_gem.c
> @@ -119,6 +119,7 @@ typedef struct _drm_intel_bufmgr_gem {
> unsigned int has_relaxed_fencing : 1;
> unsigned int has_llc : 1;
> unsigned int bo_reuse : 1;
> + unsigned int no_exec : 1;
> bool fenced_relocs;
> } drm_intel_bufmgr_gem;
>
> @@ -1788,7 +1789,8 @@ drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used,
> {
> drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bo->bufmgr;
> struct drm_i915_gem_execbuffer2 execbuf;
> - int ret, i;
> + int ret = 0;
> + int i;
>
> switch (flags & 0x7) {
> default:
> @@ -1828,6 +1830,9 @@ drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used,
> execbuf.rsvd1 = 0;
> execbuf.rsvd2 = 0;
>
> + if (bufmgr_gem->no_exec)
> + goto skip_execution;
> +
> ret = drmIoctl(bufmgr_gem->fd,
> DRM_IOCTL_I915_GEM_EXECBUFFER2,
> &execbuf);
> @@ -1845,6 +1850,7 @@ drm_intel_gem_bo_mrb_exec2(drm_intel_bo *bo, int used,
> }
> drm_intel_update_buffer_offsets2(bufmgr_gem);
>
> +skip_execution:
> if (bufmgr_gem->bufmgr.debug)
> drm_intel_gem_dump_validation_list(bufmgr_gem);
>
> @@ -2315,6 +2321,45 @@ drm_intel_bufmgr_gem_set_vma_cache_size(drm_intel_bufmgr *bufmgr, int limit)
> }
>
> /**
> + * Get the PCI ID for the device. This can be overridden by setting the
> + * INTEL_DEVID_OVERRIDE environment variable to the desired ID.
> + */
> +static int
> +get_pci_device_id(drm_intel_bufmgr_gem *bufmgr_gem)
> +{
> + char *devid_override;
> + int devid;
> + int ret;
> + drm_i915_getparam_t gp;
> +
> + if (geteuid() == getuid()) {
> + devid_override = getenv("INTEL_DEVID_OVERRIDE");
> + if (devid_override) {
> + bufmgr_gem->no_exec = true;
> + return strtod(devid_override, NULL);
> + }
> + }
> +
> + VG_CLEAR(gp);
> + gp.param = I915_PARAM_CHIPSET_ID;
> + gp.value = &devid;
> + ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
> + if (ret) {
> + fprintf(stderr, "get chip id failed: %d [%d]\n", ret, errno);
> + fprintf(stderr, "param: %d, val: %d\n", gp.param, *gp.value);
> + }
> + return devid;
> +}
> +
> +int
> +drm_intel_bufmgr_gem_get_devid(drm_intel_bufmgr *bufmgr)
> +{
> + drm_intel_bufmgr_gem *bufmgr_gem = (drm_intel_bufmgr_gem *)bufmgr;
> +
> + return bufmgr_gem->pci_device;
> +}
> +
> +/**
> * Initializes the GEM buffer manager, which uses the kernel to allocate, map,
> * and manage map buffer objections.
> *
> @@ -2356,14 +2401,7 @@ drm_intel_bufmgr_gem_init(int fd, int batch_size)
> (int)bufmgr_gem->gtt_size / 1024);
> }
>
> - VG_CLEAR(gp);
> - gp.param = I915_PARAM_CHIPSET_ID;
> - gp.value = &bufmgr_gem->pci_device;
> - ret = drmIoctl(bufmgr_gem->fd, DRM_IOCTL_I915_GETPARAM, &gp);
> - if (ret) {
> - fprintf(stderr, "get chip id failed: %d [%d]\n", ret, errno);
> - fprintf(stderr, "param: %d, val: %d\n", gp.param, *gp.value);
> - }
> + bufmgr_gem->pci_device = get_pci_device_id(bufmgr_gem);
>
> if (IS_GEN2(bufmgr_gem->pci_device))
> bufmgr_gem->gen = 2;
> --
> 1.7.9.1
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2012-03-08 2:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-07 19:21 [PATCH 1/2] intel: Add support for overriding the PCI ID via an environment variable Eric Anholt
2012-03-07 19:21 ` [PATCH 2/2] intel: Add .aub file output support Eric Anholt
2012-03-08 2:51 ` Yuanhan Liu
2012-03-08 19:14 ` Kenneth Graunke
2012-03-09 3:53 ` Yuanhan Liu
2012-03-08 9:13 ` Paul Menzel
2012-03-08 18:43 ` Eric Anholt
2012-03-08 2:35 ` Yuanhan Liu [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-02-21 20:59 [PATCH 1/2] intel: Add support for overriding the PCI ID via an environment variable Kenneth Graunke
2012-02-21 21:11 ` Chris Wilson
2012-02-21 22:42 ` Kenneth Graunke
2012-02-22 8:05 ` Daniel Vetter
2012-02-21 22:43 ` Ben Widawsky
2012-03-03 15:22 ` Julien Cristau
2012-03-05 23:18 ` Eric Anholt
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=20120308023516.GS17001@yliu-dev.sh.intel.com \
--to=yuanhan.liu@linux.intel.com \
--cc=eric@anholt.net \
--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.