Re: [Intel-gfx] [PATCH 1/3] drm/i915: support for per-device semaphores settings

2011-11-17 Thread Daniel Vetter
On Thu, Nov 17, 2011 at 01:17, Eugeni Dodonov eugeni.dodo...@intel.com wrote:
 This allows to enable semaphores by default on devices which support them.

 By default, let's enable them on IVB only for now. When DMAR issues on SNB
 will be solved, we can enable them on SNB as well.

 For IVB, it should fix many hangs and issues.

 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42696
 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40564
 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38862
 Signed-off-by: Eugeni Dodonov eugeni.dodo...@intel.com

Minor bikeshed comment: I prefer an if chain instead of overloading
intel_info - currently intel_info contains information about the hw
and work-arounds are applied in the code. This way they also stick out
more. I'll try to test this as soon as I get back home.
-Daniel
-- 
Daniel Vetter
daniel.vet...@ffwll.ch - +41 (0) 79 365 57 48 - http://blog.ffwll.ch
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 1/3] drm/i915: support for per-device semaphores settings

2011-11-16 Thread Eugeni Dodonov
This allows to enable semaphores by default on devices which support them.

By default, let's enable them on IVB only for now. When DMAR issues on SNB
will be solved, we can enable them on SNB as well.

For IVB, it should fix many hangs and issues.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=42696
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=40564
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=41353
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38862
Signed-off-by: Eugeni Dodonov eugeni.dodo...@intel.com
---
 drivers/gpu/drm/i915/i915_drv.c|6 --
 drivers/gpu/drm/i915/i915_drv.h|3 +++
 drivers/gpu/drm/i915/i915_gem_execbuffer.c |6 +-
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index cc531bb..355f1ab 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -58,10 +58,10 @@ module_param_named(powersave, i915_powersave, int, 0600);
 MODULE_PARM_DESC(powersave,
Enable powersavings, fbc, downclocking, etc. (default: true));
 
-unsigned int i915_semaphores __read_mostly = 0;
+unsigned int i915_semaphores __read_mostly = -1;
 module_param_named(semaphores, i915_semaphores, int, 0600);
 MODULE_PARM_DESC(semaphores,
-   Use semaphores for inter-ring sync (default: false));
+   Use semaphores for inter-ring sync (default: -1 (use per-chip 
defaults)));
 
 unsigned int i915_enable_rc6 __read_mostly = 0;
 module_param_named(i915_enable_rc6, i915_enable_rc6, int, 0600);
@@ -229,6 +229,7 @@ static const struct intel_device_info 
intel_ivybridge_d_info = {
.need_gfx_hws = 1, .has_hotplug = 1,
.has_bsd_ring = 1,
.has_blt_ring = 1,
+   .enable_semaphores = 1,
 };
 
 static const struct intel_device_info intel_ivybridge_m_info = {
@@ -237,6 +238,7 @@ static const struct intel_device_info 
intel_ivybridge_m_info = {
.has_fbc = 0,   /* FBC is not enabled on Ivybridge mobile yet */
.has_bsd_ring = 1,
.has_blt_ring = 1,
+   .enable_semaphores = 1,
 };
 
 static const struct pci_device_id pciidlist[] = {  /* aka */
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 06a37f4..0e819d2 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -247,6 +247,7 @@ struct intel_device_info {
u8 supports_tv:1;
u8 has_bsd_ring:1;
u8 has_blt_ring:1;
+   u8 enable_semaphores:1;
 };
 
 enum no_fbc_reason {
@@ -990,6 +991,8 @@ struct drm_i915_file_private {
 #define HAS_PCH_CPT(dev) (INTEL_PCH_TYPE(dev) == PCH_CPT)
 #define HAS_PCH_IBX(dev) (INTEL_PCH_TYPE(dev) == PCH_IBX)
 
+#define ENABLE_SEMAPHORES(dev)(INTEL_INFO(dev)-enable_semaphores)
+
 #include i915_trace.h
 
 extern struct drm_ioctl_desc i915_ioctls[];
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 3693e83..094ff4c 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -753,12 +753,16 @@ i915_gem_execbuffer_sync_rings(struct drm_i915_gem_object 
*obj,
struct intel_ring_buffer *from = obj-ring;
u32 seqno;
int ret, idx;
+   int enable_semaphores = 0;
 
if (from == NULL || to == from)
return 0;
 
+   if (i915_semaphores  0  ENABLE_SEMAPHORES(obj-base.dev))
+   enable_semaphores = 1;
+
/* XXX gpu semaphores are implicated in various hard hangs on SNB */
-   if (INTEL_INFO(obj-base.dev)-gen  6 || !i915_semaphores)
+   if (INTEL_INFO(obj-base.dev)-gen  6 || !enable_semaphores)
return i915_gem_object_wait_rendering(obj);
 
idx = intel_ring_sync_index(from, to);
-- 
1.7.7.3

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx