* [PATCH 0/2] drm/i915: VLV GT wake FIFO stuff
@ 2013-11-13 23:59 ville.syrjala
2013-11-13 23:59 ` [PATCH 1/2] drm/i915: Report all GTFIFODBG errors ville.syrjala
2013-11-14 0:00 ` [PATCH 2/2] drm/i915: Fix GT wake FIFO free entries for VLV ville.syrjala
0 siblings, 2 replies; 10+ messages in thread
From: ville.syrjala @ 2013-11-13 23:59 UTC (permalink / raw)
To: intel-gfx
The registers for monitoring the GT wake FIFO have some extra stuff on
VLV. This series tries to fix the code to handle those extra bits slightly
better.
Just compile tested.
Ville Syrjälä (2):
drm/i915: Report all GTFIFODBG errors
drm/i915: Fix GT wake FIFO free entries for VLV
drivers/gpu/drm/i915/i915_reg.h | 8 ++++++--
drivers/gpu/drm/i915/intel_uncore.c | 11 +++++------
2 files changed, 11 insertions(+), 8 deletions(-)
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 1/2] drm/i915: Report all GTFIFODBG errors
2013-11-13 23:59 [PATCH 0/2] drm/i915: VLV GT wake FIFO stuff ville.syrjala
@ 2013-11-13 23:59 ` ville.syrjala
2013-11-14 12:54 ` Mika Kuoppala
2013-11-14 0:00 ` [PATCH 2/2] drm/i915: Fix GT wake FIFO free entries for VLV ville.syrjala
1 sibling, 1 reply; 10+ messages in thread
From: ville.syrjala @ 2013-11-13 23:59 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
On VLV GTFIFODBG has more bits. Just report them all.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/i915_reg.h | 5 ++++-
drivers/gpu/drm/i915/intel_uncore.c | 5 ++---
2 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 849e595..e8f47de 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -4852,7 +4852,10 @@
#define FORCEWAKE_MT_ENABLE (1<<5)
#define GTFIFODBG 0x120000
-#define GT_FIFO_CPU_ERROR_MASK 7
+#define GT_FIFO_SBDROPERR (1<<6)
+#define GT_FIFO_BLOBDROPERR (1<<5)
+#define GT_FIFO_SB_READ_ABORTERR (1<<4)
+#define GT_FIFO_DROPERR (1<<3)
#define GT_FIFO_OVFERR (1<<2)
#define GT_FIFO_IAWRERR (1<<1)
#define GT_FIFO_IARDERR (1<<0)
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 0edabbb..a9849ab 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -121,9 +121,8 @@ static void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv)
u32 gtfifodbg;
gtfifodbg = __raw_i915_read32(dev_priv, GTFIFODBG);
- if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK,
- "MMIO read or write has been dropped %x\n", gtfifodbg))
- __raw_i915_write32(dev_priv, GTFIFODBG, GT_FIFO_CPU_ERROR_MASK);
+ if (WARN(gtfifodbg, "GT wake FIFO error 0x%x\n", gtfifodbg))
+ __raw_i915_write32(dev_priv, GTFIFODBG, gtfifodbg);
}
static void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
--
1.8.1.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/2] drm/i915: Fix GT wake FIFO free entries for VLV
2013-11-13 23:59 [PATCH 0/2] drm/i915: VLV GT wake FIFO stuff ville.syrjala
2013-11-13 23:59 ` [PATCH 1/2] drm/i915: Report all GTFIFODBG errors ville.syrjala
@ 2013-11-14 0:00 ` ville.syrjala
2013-11-27 17:04 ` Jesse Barnes
1 sibling, 1 reply; 10+ messages in thread
From: ville.syrjala @ 2013-11-14 0:00 UTC (permalink / raw)
To: intel-gfx
From: Ville Syrjälä <ville.syrjala@linux.intel.com>
On VLV the GTFIFOCTL register has other bits besides the number of free
entries in the GT wake FIFO. Apply a mask when we read th register to
make sure we don't misinterpret the number of free FIFO entries.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
---
drivers/gpu/drm/i915/i915_reg.h | 3 ++-
drivers/gpu/drm/i915/intel_uncore.c | 6 +++---
2 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index e8f47de..e243105 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -4860,7 +4860,8 @@
#define GT_FIFO_IAWRERR (1<<1)
#define GT_FIFO_IARDERR (1<<0)
-#define GT_FIFO_FREE_ENTRIES 0x120008
+#define GTFIFOCTL 0x120008
+#define GT_FIFO_FREE_ENTRIES_MASK 0x7f
#define GT_FIFO_NUM_RESERVED_ENTRIES 20
#define HSW_IDICR 0x9008
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index a9849ab..71902c4 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -148,10 +148,10 @@ static int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv)
if (dev_priv->uncore.fifo_count < GT_FIFO_NUM_RESERVED_ENTRIES) {
int loop = 500;
- u32 fifo = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
+ u32 fifo = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
while (fifo <= GT_FIFO_NUM_RESERVED_ENTRIES && loop--) {
udelay(10);
- fifo = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
+ fifo = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
}
if (WARN_ON(loop < 0 && fifo <= GT_FIFO_NUM_RESERVED_ENTRIES))
++ret;
@@ -806,7 +806,7 @@ static int gen6_do_reset(struct drm_device *dev)
dev_priv->uncore.funcs.force_wake_put(dev_priv);
/* Restore fifo count */
- dev_priv->uncore.fifo_count = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
+ dev_priv->uncore.fifo_count = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
return ret;
--
1.8.1.5
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Report all GTFIFODBG errors
2013-11-13 23:59 ` [PATCH 1/2] drm/i915: Report all GTFIFODBG errors ville.syrjala
@ 2013-11-14 12:54 ` Mika Kuoppala
2013-11-14 17:09 ` Ville Syrjälä
0 siblings, 1 reply; 10+ messages in thread
From: Mika Kuoppala @ 2013-11-14 12:54 UTC (permalink / raw)
To: ville.syrjala, intel-gfx
ville.syrjala@linux.intel.com writes:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> On VLV GTFIFODBG has more bits. Just report them all.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_reg.h | 5 ++++-
> drivers/gpu/drm/i915/intel_uncore.c | 5 ++---
> 2 files changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index 849e595..e8f47de 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -4852,7 +4852,10 @@
> #define FORCEWAKE_MT_ENABLE (1<<5)
>
> #define GTFIFODBG 0x120000
> -#define GT_FIFO_CPU_ERROR_MASK 7
> +#define GT_FIFO_SBDROPERR (1<<6)
> +#define GT_FIFO_BLOBDROPERR (1<<5)
> +#define GT_FIFO_SB_READ_ABORTERR (1<<4)
> +#define GT_FIFO_DROPERR (1<<3)
> #define GT_FIFO_OVFERR (1<<2)
> #define GT_FIFO_IAWRERR (1<<1)
> #define GT_FIFO_IARDERR (1<<0)
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 0edabbb..a9849ab 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -121,9 +121,8 @@ static void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv)
> u32 gtfifodbg;
>
> gtfifodbg = __raw_i915_read32(dev_priv, GTFIFODBG);
> - if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK,
> - "MMIO read or write has been dropped %x\n", gtfifodbg))
> - __raw_i915_write32(dev_priv, GTFIFODBG, GT_FIFO_CPU_ERROR_MASK);
> + if (WARN(gtfifodbg, "GT wake FIFO error 0x%x\n", gtfifodbg))
I think you still need mask, there are ro fields != 0 in the same
register.
-Mika
> + __raw_i915_write32(dev_priv, GTFIFODBG, gtfifodbg);
> }
>
> static void __gen6_gt_force_wake_put(struct drm_i915_private *dev_priv)
> --
> 1.8.1.5
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Report all GTFIFODBG errors
2013-11-14 12:54 ` Mika Kuoppala
@ 2013-11-14 17:09 ` Ville Syrjälä
2013-11-18 15:13 ` Ville Syrjälä
0 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2013-11-14 17:09 UTC (permalink / raw)
To: Mika Kuoppala; +Cc: intel-gfx
On Thu, Nov 14, 2013 at 02:54:10PM +0200, Mika Kuoppala wrote:
> ville.syrjala@linux.intel.com writes:
>
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > On VLV GTFIFODBG has more bits. Just report them all.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/i915_reg.h | 5 ++++-
> > drivers/gpu/drm/i915/intel_uncore.c | 5 ++---
> > 2 files changed, 6 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index 849e595..e8f47de 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -4852,7 +4852,10 @@
> > #define FORCEWAKE_MT_ENABLE (1<<5)
> >
> > #define GTFIFODBG 0x120000
> > -#define GT_FIFO_CPU_ERROR_MASK 7
> > +#define GT_FIFO_SBDROPERR (1<<6)
> > +#define GT_FIFO_BLOBDROPERR (1<<5)
> > +#define GT_FIFO_SB_READ_ABORTERR (1<<4)
> > +#define GT_FIFO_DROPERR (1<<3)
> > #define GT_FIFO_OVFERR (1<<2)
> > #define GT_FIFO_IAWRERR (1<<1)
> > #define GT_FIFO_IARDERR (1<<0)
> > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> > index 0edabbb..a9849ab 100644
> > --- a/drivers/gpu/drm/i915/intel_uncore.c
> > +++ b/drivers/gpu/drm/i915/intel_uncore.c
> > @@ -121,9 +121,8 @@ static void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv)
> > u32 gtfifodbg;
> >
> > gtfifodbg = __raw_i915_read32(dev_priv, GTFIFODBG);
> > - if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK,
> > - "MMIO read or write has been dropped %x\n", gtfifodbg))
> > - __raw_i915_write32(dev_priv, GTFIFODBG, GT_FIFO_CPU_ERROR_MASK);
> > + if (WARN(gtfifodbg, "GT wake FIFO error 0x%x\n", gtfifodbg))
>
> I think you still need mask, there are ro fields != 0 in the same
> register.
Which bits? VLV has those seven low bits, others just three low bits
AFAICS.
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Report all GTFIFODBG errors
2013-11-14 17:09 ` Ville Syrjälä
@ 2013-11-18 15:13 ` Ville Syrjälä
2013-11-20 17:14 ` Ville Syrjälä
0 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2013-11-18 15:13 UTC (permalink / raw)
To: Mika Kuoppala; +Cc: intel-gfx
On Thu, Nov 14, 2013 at 07:09:48PM +0200, Ville Syrjälä wrote:
> On Thu, Nov 14, 2013 at 02:54:10PM +0200, Mika Kuoppala wrote:
> > ville.syrjala@linux.intel.com writes:
> >
> > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > >
> > > On VLV GTFIFODBG has more bits. Just report them all.
> > >
> > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > ---
> > > drivers/gpu/drm/i915/i915_reg.h | 5 ++++-
> > > drivers/gpu/drm/i915/intel_uncore.c | 5 ++---
> > > 2 files changed, 6 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > > index 849e595..e8f47de 100644
> > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > @@ -4852,7 +4852,10 @@
> > > #define FORCEWAKE_MT_ENABLE (1<<5)
> > >
> > > #define GTFIFODBG 0x120000
> > > -#define GT_FIFO_CPU_ERROR_MASK 7
> > > +#define GT_FIFO_SBDROPERR (1<<6)
> > > +#define GT_FIFO_BLOBDROPERR (1<<5)
> > > +#define GT_FIFO_SB_READ_ABORTERR (1<<4)
> > > +#define GT_FIFO_DROPERR (1<<3)
> > > #define GT_FIFO_OVFERR (1<<2)
> > > #define GT_FIFO_IAWRERR (1<<1)
> > > #define GT_FIFO_IARDERR (1<<0)
> > > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> > > index 0edabbb..a9849ab 100644
> > > --- a/drivers/gpu/drm/i915/intel_uncore.c
> > > +++ b/drivers/gpu/drm/i915/intel_uncore.c
> > > @@ -121,9 +121,8 @@ static void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv)
> > > u32 gtfifodbg;
> > >
> > > gtfifodbg = __raw_i915_read32(dev_priv, GTFIFODBG);
> > > - if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK,
> > > - "MMIO read or write has been dropped %x\n", gtfifodbg))
> > > - __raw_i915_write32(dev_priv, GTFIFODBG, GT_FIFO_CPU_ERROR_MASK);
> > > + if (WARN(gtfifodbg, "GT wake FIFO error 0x%x\n", gtfifodbg))
> >
> > I think you still need mask, there are ro fields != 0 in the same
> > register.
>
> Which bits? VLV has those seven low bits, others just three low bits
> AFAICS.
OK, so the problem is that bspec seems to list some bogus junk for these
registers. The gunit register HAS is what I used to write these patches.
Someone with a VLV on their hands should double check whether real
hardware agrees with the gunit register HAS. Any volunteers?
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Report all GTFIFODBG errors
2013-11-18 15:13 ` Ville Syrjälä
@ 2013-11-20 17:14 ` Ville Syrjälä
2013-11-27 16:53 ` Jesse Barnes
0 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2013-11-20 17:14 UTC (permalink / raw)
To: Mika Kuoppala; +Cc: intel-gfx
On Mon, Nov 18, 2013 at 05:13:19PM +0200, Ville Syrjälä wrote:
> On Thu, Nov 14, 2013 at 07:09:48PM +0200, Ville Syrjälä wrote:
> > On Thu, Nov 14, 2013 at 02:54:10PM +0200, Mika Kuoppala wrote:
> > > ville.syrjala@linux.intel.com writes:
> > >
> > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > >
> > > > On VLV GTFIFODBG has more bits. Just report them all.
> > > >
> > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > ---
> > > > drivers/gpu/drm/i915/i915_reg.h | 5 ++++-
> > > > drivers/gpu/drm/i915/intel_uncore.c | 5 ++---
> > > > 2 files changed, 6 insertions(+), 4 deletions(-)
> > > >
> > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > > > index 849e595..e8f47de 100644
> > > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > > @@ -4852,7 +4852,10 @@
> > > > #define FORCEWAKE_MT_ENABLE (1<<5)
> > > >
> > > > #define GTFIFODBG 0x120000
> > > > -#define GT_FIFO_CPU_ERROR_MASK 7
> > > > +#define GT_FIFO_SBDROPERR (1<<6)
> > > > +#define GT_FIFO_BLOBDROPERR (1<<5)
> > > > +#define GT_FIFO_SB_READ_ABORTERR (1<<4)
> > > > +#define GT_FIFO_DROPERR (1<<3)
> > > > #define GT_FIFO_OVFERR (1<<2)
> > > > #define GT_FIFO_IAWRERR (1<<1)
> > > > #define GT_FIFO_IARDERR (1<<0)
> > > > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> > > > index 0edabbb..a9849ab 100644
> > > > --- a/drivers/gpu/drm/i915/intel_uncore.c
> > > > +++ b/drivers/gpu/drm/i915/intel_uncore.c
> > > > @@ -121,9 +121,8 @@ static void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv)
> > > > u32 gtfifodbg;
> > > >
> > > > gtfifodbg = __raw_i915_read32(dev_priv, GTFIFODBG);
> > > > - if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK,
> > > > - "MMIO read or write has been dropped %x\n", gtfifodbg))
> > > > - __raw_i915_write32(dev_priv, GTFIFODBG, GT_FIFO_CPU_ERROR_MASK);
> > > > + if (WARN(gtfifodbg, "GT wake FIFO error 0x%x\n", gtfifodbg))
> > >
> > > I think you still need mask, there are ro fields != 0 in the same
> > > register.
> >
> > Which bits? VLV has those seven low bits, others just three low bits
> > AFAICS.
>
> OK, so the problem is that bspec seems to list some bogus junk for these
> registers. The gunit register HAS is what I used to write these patches.
> Someone with a VLV on their hands should double check whether real
> hardware agrees with the gunit register HAS. Any volunteers?
Imre had a look on his VLV the other day, and the register contents seemed
to match the Gunit register HAS. So I think these patches should be doing
the right thing.
--
Ville Syrjälä
Intel OTC
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 1/2] drm/i915: Report all GTFIFODBG errors
2013-11-20 17:14 ` Ville Syrjälä
@ 2013-11-27 16:53 ` Jesse Barnes
0 siblings, 0 replies; 10+ messages in thread
From: Jesse Barnes @ 2013-11-27 16:53 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: intel-gfx
On Wed, 20 Nov 2013 19:14:17 +0200
Ville Syrjälä <ville.syrjala@linux.intel.com> wrote:
> On Mon, Nov 18, 2013 at 05:13:19PM +0200, Ville Syrjälä wrote:
> > On Thu, Nov 14, 2013 at 07:09:48PM +0200, Ville Syrjälä wrote:
> > > On Thu, Nov 14, 2013 at 02:54:10PM +0200, Mika Kuoppala wrote:
> > > > ville.syrjala@linux.intel.com writes:
> > > >
> > > > > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > >
> > > > > On VLV GTFIFODBG has more bits. Just report them all.
> > > > >
> > > > > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > > > ---
> > > > > drivers/gpu/drm/i915/i915_reg.h | 5 ++++-
> > > > > drivers/gpu/drm/i915/intel_uncore.c | 5 ++---
> > > > > 2 files changed, 6 insertions(+), 4 deletions(-)
> > > > >
> > > > > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > > > > index 849e595..e8f47de 100644
> > > > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > > > @@ -4852,7 +4852,10 @@
> > > > > #define FORCEWAKE_MT_ENABLE (1<<5)
> > > > >
> > > > > #define GTFIFODBG 0x120000
> > > > > -#define GT_FIFO_CPU_ERROR_MASK 7
> > > > > +#define GT_FIFO_SBDROPERR (1<<6)
> > > > > +#define GT_FIFO_BLOBDROPERR (1<<5)
> > > > > +#define GT_FIFO_SB_READ_ABORTERR (1<<4)
> > > > > +#define GT_FIFO_DROPERR (1<<3)
> > > > > #define GT_FIFO_OVFERR (1<<2)
> > > > > #define GT_FIFO_IAWRERR (1<<1)
> > > > > #define GT_FIFO_IARDERR (1<<0)
> > > > > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> > > > > index 0edabbb..a9849ab 100644
> > > > > --- a/drivers/gpu/drm/i915/intel_uncore.c
> > > > > +++ b/drivers/gpu/drm/i915/intel_uncore.c
> > > > > @@ -121,9 +121,8 @@ static void gen6_gt_check_fifodbg(struct drm_i915_private *dev_priv)
> > > > > u32 gtfifodbg;
> > > > >
> > > > > gtfifodbg = __raw_i915_read32(dev_priv, GTFIFODBG);
> > > > > - if (WARN(gtfifodbg & GT_FIFO_CPU_ERROR_MASK,
> > > > > - "MMIO read or write has been dropped %x\n", gtfifodbg))
> > > > > - __raw_i915_write32(dev_priv, GTFIFODBG, GT_FIFO_CPU_ERROR_MASK);
> > > > > + if (WARN(gtfifodbg, "GT wake FIFO error 0x%x\n", gtfifodbg))
> > > >
> > > > I think you still need mask, there are ro fields != 0 in the same
> > > > register.
> > >
> > > Which bits? VLV has those seven low bits, others just three low bits
> > > AFAICS.
> >
> > OK, so the problem is that bspec seems to list some bogus junk for these
> > registers. The gunit register HAS is what I used to write these patches.
> > Someone with a VLV on their hands should double check whether real
> > hardware agrees with the gunit register HAS. Any volunteers?
>
> Imre had a look on his VLV the other day, and the register contents seemed
> to match the Gunit register HAS. So I think these patches should be doing
> the right thing.
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
--
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] drm/i915: Fix GT wake FIFO free entries for VLV
2013-11-14 0:00 ` [PATCH 2/2] drm/i915: Fix GT wake FIFO free entries for VLV ville.syrjala
@ 2013-11-27 17:04 ` Jesse Barnes
2013-11-27 17:16 ` Daniel Vetter
0 siblings, 1 reply; 10+ messages in thread
From: Jesse Barnes @ 2013-11-27 17:04 UTC (permalink / raw)
To: ville.syrjala; +Cc: intel-gfx
On Thu, 14 Nov 2013 02:00:00 +0200
ville.syrjala@linux.intel.com wrote:
> From: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> On VLV the GTFIFOCTL register has other bits besides the number of free
> entries in the GT wake FIFO. Apply a mask when we read th register to
> make sure we don't misinterpret the number of free FIFO entries.
>
> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_reg.h | 3 ++-
> drivers/gpu/drm/i915/intel_uncore.c | 6 +++---
> 2 files changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index e8f47de..e243105 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -4860,7 +4860,8 @@
> #define GT_FIFO_IAWRERR (1<<1)
> #define GT_FIFO_IARDERR (1<<0)
>
> -#define GT_FIFO_FREE_ENTRIES 0x120008
> +#define GTFIFOCTL 0x120008
> +#define GT_FIFO_FREE_ENTRIES_MASK 0x7f
> #define GT_FIFO_NUM_RESERVED_ENTRIES 20
>
> #define HSW_IDICR 0x9008
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index a9849ab..71902c4 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -148,10 +148,10 @@ static int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv)
>
> if (dev_priv->uncore.fifo_count < GT_FIFO_NUM_RESERVED_ENTRIES) {
> int loop = 500;
> - u32 fifo = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
> + u32 fifo = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
> while (fifo <= GT_FIFO_NUM_RESERVED_ENTRIES && loop--) {
> udelay(10);
> - fifo = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
> + fifo = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
> }
> if (WARN_ON(loop < 0 && fifo <= GT_FIFO_NUM_RESERVED_ENTRIES))
> ++ret;
> @@ -806,7 +806,7 @@ static int gen6_do_reset(struct drm_device *dev)
> dev_priv->uncore.funcs.force_wake_put(dev_priv);
>
> /* Restore fifo count */
> - dev_priv->uncore.fifo_count = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
> + dev_priv->uncore.fifo_count = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
>
> spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
> return ret;
I don't see this reg on HSW, but it looks like our HSW code uses this
routine?
Assuming the spec is just broken today... at least I see it for other
gens.
Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
--
Jesse Barnes, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/2] drm/i915: Fix GT wake FIFO free entries for VLV
2013-11-27 17:04 ` Jesse Barnes
@ 2013-11-27 17:16 ` Daniel Vetter
0 siblings, 0 replies; 10+ messages in thread
From: Daniel Vetter @ 2013-11-27 17:16 UTC (permalink / raw)
To: Jesse Barnes; +Cc: intel-gfx
On Wed, Nov 27, 2013 at 09:04:38AM -0800, Jesse Barnes wrote:
> On Thu, 14 Nov 2013 02:00:00 +0200
> ville.syrjala@linux.intel.com wrote:
>
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > On VLV the GTFIFOCTL register has other bits besides the number of free
> > entries in the GT wake FIFO. Apply a mask when we read th register to
> > make sure we don't misinterpret the number of free FIFO entries.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > ---
> > drivers/gpu/drm/i915/i915_reg.h | 3 ++-
> > drivers/gpu/drm/i915/intel_uncore.c | 6 +++---
> > 2 files changed, 5 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> > index e8f47de..e243105 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -4860,7 +4860,8 @@
> > #define GT_FIFO_IAWRERR (1<<1)
> > #define GT_FIFO_IARDERR (1<<0)
> >
> > -#define GT_FIFO_FREE_ENTRIES 0x120008
> > +#define GTFIFOCTL 0x120008
> > +#define GT_FIFO_FREE_ENTRIES_MASK 0x7f
> > #define GT_FIFO_NUM_RESERVED_ENTRIES 20
> >
> > #define HSW_IDICR 0x9008
> > diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> > index a9849ab..71902c4 100644
> > --- a/drivers/gpu/drm/i915/intel_uncore.c
> > +++ b/drivers/gpu/drm/i915/intel_uncore.c
> > @@ -148,10 +148,10 @@ static int __gen6_gt_wait_for_fifo(struct drm_i915_private *dev_priv)
> >
> > if (dev_priv->uncore.fifo_count < GT_FIFO_NUM_RESERVED_ENTRIES) {
> > int loop = 500;
> > - u32 fifo = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
> > + u32 fifo = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
> > while (fifo <= GT_FIFO_NUM_RESERVED_ENTRIES && loop--) {
> > udelay(10);
> > - fifo = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
> > + fifo = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
> > }
> > if (WARN_ON(loop < 0 && fifo <= GT_FIFO_NUM_RESERVED_ENTRIES))
> > ++ret;
> > @@ -806,7 +806,7 @@ static int gen6_do_reset(struct drm_device *dev)
> > dev_priv->uncore.funcs.force_wake_put(dev_priv);
> >
> > /* Restore fifo count */
> > - dev_priv->uncore.fifo_count = __raw_i915_read32(dev_priv, GT_FIFO_FREE_ENTRIES);
> > + dev_priv->uncore.fifo_count = __raw_i915_read32(dev_priv, GTFIFOCTL) & GT_FIFO_FREE_ENTRIES_MASK;
> >
> > spin_unlock_irqrestore(&dev_priv->uncore.lock, irqflags);
> > return ret;
>
> I don't see this reg on HSW, but it looks like our HSW code uses this
> routine?
>
> Assuming the spec is just broken today... at least I see it for other
> gens.
>
> Reviewed-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Both merged with a little note about this one here. We can back it out
again ;-)
Thanks, Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-11-27 17:15 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-11-13 23:59 [PATCH 0/2] drm/i915: VLV GT wake FIFO stuff ville.syrjala
2013-11-13 23:59 ` [PATCH 1/2] drm/i915: Report all GTFIFODBG errors ville.syrjala
2013-11-14 12:54 ` Mika Kuoppala
2013-11-14 17:09 ` Ville Syrjälä
2013-11-18 15:13 ` Ville Syrjälä
2013-11-20 17:14 ` Ville Syrjälä
2013-11-27 16:53 ` Jesse Barnes
2013-11-14 0:00 ` [PATCH 2/2] drm/i915: Fix GT wake FIFO free entries for VLV ville.syrjala
2013-11-27 17:04 ` Jesse Barnes
2013-11-27 17:16 ` Daniel Vetter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox