diff mbox

[v2] drm/i915: Introduce HAS_64BIT_RELOC

Message ID 1478091336-19820-1-git-send-email-joonas.lahtinen@linux.intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Joonas Lahtinen Nov. 2, 2016, 12:55 p.m. UTC
Move has_64bit_reloc into dev_priv->info.

v2:
- Keep the struct member to keep GCC fragile but happy (Chris)

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h              | 3 +++
 drivers/gpu/drm/i915/i915_gem_execbuffer.c   | 3 ++-
 drivers/gpu/drm/i915/i915_gem_render_state.c | 3 +--
 drivers/gpu/drm/i915/i915_pci.c              | 3 ++-
 4 files changed, 8 insertions(+), 4 deletions(-)

Comments

Chris Wilson Nov. 2, 2016, 1:25 p.m. UTC | #1
On Wed, Nov 02, 2016 at 02:55:36PM +0200, Joonas Lahtinen wrote:
> Move has_64bit_reloc into dev_priv->info.

... so that it is shown in the feature list for debugging

> 
> v2:
> - Keep the struct member to keep GCC fragile but happy (Chris)
> 
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> ---
> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
> index 31e6edd..9d2b5d3 100644
> --- a/drivers/gpu/drm/i915/i915_pci.c
> +++ b/drivers/gpu/drm/i915/i915_pci.c
> @@ -288,7 +288,8 @@ static const struct intel_device_info intel_haswell_info = {
>  #define BDW_FEATURES \
>  	HSW_FEATURES, \
>  	BDW_COLORS, \
> -	.has_logical_ring_contexts = 1
> +	.has_logical_ring_contexts = 1, \
> +	.has_64bit_reloc = 1
>  
>  static const struct intel_device_info intel_broadwell_info = {
>  	BDW_FEATURES,

Missed:
	intel_cherryview_info
	intel_broxton_info
Joonas Lahtinen Nov. 2, 2016, 3 p.m. UTC | #2
On ke, 2016-11-02 at 13:25 +0000, Chris Wilson wrote:
> On Wed, Nov 02, 2016 at 02:55:36PM +0200, Joonas Lahtinen wrote:
> > 
> > Move has_64bit_reloc into dev_priv->info.
> 
> ... so that it is shown in the feature list for debugging

Ok, I'll add more detail.

> > @@ -288,7 +288,8 @@ static const struct intel_device_info intel_haswell_info = {
> >  #define BDW_FEATURES \
> >  	HSW_FEATURES, \
> >  	BDW_COLORS, \
> > -	.has_logical_ring_contexts = 1
> > +	.has_logical_ring_contexts = 1, \
> > +	.has_64bit_reloc = 1
> >  
> >  static const struct intel_device_info intel_broadwell_info = {
> >  	BDW_FEATURES,
> 
> Missed:
> 	intel_cherryview_info
> 	intel_broxton_info

Yea, I was kinda overly optimistic about us cascading the features.
Time to add GEN8_FEATURES...

Regards, Joonas
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index eaa01da..ae0217d 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -670,6 +670,7 @@  struct intel_csr {
 	func(is_kabylake); \
 	func(is_preliminary); \
 	/* Keep has_* in alphabetical order */ \
+	func(has_64bit_reloc); \
 	func(has_csr); \
 	func(has_ddi); \
 	func(has_dp_mst); \
@@ -2917,6 +2918,8 @@  struct drm_i915_cmd_table {
 #define HAS_CSR(dev)	(INTEL_INFO(dev)->has_csr)
 
 #define HAS_RUNTIME_PM(dev_priv) ((dev_priv)->info.has_runtime_pm)
+#define HAS_64BIT_RELOC(dev_priv) ((dev_priv)->info.has_64bit_reloc)
+
 /*
  * For now, anything with a GuC requires uCode loading, and then supports
  * command submission once loaded. But these are logically independent
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index c35e847..322c580 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -331,7 +331,8 @@  static void reloc_cache_init(struct reloc_cache *cache,
 	cache->page = -1;
 	cache->vaddr = 0;
 	cache->i915 = i915;
-	cache->use_64bit_reloc = INTEL_GEN(cache->i915) >= 8;
+	/* Must be a variable in the struct to allow GCC to unroll. */
+	cache->use_64bit_reloc = HAS_64BIT_RELOC(i915);
 	cache->node.allocated = false;
 }
 
diff --git a/drivers/gpu/drm/i915/i915_gem_render_state.c b/drivers/gpu/drm/i915/i915_gem_render_state.c
index 57918f2..5af19b0 100644
--- a/drivers/gpu/drm/i915/i915_gem_render_state.c
+++ b/drivers/gpu/drm/i915/i915_gem_render_state.c
@@ -74,7 +74,6 @@  static int render_state_setup(struct intel_render_state *so,
 			      struct drm_i915_private *i915)
 {
 	const struct intel_renderstate_rodata *rodata = so->rodata;
-	const bool has_64bit_reloc = INTEL_GEN(i915) >= 8;
 	struct drm_i915_gem_object *obj = so->vma->obj;
 	unsigned int i = 0, reloc_index = 0;
 	unsigned int needs_clflush;
@@ -93,7 +92,7 @@  static int render_state_setup(struct intel_render_state *so,
 		if (i * 4  == rodata->reloc[reloc_index]) {
 			u64 r = s + so->vma->node.start;
 			s = lower_32_bits(r);
-			if (has_64bit_reloc) {
+			if (HAS_64BIT_RELOC(i915)) {
 				if (i + 1 >= rodata->batch_items ||
 				    rodata->batch[i + 1] != 0)
 					goto err;
diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index 31e6edd..9d2b5d3 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -288,7 +288,8 @@  static const struct intel_device_info intel_haswell_info = {
 #define BDW_FEATURES \
 	HSW_FEATURES, \
 	BDW_COLORS, \
-	.has_logical_ring_contexts = 1
+	.has_logical_ring_contexts = 1, \
+	.has_64bit_reloc = 1
 
 static const struct intel_device_info intel_broadwell_info = {
 	BDW_FEATURES,