* [PATCH 0/3] Claw back the IS_<platform> optimisation
@ 2016-12-08 9:49 Tvrtko Ursulin
2016-12-08 9:49 ` [PATCH 1/3] drm/i915: Introduct i915_platforms.h Tvrtko Ursulin
` (4 more replies)
0 siblings, 5 replies; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 9:49 UTC (permalink / raw)
To: Intel-gfx; +Cc: Jani Nikula
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reorganise the IS_<platform> code a bit inspired by the pre-processor
code generation as used by Chris in the self test patches.
This avoids some source code duplication and makes maintenance easier.
In the last patch try to claw back the multiple IS_<platform> optimisation,
as the commit message says:
If we use only power of two values for the platform enum
values we can let the compiler optimize some common
checks to a single conditional.
For example code like this:
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
Goes from this:
5c3c5: 8b 83 d8 06 00 00 mov 0x6d8(%rbx),%eax
5c3cb: 83 f8 12 cmp $0x12,%eax
5c3ce: 0f 84 f3 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
5c3d4: 83 f8 15 cmp $0x15,%eax
5c3d7: 0f 84 ea 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
To this:
5c1d5: f7 83 d8 06 00 00 00 testl $0x240000,0x6d8(%rbx)
5c1dc: 00 24 00
5c1df: 0f 85 da 00 00 00 jne 5c2bf <fw_domain_init+0x18f>
It is not much but there is value in this that as long as we
have to have conditions like the above sprinkled troughout the
code, we can at least have the generate binary a bit smarter.
Until we get to more than 32 platforms there is no downside
to this approach.
Patch series saves 1890 bytes of binary:
text data bss dec hex filename
1103970 26273 580 1130823 114147 i915.ko.0
1102080 26273 580 1128933 1139e5 i915.ko.1
Tvrtko Ursulin (3):
drm/i915: Introduct i915_platforms.h
drm/i915: Generate all IS_<platform> macros
drm/i915: Number the platform enum strategically
drivers/gpu/drm/i915/i915_drv.h | 69 +++++++++-----------------------
drivers/gpu/drm/i915/i915_platforms.h | 34 ++++++++++++++++
drivers/gpu/drm/i915/intel_device_info.c | 38 ++++--------------
3 files changed, 61 insertions(+), 80 deletions(-)
create mode 100644 drivers/gpu/drm/i915/i915_platforms.h
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 1/3] drm/i915: Introduct i915_platforms.h
2016-12-08 9:49 [PATCH 0/3] Claw back the IS_<platform> optimisation Tvrtko Ursulin
@ 2016-12-08 9:49 ` Tvrtko Ursulin
2016-12-08 10:41 ` Jani Nikula
2016-12-08 9:49 ` [PATCH 2/3] drm/i915: Generate all IS_<platform> macros Tvrtko Ursulin
` (3 subsequent siblings)
4 siblings, 1 reply; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 9:49 UTC (permalink / raw)
To: Intel-gfx; +Cc: Jani Nikula
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Inspired by the same approach used by Chris Wilson in the self
test patches.
We add a separate header file containing the list of our
platforms and then use the pre-processor to generate all
other places which use that list. This avoids having to
list them multiple times and avoids the maintenance
burden.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
drivers/gpu/drm/i915/i915_drv.h | 30 +++-------------------------
drivers/gpu/drm/i915/i915_platforms.h | 34 ++++++++++++++++++++++++++++++++
drivers/gpu/drm/i915/intel_device_info.c | 30 +++-------------------------
3 files changed, 40 insertions(+), 54 deletions(-)
create mode 100644 drivers/gpu/drm/i915/i915_platforms.h
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 1480e733312a..ea06d3ff59da 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -825,34 +825,10 @@ static inline unsigned int sseu_subslice_total(const struct sseu_dev_info *sseu)
return hweight8(sseu->slice_mask) * hweight8(sseu->subslice_mask);
}
-/* Keep in gen based order, and chronological order within a gen */
enum intel_platform {
- INTEL_PLATFORM_UNINITIALIZED = 0,
- INTEL_I830,
- INTEL_I845G,
- INTEL_I85X,
- INTEL_I865G,
- INTEL_I915G,
- INTEL_I915GM,
- INTEL_I945G,
- INTEL_I945GM,
- INTEL_G33,
- INTEL_PINEVIEW,
- INTEL_I965G,
- INTEL_I965GM,
- INTEL_G45,
- INTEL_GM45,
- INTEL_IRONLAKE,
- INTEL_SANDYBRIDGE,
- INTEL_IVYBRIDGE,
- INTEL_VALLEYVIEW,
- INTEL_HASWELL,
- INTEL_BROADWELL,
- INTEL_CHERRYVIEW,
- INTEL_SKYLAKE,
- INTEL_BROXTON,
- INTEL_KABYLAKE,
- INTEL_GEMINILAKE,
+#define i915_platform(name, value) INTEL_##name = value,
+#include "i915_platforms.h"
+#undef i915_platform
};
struct intel_device_info {
diff --git a/drivers/gpu/drm/i915/i915_platforms.h b/drivers/gpu/drm/i915/i915_platforms.h
new file mode 100644
index 000000000000..b44ea1dd9c15
--- /dev/null
+++ b/drivers/gpu/drm/i915/i915_platforms.h
@@ -0,0 +1,34 @@
+/*
+ * List each platform as i915_platform(name, id).
+ *
+ * Names must be legal C identifiers and the ids must be unique integers.
+ *
+ * Keep in gen based order, and chronological order within a gen.
+ */
+
+i915_platform(UNINITIALIZED, 0)
+i915_platform(I830, 1)
+i915_platform(I845G, 2)
+i915_platform(I85X, 3)
+i915_platform(I865G, 4)
+i915_platform(I915G, 5)
+i915_platform(I915GM, 6)
+i915_platform(I945G, 7)
+i915_platform(I945GM, 8)
+i915_platform(G33, 9)
+i915_platform(PINEVIEW, 10)
+i915_platform(I965G, 11)
+i915_platform(I965GM, 12)
+i915_platform(G45, 13)
+i915_platform(GM45, 14)
+i915_platform(IRONLAKE, 15)
+i915_platform(SANDYBRIDGE, 16)
+i915_platform(IVYBRIDGE, 17)
+i915_platform(VALLEYVIEW, 18)
+i915_platform(HASWELL, 19)
+i915_platform(BROADWELL, 20)
+i915_platform(CHERRYVIEW, 21)
+i915_platform(SKYLAKE, 22)
+i915_platform(BROXTON, 23)
+i915_platform(KABYLAKE, 24)
+i915_platform(GEMINILAKE, 25)
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index c46415b8c1b9..5192d388d10e 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -24,35 +24,11 @@
#include "i915_drv.h"
-#define PLATFORM_NAME(x) [INTEL_##x] = #x
static const char * const platform_names[] = {
- PLATFORM_NAME(I830),
- PLATFORM_NAME(I845G),
- PLATFORM_NAME(I85X),
- PLATFORM_NAME(I865G),
- PLATFORM_NAME(I915G),
- PLATFORM_NAME(I915GM),
- PLATFORM_NAME(I945G),
- PLATFORM_NAME(I945GM),
- PLATFORM_NAME(G33),
- PLATFORM_NAME(PINEVIEW),
- PLATFORM_NAME(I965G),
- PLATFORM_NAME(I965GM),
- PLATFORM_NAME(G45),
- PLATFORM_NAME(GM45),
- PLATFORM_NAME(IRONLAKE),
- PLATFORM_NAME(SANDYBRIDGE),
- PLATFORM_NAME(IVYBRIDGE),
- PLATFORM_NAME(VALLEYVIEW),
- PLATFORM_NAME(HASWELL),
- PLATFORM_NAME(BROADWELL),
- PLATFORM_NAME(CHERRYVIEW),
- PLATFORM_NAME(SKYLAKE),
- PLATFORM_NAME(BROXTON),
- PLATFORM_NAME(KABYLAKE),
- PLATFORM_NAME(GEMINILAKE),
+#define i915_platform(name, id) [id] = #name,
+#include "i915_platforms.h"
+#undef i915_platform
};
-#undef PLATFORM_NAME
const char *intel_platform_name(enum intel_platform platform)
{
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 9:49 [PATCH 0/3] Claw back the IS_<platform> optimisation Tvrtko Ursulin
2016-12-08 9:49 ` [PATCH 1/3] drm/i915: Introduct i915_platforms.h Tvrtko Ursulin
@ 2016-12-08 9:49 ` Tvrtko Ursulin
2016-12-08 10:46 ` Jani Nikula
2016-12-08 9:49 ` [PATCH 3/3] drm/i915: Number the platform enum strategically Tvrtko Ursulin
` (2 subsequent siblings)
4 siblings, 1 reply; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 9:49 UTC (permalink / raw)
To: Intel-gfx; +Cc: Jani Nikula
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Instead of listing them individually we can generate them
using the new i915_platforms.h header.
Also convert them to a static inline function which
interestingly makes the code smaller as well.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
drivers/gpu/drm/i915/i915_drv.h | 39 ++++++++++++++++-----------------------
1 file changed, 16 insertions(+), 23 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index ea06d3ff59da..fb8f4b7cd1ae 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2579,36 +2579,29 @@ intel_info(const struct drm_i915_private *dev_priv)
#define IS_REVID(p, since, until) \
(INTEL_REVID(p) >= (since) && INTEL_REVID(p) <= (until))
-#define IS_I830(dev_priv) ((dev_priv)->info.platform == INTEL_I830)
-#define IS_I845G(dev_priv) ((dev_priv)->info.platform == INTEL_I845G)
-#define IS_I85X(dev_priv) ((dev_priv)->info.platform == INTEL_I85X)
-#define IS_I865G(dev_priv) ((dev_priv)->info.platform == INTEL_I865G)
-#define IS_I915G(dev_priv) ((dev_priv)->info.platform == INTEL_I915G)
-#define IS_I915GM(dev_priv) ((dev_priv)->info.platform == INTEL_I915GM)
-#define IS_I945G(dev_priv) ((dev_priv)->info.platform == INTEL_I945G)
-#define IS_I945GM(dev_priv) ((dev_priv)->info.platform == INTEL_I945GM)
-#define IS_I965G(dev_priv) ((dev_priv)->info.platform == INTEL_I965G)
-#define IS_I965GM(dev_priv) ((dev_priv)->info.platform == INTEL_I965GM)
-#define IS_G45(dev_priv) ((dev_priv)->info.platform == INTEL_G45)
-#define IS_GM45(dev_priv) ((dev_priv)->info.platform == INTEL_GM45)
+/*
+ * This block generates the IS_<platform> helper functions in the format of:
+ *
+ * static inline bool IS_SKYLAKE(const struct drm_i915_private *dev_priv);
+ * ...
+ *
+ * One for each platform listed in i915_platforms.h is generated.
+ */
+#define i915_platform(name, id) \
+static inline bool IS_##name(const struct drm_i915_private *dev_priv) \
+{ \
+ return (dev_priv)->info.platform == INTEL_##name; \
+}
+#include "i915_platforms.h"
+#undef i915_platform
+
#define IS_G4X(dev_priv) (IS_G45(dev_priv) || IS_GM45(dev_priv))
#define IS_PINEVIEW_G(dev_priv) (INTEL_DEVID(dev_priv) == 0xa001)
#define IS_PINEVIEW_M(dev_priv) (INTEL_DEVID(dev_priv) == 0xa011)
-#define IS_PINEVIEW(dev_priv) ((dev_priv)->info.platform == INTEL_PINEVIEW)
-#define IS_G33(dev_priv) ((dev_priv)->info.platform == INTEL_G33)
#define IS_IRONLAKE_M(dev_priv) (INTEL_DEVID(dev_priv) == 0x0046)
-#define IS_IVYBRIDGE(dev_priv) ((dev_priv)->info.platform == INTEL_IVYBRIDGE)
#define IS_IVB_GT1(dev_priv) (INTEL_DEVID(dev_priv) == 0x0156 || \
INTEL_DEVID(dev_priv) == 0x0152 || \
INTEL_DEVID(dev_priv) == 0x015a)
-#define IS_VALLEYVIEW(dev_priv) ((dev_priv)->info.platform == INTEL_VALLEYVIEW)
-#define IS_CHERRYVIEW(dev_priv) ((dev_priv)->info.platform == INTEL_CHERRYVIEW)
-#define IS_HASWELL(dev_priv) ((dev_priv)->info.platform == INTEL_HASWELL)
-#define IS_BROADWELL(dev_priv) ((dev_priv)->info.platform == INTEL_BROADWELL)
-#define IS_SKYLAKE(dev_priv) ((dev_priv)->info.platform == INTEL_SKYLAKE)
-#define IS_BROXTON(dev_priv) ((dev_priv)->info.platform == INTEL_BROXTON)
-#define IS_KABYLAKE(dev_priv) ((dev_priv)->info.platform == INTEL_KABYLAKE)
-#define IS_GEMINILAKE(dev_priv) ((dev_priv)->info.platform == INTEL_GEMINILAKE)
#define IS_MOBILE(dev_priv) ((dev_priv)->info.is_mobile)
#define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
(INTEL_DEVID(dev_priv) & 0xFF00) == 0x0C00)
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH 3/3] drm/i915: Number the platform enum strategically
2016-12-08 9:49 [PATCH 0/3] Claw back the IS_<platform> optimisation Tvrtko Ursulin
2016-12-08 9:49 ` [PATCH 1/3] drm/i915: Introduct i915_platforms.h Tvrtko Ursulin
2016-12-08 9:49 ` [PATCH 2/3] drm/i915: Generate all IS_<platform> macros Tvrtko Ursulin
@ 2016-12-08 9:49 ` Tvrtko Ursulin
2016-12-08 10:04 ` Chris Wilson
2016-12-08 11:54 ` ✓ Fi.CI.BAT: success for Claw back the IS_<platform> optimisation Patchwork
2016-12-08 15:15 ` ✗ Fi.CI.BAT: warning for Claw back the IS_<platform> optimisation (rev2) Patchwork
4 siblings, 1 reply; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 9:49 UTC (permalink / raw)
To: Intel-gfx; +Cc: Jani Nikula
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
If we use only power of two values for the platform enum
values we can let the compiler optimize some common
checks to a single conditional.
For example code like this:
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
Goes from this:
5c3c5: 8b 83 d8 06 00 00 mov 0x6d8(%rbx),%eax
5c3cb: 83 f8 12 cmp $0x12,%eax
5c3ce: 0f 84 f3 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
5c3d4: 83 f8 15 cmp $0x15,%eax
5c3d7: 0f 84 ea 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
To this:
5c1d5: f7 83 d8 06 00 00 00 testl $0x240000,0x6d8(%rbx)
5c1dc: 00 24 00
5c1df: 0f 85 da 00 00 00 jne 5c2bf <fw_domain_init+0x18f>
It is not much but there is value in this that as long as we
have to have conditions like the above sprinkled troughout the
code, we can at least have the generate binary a bit smarter.
Until we get to more than 32 platforms there is no downside
to this approach.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
drivers/gpu/drm/i915/i915_drv.h | 2 +-
drivers/gpu/drm/i915/i915_platforms.h | 50 ++++++++++++++++----------------
drivers/gpu/drm/i915/intel_device_info.c | 10 ++++---
3 files changed, 32 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index fb8f4b7cd1ae..347d5c6ffc1b 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2590,7 +2590,7 @@ intel_info(const struct drm_i915_private *dev_priv)
#define i915_platform(name, id) \
static inline bool IS_##name(const struct drm_i915_private *dev_priv) \
{ \
- return (dev_priv)->info.platform == INTEL_##name; \
+ return !!((dev_priv)->info.platform & INTEL_##name); \
}
#include "i915_platforms.h"
#undef i915_platform
diff --git a/drivers/gpu/drm/i915/i915_platforms.h b/drivers/gpu/drm/i915/i915_platforms.h
index b44ea1dd9c15..4118f152eac9 100644
--- a/drivers/gpu/drm/i915/i915_platforms.h
+++ b/drivers/gpu/drm/i915/i915_platforms.h
@@ -7,28 +7,28 @@
*/
i915_platform(UNINITIALIZED, 0)
-i915_platform(I830, 1)
-i915_platform(I845G, 2)
-i915_platform(I85X, 3)
-i915_platform(I865G, 4)
-i915_platform(I915G, 5)
-i915_platform(I915GM, 6)
-i915_platform(I945G, 7)
-i915_platform(I945GM, 8)
-i915_platform(G33, 9)
-i915_platform(PINEVIEW, 10)
-i915_platform(I965G, 11)
-i915_platform(I965GM, 12)
-i915_platform(G45, 13)
-i915_platform(GM45, 14)
-i915_platform(IRONLAKE, 15)
-i915_platform(SANDYBRIDGE, 16)
-i915_platform(IVYBRIDGE, 17)
-i915_platform(VALLEYVIEW, 18)
-i915_platform(HASWELL, 19)
-i915_platform(BROADWELL, 20)
-i915_platform(CHERRYVIEW, 21)
-i915_platform(SKYLAKE, 22)
-i915_platform(BROXTON, 23)
-i915_platform(KABYLAKE, 24)
-i915_platform(GEMINILAKE, 25)
+i915_platform(I830, BIT(1))
+i915_platform(I845G, BIT(2))
+i915_platform(I85X, BIT(3))
+i915_platform(I865G, BIT(4))
+i915_platform(I915G, BIT(5))
+i915_platform(I915GM, BIT(6))
+i915_platform(I945G, BIT(7))
+i915_platform(I945GM, BIT(8))
+i915_platform(G33, BIT(9))
+i915_platform(PINEVIEW, BIT(10))
+i915_platform(I965G, BIT(11))
+i915_platform(I965GM, BIT(12))
+i915_platform(G45, BIT(13))
+i915_platform(GM45, BIT(14))
+i915_platform(IRONLAKE, BIT(15))
+i915_platform(SANDYBRIDGE, BIT(16))
+i915_platform(IVYBRIDGE, BIT(17))
+i915_platform(VALLEYVIEW, BIT(18))
+i915_platform(HASWELL, BIT(19))
+i915_platform(BROADWELL, BIT(20))
+i915_platform(CHERRYVIEW, BIT(21))
+i915_platform(SKYLAKE, BIT(22))
+i915_platform(BROXTON, BIT(23))
+i915_platform(KABYLAKE, BIT(24))
+i915_platform(GEMINILAKE, BIT(25))
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index 5192d388d10e..26df6363e265 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -25,18 +25,20 @@
#include "i915_drv.h"
static const char * const platform_names[] = {
-#define i915_platform(name, id) [id] = #name,
+#define i915_platform(name, id) [__builtin_ffs(id)] = #name,
#include "i915_platforms.h"
#undef i915_platform
};
const char *intel_platform_name(enum intel_platform platform)
{
- if (WARN_ON_ONCE(platform >= ARRAY_SIZE(platform_names) ||
- platform_names[platform] == NULL))
+ unsigned int idx = ffs(platform);
+
+ if (WARN_ON_ONCE(idx >= ARRAY_SIZE(platform_names) ||
+ platform_names[idx] == NULL))
return "<unknown>";
- return platform_names[platform];
+ return platform_names[idx];
}
void intel_device_info_dump(struct drm_i915_private *dev_priv)
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 3/3] drm/i915: Number the platform enum strategically
2016-12-08 9:49 ` [PATCH 3/3] drm/i915: Number the platform enum strategically Tvrtko Ursulin
@ 2016-12-08 10:04 ` Chris Wilson
2016-12-08 13:38 ` [PATCH v2] " Tvrtko Ursulin
0 siblings, 1 reply; 18+ messages in thread
From: Chris Wilson @ 2016-12-08 10:04 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: Jani Nikula, Intel-gfx
On Thu, Dec 08, 2016 at 09:49:59AM +0000, Tvrtko Ursulin wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> If we use only power of two values for the platform enum
> values we can let the compiler optimize some common
> checks to a single conditional.
>
> For example code like this:
>
> if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
>
> Goes from this:
>
> 5c3c5: 8b 83 d8 06 00 00 mov 0x6d8(%rbx),%eax
> 5c3cb: 83 f8 12 cmp $0x12,%eax
> 5c3ce: 0f 84 f3 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
> 5c3d4: 83 f8 15 cmp $0x15,%eax
> 5c3d7: 0f 84 ea 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
>
> To this:
>
> 5c1d5: f7 83 d8 06 00 00 00 testl $0x240000,0x6d8(%rbx)
> 5c1dc: 00 24 00
> 5c1df: 0f 85 da 00 00 00 jne 5c2bf <fw_domain_init+0x18f>
>
> It is not much but there is value in this that as long as we
> have to have conditions like the above sprinkled troughout the
> code, we can at least have the generate binary a bit smarter.
>
> Until we get to more than 32 platforms there is no downside
> to this approach.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 2 +-
> drivers/gpu/drm/i915/i915_platforms.h | 50 ++++++++++++++++----------------
> drivers/gpu/drm/i915/intel_device_info.c | 10 ++++---
> 3 files changed, 32 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index fb8f4b7cd1ae..347d5c6ffc1b 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2590,7 +2590,7 @@ intel_info(const struct drm_i915_private *dev_priv)
> #define i915_platform(name, id) \
> static inline bool IS_##name(const struct drm_i915_private *dev_priv) \
> { \
> - return (dev_priv)->info.platform == INTEL_##name; \
> + return !!((dev_priv)->info.platform & INTEL_##name); \
Redundant !!. It's an integer in a bool context, the !! are implied by
spec and gcc.
> }
> #include "i915_platforms.h"
> #undef i915_platform
> diff --git a/drivers/gpu/drm/i915/i915_platforms.h b/drivers/gpu/drm/i915/i915_platforms.h
> index b44ea1dd9c15..4118f152eac9 100644
> --- a/drivers/gpu/drm/i915/i915_platforms.h
> +++ b/drivers/gpu/drm/i915/i915_platforms.h
> @@ -7,28 +7,28 @@
> */
>
> i915_platform(UNINITIALIZED, 0)
> -i915_platform(I830, 1)
> +i915_platform(I830, BIT(1))
Could start from BIT(0) or are we still anticipating support for i810?
And i740?
> diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
> index 5192d388d10e..26df6363e265 100644
> --- a/drivers/gpu/drm/i915/intel_device_info.c
> +++ b/drivers/gpu/drm/i915/intel_device_info.c
> @@ -25,18 +25,20 @@
> #include "i915_drv.h"
>
> static const char * const platform_names[] = {
> -#define i915_platform(name, id) [id] = #name,
> +#define i915_platform(name, id) [__builtin_ffs(id)] = #name,
> #include "i915_platforms.h"
> #undef i915_platform
> };
>
> const char *intel_platform_name(enum intel_platform platform)
> {
> - if (WARN_ON_ONCE(platform >= ARRAY_SIZE(platform_names) ||
> - platform_names[platform] == NULL))
> + unsigned int idx = ffs(platform);
Ah, ffs() is offset by one, and our id's are offset by another 1.
Using i915_platforms.h for a single list is a good improvement. And I
think we can get the best of both worlds: a concise identifier in the
logs and error state; and concise code. Looks good with a few fixes.
-Chris
--
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 1/3] drm/i915: Introduct i915_platforms.h
2016-12-08 9:49 ` [PATCH 1/3] drm/i915: Introduct i915_platforms.h Tvrtko Ursulin
@ 2016-12-08 10:41 ` Jani Nikula
2016-12-08 13:16 ` Joonas Lahtinen
0 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2016-12-08 10:41 UTC (permalink / raw)
To: Tvrtko Ursulin, Intel-gfx
On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Inspired by the same approach used by Chris Wilson in the self
> test patches.
>
> We add a separate header file containing the list of our
> platforms and then use the pre-processor to generate all
> other places which use that list. This avoids having to
> list them multiple times and avoids the maintenance
> burden.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 30 +++-------------------------
> drivers/gpu/drm/i915/i915_platforms.h | 34 ++++++++++++++++++++++++++++++++
> drivers/gpu/drm/i915/intel_device_info.c | 30 +++-------------------------
> 3 files changed, 40 insertions(+), 54 deletions(-)
> create mode 100644 drivers/gpu/drm/i915/i915_platforms.h
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 1480e733312a..ea06d3ff59da 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -825,34 +825,10 @@ static inline unsigned int sseu_subslice_total(const struct sseu_dev_info *sseu)
> return hweight8(sseu->slice_mask) * hweight8(sseu->subslice_mask);
> }
>
> -/* Keep in gen based order, and chronological order within a gen */
> enum intel_platform {
> - INTEL_PLATFORM_UNINITIALIZED = 0,
> - INTEL_I830,
> - INTEL_I845G,
> - INTEL_I85X,
> - INTEL_I865G,
> - INTEL_I915G,
> - INTEL_I915GM,
> - INTEL_I945G,
> - INTEL_I945GM,
> - INTEL_G33,
> - INTEL_PINEVIEW,
> - INTEL_I965G,
> - INTEL_I965GM,
> - INTEL_G45,
> - INTEL_GM45,
> - INTEL_IRONLAKE,
> - INTEL_SANDYBRIDGE,
> - INTEL_IVYBRIDGE,
> - INTEL_VALLEYVIEW,
> - INTEL_HASWELL,
> - INTEL_BROADWELL,
> - INTEL_CHERRYVIEW,
> - INTEL_SKYLAKE,
> - INTEL_BROXTON,
> - INTEL_KABYLAKE,
> - INTEL_GEMINILAKE,
> +#define i915_platform(name, value) INTEL_##name = value,
> +#include "i915_platforms.h"
> +#undef i915_platform
> };
>
> struct intel_device_info {
> diff --git a/drivers/gpu/drm/i915/i915_platforms.h b/drivers/gpu/drm/i915/i915_platforms.h
> new file mode 100644
> index 000000000000..b44ea1dd9c15
> --- /dev/null
> +++ b/drivers/gpu/drm/i915/i915_platforms.h
> @@ -0,0 +1,34 @@
> +/*
> + * List each platform as i915_platform(name, id).
> + *
> + * Names must be legal C identifiers and the ids must be unique integers.
> + *
> + * Keep in gen based order, and chronological order within a gen.
> + */
> +
> +i915_platform(UNINITIALIZED, 0)
> +i915_platform(I830, 1)
> +i915_platform(I845G, 2)
> +i915_platform(I85X, 3)
> +i915_platform(I865G, 4)
> +i915_platform(I915G, 5)
> +i915_platform(I915GM, 6)
> +i915_platform(I945G, 7)
> +i915_platform(I945GM, 8)
> +i915_platform(G33, 9)
> +i915_platform(PINEVIEW, 10)
> +i915_platform(I965G, 11)
> +i915_platform(I965GM, 12)
> +i915_platform(G45, 13)
> +i915_platform(GM45, 14)
> +i915_platform(IRONLAKE, 15)
> +i915_platform(SANDYBRIDGE, 16)
> +i915_platform(IVYBRIDGE, 17)
> +i915_platform(VALLEYVIEW, 18)
> +i915_platform(HASWELL, 19)
> +i915_platform(BROADWELL, 20)
> +i915_platform(CHERRYVIEW, 21)
> +i915_platform(SKYLAKE, 22)
> +i915_platform(BROXTON, 23)
> +i915_platform(KABYLAKE, 24)
> +i915_platform(GEMINILAKE, 25)
> diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
> index c46415b8c1b9..5192d388d10e 100644
> --- a/drivers/gpu/drm/i915/intel_device_info.c
> +++ b/drivers/gpu/drm/i915/intel_device_info.c
> @@ -24,35 +24,11 @@
>
> #include "i915_drv.h"
>
> -#define PLATFORM_NAME(x) [INTEL_##x] = #x
> static const char * const platform_names[] = {
> - PLATFORM_NAME(I830),
> - PLATFORM_NAME(I845G),
> - PLATFORM_NAME(I85X),
> - PLATFORM_NAME(I865G),
> - PLATFORM_NAME(I915G),
> - PLATFORM_NAME(I915GM),
> - PLATFORM_NAME(I945G),
> - PLATFORM_NAME(I945GM),
> - PLATFORM_NAME(G33),
> - PLATFORM_NAME(PINEVIEW),
> - PLATFORM_NAME(I965G),
> - PLATFORM_NAME(I965GM),
> - PLATFORM_NAME(G45),
> - PLATFORM_NAME(GM45),
> - PLATFORM_NAME(IRONLAKE),
> - PLATFORM_NAME(SANDYBRIDGE),
> - PLATFORM_NAME(IVYBRIDGE),
> - PLATFORM_NAME(VALLEYVIEW),
> - PLATFORM_NAME(HASWELL),
> - PLATFORM_NAME(BROADWELL),
> - PLATFORM_NAME(CHERRYVIEW),
> - PLATFORM_NAME(SKYLAKE),
> - PLATFORM_NAME(BROXTON),
> - PLATFORM_NAME(KABYLAKE),
> - PLATFORM_NAME(GEMINILAKE),
> +#define i915_platform(name, id) [id] = #name,
> +#include "i915_platforms.h"
> +#undef i915_platform
> };
> -#undef PLATFORM_NAME
I was thinking we could improve the printed names here, for example:
[INTEL_I965G] = "I965G/Broadwater"
[INTEL_VALLEYVIEW] = "Valleyview/Baytrail"
But I suppose less repetition is better.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
> const char *intel_platform_name(enum intel_platform platform)
> {
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 9:49 ` [PATCH 2/3] drm/i915: Generate all IS_<platform> macros Tvrtko Ursulin
@ 2016-12-08 10:46 ` Jani Nikula
2016-12-08 13:26 ` Tvrtko Ursulin
0 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2016-12-08 10:46 UTC (permalink / raw)
To: Tvrtko Ursulin, Intel-gfx
On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>
> Instead of listing them individually we can generate them
> using the new i915_platforms.h header.
>
> Also convert them to a static inline function which
> interestingly makes the code smaller as well.
>
> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Jani Nikula <jani.nikula@intel.com>
> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
NAK. Absolutely opposed to this.
A large part of my work involves digging through the source tree, and a
crucial part of that is looking up definitions and references, both for
macros and functions. Not having the macro/function definitions breaks
that workflow. Losing that, source code archeology gets *much*
harder. The losses are much greater than the gains.
BR,
Jani.
> ---
> drivers/gpu/drm/i915/i915_drv.h | 39 ++++++++++++++++-----------------------
> 1 file changed, 16 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index ea06d3ff59da..fb8f4b7cd1ae 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2579,36 +2579,29 @@ intel_info(const struct drm_i915_private *dev_priv)
> #define IS_REVID(p, since, until) \
> (INTEL_REVID(p) >= (since) && INTEL_REVID(p) <= (until))
>
> -#define IS_I830(dev_priv) ((dev_priv)->info.platform == INTEL_I830)
> -#define IS_I845G(dev_priv) ((dev_priv)->info.platform == INTEL_I845G)
> -#define IS_I85X(dev_priv) ((dev_priv)->info.platform == INTEL_I85X)
> -#define IS_I865G(dev_priv) ((dev_priv)->info.platform == INTEL_I865G)
> -#define IS_I915G(dev_priv) ((dev_priv)->info.platform == INTEL_I915G)
> -#define IS_I915GM(dev_priv) ((dev_priv)->info.platform == INTEL_I915GM)
> -#define IS_I945G(dev_priv) ((dev_priv)->info.platform == INTEL_I945G)
> -#define IS_I945GM(dev_priv) ((dev_priv)->info.platform == INTEL_I945GM)
> -#define IS_I965G(dev_priv) ((dev_priv)->info.platform == INTEL_I965G)
> -#define IS_I965GM(dev_priv) ((dev_priv)->info.platform == INTEL_I965GM)
> -#define IS_G45(dev_priv) ((dev_priv)->info.platform == INTEL_G45)
> -#define IS_GM45(dev_priv) ((dev_priv)->info.platform == INTEL_GM45)
> +/*
> + * This block generates the IS_<platform> helper functions in the format of:
> + *
> + * static inline bool IS_SKYLAKE(const struct drm_i915_private *dev_priv);
> + * ...
> + *
> + * One for each platform listed in i915_platforms.h is generated.
> + */
> +#define i915_platform(name, id) \
> +static inline bool IS_##name(const struct drm_i915_private *dev_priv) \
> +{ \
> + return (dev_priv)->info.platform == INTEL_##name; \
> +}
> +#include "i915_platforms.h"
> +#undef i915_platform
> +
> #define IS_G4X(dev_priv) (IS_G45(dev_priv) || IS_GM45(dev_priv))
> #define IS_PINEVIEW_G(dev_priv) (INTEL_DEVID(dev_priv) == 0xa001)
> #define IS_PINEVIEW_M(dev_priv) (INTEL_DEVID(dev_priv) == 0xa011)
> -#define IS_PINEVIEW(dev_priv) ((dev_priv)->info.platform == INTEL_PINEVIEW)
> -#define IS_G33(dev_priv) ((dev_priv)->info.platform == INTEL_G33)
> #define IS_IRONLAKE_M(dev_priv) (INTEL_DEVID(dev_priv) == 0x0046)
> -#define IS_IVYBRIDGE(dev_priv) ((dev_priv)->info.platform == INTEL_IVYBRIDGE)
> #define IS_IVB_GT1(dev_priv) (INTEL_DEVID(dev_priv) == 0x0156 || \
> INTEL_DEVID(dev_priv) == 0x0152 || \
> INTEL_DEVID(dev_priv) == 0x015a)
> -#define IS_VALLEYVIEW(dev_priv) ((dev_priv)->info.platform == INTEL_VALLEYVIEW)
> -#define IS_CHERRYVIEW(dev_priv) ((dev_priv)->info.platform == INTEL_CHERRYVIEW)
> -#define IS_HASWELL(dev_priv) ((dev_priv)->info.platform == INTEL_HASWELL)
> -#define IS_BROADWELL(dev_priv) ((dev_priv)->info.platform == INTEL_BROADWELL)
> -#define IS_SKYLAKE(dev_priv) ((dev_priv)->info.platform == INTEL_SKYLAKE)
> -#define IS_BROXTON(dev_priv) ((dev_priv)->info.platform == INTEL_BROXTON)
> -#define IS_KABYLAKE(dev_priv) ((dev_priv)->info.platform == INTEL_KABYLAKE)
> -#define IS_GEMINILAKE(dev_priv) ((dev_priv)->info.platform == INTEL_GEMINILAKE)
> #define IS_MOBILE(dev_priv) ((dev_priv)->info.is_mobile)
> #define IS_HSW_EARLY_SDV(dev_priv) (IS_HASWELL(dev_priv) && \
> (INTEL_DEVID(dev_priv) & 0xFF00) == 0x0C00)
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* ✓ Fi.CI.BAT: success for Claw back the IS_<platform> optimisation
2016-12-08 9:49 [PATCH 0/3] Claw back the IS_<platform> optimisation Tvrtko Ursulin
` (2 preceding siblings ...)
2016-12-08 9:49 ` [PATCH 3/3] drm/i915: Number the platform enum strategically Tvrtko Ursulin
@ 2016-12-08 11:54 ` Patchwork
2016-12-08 15:15 ` ✗ Fi.CI.BAT: warning for Claw back the IS_<platform> optimisation (rev2) Patchwork
4 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2016-12-08 11:54 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: intel-gfx
== Series Details ==
Series: Claw back the IS_<platform> optimisation
URL : https://patchwork.freedesktop.org/series/16544/
State : success
== Summary ==
Series 16544v1 Claw back the IS_<platform> optimisation
https://patchwork.freedesktop.org/api/1.0/series/16544/revisions/1/mbox/
fi-bdw-5557u total:247 pass:233 dwarn:0 dfail:0 fail:0 skip:14
fi-bsw-n3050 total:247 pass:208 dwarn:0 dfail:0 fail:0 skip:39
fi-bxt-t5700 total:247 pass:220 dwarn:0 dfail:0 fail:0 skip:27
fi-byt-j1900 total:247 pass:220 dwarn:0 dfail:0 fail:0 skip:27
fi-byt-n2820 total:247 pass:216 dwarn:0 dfail:0 fail:0 skip:31
fi-hsw-4770 total:247 pass:228 dwarn:0 dfail:0 fail:0 skip:19
fi-hsw-4770r total:247 pass:228 dwarn:0 dfail:0 fail:0 skip:19
fi-ilk-650 total:247 pass:195 dwarn:0 dfail:0 fail:0 skip:52
fi-ivb-3520m total:247 pass:226 dwarn:0 dfail:0 fail:0 skip:21
fi-ivb-3770 total:247 pass:226 dwarn:0 dfail:0 fail:0 skip:21
fi-kbl-7500u total:247 pass:226 dwarn:0 dfail:0 fail:0 skip:21
fi-skl-6260u total:247 pass:234 dwarn:0 dfail:0 fail:0 skip:13
fi-skl-6700hq total:247 pass:227 dwarn:0 dfail:0 fail:0 skip:20
fi-skl-6700k total:247 pass:224 dwarn:3 dfail:0 fail:0 skip:20
fi-skl-6770hq total:247 pass:234 dwarn:0 dfail:0 fail:0 skip:13
fi-snb-2520m total:247 pass:216 dwarn:0 dfail:0 fail:0 skip:31
fi-snb-2600 total:247 pass:215 dwarn:0 dfail:0 fail:0 skip:32
17b1372b7ee9bfd08072bdbeab11b372e82c073b drm-tip: 2016y-12m-08d-10h-13m-45s UTC integration manifest
759148f4 drm/i915: Number the platform enum strategically
4ceaea9 drm/i915: Generate all IS_<platform> macros
01e2445 drm/i915: Introduct i915_platforms.h
== Logs ==
For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_3233/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 1/3] drm/i915: Introduct i915_platforms.h
2016-12-08 10:41 ` Jani Nikula
@ 2016-12-08 13:16 ` Joonas Lahtinen
2016-12-08 13:21 ` Tvrtko Ursulin
0 siblings, 1 reply; 18+ messages in thread
From: Joonas Lahtinen @ 2016-12-08 13:16 UTC (permalink / raw)
To: Jani Nikula, Tvrtko Ursulin, Intel-gfx
On to, 2016-12-08 at 12:41 +0200, Jani Nikula wrote:
> > On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
> >
> > From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> >
> > Inspired by the same approach used by Chris Wilson in the self
> > test patches.
> >
> > We add a separate header file containing the list of our
> > platforms and then use the pre-processor to generate all
> > other places which use that list. This avoids having to
> > list them multiple times and avoids the maintenance
> > burden.
> >
> > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> > Cc: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Jani Nikula <jani.nikula@intel.com>
> > Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
<SNIP>
> I was thinking we could improve the printed names here, for example:
>
> [INTEL_I965G] = "I965G/Broadwater"
> [INTEL_VALLEYVIEW] = "Valleyview/Baytrail"
>
+1 on this idea!
Regards, Joonas
--
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 1/3] drm/i915: Introduct i915_platforms.h
2016-12-08 13:16 ` Joonas Lahtinen
@ 2016-12-08 13:21 ` Tvrtko Ursulin
0 siblings, 0 replies; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 13:21 UTC (permalink / raw)
To: Joonas Lahtinen, Jani Nikula, Tvrtko Ursulin, Intel-gfx
On 08/12/2016 13:16, Joonas Lahtinen wrote:
> On to, 2016-12-08 at 12:41 +0200, Jani Nikula wrote:
>>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>>>
>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>
>>> Inspired by the same approach used by Chris Wilson in the self
>>> test patches.
>>>
>>> We add a separate header file containing the list of our
>>> platforms and then use the pre-processor to generate all
>>> other places which use that list. This avoids having to
>>> list them multiple times and avoids the maintenance
>>> burden.
>>>
>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>
> <SNIP>
>
>> I was thinking we could improve the printed names here, for example:
>>
>> [INTEL_I965G] = "I965G/Broadwater"
>> [INTEL_VALLEYVIEW] = "Valleyview/Baytrail"
>>
>
> +1 on this idea!
Too much prettiness for the kernel I would have thought. Don't see the
benefit personally.
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 10:46 ` Jani Nikula
@ 2016-12-08 13:26 ` Tvrtko Ursulin
2016-12-08 13:37 ` Jani Nikula
0 siblings, 1 reply; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 13:26 UTC (permalink / raw)
To: Jani Nikula, Tvrtko Ursulin, Intel-gfx
On 08/12/2016 10:46, Jani Nikula wrote:
> On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>
>> Instead of listing them individually we can generate them
>> using the new i915_platforms.h header.
>>
>> Also convert them to a static inline function which
>> interestingly makes the code smaller as well.
>>
>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>> Cc: Jani Nikula <jani.nikula@intel.com>
>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>
> NAK. Absolutely opposed to this.
Gee, sounds a bit to harsh to me. :) Didn't we say we are not doing NAKs
any longer?
> A large part of my work involves digging through the source tree, and a
> crucial part of that is looking up definitions and references, both for
> macros and functions. Not having the macro/function definitions breaks
> that workflow. Losing that, source code archeology gets *much*
> harder. The losses are much greater than the gains.
Hm, I struggle to see that point on the same magnitude of a disaster
scale as you. I would have thought we all know what IS_SKYLAKE & co are
so it would be no big deal.
Imagine if we changed it to IS_PLATFORM(SKYLAKE) for instance.
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 13:26 ` Tvrtko Ursulin
@ 2016-12-08 13:37 ` Jani Nikula
2016-12-08 13:40 ` Jani Nikula
2016-12-08 13:42 ` Tvrtko Ursulin
0 siblings, 2 replies; 18+ messages in thread
From: Jani Nikula @ 2016-12-08 13:37 UTC (permalink / raw)
To: Tvrtko Ursulin, Tvrtko Ursulin, Intel-gfx
On Thu, 08 Dec 2016, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
> On 08/12/2016 10:46, Jani Nikula wrote:
>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>
>>> Instead of listing them individually we can generate them
>>> using the new i915_platforms.h header.
>>>
>>> Also convert them to a static inline function which
>>> interestingly makes the code smaller as well.
>>>
>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>>
>> NAK. Absolutely opposed to this.
>
> Gee, sounds a bit to harsh to me. :) Didn't we say we are not doing NAKs
> any longer?
Only when dropped without rationale. I needed to make it clear in no
uncertain terms how important this is to me.
>> A large part of my work involves digging through the source tree, and a
>> crucial part of that is looking up definitions and references, both for
>> macros and functions. Not having the macro/function definitions breaks
>> that workflow. Losing that, source code archeology gets *much*
>> harder. The losses are much greater than the gains.
>
> Hm, I struggle to see that point on the same magnitude of a disaster
> scale as you. I would have thought we all know what IS_SKYLAKE & co are
> so it would be no big deal.
Sure we know what they are; I want to be able to see all the
*references* to them as well, using GNU global. That fails if they're
not defined in the first place. And no, git grep is not the same.
> Imagine if we changed it to IS_PLATFORM(SKYLAKE) for instance.
Then all the things passed as parameter would have to be defined.
BR,
Jani.
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v2] drm/i915: Number the platform enum strategically
2016-12-08 10:04 ` Chris Wilson
@ 2016-12-08 13:38 ` Tvrtko Ursulin
0 siblings, 0 replies; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 13:38 UTC (permalink / raw)
To: Intel-gfx; +Cc: Jani Nikula, Michal Wajdeczko
From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
If we use only power of two values for the platform enum
values we can let the compiler optimize some common
checks to a single conditional.
For example code like this:
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
Goes from this:
5c3c5: 8b 83 d8 06 00 00 mov 0x6d8(%rbx),%eax
5c3cb: 83 f8 12 cmp $0x12,%eax
5c3ce: 0f 84 f3 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
5c3d4: 83 f8 15 cmp $0x15,%eax
5c3d7: 0f 84 ea 00 00 00 je 5c4c7 <fw_domain_init+0x1a7>
To this:
5c1d5: f7 83 d8 06 00 00 00 testl $0x240000,0x6d8(%rbx)
5c1dc: 00 24 00
5c1df: 0f 85 da 00 00 00 jne 5c2bf <fw_domain_init+0x18f>
It is not much but there is value in this that as long as we
have to have conditions like the above sprinkled troughout the
code, we can at least have the generate binary a bit smarter.
Until we get to more than 32 platforms there is no downside
to this approach.
v2:
* Remove !! from the comparison. (Chris Wilson)
* Simplify the patch by moving the BIT() to the generator.
(Michal Wajdeczko)
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@linux.intel.com>
---
drivers/gpu/drm/i915/i915_drv.h | 4 ++--
drivers/gpu/drm/i915/intel_device_info.c | 10 ++++++----
2 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index fb8f4b7cd1ae..3be6a19f22eb 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -826,7 +826,7 @@ static inline unsigned int sseu_subslice_total(const struct sseu_dev_info *sseu)
}
enum intel_platform {
-#define i915_platform(name, value) INTEL_##name = value,
+#define i915_platform(name, value) INTEL_##name = BIT(value),
#include "i915_platforms.h"
#undef i915_platform
};
@@ -2590,7 +2590,7 @@ intel_info(const struct drm_i915_private *dev_priv)
#define i915_platform(name, id) \
static inline bool IS_##name(const struct drm_i915_private *dev_priv) \
{ \
- return (dev_priv)->info.platform == INTEL_##name; \
+ return (dev_priv)->info.platform & INTEL_##name; \
}
#include "i915_platforms.h"
#undef i915_platform
diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
index 5192d388d10e..26df6363e265 100644
--- a/drivers/gpu/drm/i915/intel_device_info.c
+++ b/drivers/gpu/drm/i915/intel_device_info.c
@@ -25,18 +25,20 @@
#include "i915_drv.h"
static const char * const platform_names[] = {
-#define i915_platform(name, id) [id] = #name,
+#define i915_platform(name, id) [__builtin_ffs(id)] = #name,
#include "i915_platforms.h"
#undef i915_platform
};
const char *intel_platform_name(enum intel_platform platform)
{
- if (WARN_ON_ONCE(platform >= ARRAY_SIZE(platform_names) ||
- platform_names[platform] == NULL))
+ unsigned int idx = ffs(platform);
+
+ if (WARN_ON_ONCE(idx >= ARRAY_SIZE(platform_names) ||
+ platform_names[idx] == NULL))
return "<unknown>";
- return platform_names[platform];
+ return platform_names[idx];
}
void intel_device_info_dump(struct drm_i915_private *dev_priv)
--
2.7.4
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 13:37 ` Jani Nikula
@ 2016-12-08 13:40 ` Jani Nikula
2016-12-08 13:42 ` Tvrtko Ursulin
1 sibling, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2016-12-08 13:40 UTC (permalink / raw)
To: Tvrtko Ursulin, Tvrtko Ursulin, Intel-gfx
On Thu, 08 Dec 2016, Jani Nikula <jani.nikula@intel.com> wrote:
> On Thu, 08 Dec 2016, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>> On 08/12/2016 10:46, Jani Nikula wrote:
>>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>
>>>> Instead of listing them individually we can generate them
>>>> using the new i915_platforms.h header.
>>>>
>>>> Also convert them to a static inline function which
>>>> interestingly makes the code smaller as well.
>>>>
>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>>>
>>> NAK. Absolutely opposed to this.
>>
>> Gee, sounds a bit to harsh to me. :) Didn't we say we are not doing NAKs
>> any longer?
>
> Only when dropped without rationale. I needed to make it clear in no
> uncertain terms how important this is to me.
>
>>> A large part of my work involves digging through the source tree, and a
>>> crucial part of that is looking up definitions and references, both for
>>> macros and functions. Not having the macro/function definitions breaks
>>> that workflow. Losing that, source code archeology gets *much*
>>> harder. The losses are much greater than the gains.
>>
>> Hm, I struggle to see that point on the same magnitude of a disaster
>> scale as you. I would have thought we all know what IS_SKYLAKE & co are
>> so it would be no big deal.
>
> Sure we know what they are; I want to be able to see all the
> *references* to them as well, using GNU global. That fails if they're
> not defined in the first place. And no, git grep is not the same.
>
>> Imagine if we changed it to IS_PLATFORM(SKYLAKE) for instance.
>
> Then all the things passed as parameter would have to be defined.
Oh, btw, patch 1/3 also fails this because the INTEL_FOO enumerations
aren't defined as-is but via macros. This is not as important as the
IS_FOO ones, because the former aren't really used throughout the
source, while the latter are.
BR,
Jani.
>
>
> BR,
> Jani.
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 13:37 ` Jani Nikula
2016-12-08 13:40 ` Jani Nikula
@ 2016-12-08 13:42 ` Tvrtko Ursulin
2016-12-08 14:00 ` Jani Nikula
1 sibling, 1 reply; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 13:42 UTC (permalink / raw)
To: Jani Nikula, Tvrtko Ursulin, Intel-gfx
On 08/12/2016 13:37, Jani Nikula wrote:
> On Thu, 08 Dec 2016, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>> On 08/12/2016 10:46, Jani Nikula wrote:
>>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>
>>>> Instead of listing them individually we can generate them
>>>> using the new i915_platforms.h header.
>>>>
>>>> Also convert them to a static inline function which
>>>> interestingly makes the code smaller as well.
>>>>
>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>>>
>>> NAK. Absolutely opposed to this.
>>
>> Gee, sounds a bit to harsh to me. :) Didn't we say we are not doing NAKs
>> any longer?
>
> Only when dropped without rationale. I needed to make it clear in no
> uncertain terms how important this is to me.
Hm ok, I'll give you a benefit of doubt here.
>>> A large part of my work involves digging through the source tree, and a
>>> crucial part of that is looking up definitions and references, both for
>>> macros and functions. Not having the macro/function definitions breaks
>>> that workflow. Losing that, source code archeology gets *much*
>>> harder. The losses are much greater than the gains.
>>
>> Hm, I struggle to see that point on the same magnitude of a disaster
>> scale as you. I would have thought we all know what IS_SKYLAKE & co are
>> so it would be no big deal.
>
> Sure we know what they are; I want to be able to see all the
> *references* to them as well, using GNU global. That fails if they're
> not defined in the first place. And no, git grep is not the same.
>
>> Imagine if we changed it to IS_PLATFORM(SKYLAKE) for instance.
>
> Then all the things passed as parameter would have to be defined.
They are already -> enum intel_platform?!
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 13:42 ` Tvrtko Ursulin
@ 2016-12-08 14:00 ` Jani Nikula
2016-12-08 14:10 ` Tvrtko Ursulin
0 siblings, 1 reply; 18+ messages in thread
From: Jani Nikula @ 2016-12-08 14:00 UTC (permalink / raw)
To: Tvrtko Ursulin, Tvrtko Ursulin, Intel-gfx
On Thu, 08 Dec 2016, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
> On 08/12/2016 13:37, Jani Nikula wrote:
>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>>> On 08/12/2016 10:46, Jani Nikula wrote:
>>>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>>>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>>
>>>>> Instead of listing them individually we can generate them
>>>>> using the new i915_platforms.h header.
>>>>>
>>>>> Also convert them to a static inline function which
>>>>> interestingly makes the code smaller as well.
>>>>>
>>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>>>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>>>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>>>>
>>>> NAK. Absolutely opposed to this.
>>>
>>> Gee, sounds a bit to harsh to me. :) Didn't we say we are not doing NAKs
>>> any longer?
>>
>> Only when dropped without rationale. I needed to make it clear in no
>> uncertain terms how important this is to me.
>
> Hm ok, I'll give you a benefit of doubt here.
Thanks; I hope you've observed I don't use it lightly.
>>>> A large part of my work involves digging through the source tree, and a
>>>> crucial part of that is looking up definitions and references, both for
>>>> macros and functions. Not having the macro/function definitions breaks
>>>> that workflow. Losing that, source code archeology gets *much*
>>>> harder. The losses are much greater than the gains.
>>>
>>> Hm, I struggle to see that point on the same magnitude of a disaster
>>> scale as you. I would have thought we all know what IS_SKYLAKE & co are
>>> so it would be no big deal.
>>
>> Sure we know what they are; I want to be able to see all the
>> *references* to them as well, using GNU global. That fails if they're
>> not defined in the first place. And no, git grep is not the same.
>>
>>> Imagine if we changed it to IS_PLATFORM(SKYLAKE) for instance.
>>
>> Then all the things passed as parameter would have to be defined.
>
> They are already -> enum intel_platform?!
See the other mail; they'd have to be defined directly (as they
currently are in git) instead of via macros (as in patch 1).
Hmm, how about
static inline bool intel_is_platform(const struct drm_i915_private *dev_priv,
enum intel_platform platform)
{
return dev_priv->info.platform == platform;
}
and doing
#define IS_FOO(dev_priv) intel_is_platform(dev_priv, INTEL_FOO)
manually for the ones we actually use (we don't need them all)? If the
function is inline, I don't see how defining N similar functions instead
of passing in the parameter would be more efficient. And you could still
do the optimizations of patchs 3/3 AFAICS.
Suitable compromise?
BR,
Jani.
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/3] drm/i915: Generate all IS_<platform> macros
2016-12-08 14:00 ` Jani Nikula
@ 2016-12-08 14:10 ` Tvrtko Ursulin
0 siblings, 0 replies; 18+ messages in thread
From: Tvrtko Ursulin @ 2016-12-08 14:10 UTC (permalink / raw)
To: Jani Nikula, Tvrtko Ursulin, Intel-gfx
On 08/12/2016 14:00, Jani Nikula wrote:
> On Thu, 08 Dec 2016, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>> On 08/12/2016 13:37, Jani Nikula wrote:
>>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>>>> On 08/12/2016 10:46, Jani Nikula wrote:
>>>>> On Thu, 08 Dec 2016, Tvrtko Ursulin <tursulin@ursulin.net> wrote:
>>>>>> From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>>>
>>>>>> Instead of listing them individually we can generate them
>>>>>> using the new i915_platforms.h header.
>>>>>>
>>>>>> Also convert them to a static inline function which
>>>>>> interestingly makes the code smaller as well.
>>>>>>
>>>>>> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
>>>>>> Cc: Chris Wilson <chris@chris-wilson.co.uk>
>>>>>> Cc: Jani Nikula <jani.nikula@intel.com>
>>>>>> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
>>>>>
>>>>> NAK. Absolutely opposed to this.
>>>>
>>>> Gee, sounds a bit to harsh to me. :) Didn't we say we are not doing NAKs
>>>> any longer?
>>>
>>> Only when dropped without rationale. I needed to make it clear in no
>>> uncertain terms how important this is to me.
>>
>> Hm ok, I'll give you a benefit of doubt here.
>
> Thanks; I hope you've observed I don't use it lightly.
>
>>>>> A large part of my work involves digging through the source tree, and a
>>>>> crucial part of that is looking up definitions and references, both for
>>>>> macros and functions. Not having the macro/function definitions breaks
>>>>> that workflow. Losing that, source code archeology gets *much*
>>>>> harder. The losses are much greater than the gains.
>>>>
>>>> Hm, I struggle to see that point on the same magnitude of a disaster
>>>> scale as you. I would have thought we all know what IS_SKYLAKE & co are
>>>> so it would be no big deal.
>>>
>>> Sure we know what they are; I want to be able to see all the
>>> *references* to them as well, using GNU global. That fails if they're
>>> not defined in the first place. And no, git grep is not the same.
>>>
>>>> Imagine if we changed it to IS_PLATFORM(SKYLAKE) for instance.
>>>
>>> Then all the things passed as parameter would have to be defined.
>>
>> They are already -> enum intel_platform?!
>
> See the other mail; they'd have to be defined directly (as they
> currently are in git) instead of via macros (as in patch 1).
>
> Hmm, how about
>
> static inline bool intel_is_platform(const struct drm_i915_private *dev_priv,
> enum intel_platform platform)
> {
> return dev_priv->info.platform == platform;
> }
>
> and doing
>
> #define IS_FOO(dev_priv) intel_is_platform(dev_priv, INTEL_FOO)
>
> manually for the ones we actually use (we don't need them all)? If the
> function is inline, I don't see how defining N similar functions instead
> of passing in the parameter would be more efficient. And you could still
> do the optimizations of patchs 3/3 AFAICS.
>
> Suitable compromise?
Yes, in fact, I was already half way through typing that when this
e-mail arrived.
Regards,
Tvrtko
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* ✗ Fi.CI.BAT: warning for Claw back the IS_<platform> optimisation (rev2)
2016-12-08 9:49 [PATCH 0/3] Claw back the IS_<platform> optimisation Tvrtko Ursulin
` (3 preceding siblings ...)
2016-12-08 11:54 ` ✓ Fi.CI.BAT: success for Claw back the IS_<platform> optimisation Patchwork
@ 2016-12-08 15:15 ` Patchwork
4 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2016-12-08 15:15 UTC (permalink / raw)
To: Tvrtko Ursulin; +Cc: intel-gfx
== Series Details ==
Series: Claw back the IS_<platform> optimisation (rev2)
URL : https://patchwork.freedesktop.org/series/16544/
State : warning
== Summary ==
Series 16544v2 Claw back the IS_<platform> optimisation
https://patchwork.freedesktop.org/api/1.0/series/16544/revisions/2/mbox/
Test drv_module_reload:
Subgroup basic-reload:
pass -> DMESG-WARN (fi-hsw-4770r)
pass -> DMESG-WARN (fi-snb-2520m)
pass -> DMESG-WARN (fi-skl-6260u)
pass -> DMESG-WARN (fi-ivb-3770)
pass -> DMESG-WARN (fi-byt-n2820)
pass -> DMESG-WARN (fi-ilk-650)
pass -> DMESG-WARN (fi-byt-j1900)
pass -> DMESG-WARN (fi-kbl-7500u)
pass -> DMESG-WARN (fi-bsw-n3050)
pass -> DMESG-WARN (fi-ivb-3520m)
pass -> DMESG-WARN (fi-snb-2600)
pass -> DMESG-WARN (fi-skl-6770hq)
pass -> DMESG-WARN (fi-hsw-4770)
pass -> DMESG-WARN (fi-bdw-5557u)
pass -> DMESG-WARN (fi-skl-6700hq)
Subgroup basic-reload-final:
pass -> DMESG-WARN (fi-hsw-4770r)
pass -> DMESG-WARN (fi-snb-2520m)
pass -> DMESG-WARN (fi-skl-6260u)
pass -> DMESG-WARN (fi-ivb-3770)
pass -> DMESG-WARN (fi-byt-n2820)
pass -> DMESG-WARN (fi-ilk-650)
pass -> DMESG-WARN (fi-byt-j1900)
pass -> DMESG-WARN (fi-kbl-7500u)
pass -> DMESG-WARN (fi-bsw-n3050)
pass -> DMESG-WARN (fi-ivb-3520m)
pass -> DMESG-WARN (fi-snb-2600)
pass -> DMESG-WARN (fi-skl-6770hq)
pass -> DMESG-WARN (fi-hsw-4770)
pass -> DMESG-WARN (fi-bdw-5557u)
pass -> DMESG-WARN (fi-skl-6700hq)
Subgroup basic-reload-inject:
pass -> DMESG-WARN (fi-hsw-4770r)
pass -> DMESG-WARN (fi-snb-2520m)
pass -> DMESG-WARN (fi-skl-6260u)
pass -> DMESG-WARN (fi-ivb-3770)
pass -> DMESG-WARN (fi-byt-n2820)
pass -> DMESG-WARN (fi-ilk-650)
pass -> DMESG-WARN (fi-byt-j1900)
pass -> DMESG-WARN (fi-kbl-7500u)
pass -> DMESG-WARN (fi-bsw-n3050)
pass -> DMESG-WARN (fi-ivb-3520m)
pass -> DMESG-WARN (fi-snb-2600)
pass -> DMESG-WARN (fi-skl-6770hq)
pass -> DMESG-WARN (fi-hsw-4770)
pass -> DMESG-WARN (fi-bdw-5557u)
pass -> DMESG-WARN (fi-skl-6700hq)
fi-bdw-5557u total:247 pass:230 dwarn:3 dfail:0 fail:0 skip:14
fi-bsw-n3050 total:247 pass:205 dwarn:3 dfail:0 fail:0 skip:39
fi-byt-j1900 total:247 pass:217 dwarn:3 dfail:0 fail:0 skip:27
fi-byt-n2820 total:247 pass:213 dwarn:3 dfail:0 fail:0 skip:31
fi-hsw-4770 total:247 pass:225 dwarn:3 dfail:0 fail:0 skip:19
fi-hsw-4770r total:247 pass:225 dwarn:3 dfail:0 fail:0 skip:19
fi-ilk-650 total:247 pass:192 dwarn:3 dfail:0 fail:0 skip:52
fi-ivb-3520m total:247 pass:223 dwarn:3 dfail:0 fail:0 skip:21
fi-ivb-3770 total:247 pass:223 dwarn:3 dfail:0 fail:0 skip:21
fi-kbl-7500u total:247 pass:223 dwarn:3 dfail:0 fail:0 skip:21
fi-skl-6260u total:247 pass:231 dwarn:3 dfail:0 fail:0 skip:13
fi-skl-6700hq total:247 pass:224 dwarn:3 dfail:0 fail:0 skip:20
fi-skl-6700k total:247 pass:224 dwarn:3 dfail:0 fail:0 skip:20
fi-skl-6770hq total:247 pass:231 dwarn:3 dfail:0 fail:0 skip:13
fi-snb-2520m total:247 pass:213 dwarn:3 dfail:0 fail:0 skip:31
fi-snb-2600 total:247 pass:212 dwarn:3 dfail:0 fail:0 skip:32
24cc1f39920c0caf747c6bda267ca19b99f21786 drm-tip: 2016y-12m-08d-12h-31m-59s UTC integration manifest
ab139b1 drm/i915: Number the platform enum strategically
e2a3c06 drm/i915: Generate all IS_<platform> macros
db53ca9 drm/i915: Introduct i915_platforms.h
== Logs ==
For more details see: https://intel-gfx-ci.01.org/CI/Patchwork_3238/
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2016-12-08 15:15 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-08 9:49 [PATCH 0/3] Claw back the IS_<platform> optimisation Tvrtko Ursulin
2016-12-08 9:49 ` [PATCH 1/3] drm/i915: Introduct i915_platforms.h Tvrtko Ursulin
2016-12-08 10:41 ` Jani Nikula
2016-12-08 13:16 ` Joonas Lahtinen
2016-12-08 13:21 ` Tvrtko Ursulin
2016-12-08 9:49 ` [PATCH 2/3] drm/i915: Generate all IS_<platform> macros Tvrtko Ursulin
2016-12-08 10:46 ` Jani Nikula
2016-12-08 13:26 ` Tvrtko Ursulin
2016-12-08 13:37 ` Jani Nikula
2016-12-08 13:40 ` Jani Nikula
2016-12-08 13:42 ` Tvrtko Ursulin
2016-12-08 14:00 ` Jani Nikula
2016-12-08 14:10 ` Tvrtko Ursulin
2016-12-08 9:49 ` [PATCH 3/3] drm/i915: Number the platform enum strategically Tvrtko Ursulin
2016-12-08 10:04 ` Chris Wilson
2016-12-08 13:38 ` [PATCH v2] " Tvrtko Ursulin
2016-12-08 11:54 ` ✓ Fi.CI.BAT: success for Claw back the IS_<platform> optimisation Patchwork
2016-12-08 15:15 ` ✗ Fi.CI.BAT: warning for Claw back the IS_<platform> optimisation (rev2) Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox