Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1506382
| Path | csiph.com!news.redatomik.org!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Zhenyu Wang <zhenyuw@linux.intel.com> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH 2/2] drm/i915/gvt: fix compilation |
| Date | Sat, 22 Oct 2016 07:20:01 +0200 |
| Message-ID | <suWSR-7yB-3@gated-at.bofh.it> (permalink) |
| References | <suJVD-7tM-9@gated-at.bofh.it> <suJVE-7tM-21@gated-at.bofh.it> |
| X-Extloop1 | 1 |
| X-Ironport-Av | E=Sophos;i="5.31,528,1473145200"; d="asc'?scan'208";a="22434404" |
| Reply-To | Zhenyu Wang <zhenyuw@linux.intel.com> |
| MIME-Version | 1.0 |
| Content-Type | multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="3igqbrlx5uzdqk73" |
| Content-Disposition | inline |
| User-Agent | NeoMutt/20160910 (1.7.0) |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 148 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | Daniel Vetter <daniel.vetter@intel.com>, Jani Nikula <jani.nikula@linux.intel.com>, Zhi Wang <zhi.a.wang@intel.com>, Zhenyu Wang <zhenyuw@linux.intel.com>, David Airlie <airlied@linux.ie>, Chris Wilson <chris@chris-wilson.co.uk>, igvt-g-dev@lists.01.org, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org |
| X-Original-Date | Sat, 22 Oct 2016 13:09:41 +0800 |
| X-Original-Message-ID | <20161022050941.q2wrkwqwob3izklg@zhen-hp.sh.intel.com> |
| X-Original-References | <20161021152620.3324407-1-arnd@arndb.de> <20161021152620.3324407-2-arnd@arndb.de> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1506382 |
Show key headers only | View raw
[Multipart message — attachments visible in raw view] - view raw
On 2016.10.21 17:25:50 +0200, Arnd Bergmann wrote:
> Two functions in the newly added gvt render code are obviously
> broken, as they reference a variable without initialization and
> don't reference another variable at all:
>
> drivers/gpu/drm/i915/gvt/render.c: In function ???intel_gvt_load_render_mmio???:
> drivers/gpu/drm/i915/gvt/render.c:148:13: error: ???offset.reg??? may be used uninitialized in this function [-Werror=maybe-uninitialized]
> drivers/gpu/drm/i915/gvt/render.c: In function ???intel_gvt_restore_render_mmio???:
> drivers/gpu/drm/i915/gvt/render.c:185:13: error: ???offset.reg??? may be used uninitialized in this function [-Werror=maybe-uninitialized]
>
> This is probably not a correct fix, but it gets us a clean build
> by removing the unused arrays and initializing the offset variable
> to something that potentially might be correct.
>
> Fixes: 178657139307 ("drm/i915/gvt: vGPU context switch")
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
I think the correct fix is like
diff --git a/drivers/gpu/drm/i915/gvt/render.c b/drivers/gpu/drm/i915/gvt/render.c
index feebb65..cc23c3f 100644
--- a/drivers/gpu/drm/i915/gvt/render.c
+++ b/drivers/gpu/drm/i915/gvt/render.c
@@ -162,6 +162,7 @@ static void load_mocs(struct intel_vgpu *vgpu, int ring_id)
if (!IS_SKYLAKE(dev_priv))
return;
+ offset.reg = regs[ring_id];
for (i = 0; i < 64; i++) {
gen9_render_mocs[ring_id][i] = I915_READ(offset);
I915_WRITE(offset, vgpu_vreg(vgpu, offset));
@@ -199,6 +200,7 @@ static void restore_mocs(struct intel_vgpu *vgpu, int ring_id)
if (!IS_SKYLAKE(dev_priv))
return;
+ offset.reg = regs[ring_id];
for (i = 0; i < 64; i++) {
vgpu_vreg(vgpu, offset) = I915_READ(offset);
I915_WRITE(offset, gen9_render_mocs[ring_id][i]);
Thanks for pointing this out, it's a mistake during our code preparation for upstream.
I'll queue this up.
> drivers/gpu/drm/i915/gvt/render.c | 25 +++----------------------
> 1 file changed, 3 insertions(+), 22 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gvt/render.c b/drivers/gpu/drm/i915/gvt/render.c
> index feebb65ba641..79e112288065 100644
> --- a/drivers/gpu/drm/i915/gvt/render.c
> +++ b/drivers/gpu/drm/i915/gvt/render.c
> @@ -147,29 +147,20 @@ static void load_mocs(struct intel_vgpu *vgpu, int ring_id)
> {
> struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
> i915_reg_t offset, l3_offset;
> - u32 regs[] = {
> - [RCS] = 0xc800,
> - [VCS] = 0xc900,
> - [VCS2] = 0xca00,
> - [BCS] = 0xcc00,
> - [VECS] = 0xcb00,
> - };
> int i;
>
> - if (WARN_ON(ring_id >= ARRAY_SIZE(regs)))
> - return;
> -
> if (!IS_SKYLAKE(dev_priv))
> return;
>
> for (i = 0; i < 64; i++) {
> + offset.reg = i * 4;
> gen9_render_mocs[ring_id][i] = I915_READ(offset);
> I915_WRITE(offset, vgpu_vreg(vgpu, offset));
> POSTING_READ(offset);
> - offset.reg += 4;
> }
>
> if (ring_id == RCS) {
> + offset.reg = 64 * 4;
> l3_offset.reg = 0xb020;
> for (i = 0; i < 32; i++) {
> gen9_render_mocs_L3[i] = I915_READ(l3_offset);
> @@ -184,26 +175,16 @@ static void restore_mocs(struct intel_vgpu *vgpu, int ring_id)
> {
> struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
> i915_reg_t offset, l3_offset;
> - u32 regs[] = {
> - [RCS] = 0xc800,
> - [VCS] = 0xc900,
> - [VCS2] = 0xca00,
> - [BCS] = 0xcc00,
> - [VECS] = 0xcb00,
> - };
> int i;
>
> - if (WARN_ON(ring_id >= ARRAY_SIZE(regs)))
> - return;
> -
> if (!IS_SKYLAKE(dev_priv))
> return;
>
> for (i = 0; i < 64; i++) {
> + offset.reg = i * 4;
> vgpu_vreg(vgpu, offset) = I915_READ(offset);
> I915_WRITE(offset, gen9_render_mocs[ring_id][i]);
> POSTING_READ(offset);
> - offset.reg += 4;
> }
>
> if (ring_id == RCS) {
> --
> 2.9.0
>
--
Open Source Technology Center, Intel ltd.
$gpg --keyserver wwwkeys.pgp.net --recv-keys 4D781827
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH 1/2] drm/i915/gvt: add ACPI and 64BIT dependencies Arnd Bergmann <arnd@arndb.de> - 2016-10-21 17:30 +0200
[PATCH 2/2] drm/i915/gvt: fix compilation Arnd Bergmann <arnd@arndb.de> - 2016-10-21 17:30 +0200
Re: [PATCH 2/2] drm/i915/gvt: fix compilation Zhenyu Wang <zhenyuw@linux.intel.com> - 2016-10-22 07:20 +0200
Re: [PATCH 1/2] drm/i915/gvt: add ACPI and 64BIT dependencies Zhenyu Wang <zhenyuw@linux.intel.com> - 2016-10-22 07:20 +0200
csiph-web