[Intel-gfx] [PATCH 16/30] drm/i915/guc: Define GuC firmware version for Icelake

2019-03-29 Thread Michal Wajdeczko
Define GuC firmware version for Icelake.

Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
Cc: Rodrigo Vivi 
Cc: Anusha Srivatsa 
---
 drivers/gpu/drm/i915/intel_guc_fw.c | 11 +++
 1 file changed, 11 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_guc_fw.c 
b/drivers/gpu/drm/i915/intel_guc_fw.c
index c937a648c2a1..c88a089885a0 100644
--- a/drivers/gpu/drm/i915/intel_guc_fw.c
+++ b/drivers/gpu/drm/i915/intel_guc_fw.c
@@ -55,9 +55,16 @@
 #define KBL_GUC_FW_PATCH 3
 #define KBL_GUC_FIRMWARE_PATH __MAKE_GUC_FW_PATH(KBL)
 
+#define ICL_GUC_FW_PREFIX icl
+#define ICL_GUC_FW_MAJOR 32
+#define ICL_GUC_FW_MINOR 0
+#define ICL_GUC_FW_PATCH 3
+#define ICL_GUC_FIRMWARE_PATH __MAKE_GUC_FW_PATH(ICL)
+
 MODULE_FIRMWARE(SKL_GUC_FIRMWARE_PATH);
 MODULE_FIRMWARE(BXT_GUC_FIRMWARE_PATH);
 MODULE_FIRMWARE(KBL_GUC_FIRMWARE_PATH);
+MODULE_FIRMWARE(ICL_GUC_FIRMWARE_PATH);
 
 static void guc_fw_select(struct intel_uc_fw *guc_fw)
 {
@@ -73,6 +80,10 @@ static void guc_fw_select(struct intel_uc_fw *guc_fw)
guc_fw->path = i915_modparams.guc_firmware_path;
guc_fw->major_ver_wanted = 0;
guc_fw->minor_ver_wanted = 0;
+   } else if (IS_ICELAKE(i915)) {
+   guc_fw->path = ICL_GUC_FIRMWARE_PATH;
+   guc_fw->major_ver_wanted = ICL_GUC_FW_MAJOR;
+   guc_fw->minor_ver_wanted = ICL_GUC_FW_MINOR;
} else if (IS_KABYLAKE(i915) || IS_COFFEELAKE(i915)) {
guc_fw->path = KBL_GUC_FIRMWARE_PATH;
guc_fw->major_ver_wanted = KBL_GUC_FW_MAJOR;
-- 
2.19.2

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

[Intel-gfx] [PATCH 03/30] drm/i915/guc: Update GuC firmware versions and names

2019-03-29 Thread Michal Wajdeczko
GuC firmware changed its release version numbering schema and now it
also includes patch version. Update our GuC firmware path definitions
to match new pattern:

_guc_...bin

While here, reorder platform checks and start from the latest.

Signed-off-by: Michal Wajdeczko 
Cc: Joonas Lahtinen 
Cc: Daniele Ceraolo Spurio 
Cc: Rodrigo Vivi 
Cc: Anusha Srivatsa 
Cc: Jeff Mcgee 
---
 drivers/gpu/drm/i915/intel_guc_fw.c | 76 -
 1 file changed, 42 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_guc_fw.c 
b/drivers/gpu/drm/i915/intel_guc_fw.c
index 792a551450c7..c937a648c2a1 100644
--- a/drivers/gpu/drm/i915/intel_guc_fw.c
+++ b/drivers/gpu/drm/i915/intel_guc_fw.c
@@ -30,53 +30,61 @@
 #include "intel_guc_fw.h"
 #include "i915_drv.h"
 
-#define SKL_FW_MAJOR 9
-#define SKL_FW_MINOR 33
-
-#define BXT_FW_MAJOR 9
-#define BXT_FW_MINOR 29
-
-#define KBL_FW_MAJOR 9
-#define KBL_FW_MINOR 39
-
-#define GUC_FW_PATH(platform, major, minor) \
-   "i915/" __stringify(platform) "_guc_ver" __stringify(major) "_" 
__stringify(minor) ".bin"
-
-#define I915_SKL_GUC_UCODE GUC_FW_PATH(skl, SKL_FW_MAJOR, SKL_FW_MINOR)
-MODULE_FIRMWARE(I915_SKL_GUC_UCODE);
-
-#define I915_BXT_GUC_UCODE GUC_FW_PATH(bxt, BXT_FW_MAJOR, BXT_FW_MINOR)
-MODULE_FIRMWARE(I915_BXT_GUC_UCODE);
-
-#define I915_KBL_GUC_UCODE GUC_FW_PATH(kbl, KBL_FW_MAJOR, KBL_FW_MINOR)
-MODULE_FIRMWARE(I915_KBL_GUC_UCODE);
+#define __MAKE_GUC_FW_PATH(KEY) \
+   "i915/" \
+   __stringify(KEY##_GUC_FW_PREFIX) "_guc_" \
+   __stringify(KEY##_GUC_FW_MAJOR) "." \
+   __stringify(KEY##_GUC_FW_MINOR) "." \
+   __stringify(KEY##_GUC_FW_PATCH) ".bin"
+
+#define SKL_GUC_FW_PREFIX skl
+#define SKL_GUC_FW_MAJOR 32
+#define SKL_GUC_FW_MINOR 0
+#define SKL_GUC_FW_PATCH 3
+#define SKL_GUC_FIRMWARE_PATH __MAKE_GUC_FW_PATH(SKL)
+
+#define BXT_GUC_FW_PREFIX bxt
+#define BXT_GUC_FW_MAJOR 32
+#define BXT_GUC_FW_MINOR 0
+#define BXT_GUC_FW_PATCH 3
+#define BXT_GUC_FIRMWARE_PATH __MAKE_GUC_FW_PATH(BXT)
+
+#define KBL_GUC_FW_PREFIX kbl
+#define KBL_GUC_FW_MAJOR 32
+#define KBL_GUC_FW_MINOR 0
+#define KBL_GUC_FW_PATCH 3
+#define KBL_GUC_FIRMWARE_PATH __MAKE_GUC_FW_PATH(KBL)
+
+MODULE_FIRMWARE(SKL_GUC_FIRMWARE_PATH);
+MODULE_FIRMWARE(BXT_GUC_FIRMWARE_PATH);
+MODULE_FIRMWARE(KBL_GUC_FIRMWARE_PATH);
 
 static void guc_fw_select(struct intel_uc_fw *guc_fw)
 {
struct intel_guc *guc = container_of(guc_fw, struct intel_guc, fw);
-   struct drm_i915_private *dev_priv = guc_to_i915(guc);
+   struct drm_i915_private *i915 = guc_to_i915(guc);
 
GEM_BUG_ON(guc_fw->type != INTEL_UC_FW_TYPE_GUC);
 
-   if (!HAS_GUC(dev_priv))
+   if (!HAS_GUC(i915))
return;
 
if (i915_modparams.guc_firmware_path) {
guc_fw->path = i915_modparams.guc_firmware_path;
guc_fw->major_ver_wanted = 0;
guc_fw->minor_ver_wanted = 0;
-   } else if (IS_SKYLAKE(dev_priv)) {
-   guc_fw->path = I915_SKL_GUC_UCODE;
-   guc_fw->major_ver_wanted = SKL_FW_MAJOR;
-   guc_fw->minor_ver_wanted = SKL_FW_MINOR;
-   } else if (IS_BROXTON(dev_priv)) {
-   guc_fw->path = I915_BXT_GUC_UCODE;
-   guc_fw->major_ver_wanted = BXT_FW_MAJOR;
-   guc_fw->minor_ver_wanted = BXT_FW_MINOR;
-   } else if (IS_KABYLAKE(dev_priv) || IS_COFFEELAKE(dev_priv)) {
-   guc_fw->path = I915_KBL_GUC_UCODE;
-   guc_fw->major_ver_wanted = KBL_FW_MAJOR;
-   guc_fw->minor_ver_wanted = KBL_FW_MINOR;
+   } else if (IS_KABYLAKE(i915) || IS_COFFEELAKE(i915)) {
+   guc_fw->path = KBL_GUC_FIRMWARE_PATH;
+   guc_fw->major_ver_wanted = KBL_GUC_FW_MAJOR;
+   guc_fw->minor_ver_wanted = KBL_GUC_FW_MINOR;
+   } else if (IS_BROXTON(i915)) {
+   guc_fw->path = BXT_GUC_FIRMWARE_PATH;
+   guc_fw->major_ver_wanted = BXT_GUC_FW_MAJOR;
+   guc_fw->minor_ver_wanted = BXT_GUC_FW_MINOR;
+   } else if (IS_SKYLAKE(i915)) {
+   guc_fw->path = SKL_GUC_FIRMWARE_PATH;
+   guc_fw->major_ver_wanted = SKL_GUC_FW_MAJOR;
+   guc_fw->minor_ver_wanted = SKL_GUC_FW_MINOR;
}
 }
 
-- 
2.19.2

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

[Intel-gfx] [PATCH 17/30] drm/i915/huc: Define HuC firmware version for Icelake

2019-03-29 Thread Michal Wajdeczko
This patch adds the support to load HuC on ICL.

Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
Cc: Anusha Srivatsa 
Cc: Tony Ye 
---
 drivers/gpu/drm/i915/intel_huc_fw.c | 12 
 1 file changed, 12 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_huc_fw.c 
b/drivers/gpu/drm/i915/intel_huc_fw.c
index 68d47c105939..b8e160dc4621 100644
--- a/drivers/gpu/drm/i915/intel_huc_fw.c
+++ b/drivers/gpu/drm/i915/intel_huc_fw.c
@@ -34,6 +34,10 @@
 #define KBL_HUC_FW_MINOR 00
 #define KBL_BLD_NUM 1810
 
+#define ICL_HUC_FW_MAJOR 8
+#define ICL_HUC_FW_MINOR 4
+#define ICL_BLD_NUM 3132
+
 #define HUC_FW_PATH(platform, major, minor, bld_num) \
"i915/" __stringify(platform) "_huc_ver" __stringify(major) "_" \
__stringify(minor) "_" __stringify(bld_num) ".bin"
@@ -50,6 +54,10 @@ MODULE_FIRMWARE(I915_BXT_HUC_UCODE);
KBL_HUC_FW_MINOR, KBL_BLD_NUM)
 MODULE_FIRMWARE(I915_KBL_HUC_UCODE);
 
+#define I915_ICL_HUC_UCODE HUC_FW_PATH(icl, ICL_HUC_FW_MAJOR, \
+   ICL_HUC_FW_MINOR, ICL_BLD_NUM)
+MODULE_FIRMWARE(I915_ICL_HUC_UCODE);
+
 static void huc_fw_select(struct intel_uc_fw *huc_fw)
 {
struct intel_huc *huc = container_of(huc_fw, struct intel_huc, fw);
@@ -76,6 +84,10 @@ static void huc_fw_select(struct intel_uc_fw *huc_fw)
huc_fw->path = I915_KBL_HUC_UCODE;
huc_fw->major_ver_wanted = KBL_HUC_FW_MAJOR;
huc_fw->minor_ver_wanted = KBL_HUC_FW_MINOR;
+   } else if (IS_ICELAKE(dev_priv)) {
+   huc_fw->path = I915_ICL_HUC_UCODE;
+   huc_fw->major_ver_wanted = ICL_HUC_FW_MAJOR;
+   huc_fw->minor_ver_wanted = ICL_HUC_FW_MINOR;
}
 }
 
-- 
2.19.2

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

[Intel-gfx] [PATCH 11/30] drm/i915/guc: New GuC interrupt register for Gen11

2019-03-29 Thread Michal Wajdeczko
Gen11 defines new more flexible Host-to-GuC interrupt register.
Now the host can write any 32-bit payload to trigger an interrupt
and GuC can additionally read this payload from the register.
Current GuC firmware ignores the payload so we just write 0.

Bspec: 21043

Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
Cc: Rodrigo Vivi 
---
 drivers/gpu/drm/i915/intel_guc.c | 14 +-
 drivers/gpu/drm/i915/intel_guc_reg.h |  1 +
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
index 483c7019f817..5bc9bc7c956a 100644
--- a/drivers/gpu/drm/i915/intel_guc.c
+++ b/drivers/gpu/drm/i915/intel_guc.c
@@ -34,6 +34,13 @@ static void gen8_guc_raise_irq(struct intel_guc *guc)
I915_WRITE(GUC_SEND_INTERRUPT, GUC_SEND_TRIGGER);
 }
 
+static void gen11_guc_raise_irq(struct intel_guc *guc)
+{
+   struct drm_i915_private *dev_priv = guc_to_i915(guc);
+
+   I915_WRITE(GEN11_GUC_HOST_INTERRUPT, 0);
+}
+
 static inline i915_reg_t guc_send_reg(struct intel_guc *guc, u32 i)
 {
GEM_BUG_ON(!guc->send_regs.base);
@@ -63,6 +70,8 @@ void intel_guc_init_send_regs(struct intel_guc *guc)
 
 void intel_guc_init_early(struct intel_guc *guc)
 {
+   struct drm_i915_private *i915 = guc_to_i915(guc);
+
intel_guc_fw_init_early(guc);
intel_guc_ct_init_early(&guc->ct);
intel_guc_log_init_early(&guc->log);
@@ -71,7 +80,10 @@ void intel_guc_init_early(struct intel_guc *guc)
spin_lock_init(&guc->irq_lock);
guc->send = intel_guc_send_nop;
guc->handler = intel_guc_to_host_event_handler_nop;
-   guc->notify = gen8_guc_raise_irq;
+   if (INTEL_GEN(i915) >= 11)
+   guc->notify = gen11_guc_raise_irq;
+   else
+   guc->notify = gen8_guc_raise_irq;
 }
 
 static int guc_init_wq(struct intel_guc *guc)
diff --git a/drivers/gpu/drm/i915/intel_guc_reg.h 
b/drivers/gpu/drm/i915/intel_guc_reg.h
index 57e7ad522c2f..aec02eddbaed 100644
--- a/drivers/gpu/drm/i915/intel_guc_reg.h
+++ b/drivers/gpu/drm/i915/intel_guc_reg.h
@@ -103,6 +103,7 @@
 
 #define GUC_SEND_INTERRUPT _MMIO(0xc4c8)
 #define   GUC_SEND_TRIGGER   (1<<0)
+#define GEN11_GUC_HOST_INTERRUPT   _MMIO(0x1901f0)
 
 #define GUC_NUM_DOORBELLS  256
 
-- 
2.19.2

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

[Intel-gfx] [PATCH 13/30] drm/i915/guc: Update GuC CTB response definition

2019-03-29 Thread Michal Wajdeczko
From: Oscar Mateo 

Current GuC firmwares identify response message in a different way.

Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Kelvin Gardiner 
Cc: John Spotswood 
---
 drivers/gpu/drm/i915/intel_guc_ct.c   | 2 +-
 drivers/gpu/drm/i915/intel_guc_fwif.h | 2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_guc_ct.c 
b/drivers/gpu/drm/i915/intel_guc_ct.c
index dde1dc0d6e69..2d5dc2aa22a7 100644
--- a/drivers/gpu/drm/i915/intel_guc_ct.c
+++ b/drivers/gpu/drm/i915/intel_guc_ct.c
@@ -565,7 +565,7 @@ static inline unsigned int ct_header_get_action(u32 header)
 
 static inline bool ct_header_is_response(u32 header)
 {
-   return ct_header_get_action(header) == INTEL_GUC_ACTION_DEFAULT;
+   return !!(header & GUC_CT_MSG_IS_RESPONSE);
 }
 
 static int ctb_read(struct intel_guc_ct_buffer *ctb, u32 *data)
diff --git a/drivers/gpu/drm/i915/intel_guc_fwif.h 
b/drivers/gpu/drm/i915/intel_guc_fwif.h
index 68dfeecf7b26..115c693daf8e 100644
--- a/drivers/gpu/drm/i915/intel_guc_fwif.h
+++ b/drivers/gpu/drm/i915/intel_guc_fwif.h
@@ -361,6 +361,7 @@ struct guc_ct_buffer_desc {
  *
  * bit[4..0]   message len (in dwords)
  * bit[7..5]   reserved
+ * bit[8]  response (G2H only)
  * bit[8]  write fence to desc
  * bit[9]  write status to H2G buff
  * bit[10] send status (via G2H)
@@ -369,6 +370,7 @@ struct guc_ct_buffer_desc {
  */
 #define GUC_CT_MSG_LEN_SHIFT   0
 #define GUC_CT_MSG_LEN_MASK0x1F
+#define GUC_CT_MSG_IS_RESPONSE (1 << 8)
 #define GUC_CT_MSG_WRITE_FENCE_TO_DESC (1 << 8)
 #define GUC_CT_MSG_WRITE_STATUS_TO_BUFF(1 << 9)
 #define GUC_CT_MSG_SEND_STATUS (1 << 10)
-- 
2.19.2

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

[Intel-gfx] [PATCH 14/30] drm/i915/guc: Enable GuC CTB communication on Gen11

2019-03-29 Thread Michal Wajdeczko
Gen11 GuC firmware expects H2G command messages to be sent over CTB
(command transport buffers).

Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
Cc: John Spotswood 
---
 drivers/gpu/drm/i915/i915_pci.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
index a7e1611af26d..112cfaacc013 100644
--- a/drivers/gpu/drm/i915/i915_pci.c
+++ b/drivers/gpu/drm/i915/i915_pci.c
@@ -720,6 +720,7 @@ static const struct intel_device_info intel_cannonlake_info 
= {
}, \
GEN(11), \
.ddb_size = 2048, \
+   .has_guc_ct = 1, \
.has_logical_ring_elsq = 1, \
.color = { .degamma_lut_size = 33, .gamma_lut_size = 1024 }
 
-- 
2.19.2

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

[Intel-gfx] [PATCH 12/30] drm/i915/guc: New GuC scratch registers for Gen11

2019-03-29 Thread Michal Wajdeczko
Gen11 adds new set of scratch registers that can be used for MMIO
based Host-to-Guc communication. Due to limited number of these
registers it is expected that host will use them only for command
transport buffers (CTB) communication setup if one is available.

Bspec: 21044

Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
Cc: Rodrigo Vivi 
---
 drivers/gpu/drm/i915/intel_guc.c | 12 +---
 drivers/gpu/drm/i915/intel_guc_reg.h |  3 +++
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
index 5bc9bc7c956a..e54de551b567 100644
--- a/drivers/gpu/drm/i915/intel_guc.c
+++ b/drivers/gpu/drm/i915/intel_guc.c
@@ -56,9 +56,15 @@ void intel_guc_init_send_regs(struct intel_guc *guc)
enum forcewake_domains fw_domains = 0;
unsigned int i;
 
-   guc->send_regs.base = i915_mmio_reg_offset(SOFT_SCRATCH(0));
-   guc->send_regs.count = GUC_MAX_MMIO_MSG_LEN;
-   BUILD_BUG_ON(GUC_MAX_MMIO_MSG_LEN > SOFT_SCRATCH_COUNT);
+   if (HAS_GUC_CT(dev_priv) && INTEL_GEN(dev_priv) >= 11) {
+   guc->send_regs.base =
+   i915_mmio_reg_offset(GEN11_SOFT_SCRATCH(0));
+   guc->send_regs.count = GEN11_SOFT_SCRATCH_COUNT;
+   } else {
+   guc->send_regs.base = i915_mmio_reg_offset(SOFT_SCRATCH(0));
+   guc->send_regs.count = GUC_MAX_MMIO_MSG_LEN;
+   BUILD_BUG_ON(GUC_MAX_MMIO_MSG_LEN > SOFT_SCRATCH_COUNT);
+   }
 
for (i = 0; i < guc->send_regs.count; i++) {
fw_domains |= intel_uncore_forcewake_for_reg(&dev_priv->uncore,
diff --git a/drivers/gpu/drm/i915/intel_guc_reg.h 
b/drivers/gpu/drm/i915/intel_guc_reg.h
index aec02eddbaed..d26de5193568 100644
--- a/drivers/gpu/drm/i915/intel_guc_reg.h
+++ b/drivers/gpu/drm/i915/intel_guc_reg.h
@@ -51,6 +51,9 @@
 #define SOFT_SCRATCH(n)_MMIO(0xc180 + (n) * 4)
 #define SOFT_SCRATCH_COUNT 16
 
+#define GEN11_SOFT_SCRATCH(n)  _MMIO(0x190240 + (n) * 4)
+#define GEN11_SOFT_SCRATCH_COUNT   4
+
 #define UOS_RSA_SCRATCH(i) _MMIO(0xc200 + (i) * 4)
 #define UOS_RSA_SCRATCH_COUNT  64
 
-- 
2.19.2

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

[Intel-gfx] [PATCH 25/30] drm/i915/guc: New engine-reset-complete message

2019-03-29 Thread Michal Wajdeczko
GuC sends ENGINE_RESET_COMPLETE message as an follow-up answer
to earlier ENGINE_RESET request from the host. Once this message
is received, clear engine reset flag to unblock our reset process.

Credits-to: Michel Thierry 
Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Vinay Belgaumkar 
Cc: Michal Winiarski 
Cc: Tomasz Lis 
---
 drivers/gpu/drm/i915/intel_guc.c  | 29 +++
 drivers/gpu/drm/i915/intel_guc_fwif.h |  3 ++-
 2 files changed, 31 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_guc.c b/drivers/gpu/drm/i915/intel_guc.c
index abedb8982040..c9fbda2e8a78 100644
--- a/drivers/gpu/drm/i915/intel_guc.c
+++ b/drivers/gpu/drm/i915/intel_guc.c
@@ -27,6 +27,9 @@
 #include "intel_guc_submission.h"
 #include "i915_drv.h"
 
+static void guc_handle_engine_reset_completed(struct intel_guc *guc,
+ const u32 engine_class);
+
 static void gen8_guc_raise_irq(struct intel_guc *guc)
 {
struct drm_i915_private *dev_priv = guc_to_i915(guc);
@@ -517,6 +520,12 @@ int intel_guc_to_host_process_recv_msg(struct intel_guc 
*guc,
   INTEL_GUC_RECV_MSG_CRASH_DUMP_POSTED))
intel_guc_log_handle_flush_event(&guc->log);
 
+   if (msg & INTEL_GUC_RECV_MSG_ENGINE_RESET_COMPLETE) {
+   if (len != 3)
+   return -EPROTO;
+   guc_handle_engine_reset_completed(guc, payload[1]);
+   }
+
return 0;
 }
 
@@ -615,6 +624,7 @@ guc_set_class_under_reset(struct intel_guc *guc, unsigned 
int guc_class)
 {
GEM_BUG_ON(guc_class >= GUC_MAX_ENGINE_CLASSES);
guc->engine_class_under_reset |= BIT(guc_class);
+   intel_guc_enable_msg(guc, INTEL_GUC_RECV_MSG_ENGINE_RESET_COMPLETE);
 }
 
 static inline void
@@ -622,6 +632,7 @@ guc_clear_class_under_reset(struct intel_guc *guc, unsigned 
int guc_class)
 {
GEM_BUG_ON(guc_class >= GUC_MAX_ENGINE_CLASSES);
guc->engine_class_under_reset &= ~BIT(guc_class);
+   intel_guc_disable_msg(guc, INTEL_GUC_RECV_MSG_ENGINE_RESET_COMPLETE);
 }
 
 static inline bool
@@ -686,6 +697,24 @@ int intel_guc_reset_engine(struct intel_guc *guc,
return ret;
 }
 
+/*
+ * GuC notifies host that reset engine has completed.
+ * This message should only be received after a request-reset h2g,
+ * so check that and clear the engine_class_under_reset flag.
+ */
+static void guc_handle_engine_reset_completed(struct intel_guc *guc,
+ const u32 engine_class)
+{
+   if (engine_class >= GUC_MAX_ENGINE_CLASSES ||
+   !guc_is_class_under_reset(guc, engine_class)) {
+   DRM_WARN("Unexpected reset-complete for engine class: %d",
+engine_class);
+   return;
+   }
+
+   guc_clear_class_under_reset(guc, engine_class);
+}
+
 /**
  * intel_guc_resume() - notify GuC resuming from suspend state
  * @guc:   the guc
diff --git a/drivers/gpu/drm/i915/intel_guc_fwif.h 
b/drivers/gpu/drm/i915/intel_guc_fwif.h
index 004d3d882f6f..3b037a9e3181 100644
--- a/drivers/gpu/drm/i915/intel_guc_fwif.h
+++ b/drivers/gpu/drm/i915/intel_guc_fwif.h
@@ -722,7 +722,8 @@ enum intel_guc_response_status {
 /* This action will be programmed in C1BC - SOFT_SCRATCH_15_REG */
 enum intel_guc_recv_message {
INTEL_GUC_RECV_MSG_CRASH_DUMP_POSTED = BIT(1),
-   INTEL_GUC_RECV_MSG_FLUSH_LOG_BUFFER = BIT(3)
+   INTEL_GUC_RECV_MSG_FLUSH_LOG_BUFFER = BIT(3),
+   INTEL_GUC_RECV_MSG_ENGINE_RESET_COMPLETE = BIT(25),
 };
 
 #endif
-- 
2.19.2

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

[Intel-gfx] [PATCH 20/30] drm/i915/guc: Make use of the SW counter field in the context descriptor

2019-03-29 Thread Michal Wajdeczko
From: Oscar Mateo 

The new context descriptor format contains two assignable fields:
the SW Context ID (technically 11 bits, but practically limited to 2032
entries due to some being reserved for future use by the GuC) and the
SW Counter (6 bits).

We don't want to limit ourselves too much in the maximum number of
concurrent contexts we want to allow, so ideally we want to employ
every possible bit available. Unfortunately, a further limitation in
the interface with the GuC means the combination of SW Context ID +
SW Counter has to be unique within the same engine class (as we use
the SW Context ID to index in the GuC stage descriptor pool, and the
Engine Class + SW Counter to index in the 2-dimensional lrc array).
This essentially means we need to somehow encode the engine instance.

Since the BSpec allows 6 bits for engine instance, we use the whole
SW counter for this task. If the limitation of 2032 maximum simultaneous
contexts is too restrictive, we can always squeeze things a bit more
(3 extras bits for hw_id, 3 bits for instance) and things will still
work (Gen11 does not instance more than 8 engines of any class).

Another alternative would be to generate the hw_id per HW context
instead of per GEM context, but that has other problems (e.g. maximum
number of user-created contexts would be variable, no relationship
between a GuC principal descriptor and the proxy descriptor it uses, ...)

Bspec: 12254

Signed-off-by: Oscar Mateo 
Signed-off-by: Rodrigo Vivi 
Signed-off-by: Michal Wajdeczko 
Signed-off-by: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
Cc: Lionel Landwerlin 
Cc: Michal Winiarski 
Cc: Tomasz Lis 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/i915_drv.h|  9 -
 drivers/gpu/drm/i915/i915_gem_context.c|  6 +-
 drivers/gpu/drm/i915/i915_perf.c   |  1 +
 drivers/gpu/drm/i915/i915_reg.h|  2 ++
 drivers/gpu/drm/i915/intel_context_types.h |  2 ++
 drivers/gpu/drm/i915/intel_lrc.c   | 12 +---
 6 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index f75600fa77c6..b3d5b715b637 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1758,14 +1758,21 @@ struct drm_i915_private {
struct llist_head free_list;
struct work_struct free_work;
 
-   /* The hw wants to have a stable context identifier for the
+   /*
+* The HW wants to have a stable context identifier for the
 * lifetime of the context (for OA, PASID, faults, etc).
 * This is limited in execlists to 21 bits.
+* In enhanced execlist (GEN11+) this is limited to 11 bits
+* (the SW Context ID field) but GuC limits it further so
+* without taking advantage of part of the SW counter field the
+* firmware only supports a max number of contexts equal to the
+* number of entries in the GuC stage descriptor pool.
 */
struct ida hw_ida;
 #define MAX_CONTEXT_HW_ID (1<<21) /* exclusive */
 #define MAX_GUC_CONTEXT_HW_ID (1 << 20) /* exclusive */
 #define GEN11_MAX_CONTEXT_HW_ID (1<<11) /* exclusive */
+#define GEN11_MAX_CONTEXT_HW_ID_WITH_GUC GUC_MAX_STAGE_DESCRIPTORS
struct list_head hw_id_list;
} contexts;
 
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c 
b/drivers/gpu/drm/i915/i915_gem_context.c
index 662da485e15f..d882525f67a3 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -144,8 +144,12 @@ static inline int new_hw_id(struct drm_i915_private *i915, 
gfp_t gfp)
 
lockdep_assert_held(&i915->contexts.mutex);
 
+   BUILD_BUG_ON(GUC_MAX_STAGE_DESCRIPTORS > GEN11_MAX_CONTEXT_HW_ID);
+
if (INTEL_GEN(i915) >= 11)
-   max = GEN11_MAX_CONTEXT_HW_ID;
+   max = USES_GUC_SUBMISSION(i915) ?
+ GEN11_MAX_CONTEXT_HW_ID_WITH_GUC :
+ GEN11_MAX_CONTEXT_HW_ID;
else if (USES_GUC_SUBMISSION(i915))
/*
 * When using GuC in proxy submission, GuC consumes the
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 39a4804091d7..08fb77333d85 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -1292,6 +1292,7 @@ static int oa_get_render_ctx_id(struct i915_perf_stream 
*stream)
case 11: {
i915->perf.oa.specific_ctx_id_mask =
((1U << GEN11_SW_CTX_ID_WIDTH) - 1) << 
(GEN11_SW_CTX_ID_SHIFT - 32) |
+   ((1U << GEN11_SW_COUNTER_WIDTH) - 1) << 
(GEN11_SW_COUNTER_SHIFT - 32) |
((1U << GEN11_ENGINE_INSTANCE_WIDTH) - 1) << 
(GEN11_ENGINE_INSTANCE_SHIFT - 32) |
((1 << GEN11_ENGINE_CLASS_WIDTH) - 1) << 
(GEN11_ENGINE_CLASS_

[Intel-gfx] [PATCH 19/30] drm/i915/guc: New GuC IDs based on engine class and instance

2019-03-29 Thread Michal Wajdeczko
From: Daniele Ceraolo Spurio 

Starting from Gen11, the ID to be provided to GuC needs to contain
the engine class in bits [0..2] and the instance in bits [3..6].

NOTE: this patch breaks pointer dereferences in some existing GuC
functions that use the guc_id to dereference arrays but these functions
are not used for now as we have GuC submission disabled and we will
update these functions in follow up patch which requires new IDs.

Bspec: 20944

Signed-off-by: Daniele Ceraolo Spurio 
Signed-off-by: Oscar Mateo 
Signed-off-by: Michel Thierry 
Signed-off-by: Rodrigo Vivi 
Signed-off-by: Michal Wajdeczko 
Cc: Michal Winiarski 
Cc: Tomasz Lis 
Cc: Joonas Lahtinen 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/intel_engine_cs.c |  3 ++-
 drivers/gpu/drm/i915/intel_guc_fwif.h  | 19 +++
 2 files changed, 21 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c 
b/drivers/gpu/drm/i915/intel_engine_cs.c
index f777afc33d8a..6e0efdd5d354 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -312,7 +312,8 @@ intel_engine_setup(struct drm_i915_private *dev_priv,
engine->i915 = dev_priv;
engine->uncore = &dev_priv->uncore;
__sprint_engine_name(engine->name, info);
-   engine->hw_id = engine->guc_id = info->hw_id;
+   engine->hw_id = info->hw_id;
+   engine->guc_id = MAKE_GUC_ID(info->class, info->instance);
engine->mmio_base = __engine_mmio_base(dev_priv, info->mmio_bases);
engine->class = info->class;
engine->instance = info->instance;
diff --git a/drivers/gpu/drm/i915/intel_guc_fwif.h 
b/drivers/gpu/drm/i915/intel_guc_fwif.h
index 115c693daf8e..61f718b907f3 100644
--- a/drivers/gpu/drm/i915/intel_guc_fwif.h
+++ b/drivers/gpu/drm/i915/intel_guc_fwif.h
@@ -117,6 +117,25 @@
 
 #define GUC_CTL_MAX_DWORDS (SOFT_SCRATCH_COUNT - 2) /* [1..14] */
 
+/*
+ * The class goes in bits [0..2] of the GuC ID, the instance in bits [3..6].
+ * Bit 7 can be used for operations that apply to all engine classes&instances.
+ */
+#define GUC_ENGINE_CLASS_SHIFT 0
+#define GUC_ENGINE_CLASS_MASK  (0x7 << GUC_ENGINE_CLASS_SHIFT)
+#define GUC_ENGINE_INSTANCE_SHIFT  3
+#define GUC_ENGINE_INSTANCE_MASK   (0xf << GUC_ENGINE_INSTANCE_SHIFT)
+#define GUC_ENGINE_ALL_INSTANCES   (1 << 7)
+
+#define MAKE_GUC_ID(class, instance) \
+   (((class) << GUC_ENGINE_CLASS_SHIFT) | \
+((instance) << GUC_ENGINE_INSTANCE_SHIFT))
+
+#define GUC_ID_TO_ENGINE_CLASS(guc_id) \
+   (((guc_id) & GUC_ENGINE_CLASS_MASK) >> GUC_ENGINE_CLASS_SHIFT)
+#define GUC_ID_TO_ENGINE_INSTANCE(guc_id) \
+   (((guc_id) & GUC_ENGINE_INSTANCE_MASK) >> GUC_ENGINE_INSTANCE_SHIFT)
+
 /**
  * DOC: GuC Firmware Layout
  *
-- 
2.19.2

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

[Intel-gfx] [PATCH 28/30] drm/i915/guc: Correctly handle GuC interrupts on Gen11

2019-03-29 Thread Michal Wajdeczko
From: Oscar Mateo 

The GuC interrupts now get their own interrupt vector (instead of
sharing a register with the PM interrupts) so handle appropriately.

Signed-off-by: Oscar Mateo 
Signed-off-by: Michal Wajdeczko 
Cc: Tvrtko Ursulin 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
---
 drivers/gpu/drm/i915/i915_drv.h  |  6 ++-
 drivers/gpu/drm/i915/i915_irq.c  | 76 +---
 drivers/gpu/drm/i915/i915_reg.h  |  1 +
 drivers/gpu/drm/i915/intel_guc_reg.h | 18 +++
 4 files changed, 94 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 120b0967c4e8..3b18fdbdea60 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1577,7 +1577,11 @@ struct drm_i915_private {
u32 pm_imr;
u32 pm_ier;
u32 pm_rps_events;
-   u32 pm_guc_events;
+   union {
+   /* RPS and GuC share a register pre-Gen11 */
+   u32 pm_guc_events;
+   u32 guc_events;
+   };
u32 pipestat_irq_mask[I915_MAX_PIPES];
 
struct {
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 3dd971c09d52..c1b4fbd5f496 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -573,6 +573,44 @@ static void gen9_disable_guc_interrupts(struct 
drm_i915_private *dev_priv)
gen9_reset_guc_interrupts(dev_priv);
 }
 
+static void gen11_reset_guc_interrupts(struct drm_i915_private *dev_priv)
+{
+   spin_lock_irq(&dev_priv->irq_lock);
+
+   while (gen11_reset_one_iir(dev_priv, 0, GEN11_GUC))
+   ;
+
+   spin_unlock_irq(&dev_priv->irq_lock);
+}
+
+static void gen11_enable_guc_interrupts(struct drm_i915_private *dev_priv)
+{
+   spin_lock_irq(&dev_priv->irq_lock);
+   if (!dev_priv->guc_interrupts.enabled) {
+   u32 guc_events = dev_priv->guc_events << 16;
+
+   WARN_ON_ONCE(gen11_reset_one_iir(dev_priv, 0, GEN11_GUC));
+   I915_WRITE(GEN11_GUC_SG_INTR_ENABLE, guc_events);
+   I915_WRITE(GEN11_GUC_SG_INTR_MASK, ~guc_events);
+   dev_priv->guc_interrupts.enabled = true;
+   }
+   spin_unlock_irq(&dev_priv->irq_lock);
+}
+
+static void gen11_disable_guc_interrupts(struct drm_i915_private *dev_priv)
+{
+   spin_lock_irq(&dev_priv->irq_lock);
+   dev_priv->guc_interrupts.enabled = false;
+
+   I915_WRITE(GEN11_GUC_SG_INTR_MASK, ~0);
+   I915_WRITE(GEN11_GUC_SG_INTR_ENABLE, 0);
+
+   spin_unlock_irq(&dev_priv->irq_lock);
+   synchronize_irq(dev_priv->drm.irq);
+
+   gen11_reset_guc_interrupts(dev_priv);
+}
+
 /**
  * bdw_update_port_irq - update DE port interrupt
  * @dev_priv: driver private
@@ -1823,6 +1861,12 @@ static void gen9_guc_irq_handler(struct drm_i915_private 
*dev_priv, u32 gt_iir)
intel_guc_to_host_event_handler(&dev_priv->guc);
 }
 
+static void gen11_guc_irq_handler(struct drm_i915_private *dev_priv, u16 iir)
+{
+   if (iir & GEN11_GUC_INTR_GUC2HOST)
+   intel_guc_to_host_event_handler(&dev_priv->guc);
+}
+
 static void i9xx_pipestat_irq_reset(struct drm_i915_private *dev_priv)
 {
enum pipe pipe;
@@ -2945,11 +2989,17 @@ static void
 gen11_other_irq_handler(struct drm_i915_private * const i915,
const u8 instance, const u16 iir)
 {
-   if (instance == OTHER_GTPM_INSTANCE)
+   switch (instance) {
+   case OTHER_GUC_INSTANCE:
+   return gen11_guc_irq_handler(i915, iir);
+
+   case OTHER_GTPM_INSTANCE:
return gen6_rps_irq_handler(i915, iir);
 
-   WARN_ONCE(1, "unhandled other interrupt instance=0x%x, iir=0x%x\n",
- instance, iir);
+   default:
+   WARN_ONCE(1, "unhandled other irq instance=0x%x, iir=0x%x\n",
+ instance, iir);
+   }
 }
 
 static void
@@ -3469,6 +3519,8 @@ static void gen11_gt_irq_reset(struct drm_i915_private 
*dev_priv)
 
I915_WRITE(GEN11_GPM_WGBOXPERF_INTR_ENABLE, 0);
I915_WRITE(GEN11_GPM_WGBOXPERF_INTR_MASK,  ~0);
+   I915_WRITE(GEN11_GUC_SG_INTR_ENABLE, 0);
+   I915_WRITE(GEN11_GUC_SG_INTR_MASK,  ~0);
 }
 
 static void gen11_irq_reset(struct drm_device *dev)
@@ -4111,6 +4163,10 @@ static void gen11_gt_irq_postinstall(struct 
drm_i915_private *dev_priv)
dev_priv->pm_imr = ~dev_priv->pm_ier;
I915_WRITE(GEN11_GPM_WGBOXPERF_INTR_ENABLE, 0);
I915_WRITE(GEN11_GPM_WGBOXPERF_INTR_MASK,  ~0);
+
+   /* Same thing for GuC interrupts */
+   I915_WRITE(GEN11_GUC_SG_INTR_ENABLE, 0);
+   I915_WRITE(GEN11_GUC_SG_INTR_MASK,  ~0);
 }
 
 static void icp_irq_postinstall(struct drm_device *dev)
@@ -4611,8 +4667,12 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
for (i = 0; i < MAX_L3_SLICES; ++i)
dev_priv->l3_parity.remap_info[i] = NULL;
 
-   if (HAS_GUC_SCHED(dev_priv))
-   dev_priv->

[Intel-gfx] [PATCH 23/30] drm/i915/guc: Add support for resume-parsing wq item

2019-03-29 Thread Michal Wajdeczko
Since fw version 25.161, GuC lets us know when an engine had to be reset
due to a hang in another dependent engine, by setting BIT(engine_class) in
the queue_engine_error field. GuC will ignore any other wq item until this
flag is cleared.

To restart the workqueue processing for that engine, we must insert a
special wq item called resume-parsing and wait until the queue_engine_error
field is updated.

Co-Developed-by: Michel Thierry 
Co-Developed-by: Michal Wajdeczko 
Signed-off-by: Michel Thierry 
Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Vinay Belgaumkar 
Cc: Michal Winiarski 
Cc: Tomasz Lis 
---
 drivers/gpu/drm/i915/intel_guc_submission.c | 92 +++--
 1 file changed, 86 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c 
b/drivers/gpu/drm/i915/intel_guc_submission.c
index 1a27352b73a9..b0b10cac9b9b 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -427,6 +427,76 @@ static void guc_proxy_stage_desc_fini(struct 
intel_guc_client *client)
memset(desc, 0, sizeof(*desc));
 }
 
+static u32 get_wq_offset(struct guc_process_desc *desc)
+{
+   const size_t wqi_size = sizeof(struct guc_wq_item);
+   u32 wq_off;
+
+   /*
+* Free space is guaranteed, either by normal port submission or
+* because we waited for the wq_resume to be processed.
+*/
+   wq_off = READ_ONCE(desc->tail);
+   GEM_BUG_ON(CIRC_SPACE(wq_off, READ_ONCE(desc->head),
+ GUC_WQ_SIZE) < wqi_size);
+   GEM_BUG_ON(wq_off & (wqi_size - 1));
+
+   return wq_off;
+}
+
+static void write_wqi(struct guc_process_desc *desc, u32 wq_off)
+{
+   const size_t wqi_size = sizeof(struct guc_wq_item);
+
+   WRITE_ONCE(desc->tail, (wq_off + wqi_size) & (GUC_WQ_SIZE - 1));
+}
+
+static void guc_append_wq_resume_parsing_item(struct intel_guc_client *client,
+ struct intel_engine_cs *engine)
+{
+   struct guc_process_desc *desc = __get_process_desc(client);
+   const u32 target_engine = engine->guc_id;
+   const u32 wqi_resume = WQ_TYPE_RESUME |
+  (target_engine << WQ_TARGET_SHIFT) |
+  (0 << WQ_LEN_SHIFT);
+   const u32 wqi_noop = WQ_TYPE_NOOP |
+   (target_engine << WQ_TARGET_SHIFT) |
+   (0 << WQ_LEN_SHIFT);
+   struct guc_wq_item *wqi;
+   u32 wq_off;
+
+   lockdep_assert_held(&client->wq_lock);
+
+   wq_off = get_wq_offset(desc);
+   wqi = client->vaddr + wq_off + GUC_DB_SIZE;
+
+   /*
+* Submit 4 wq_items (1 RESUME_WQ_PARSING followed by 3 NOOPs) in
+* order to keep it the same size as a 'normal' wq_item.
+*/
+   wqi->header = wqi_resume;
+   wqi->context_desc = wqi_noop;
+   wqi->submit_element_info = wqi_noop;
+   wqi->fence_id = wqi_noop;
+
+   write_wqi(desc, wq_off);
+}
+
+#define GUC_WAIT_FOR_ENGINE_ERROR_CLEANED_MS 10
+
+static void guc_wait_wq_resumed(struct intel_guc_client *client,
+   struct intel_engine_cs *engine)
+{
+   struct guc_process_desc *desc = __get_process_desc(client);
+   u8 guc_class = engine->class;
+
+   lockdep_assert_held(&client->wq_lock);
+
+   /* must wait for the flag to be cleared */
+   WARN_ON(wait_for_atomic(!(desc->queue_engine_error & BIT(guc_class)),
+   GUC_WAIT_FOR_ENGINE_ERROR_CLEANED_MS));
+}
+
 /* Construct a Work Item and append it to the GuC's Work Queue */
 static void guc_wq_item_append(struct intel_guc_client *client,
   struct intel_context *ce,
@@ -454,11 +524,7 @@ static void guc_wq_item_append(struct intel_guc_client 
*client,
/* We expect the WQ to be active if we're appending items to it */
GEM_BUG_ON(desc->wq_status != WQ_STATUS_ACTIVE);
 
-   /* Free space is guaranteed. */
-   wq_off = READ_ONCE(desc->tail);
-   GEM_BUG_ON(CIRC_SPACE(wq_off, READ_ONCE(desc->head),
- GUC_WQ_SIZE) < wqi_size);
-   GEM_BUG_ON(wq_off & (wqi_size - 1));
+   wq_off = get_wq_offset(desc);
 
/* WQ starts from the page after doorbell / process_desc */
wqi = client->vaddr + wq_off + GUC_DB_SIZE;
@@ -481,7 +547,7 @@ static void guc_wq_item_append(struct intel_guc_client 
*client,
}
 
/* Make the update visible to GuC */
-   WRITE_ONCE(desc->tail, (wq_off + wqi_size) & (GUC_WQ_SIZE - 1));
+   write_wqi(desc, wq_off);
 }
 
 static void guc_ring_doorbell(struct intel_guc_client *client)
@@ -505,6 +571,14 @@ static void guc_ring_doorbell(struct intel_guc_client 
*client)
GEM_BUG_ON(db->db_status != GUC_DOORBELL_ENABLED);
 }
 
+static bool guc_needs_wq_resume_parsing_item(struct intel_guc_client *client,
+u32 target_engine_c

[Intel-gfx] [PATCH 26/30] drm/i915/guc: Properly capture & release GuC interrupts on Gen11

2019-03-29 Thread Michal Wajdeczko
From: Oscar Mateo 

With the new interrupt re-partitioning in Gen11, GuC controls by itself
the interrupts it receives, so steering bits and registers have been
defeatured. Being this the case, when the GuC is in control of
submissions we won't know what to do with the ctx switch interrupt
in the driver, so disable it.

Bspec: 12609
Bspec: 10800
Bspec: 10932
Bspec: 10934
Bspec: 9517

Signed-off-by: Oscar Mateo 
Signed-off-by: Michal Wajdeczko 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
Cc: Michal Winiarski 
---
 drivers/gpu/drm/i915/i915_irq.c |  2 +-
 drivers/gpu/drm/i915/intel_guc_submission.c | 57 -
 2 files changed, 56 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 455b2bf691b5..4de6474b6a25 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -4634,7 +4634,7 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
if (INTEL_GEN(dev_priv) <= 7)
rps->pm_intrmsk_mbz |= GEN6_PM_RP_UP_EI_EXPIRED;
 
-   if (INTEL_GEN(dev_priv) >= 8)
+   if (INTEL_GEN(dev_priv) >= 8 && INTEL_GEN(dev_priv) < 11)
rps->pm_intrmsk_mbz |= GEN8_PMINTR_DISABLE_REDIRECT_TO_GUC;
 
if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv))
diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c 
b/drivers/gpu/drm/i915/intel_guc_submission.c
index b0b10cac9b9b..e3f6e2b1aa99 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -1263,7 +1263,7 @@ void intel_guc_submission_fini(struct intel_guc *guc)
guc_stage_desc_pool_destroy(guc);
 }
 
-static void guc_interrupts_capture(struct drm_i915_private *dev_priv)
+static void gen8_guc_interrupts_capture(struct drm_i915_private *dev_priv)
 {
struct intel_rps *rps = &dev_priv->gt_pm.rps;
struct intel_engine_cs *engine;
@@ -1308,7 +1308,7 @@ static void guc_interrupts_capture(struct 
drm_i915_private *dev_priv)
rps->pm_intrmsk_mbz &= ~GEN8_PMINTR_DISABLE_REDIRECT_TO_GUC;
 }
 
-static void guc_interrupts_release(struct drm_i915_private *dev_priv)
+static void gen8_guc_interrupts_release(struct drm_i915_private *dev_priv)
 {
struct intel_rps *rps = &dev_priv->gt_pm.rps;
struct intel_engine_cs *engine;
@@ -1333,6 +1333,59 @@ static void guc_interrupts_release(struct 
drm_i915_private *dev_priv)
rps->pm_intrmsk_mbz &= ~ARAT_EXPIRED_INTRMSK;
 }
 
+static void gen11_guc_interrupts_capture(struct drm_i915_private *dev_priv)
+{
+   struct intel_rps *rps = &dev_priv->gt_pm.rps;
+   u32 tmp;
+   u32 irqs = GT_CONTEXT_SWITCH_INTERRUPT;
+
+   /* Don't handle ctx switch interrupt in GuC submission mode */
+   tmp = I915_READ(GEN11_RENDER_COPY_INTR_ENABLE);
+   tmp &= ~(irqs << 16 | irqs);
+   I915_WRITE(GEN11_RENDER_COPY_INTR_ENABLE, tmp);
+
+   tmp = I915_READ(GEN11_VCS_VECS_INTR_ENABLE);
+   tmp &= ~(irqs << 16 | irqs);
+   I915_WRITE(GEN11_VCS_VECS_INTR_ENABLE, tmp);
+
+   /* GuC needs ARAT expired interrupt unmasked */
+   rps->pm_intrmsk_mbz |= ARAT_EXPIRED_INTRMSK;
+}
+
+static void gen11_guc_interrupts_release(struct drm_i915_private *dev_priv)
+{
+   struct intel_rps *rps = &dev_priv->gt_pm.rps;
+   u32 tmp;
+   u32 irqs = GT_CONTEXT_SWITCH_INTERRUPT;
+
+   /* Handle ctx switch interrupts again */
+   tmp = I915_READ(GEN11_RENDER_COPY_INTR_ENABLE);
+   tmp |= (irqs << 16 | irqs);
+   I915_WRITE(GEN11_RENDER_COPY_INTR_ENABLE, tmp);
+
+   tmp = I915_READ(GEN11_VCS_VECS_INTR_ENABLE);
+   tmp |= (irqs << 16 | irqs);
+   I915_WRITE(GEN11_VCS_VECS_INTR_ENABLE, tmp);
+
+   rps->pm_intrmsk_mbz &= ~ARAT_EXPIRED_INTRMSK;
+}
+
+static void guc_interrupts_capture(struct drm_i915_private *i915)
+{
+   if (INTEL_GEN(i915) >= 11)
+   gen11_guc_interrupts_capture(i915);
+   else
+   gen8_guc_interrupts_capture(i915);
+}
+
+static void guc_interrupts_release(struct drm_i915_private *i915)
+{
+   if (INTEL_GEN(i915) >= 11)
+   gen11_guc_interrupts_release(i915);
+   else
+   gen8_guc_interrupts_release(i915);
+}
+
 static void guc_submission_park(struct intel_engine_cs *engine)
 {
intel_engine_unpin_breadcrumbs_irq(engine);
-- 
2.19.2

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

[Intel-gfx] [PATCH 27/30] drm/i915/guc: Create vfuncs for the GuC interrupts control functions

2019-03-29 Thread Michal Wajdeczko
From: Oscar Mateo 

Controlling and handling of the GuC interrupts is Gen specific.
Create virtual functions to avoid redundant runtime Gen checks.
Gen-specific versions of these functions will follow.

Signed-off-by: Oscar Mateo 
Signed-off-by: Michal Wajdeczko 
Cc: Rodrigo Vivi 
Cc: Tvrtko Ursulin 
Cc: Daniele Ceraolo Spurio 
Cc: Joonas Lahtinen 
---
 drivers/gpu/drm/i915/i915_drv.h  | 22 ++
 drivers/gpu/drm/i915/i915_irq.c  | 18 --
 drivers/gpu/drm/i915/intel_drv.h |  3 ---
 drivers/gpu/drm/i915/intel_guc.h |  1 -
 drivers/gpu/drm/i915/intel_uc.c  |  6 +++---
 5 files changed, 37 insertions(+), 13 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 3e7d0f3d2c82..120b0967c4e8 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1580,6 +1580,13 @@ struct drm_i915_private {
u32 pm_guc_events;
u32 pipestat_irq_mask[I915_MAX_PIPES];
 
+   struct {
+   bool enabled;
+   void (*reset)(struct drm_i915_private *i915);
+   void (*enable)(struct drm_i915_private *i915);
+   void (*disable)(struct drm_i915_private *i915);
+   } guc_interrupts;
+
struct i915_hotplug hotplug;
struct intel_fbc fbc;
struct i915_drrs drrs;
@@ -2716,6 +2723,21 @@ extern void intel_irq_fini(struct drm_i915_private 
*dev_priv);
 int intel_irq_install(struct drm_i915_private *dev_priv);
 void intel_irq_uninstall(struct drm_i915_private *dev_priv);
 
+static inline void intel_reset_guc_interrupts(struct drm_i915_private *i915)
+{
+   i915->guc_interrupts.reset(i915);
+}
+
+static inline void intel_enable_guc_interrupts(struct drm_i915_private *i915)
+{
+   i915->guc_interrupts.enable(i915);
+}
+
+static inline void intel_disable_guc_interrupts(struct drm_i915_private *i915)
+{
+   i915->guc_interrupts.disable(i915);
+}
+
 static inline bool intel_gvt_active(struct drm_i915_private *dev_priv)
 {
return dev_priv->gvt;
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 4de6474b6a25..3dd971c09d52 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -535,7 +535,7 @@ void gen6_disable_rps_interrupts(struct drm_i915_private 
*dev_priv)
gen6_reset_rps_interrupts(dev_priv);
 }
 
-void gen9_reset_guc_interrupts(struct drm_i915_private *dev_priv)
+static void gen9_reset_guc_interrupts(struct drm_i915_private *dev_priv)
 {
assert_rpm_wakelock_held(dev_priv);
 
@@ -544,26 +544,26 @@ void gen9_reset_guc_interrupts(struct drm_i915_private 
*dev_priv)
spin_unlock_irq(&dev_priv->irq_lock);
 }
 
-void gen9_enable_guc_interrupts(struct drm_i915_private *dev_priv)
+static void gen9_enable_guc_interrupts(struct drm_i915_private *dev_priv)
 {
assert_rpm_wakelock_held(dev_priv);
 
spin_lock_irq(&dev_priv->irq_lock);
-   if (!dev_priv->guc.interrupts_enabled) {
+   if (!dev_priv->guc_interrupts.enabled) {
WARN_ON_ONCE(I915_READ(gen6_pm_iir(dev_priv)) &
   dev_priv->pm_guc_events);
-   dev_priv->guc.interrupts_enabled = true;
+   dev_priv->guc_interrupts.enabled = true;
gen6_enable_pm_irq(dev_priv, dev_priv->pm_guc_events);
}
spin_unlock_irq(&dev_priv->irq_lock);
 }
 
-void gen9_disable_guc_interrupts(struct drm_i915_private *dev_priv)
+static void gen9_disable_guc_interrupts(struct drm_i915_private *dev_priv)
 {
assert_rpm_wakelock_held(dev_priv);
 
spin_lock_irq(&dev_priv->irq_lock);
-   dev_priv->guc.interrupts_enabled = false;
+   dev_priv->guc_interrupts.enabled = false;
 
gen6_disable_pm_irq(dev_priv, dev_priv->pm_guc_events);
 
@@ -4637,6 +4637,12 @@ void intel_irq_init(struct drm_i915_private *dev_priv)
if (INTEL_GEN(dev_priv) >= 8 && INTEL_GEN(dev_priv) < 11)
rps->pm_intrmsk_mbz |= GEN8_PMINTR_DISABLE_REDIRECT_TO_GUC;
 
+   if (INTEL_GEN(dev_priv) >= 9) {
+   dev_priv->guc_interrupts.reset = gen9_reset_guc_interrupts;
+   dev_priv->guc_interrupts.enable = gen9_enable_guc_interrupts;
+   dev_priv->guc_interrupts.disable = gen9_disable_guc_interrupts;
+   }
+
if (INTEL_GEN(dev_priv) >= 5 || IS_G4X(dev_priv))
dev->driver->get_vblank_counter = g4x_get_vblank_counter;
else if (INTEL_GEN(dev_priv) >= 3)
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index f8c7b291fdc3..1739f2fe5288 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1618,9 +1618,6 @@ void gen8_irq_power_well_post_enable(struct 
drm_i915_private *dev_priv,
 u8 pipe_mask);
 void gen8_irq_power_well_pre_disable(struct drm_i915_private *dev_priv,
 u8 pipe_mask);
-void gen9_re

[Intel-gfx] [PATCH] drm/i915: add immutable zpos plane properties

2019-03-29 Thread Simon Ser
From: emersion 

This adds basic immutable support for the zpos property. The zpos increases
from bottom to top: primary, sprites, cursor.

Signed-off-by: Simon Ser 
---

This is based on a previous patch by Ville [1] that I wanted to review.
Unfortunately the patch no longer applies, so here is a new one.

[1]: https://patchwork.freedesktop.org/patch/225887/?series=43902&rev=1

 drivers/gpu/drm/i915/intel_display.c | 10 --
 drivers/gpu/drm/i915/intel_sprite.c  |  5 -
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 8576a7f799..f0a85a75bd 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -14323,7 +14323,7 @@ intel_primary_plane_create(struct drm_i915_private 
*dev_priv, enum pipe pipe)
const u64 *modifiers;
const u32 *formats;
int num_formats;
-   int ret;
+   int ret, zpos;
 
if (INTEL_GEN(dev_priv) >= 9)
return skl_universal_plane_create(dev_priv, pipe,
@@ -14412,6 +14412,9 @@ intel_primary_plane_create(struct drm_i915_private 
*dev_priv, enum pipe pipe)
   DRM_MODE_ROTATE_0,
   supported_rotations);
 
+   zpos = 0;
+   drm_plane_create_zpos_immutable_property(&plane->base, zpos);
+
drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs);
 
return plane;
@@ -14428,7 +14431,7 @@ intel_cursor_plane_create(struct drm_i915_private 
*dev_priv,
 {
unsigned int possible_crtcs;
struct intel_plane *cursor;
-   int ret;
+   int ret, zpos;
 
cursor = intel_plane_alloc();
if (IS_ERR(cursor))
@@ -14477,6 +14480,9 @@ intel_cursor_plane_create(struct drm_i915_private 
*dev_priv,
   DRM_MODE_ROTATE_0 |
   DRM_MODE_ROTATE_180);
 
+   zpos = RUNTIME_INFO(dev_priv)->num_sprites[pipe] + 1;
+   drm_plane_create_zpos_immutable_property(&cursor->base, zpos);
+
drm_plane_helper_add(&cursor->base, &intel_plane_helper_funcs);
 
return cursor;
diff --git a/drivers/gpu/drm/i915/intel_sprite.c 
b/drivers/gpu/drm/i915/intel_sprite.c
index 65de7387bf..48bd8f9079 100644
--- a/drivers/gpu/drm/i915/intel_sprite.c
+++ b/drivers/gpu/drm/i915/intel_sprite.c
@@ -2354,7 +2354,7 @@ intel_sprite_plane_create(struct drm_i915_private 
*dev_priv,
const u64 *modifiers;
const u32 *formats;
int num_formats;
-   int ret;
+   int ret, zpos;
 
if (INTEL_GEN(dev_priv) >= 9)
return skl_universal_plane_create(dev_priv, pipe,
@@ -2444,6 +2444,9 @@ intel_sprite_plane_create(struct drm_i915_private 
*dev_priv,
  DRM_COLOR_YCBCR_BT709,
  DRM_COLOR_YCBCR_LIMITED_RANGE);
 
+   zpos = sprite + 1;
+   drm_plane_create_zpos_immutable_property(&plane->base, zpos);
+
drm_plane_helper_add(&plane->base, &intel_plane_helper_funcs);
 
return plane;
-- 
2.21.0


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

Re: [Intel-gfx] [PATCH 20/30] drm/i915/guc: Make use of the SW counter field in the context descriptor

2019-03-29 Thread Chris Wilson
Quoting Michal Wajdeczko (2019-03-29 22:11:08)
> From: Oscar Mateo 
> 
> The new context descriptor format contains two assignable fields:
> the SW Context ID (technically 11 bits, but practically limited to 2032
> entries due to some being reserved for future use by the GuC) and the
> SW Counter (6 bits).

Phooey, I've dropped use of the hw id. So no limit at all in execlists,
and no contention on pinning the hw id.

We could land that and move this mechanism to the guc backend so that it
doesn't impact anything else.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 28/30] drm/i915/guc: Correctly handle GuC interrupts on Gen11

2019-03-29 Thread Chris Wilson
Quoting Michal Wajdeczko (2019-03-29 22:11:16)
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 3dd971c09d52..c1b4fbd5f496 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -573,6 +573,44 @@ static void gen9_disable_guc_interrupts(struct 
> drm_i915_private *dev_priv)
> gen9_reset_guc_interrupts(dev_priv);
>  }
>  
> +static void gen11_reset_guc_interrupts(struct drm_i915_private *dev_priv)
> +{
> +   spin_lock_irq(&dev_priv->irq_lock);
> +
> +   while (gen11_reset_one_iir(dev_priv, 0, GEN11_GUC))
> +   ;

I have to say this and gen11_reset_rps_interupts() is brave. Are these
registers move than double-buffered? Should we throw in a '&& loops++ < 3'?
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v4] drm/i915/icl: Fix clockgating issue when using scalers

2019-03-29 Thread Sripada, Radhakrishna
On Fri, 2019-03-29 at 20:39 +0200, Ville Syrjälä wrote:
> On Thu, Mar 28, 2019 at 10:35:19AM -0700, Radhakrishna Sripada wrote:
> > Fixes the clock-gating issue when pipe scaling is enabled.
> > (Lineage #2006604312)
> > 
> > V2: Fix typo in headline(Chris)
> > Handle the non double buffered nature of the register(Ville)
> > V3: Fix checkpatch warning. BAT failure for V2 on gen3 looks
> > unrelated.
> > V4: Split the icl and skl wa's(Ville)
> > 
> > Cc: Chris Wilson 
> > Cc: Ville Syrjala 
> > Cc: Rodrigo Vivi 
> > Cc: Aditya Swarup 
> > Signed-off-by: Radhakrishna Sripada  > >
> > ---
> >  drivers/gpu/drm/i915/intel_display.c | 48 --
> > --
> >  1 file changed, 34 insertions(+), 14 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/intel_display.c
> > b/drivers/gpu/drm/i915/intel_display.c
> > index 8576a7f799f2..c3ca9cfd36fe 100644
> > --- a/drivers/gpu/drm/i915/intel_display.c
> > +++ b/drivers/gpu/drm/i915/intel_display.c
> > @@ -466,6 +466,7 @@ static const struct intel_limit
> > intel_limits_bxt = {
> > .p2 = { .p2_slow = 1, .p2_fast = 20 },
> >  };
> >  
> > +/* WA Display #0827: Gen9:all */
> >  static void
> >  skl_wa_clkgate(struct drm_i915_private *dev_priv, int pipe, bool
> > enable)
> >  {
> > @@ -478,6 +479,17 @@ skl_wa_clkgate(struct drm_i915_private
> > *dev_priv, int pipe, bool enable)
> >~(DUPS1_GATING_DIS | DUPS2_GATING_DIS));
> >  }
> >  
> > +/* Wa_2006604312:icl */
> > +static void
> > +icl_wa_clkgate(struct drm_i915_private *dev_priv, int pipe, bool
> > enable)
> 
> These functions names (including the skl one) are rather too generic
> and don't describe which clock gating we're disabling. But fixing
> that is probably material for another patch.
Sure let me spin out another patch for this.
> 
> > +{
> > +   if (enable)
> > +   I915_WRITE(CLKGATE_DIS_PSL(pipe), DPFR_GATING_DIS);
> > +   else
> > +   I915_WRITE(CLKGATE_DIS_PSL(pipe),
> > +  I915_READ(CLKGATE_DIS_PSL(pipe)) &
> > ~DPFR_GATING_DIS);
> 
> No RMW for enable but RMW for disable? Seems rather inconsistent.
Sure looks inconsistent. Let me fix it next rev.
> 
> > +}
> > +
> >  static bool
> >  needs_modeset(const struct drm_crtc_state *state)
> >  {
> > @@ -5481,14 +5493,18 @@ static bool
> > hsw_post_update_enable_ips(const struct intel_crtc_state
> > *old_crtc_s
> > return !old_crtc_state->ips_enabled;
> >  }
> >  
> > -static bool needs_nv12_wa(struct drm_i915_private *dev_priv,
> > - const struct intel_crtc_state *crtc_state)
> > +static bool skl_needs_clk_wa(struct drm_i915_private *dev_priv,
> > +const struct intel_crtc_state *crtc_state)
> 
> Still mixing our workarounds more than I'd like. I suggest keeping
> the two entirely separate.
Sure let me separate it completely. Avoids duplicating checks as well.

Thanks,
Radhakrishna(RK) Sripada
> 
> >  {
> > -   if (!crtc_state->nv12_planes)
> > -   return false;
> > -
> > /* WA Display #0827: Gen9:all */
> > -   if (IS_GEN(dev_priv, 9) && !IS_GEMINILAKE(dev_priv))
> > +   if (!!crtc_state->nv12_planes && IS_GEN(dev_priv, 9) &&
> > +   !IS_GEMINILAKE(dev_priv))
> > +   return true;
> > +
> > +   /*
> > +* Wa_2006604312:icl
> > +*/
> > +   if (IS_ICELAKE(dev_priv) && crtc_state->pch_pfit.enabled)
> > return true;
> >  
> > return false;
> > @@ -5527,10 +5543,12 @@ static void intel_post_plane_update(struct
> > intel_crtc_state *old_crtc_state)
> > intel_post_enable_primary(&crtc->base,
> > pipe_config);
> > }
> >  
> > -   /* Display WA 827 */
> > -   if (needs_nv12_wa(dev_priv, old_crtc_state) &&
> > -   !needs_nv12_wa(dev_priv, pipe_config)) {
> > -   skl_wa_clkgate(dev_priv, crtc->pipe, false);
> > +   if (skl_needs_clk_wa(dev_priv, old_crtc_state) &&
> > +   !skl_needs_clk_wa(dev_priv, pipe_config)) {
> > +   if (IS_ICELAKE(dev_priv))
> > +   icl_wa_clkgate(dev_priv, crtc->pipe, false);
> > +   else
> > +   skl_wa_clkgate(dev_priv, crtc->pipe, false);
> > }
> >  }
> >  
> > @@ -5566,10 +5584,12 @@ static void intel_pre_plane_update(struct
> > intel_crtc_state *old_crtc_state,
> > intel_set_cpu_fifo_underrun_reporting(dev_priv,
> > crtc->pipe, false);
> > }
> >  
> > -   /* Display WA 827 */
> > -   if (!needs_nv12_wa(dev_priv, old_crtc_state) &&
> > -   needs_nv12_wa(dev_priv, pipe_config)) {
> > -   skl_wa_clkgate(dev_priv, crtc->pipe, true);
> > +   if (!skl_needs_clk_wa(dev_priv, old_crtc_state) &&
> > +   skl_needs_clk_wa(dev_priv, pipe_config)) {
> > +   if (IS_ICELAKE(dev_priv))
> > +   icl_wa_clkgate(dev_priv, crtc->pipe, true);
> > +   else
> > +   skl_wa_clkgate(dev_priv, crtc->pipe, true);
> > }
> >  
> > /*
> > -- 
> > 2.20.0.rc2.7.g965798d1f299
> 
> 
___

[Intel-gfx] [PATCH v2] drm/i915/guc: Retry GuC load for all load failures

2019-03-29 Thread Robert M. Fosha
Currently we only retry to load GuC firmware if the load fails due to
timeout. On Gen9 GuC loading may fail for different reasons, not just
hang/timeout. Direction from the GuC team is to retry for all cases of
GuC load failure on Gen9, not just for timeout.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108593
Signed-off-by: Robert M. Fosha 
Cc: Daniele Ceraolo Spurio 
Cc: Michal Wajdeczko 
---
 drivers/gpu/drm/i915/intel_uc.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
index 2d360d53757f..25b80ffe71ad 100644
--- a/drivers/gpu/drm/i915/intel_uc.c
+++ b/drivers/gpu/drm/i915/intel_uc.c
@@ -375,7 +375,7 @@ int intel_uc_init_hw(struct drm_i915_private *i915)
 
intel_guc_init_params(guc);
ret = intel_guc_fw_upload(guc);
-   if (ret == 0 || ret != -ETIMEDOUT)
+   if (ret == 0)
break;
 
DRM_DEBUG_DRIVER("GuC fw load failed: %d; will reset and "
-- 
2.21.0.5.gaeb582a983

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

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for GuC 32.0.3

2019-03-29 Thread Patchwork
== Series Details ==

Series: GuC 32.0.3
URL   : https://patchwork.freedesktop.org/series/58760/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
07625b512895 drm/i915/guc: Don't allow GuC submission on pre-Gen11
a79bbfbbcaeb drm/i915/guc: Simplify preparation of GuC parameter block
94c06af628c8 drm/i915/guc: Update GuC firmware versions and names
281a7ab1800e drm/i915/guc: Update GuC firmware CSS header
b0fe25ecbdef drm/i915/guc: Update GuC boot parameters
172024033ca9 drm/i915/guc: Update GuC sleep status values
fafcf0016350 drm/i915/guc: Update GuC sample-forcewake command
e2444d3152fe drm/i915/guc: Always ask GuC to update power domain states
4055e1730306 drm/i915/guc: Update GuC ADS object definition
d84c83744126 drm/i915/guc: Reset GuC ADS during sanitize
2e657fbac482 drm/i915/guc: New GuC interrupt register for Gen11
36baa8c466aa drm/i915/guc: New GuC scratch registers for Gen11
dd29e99702e0 drm/i915/guc: Update GuC CTB response definition
-:45: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch 
author 'Oscar Mateo '

total: 0 errors, 1 warnings, 0 checks, 22 lines checked
a7a0c4502b4b drm/i915/guc: Enable GuC CTB communication on Gen11
051158fa445c drm/i915/huc: New HuC status register for Gen11
3b30d337fd57 drm/i915/guc: Define GuC firmware version for Icelake
c8f0b2a34b8c drm/i915/huc: Define HuC firmware version for Icelake
8c06d748e638 drm/i915/guc: Treat GuC initialization failure as -EIO
c7046bd151d8 drm/i915/guc: New GuC IDs based on engine class and instance
c0ef43eabfe1 drm/i915/guc: Make use of the SW counter field in the context 
descriptor
4387539fbd4e drm/i915/guc: New GuC stage descriptors
-:81: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#81: FILE: drivers/gpu/drm/i915/i915_debugfs.c:2285:
+   seq_printf(m, "\t\tHW context desc: 
0x%x:0x%x\n",
+   
lower_32_bits(lrc->hw_context_desc),

-:355: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#355: FILE: drivers/gpu/drm/i915/intel_guc_submission.c:194:
+   GEM_BUG_ON(!I915_SELFTEST_ONLY(client->guc->starting_proxy_id) &&
+   client->stage_id < GUC_MAX_PPAL_STAGE_DESCRIPTORS);

total: 0 errors, 0 warnings, 2 checks, 801 lines checked
58d9cb8849cd drm/i915/guc: New GuC workqueue item submission mechanism
f9208efef283 drm/i915/guc: Add support for resume-parsing wq item
-:15: WARNING:BAD_SIGN_OFF: 'Co-developed-by:' is the preferred signature form
#15: 
Co-Developed-by: Michel Thierry 

-:16: WARNING:BAD_SIGN_OFF: 'Co-developed-by:' is the preferred signature form
#16: 
Co-Developed-by: Michal Wajdeczko 

total: 0 errors, 2 warnings, 0 checks, 125 lines checked
5c5d17e155bf drm/i915/guc: New reset-engine command
-:11: WARNING:BAD_SIGN_OFF: 'Co-developed-by:' is the preferred signature form
#11: 
Co-Developed-by: Michel Thierry 

total: 0 errors, 1 warnings, 0 checks, 102 lines checked
c9d66fb31815 drm/i915/guc: New engine-reset-complete message
dbfc310b9339 drm/i915/guc: Properly capture & release GuC interrupts on Gen11
e174c48db89e drm/i915/guc: Create vfuncs for the GuC interrupts control 
functions
1cb3055da417 drm/i915/guc: Correctly handle GuC interrupts on Gen11
e693e55b1a34 HAX: prevent CI failures on pre-Gen11 configs with forced GuC
915a4cffdbb4 HAX: Enable HuC

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

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for GuC 32.0.3

2019-03-29 Thread Patchwork
== Series Details ==

Series: GuC 32.0.3
URL   : https://patchwork.freedesktop.org/series/58760/
State : warning

== Summary ==

$ dim sparse origin/drm-tip
Sparse version: v0.5.2
Commit: drm/i915/guc: Don't allow GuC submission on pre-Gen11
Okay!

Commit: drm/i915/guc: Simplify preparation of GuC parameter block
Okay!

Commit: drm/i915/guc: Update GuC firmware versions and names
Okay!

Commit: drm/i915/guc: Update GuC firmware CSS header
Okay!

Commit: drm/i915/guc: Update GuC boot parameters
Okay!

Commit: drm/i915/guc: Update GuC sleep status values
Okay!

Commit: drm/i915/guc: Update GuC sample-forcewake command
Okay!

Commit: drm/i915/guc: Always ask GuC to update power domain states
Okay!

Commit: drm/i915/guc: Update GuC ADS object definition
Okay!

Commit: drm/i915/guc: Reset GuC ADS during sanitize
Okay!

Commit: drm/i915/guc: New GuC interrupt register for Gen11
Okay!

Commit: drm/i915/guc: New GuC scratch registers for Gen11
Okay!

Commit: drm/i915/guc: Update GuC CTB response definition
Okay!

Commit: drm/i915/guc: Enable GuC CTB communication on Gen11
Okay!

Commit: drm/i915/huc: New HuC status register for Gen11
Okay!

Commit: drm/i915/guc: Define GuC firmware version for Icelake
Okay!

Commit: drm/i915/huc: Define HuC firmware version for Icelake
Okay!

Commit: drm/i915/guc: Treat GuC initialization failure as -EIO
Okay!

Commit: drm/i915/guc: New GuC IDs based on engine class and instance
Okay!

Commit: drm/i915/guc: Make use of the SW counter field in the context descriptor
-drivers/gpu/drm/i915/selftests/../i915_drv.h:3570:16: warning: expression 
using sizeof(void)
+drivers/gpu/drm/i915/selftests/../i915_drv.h:3577:16: warning: expression 
using sizeof(void)

Commit: drm/i915/guc: New GuC stage descriptors
-drivers/gpu/drm/i915/selftests/../i915_drv.h:3577:16: warning: expression 
using sizeof(void)
+drivers/gpu/drm/i915/selftests/../i915_drv.h:3578:16: warning: expression 
using sizeof(void)

Commit: drm/i915/guc: New GuC workqueue item submission mechanism
Okay!

Commit: drm/i915/guc: Add support for resume-parsing wq item
Okay!

Commit: drm/i915/guc: New reset-engine command
Okay!

Commit: drm/i915/guc: New engine-reset-complete message
Okay!

Commit: drm/i915/guc: Properly capture & release GuC interrupts on Gen11
Okay!

Commit: drm/i915/guc: Create vfuncs for the GuC interrupts control functions
-drivers/gpu/drm/i915/selftests/../i915_drv.h:3578:16: warning: expression 
using sizeof(void)
+drivers/gpu/drm/i915/selftests/../i915_drv.h:3600:16: warning: expression 
using sizeof(void)

Commit: drm/i915/guc: Correctly handle GuC interrupts on Gen11
-drivers/gpu/drm/i915/selftests/../i915_drv.h:3600:16: warning: expression 
using sizeof(void)
+drivers/gpu/drm/i915/selftests/../i915_drv.h:3604:16: warning: expression 
using sizeof(void)

Commit: HAX: prevent CI failures on pre-Gen11 configs with forced GuC
Okay!

Commit: HAX: Enable HuC
Okay!

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

[Intel-gfx] [PATCH] drm/i915: Engine relative MMIO

2019-03-29 Thread John . C . Harrison
From: John Harrison 

With virtual engines, it is no longer possible to know which specific
physical engine a given request will be executed on at the time that
request is generated. This means that the request itself must be engine
agnostic - any direct register writes must be relative to the engine
and not absolute addresses.

The LRI command has support for engine relative addressing. However,
the mechanism is not transparent to the driver. The scheme for Gen11
(MI_LRI_ADD_CS_MMIO_START) requires the LRI address to have no
absolute engine base component. The hardware then adds on the correct
engine offset at execution time.

Due to the non-trivial and differing schemes on different hardware, it
is not possible to simply update the code that creates the LRI
commands to set a remap flag and let the hardware get on with it.
Instead, this patch adds function wrappers for generating the LRI
command itself and then for constructing the correct address to use
with the LRI.

v2: Fix build break in GVT. Remove flags parameter [review feedback
from Chris W].

v3: Fix build break in selftest. Rebase to newer base tree and fix
merge conflict.

Signed-off-by: John Harrison 
---
 drivers/gpu/drm/i915/gvt/mmio_context.c   | 16 +++-
 drivers/gpu/drm/i915/i915_cmd_parser.c|  4 +-
 drivers/gpu/drm/i915/i915_gem_context.c   | 12 +--
 drivers/gpu/drm/i915/i915_gem_execbuffer.c|  4 +-
 drivers/gpu/drm/i915/i915_perf.c  | 19 +++--
 drivers/gpu/drm/i915/intel_engine_cs.c| 11 +++
 drivers/gpu/drm/i915/intel_gpu_commands.h |  6 +-
 drivers/gpu/drm/i915/intel_lrc.c  | 80 ++-
 drivers/gpu/drm/i915/intel_lrc_reg.h  |  4 +-
 drivers/gpu/drm/i915/intel_mocs.c | 17 ++--
 drivers/gpu/drm/i915/intel_ringbuffer.c   | 45 +--
 drivers/gpu/drm/i915/intel_ringbuffer.h   |  4 +
 drivers/gpu/drm/i915/intel_workarounds.c  |  4 +-
 .../drm/i915/selftests/intel_workarounds.c|  9 ++-
 14 files changed, 154 insertions(+), 81 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/mmio_context.c 
b/drivers/gpu/drm/i915/gvt/mmio_context.c
index 76630fbe51b6..1d24095b345a 100644
--- a/drivers/gpu/drm/i915/gvt/mmio_context.c
+++ b/drivers/gpu/drm/i915/gvt/mmio_context.c
@@ -199,14 +199,14 @@ restore_context_mmio_for_inhibit(struct intel_vgpu *vgpu,
if (IS_ERR(cs))
return PTR_ERR(cs);
 
-   *cs++ = MI_LOAD_REGISTER_IMM(count);
+   *cs++ = i915_get_lri_cmd(req->engine, count);
for (mmio = gvt->engine_mmio_list.mmio;
 i915_mmio_reg_valid(mmio->reg); mmio++) {
if (mmio->ring_id != ring_id ||
!mmio->in_context)
continue;
 
-   *cs++ = i915_mmio_reg_offset(mmio->reg);
+   *cs++ = i915_get_lri_reg(req->engine, mmio->reg);
*cs++ = vgpu_vreg_t(vgpu, mmio->reg) |
(mmio->mask << 16);
gvt_dbg_core("add lri reg pair 0x%x:0x%x in inhibit ctx, 
vgpu:%d, rind_id:%d\n",
@@ -234,7 +234,11 @@ restore_render_mocs_control_for_inhibit(struct intel_vgpu 
*vgpu,
if (IS_ERR(cs))
return PTR_ERR(cs);
 
-   *cs++ = MI_LOAD_REGISTER_IMM(GEN9_MOCS_SIZE);
+   /*
+* GEN9_GFX_MOCS is not engine relative, therefore there is no
+* need for relative addressing.
+*/
+   *cs++ = __MI_LOAD_REGISTER_IMM(GEN9_MOCS_SIZE);
 
for (index = 0; index < GEN9_MOCS_SIZE; index++) {
*cs++ = i915_mmio_reg_offset(GEN9_GFX_MOCS(index));
@@ -261,7 +265,11 @@ restore_render_mocs_l3cc_for_inhibit(struct intel_vgpu 
*vgpu,
if (IS_ERR(cs))
return PTR_ERR(cs);
 
-   *cs++ = MI_LOAD_REGISTER_IMM(GEN9_MOCS_SIZE / 2);
+   /*
+* GEN9_LNCFCMOCS is not engine relative, therefore there is no
+* need for relative addressing.
+*/
+   *cs++ = __MI_LOAD_REGISTER_IMM(GEN9_MOCS_SIZE / 2);
 
for (index = 0; index < GEN9_MOCS_SIZE / 2; index++) {
*cs++ = i915_mmio_reg_offset(GEN9_LNCFCMOCS(index));
diff --git a/drivers/gpu/drm/i915/i915_cmd_parser.c 
b/drivers/gpu/drm/i915/i915_cmd_parser.c
index 503d548a55f7..91ebe18aacc6 100644
--- a/drivers/gpu/drm/i915/i915_cmd_parser.c
+++ b/drivers/gpu/drm/i915/i915_cmd_parser.c
@@ -220,7 +220,7 @@ static const struct drm_i915_cmd_descriptor common_cmds[] = 
{
CMD(  MI_SUSPEND_FLUSH, SMI,F,  1,  S  ),
CMD(  MI_SEMAPHORE_MBOX,SMI,   !F,  0xFF,   R  ),
CMD(  MI_STORE_DWORD_INDEX, SMI,   !F,  0xFF,   R  ),
-   CMD(  MI_LOAD_REGISTER_IMM(1),  SMI,   !F,  0xFF,   W,
+   CMD(  __MI_LOAD_REGISTER_IMM(1),SMI,   !F,  0xFF,   W,
  .reg = { .offset = 1, .mask = 0x007C, .step = 2 }),
CMD(  MI_STORE_REGISTER_MEM,SMI,F,  3, W | B,
  .reg = { .offset = 1, .mask = 0x007

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: add immutable zpos plane properties

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: add immutable zpos plane properties
URL   : https://patchwork.freedesktop.org/series/58761/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
a8460dd85471 drm/i915: add immutable zpos plane properties
-:75: WARNING:NO_AUTHOR_SIGN_OFF: Missing Signed-off-by: line by nominal patch 
author 'emersion '

total: 0 errors, 1 warnings, 0 checks, 51 lines checked

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

[Intel-gfx] ✗ Fi.CI.BAT: failure for GuC 32.0.3

2019-03-29 Thread Patchwork
== Series Details ==

Series: GuC 32.0.3
URL   : https://patchwork.freedesktop.org/series/58760/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_5840 -> Patchwork_12637


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_12637 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_12637, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58760/revisions/1/mbox/

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_12637:

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live_uncore:
- fi-kbl-x1275:   PASS -> DMESG-FAIL
- fi-kbl-8809g:   PASS -> DMESG-FAIL
- fi-cfl-8700k:   PASS -> DMESG-FAIL

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
- fi-icl-u2:  PASS -> SKIP +3

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-b:
- fi-icl-u3:  PASS -> SKIP +3

  
 Suppressed 

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@gem_exec_gttfill@basic:
- {fi-icl-guc}:   NOTRUN -> SKIP

  
Known issues


  Here are the changes found in Patchwork_12637 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_hangman@error-state-basic:
- fi-skl-gvtdvm:  PASS -> SKIP [fdo#109271] +3
- fi-skl-6770hq:  PASS -> SKIP [fdo#109271] +3
- fi-kbl-r:   PASS -> SKIP [fdo#109271] +3
- fi-kbl-8809g:   PASS -> SKIP [fdo#109271]
- fi-skl-6600u:   PASS -> SKIP [fdo#109271] +3
- fi-kbl-x1275:   PASS -> SKIP [fdo#109271] +3
- fi-skl-iommu:   PASS -> SKIP [fdo#109271] +3
- fi-kbl-7500u:   PASS -> SKIP [fdo#109271]

  * igt@i915_selftest@live_hangcheck:
- fi-skl-iommu:   PASS -> INCOMPLETE [fdo#108602] / [fdo#108744]

  * igt@kms_busy@basic-flip-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
- fi-cfl-8700k:   PASS -> SKIP [fdo#109271] +3
- fi-skl-6260u:   PASS -> SKIP [fdo#109271] +3

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-b:
- fi-kbl-7567u:   PASS -> SKIP [fdo#109271] +3
- fi-cfl-8109u:   PASS -> SKIP [fdo#109271] +3
- fi-whl-u:   PASS -> SKIP [fdo#109271] +3

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] +48
- fi-skl-6700k2:  PASS -> SKIP [fdo#109271] +3

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence:
- fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362] +1

  * igt@kms_pipe_crc_basic@read-crc-pipe-a:
- fi-byt-clapper: PASS -> FAIL [fdo#107362]

  * igt@runner@aborted:
- fi-skl-iommu:   NOTRUN -> FAIL [fdo#104108] / [fdo#108602]

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-blb-e6850:   INCOMPLETE [fdo#107718] -> PASS

  * igt@i915_selftest@live_uncore:
- fi-ivb-3770:DMESG-FAIL [fdo#110210] -> PASS

  * igt@kms_frontbuffer_tracking@basic:
- fi-icl-u2:  FAIL [fdo#103167] -> PASS
- fi-byt-clapper: FAIL [fdo#103167] -> PASS

  * igt@prime_vgem@basic-fence-flip:
- fi-icl-u3:  FAIL [fdo#104008] -> PASS

  
  {name}: This element is suppressed. This means it is ignored when computing
  the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#104008]: https://bugs.freedesktop.org/show_bug.cgi?id=104008
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602
  [fdo#108743]: https://bugs.freedesktop.org/show_bug.cgi?id=108743
  [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#110210]: https://bugs.freedesktop.org/show_bug.cgi?id=110210


Participating hosts (50 -> 40)
--

  Additional (1): fi-icl-guc 
  Missing(11): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-j1900 
fi-byt-squawks fi-bsw-cyan fi-apl-guc fi-ctg-p8600 fi-bxt-j

[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915: add immutable zpos plane properties

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: add immutable zpos plane properties
URL   : https://patchwork.freedesktop.org/series/58761/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_5840 -> Patchwork_12638


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_12638 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_12638, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58761/revisions/1/mbox/

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_12638:

### IGT changes ###

 Possible regressions 

  * igt@kms_cursor_legacy@basic-flip-before-cursor-varying-size:
- fi-bsw-kefka:   PASS -> FAIL

  
Known issues


  Here are the changes found in Patchwork_12638 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  PASS -> DMESG-FAIL [fdo#110235 ]

  * igt@i915_selftest@live_hangcheck:
- fi-skl-iommu:   PASS -> INCOMPLETE [fdo#108602] / [fdo#108744]

  * igt@kms_busy@basic-flip-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] +20

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-blb-e6850:   NOTRUN -> INCOMPLETE [fdo#107718]

  * igt@runner@aborted:
- fi-skl-iommu:   NOTRUN -> FAIL [fdo#104108] / [fdo#108602]

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-blb-e6850:   INCOMPLETE [fdo#107718] -> PASS

  * igt@i915_selftest@live_evict:
- fi-bsw-kefka:   DMESG-WARN [fdo#107709] -> PASS

  
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#107709]: https://bugs.freedesktop.org/show_bug.cgi?id=107709
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602
  [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 


Participating hosts (50 -> 36)
--

  Missing(14): fi-kbl-soraka fi-hsw-4770r fi-ilk-m540 fi-bxt-dsi 
fi-hsw-4200u fi-hsw-peppy fi-byt-squawks fi-bsw-cyan fi-snb-2520m fi-ctg-p8600 
fi-kbl-x1275 fi-icl-u3 fi-byt-clapper fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5840 -> Patchwork_12638

  CI_DRM_5840: db336fee1090f4207856469e57d04bcf56fe9e3a @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4913: e408d569973b610ba4aafdba016c48b25e563468 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12638: a8460dd85471c4633e93a73db5881d09cc8f68ed @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

a8460dd85471 drm/i915: add immutable zpos plane properties

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12638/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] ✗ Fi.CI.BAT: failure for GuC 32.0.3

2019-03-29 Thread Chris Wilson
Quoting Patchwork (2019-03-30 00:34:48)
>  Suppressed 
> 
>   The following results come from untrusted machines, tests, or statuses.
>   They do not affect the overall result.
> 
>   * igt@gem_exec_gttfill@basic:
> - {fi-icl-guc}:   NOTRUN -> SKIP

What CI doesn't say is that in the 3 runs, each time fi-icl-guc hits the
same deadlock in S3 (gem_exec_susped). intel_uc_suspend? But the trace
isn't conclusive.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/guc: Retry GuC load for all load failures (rev2)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/guc: Retry GuC load for all load failures (rev2)
URL   : https://patchwork.freedesktop.org/series/58758/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5840 -> Patchwork_12639


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58758/revisions/2/mbox/

Known issues


  Here are the changes found in Patchwork_12639 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u3:  PASS -> FAIL [fdo#103375]

  * igt@kms_busy@basic-flip-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] +48

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b-frame-sequence:
- fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362] +1

  * igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: PASS -> FAIL [fdo#103182]

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-blb-e6850:   INCOMPLETE [fdo#107718] -> PASS

  * igt@i915_selftest@live_evict:
- fi-bsw-kefka:   DMESG-WARN [fdo#107709] -> PASS

  * igt@kms_frontbuffer_tracking@basic:
- fi-icl-u2:  FAIL [fdo#103167] -> PASS

  * igt@prime_vgem@basic-fence-flip:
- fi-icl-u3:  FAIL [fdo#104008] -> PASS

  
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#104008]: https://bugs.freedesktop.org/show_bug.cgi?id=104008
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107709]: https://bugs.freedesktop.org/show_bug.cgi?id=107709
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278


Participating hosts (50 -> 41)
--

  Missing(9): fi-kbl-soraka fi-hsw-4770r fi-ilk-m540 fi-hsw-4200u 
fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-bdw-samus fi-skl-6600u 


Build changes
-

* Linux: CI_DRM_5840 -> Patchwork_12639

  CI_DRM_5840: db336fee1090f4207856469e57d04bcf56fe9e3a @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4913: e408d569973b610ba4aafdba016c48b25e563468 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12639: 78169131042b7b14ecaa64e16044461b6fde5b0e @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

78169131042b drm/i915/guc: Retry GuC load for all load failures

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12639/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Engine relative MMIO (rev3)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: Engine relative MMIO (rev3)
URL   : https://patchwork.freedesktop.org/series/57117/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
a3f3b4a23cc5 drm/i915: Engine relative MMIO
-:89: ERROR:SPACING: space prohibited after that open parenthesis '('
#89: FILE: drivers/gpu/drm/i915/i915_cmd_parser.c:223:
+   CMD(  __MI_LOAD_REGISTER_IMM(1),SMI,   !F,  0xFF,   W,

-:90: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#90: FILE: drivers/gpu/drm/i915/i915_cmd_parser.c:224:
+   CMD(  __MI_LOAD_REGISTER_IMM(1),SMI,   !F,  0xFF,   W,
  .reg = { .offset = 1, .mask = 0x007C, .step = 2 }),

-:249: CHECK:SPACING: spaces preferred around that '*' (ctx:VxV)
#249: FILE: drivers/gpu/drm/i915/intel_gpu_commands.h:130:
+#define __MI_LOAD_REGISTER_IMM(x)  MI_INSTR(0x22, 2*(x)-1)
^

-:249: CHECK:SPACING: spaces preferred around that '-' (ctx:VxV)
#249: FILE: drivers/gpu/drm/i915/intel_gpu_commands.h:130:
+#define __MI_LOAD_REGISTER_IMM(x)  MI_INSTR(0x22, 2*(x)-1)
^

-:251: CHECK:SPACING: spaces preferred around that '<<' (ctx:VxV)
#251: FILE: drivers/gpu/drm/i915/intel_gpu_commands.h:132:
+#define   MI_LRI_ADD_CS_MMIO_START (1<<19)
  ^

-:538: CHECK:SPACING: spaces preferred around that '/' (ctx:VxV)
#538: FILE: drivers/gpu/drm/i915/intel_ringbuffer.c:1771:
+   *cs++ = i915_get_lri_cmd(rq->engine, GEN7_L3LOG_SIZE/4);
^

-:606: CHECK:CAMELCASE: Avoid CamelCase: 
#606: FILE: drivers/gpu/drm/i915/selftests/intel_workarounds.c:490:
+   u32 regLRI = i915_get_lri_reg(engine, 
engine->whitelist.list[i].reg);

total: 1 errors, 0 warnings, 6 checks, 505 lines checked

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

[Intel-gfx] [PATCH v5 3/3] drm/i915/icl: Fix clockgating issue when using scalers

2019-03-29 Thread Radhakrishna Sripada
Fixes the clock-gating issue when pipe scaling is enabled.
(Lineage #2006604312)

V2: Fix typo in headline(Chris)
Handle the non double buffered nature of the register(Ville)
V3: Fix checkpatch warning. BAT failure for V2 on gen3 looks unrelated.
V4: Split the icl and skl wa's(Ville)
V5: Split the checks for icl and skl(Ville)

Cc: Chris Wilson 
Cc: Ville Syrjala 
Cc: Rodrigo Vivi 
Cc: Aditya Swarup 
Signed-off-by: Radhakrishna Sripada 
---
 drivers/gpu/drm/i915/intel_display.c | 41 
 1 file changed, 35 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index f54183761a40..61bdef1b19a1 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -466,6 +466,7 @@ static const struct intel_limit intel_limits_bxt = {
.p2 = { .p2_slow = 1, .p2_fast = 20 },
 };
 
+/* WA Display #0827: Gen9:all */
 static void
 skl_wa_827(struct drm_i915_private *dev_priv, int pipe, bool enable)
 {
@@ -479,6 +480,18 @@ skl_wa_827(struct drm_i915_private *dev_priv, int pipe, 
bool enable)
   ~(DUPS1_GATING_DIS | DUPS2_GATING_DIS));
 }
 
+/* Wa_2006604312:icl */
+static void
+icl_wa_scalerclkgating(struct drm_i915_private *dev_priv, int pipe, bool 
enable)
+{
+   if (enable)
+   I915_WRITE(CLKGATE_DIS_PSL(pipe),
+  I915_READ(CLKGATE_DIS_PSL(pipe)) | DPFR_GATING_DIS);
+   else
+   I915_WRITE(CLKGATE_DIS_PSL(pipe),
+  I915_READ(CLKGATE_DIS_PSL(pipe)) & ~DPFR_GATING_DIS);
+}
+
 static bool
 needs_modeset(const struct drm_crtc_state *state)
 {
@@ -5495,6 +5508,16 @@ static bool needs_nv12_wa(struct drm_i915_private 
*dev_priv,
return false;
 }
 
+static bool needs_scalerclk_wa(struct drm_i915_private *dev_priv,
+  const struct intel_crtc_state *crtc_state)
+{
+   /* Wa_2006604312:icl */
+   if (crtc_state->pch_pfit.enabled && IS_ICELAKE(dev_priv))
+   return true;
+
+   return false;
+}
+
 static void intel_post_plane_update(struct intel_crtc_state *old_crtc_state)
 {
struct intel_crtc *crtc = to_intel_crtc(old_crtc_state->base.crtc);
@@ -5528,11 +5551,13 @@ static void intel_post_plane_update(struct 
intel_crtc_state *old_crtc_state)
intel_post_enable_primary(&crtc->base, pipe_config);
}
 
-   /* Display WA 827 */
if (needs_nv12_wa(dev_priv, old_crtc_state) &&
-   !needs_nv12_wa(dev_priv, pipe_config)) {
+   !needs_nv12_wa(dev_priv, pipe_config))
skl_wa_827(dev_priv, crtc->pipe, false);
-   }
+
+   if (needs_scalerclk_wa(dev_priv, old_crtc_state) &&
+   !needs_scalerclk_wa(dev_priv, pipe_config))
+   icl_wa_scalerclkgating(dev_priv, crtc->pipe, false);
 }
 
 static void intel_pre_plane_update(struct intel_crtc_state *old_crtc_state,
@@ -5568,10 +5593,14 @@ static void intel_pre_plane_update(struct 
intel_crtc_state *old_crtc_state,
}
 
/* Display WA 827 */
-   if (!needs_nv12_wa(dev_priv, old_crtc_state) &&
-   needs_nv12_wa(dev_priv, pipe_config)) {
+   if (needs_nv12_wa(dev_priv, old_crtc_state) &&
+   !needs_nv12_wa(dev_priv, pipe_config))
skl_wa_827(dev_priv, crtc->pipe, true);
-   }
+
+   /* Wa_2006604312:icl */
+   if (needs_scalerclk_wa(dev_priv, old_crtc_state) &&
+   !needs_scalerclk_wa(dev_priv, pipe_config))
+   icl_wa_scalerclkgating(dev_priv, crtc->pipe, true);
 
/*
 * Vblank time updates from the shadow to live plane control register
-- 
2.20.0.rc2.7.g965798d1f299

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

[Intel-gfx] [PATCH v5 2/3] drm/i915: Fix the inconsistent RMW in WA 827

2019-03-29 Thread Radhakrishna Sripada
RMW is used only in the disable path. Using it in enable path
for consistency.

Suggested-by: Ville Syrjala 
Cc: Anusha Srivatsa 
Signed-off-by: Radhakrishna Sripada 
---
 drivers/gpu/drm/i915/intel_display.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 30aa1e5324f7..f54183761a40 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -471,6 +471,7 @@ skl_wa_827(struct drm_i915_private *dev_priv, int pipe, 
bool enable)
 {
if (enable)
I915_WRITE(CLKGATE_DIS_PSL(pipe),
+  I915_READ(CLKGATE_DIS_PSL(pipe)) |
   DUPS1_GATING_DIS | DUPS2_GATING_DIS);
else
I915_WRITE(CLKGATE_DIS_PSL(pipe),
-- 
2.20.0.rc2.7.g965798d1f299

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

[Intel-gfx] [PATCH v5 1/3] drm/i915: Rename skl_wa_clkgating to the actual WA

2019-03-29 Thread Radhakrishna Sripada
No functional change. Renaming the function to reflect the specific WA.

Suggested-by: Ville Syrjala 
Cc: Anusha Srivatsa 
Signed-off-by: Radhakrishna Sripada 
---
 drivers/gpu/drm/i915/intel_display.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 8576a7f799f2..30aa1e5324f7 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -467,7 +467,7 @@ static const struct intel_limit intel_limits_bxt = {
 };
 
 static void
-skl_wa_clkgate(struct drm_i915_private *dev_priv, int pipe, bool enable)
+skl_wa_827(struct drm_i915_private *dev_priv, int pipe, bool enable)
 {
if (enable)
I915_WRITE(CLKGATE_DIS_PSL(pipe),
@@ -5530,7 +5530,7 @@ static void intel_post_plane_update(struct 
intel_crtc_state *old_crtc_state)
/* Display WA 827 */
if (needs_nv12_wa(dev_priv, old_crtc_state) &&
!needs_nv12_wa(dev_priv, pipe_config)) {
-   skl_wa_clkgate(dev_priv, crtc->pipe, false);
+   skl_wa_827(dev_priv, crtc->pipe, false);
}
 }
 
@@ -5569,7 +5569,7 @@ static void intel_pre_plane_update(struct 
intel_crtc_state *old_crtc_state,
/* Display WA 827 */
if (!needs_nv12_wa(dev_priv, old_crtc_state) &&
needs_nv12_wa(dev_priv, pipe_config)) {
-   skl_wa_clkgate(dev_priv, crtc->pipe, true);
+   skl_wa_827(dev_priv, crtc->pipe, true);
}
 
/*
-- 
2.20.0.rc2.7.g965798d1f299

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

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Engine relative MMIO (rev3)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: Engine relative MMIO (rev3)
URL   : https://patchwork.freedesktop.org/series/57117/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5840 -> Patchwork_12640


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/57117/revisions/3/mbox/

Known issues


  Here are the changes found in Patchwork_12640 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_suspend@basic-s3:
- fi-blb-e6850:   PASS -> INCOMPLETE [fdo#107718]

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  PASS -> DMESG-FAIL [fdo#110235 ]

  * igt@kms_frontbuffer_tracking@basic:
- fi-icl-u3:  PASS -> FAIL [fdo#103167]

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-b:
- fi-byt-clapper: PASS -> FAIL [fdo#107362]

  * igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: PASS -> DMESG-FAIL [fdo#103182]

  
 Possible fixes 

  * igt@i915_selftest@live_evict:
- fi-bsw-kefka:   DMESG-WARN [fdo#107709] -> PASS

  * igt@prime_vgem@basic-fence-flip:
- fi-icl-u3:  FAIL [fdo#104008] -> PASS

  
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#104008]: https://bugs.freedesktop.org/show_bug.cgi?id=104008
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107709]: https://bugs.freedesktop.org/show_bug.cgi?id=107709
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 


Participating hosts (50 -> 42)
--

  Missing(8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-j1900 
fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5840 -> Patchwork_12640

  CI_DRM_5840: db336fee1090f4207856469e57d04bcf56fe9e3a @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4913: e408d569973b610ba4aafdba016c48b25e563468 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12640: a3f3b4a23cc5437903bbef7ff6e7af7000949f14 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

a3f3b4a23cc5 drm/i915: Engine relative MMIO

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12640/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/guc: Retry GuC load for all load failures

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/guc: Retry GuC load for all load failures
URL   : https://patchwork.freedesktop.org/series/58758/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5839_full -> Patchwork_12636_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_12636_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_parallel@bsd1:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] +156

  * igt@gem_exec_store@cachelines-bsd1:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] +129

  * igt@gem_softpin@noreloc-s3:
- shard-apl:  PASS -> DMESG-WARN [fdo#108566]

  * igt@gem_tiled_swapping@non-threaded:
- shard-iclb: PASS -> FAIL [fdo#108686]

  * igt@kms_atomic_transition@5x-modeset-transitions-fencing:
- shard-apl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +2

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
- shard-skl:  NOTRUN -> DMESG-WARN [fdo#110222]

  * igt@kms_busy@extended-modeset-hang-oldfb-render-d:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +14

  * igt@kms_busy@extended-modeset-hang-oldfb-with-reset-render-f:
- shard-iclb: NOTRUN -> SKIP [fdo#109278] +1

  * igt@kms_busy@extended-pageflip-hang-newfb-render-c:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +17

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-b:
- shard-iclb: PASS -> DMESG-WARN [fdo#110222]

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-f:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_chamelium@hdmi-hpd-after-suspend:
- shard-iclb: NOTRUN -> SKIP [fdo#109284] +1

  * igt@kms_cursor_crc@cursor-512x512-random:
- shard-apl:  NOTRUN -> SKIP [fdo#109271] +23

  * igt@kms_fbcon_fbt@psr-suspend:
- shard-skl:  NOTRUN -> FAIL [fdo#103833]

  * igt@kms_flip@2x-modeset-vs-vblank-race:
- shard-iclb: NOTRUN -> SKIP [fdo#109274] +1

  * igt@kms_flip@flip-vs-expired-vblank:
- shard-apl:  PASS -> FAIL [fdo#102887] / [fdo#105363]

  * igt@kms_flip@modeset-vs-vblank-race:
- shard-apl:  PASS -> FAIL [fdo#103060]

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-indfb-draw-mmap-cpu:
- shard-iclb: PASS -> FAIL [fdo#103167] +11

  * igt@kms_frontbuffer_tracking@fbc-stridechange:
- shard-skl:  NOTRUN -> FAIL [fdo#105683] +1

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-spr-indfb-move:
- shard-skl:  NOTRUN -> FAIL [fdo#103167]

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-draw-render:
- shard-iclb: NOTRUN -> SKIP [fdo#109280] +5

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render:
- shard-iclb: PASS -> FAIL [fdo#109247] +10

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-skl:  PASS -> INCOMPLETE [fdo#104108]

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl:  NOTRUN -> FAIL [fdo#108145] +1

  * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
- shard-apl:  PASS -> FAIL [fdo#108145]

  * igt@kms_psr2_su@page_flip:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] +6

  * igt@kms_psr@primary_render:
- shard-iclb: PASS -> FAIL [fdo#107383] / [fdo#110215] +2

  * igt@kms_psr@psr2_sprite_blt:
- shard-iclb: PASS -> SKIP [fdo#109441] +1

  * igt@kms_setmode@basic:
- shard-skl:  NOTRUN -> FAIL [fdo#99912]

  * igt@prime_busy@wait-after-bsd1:
- shard-iclb: NOTRUN -> SKIP [fdo#109276] +1

  
 Possible fixes 

  * igt@gem_create@create-clear:
- shard-snb:  INCOMPLETE [fdo#105411] -> PASS
- shard-iclb: INCOMPLETE [fdo#109100] -> PASS

  * igt@gem_mmap_gtt@hang:
- shard-iclb: FAIL [fdo#109677] -> PASS

  * igt@i915_pm_rpm@system-suspend:
- shard-skl:  INCOMPLETE [fdo#104108] / [fdo#107773] / [fdo#107807] 
-> PASS

  * igt@kms_cursor_crc@cursor-128x128-suspend:
- shard-kbl:  INCOMPLETE [fdo#103665] -> PASS

  * igt@kms_cursor_crc@cursor-256x85-onscreen:
- shard-apl:  FAIL [fdo#103232] -> PASS

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions-varying-size:
- shard-iclb: FAIL [fdo#103355] -> PASS

  * igt@kms_flip@2x-modeset-vs-vblank-race:
- shard-glk:  FAIL [fdo#103060] -> PASS +1

  * igt@kms_flip@flip-vs-suspend:
- shard-snb:  DMESG-WARN [fdo#102365] -> PASS

  * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
- shard-iclb: FAIL [fdo#103167] -> PASS +5

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu:
- shard-iclb: FAIL [fdo#105682] / [fdo#109247] -> PASS

  * igt@kms_frontbuf

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/icl: Fix clockgating issue when using scalars (rev5)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/icl: Fix clockgating issue when using scalars (rev5)
URL   : https://patchwork.freedesktop.org/series/58081/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5840 -> Patchwork_12641


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58081/revisions/5/mbox/

Known issues


  Here are the changes found in Patchwork_12641 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@kms_busy@basic-flip-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_frontbuffer_tracking@basic:
- fi-icl-u3:  PASS -> FAIL [fdo#103167]

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
- fi-blb-e6850:   NOTRUN -> SKIP [fdo#109271] +20

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362]

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-blb-e6850:   NOTRUN -> INCOMPLETE [fdo#107718]

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-blb-e6850:   INCOMPLETE [fdo#107718] -> PASS

  * igt@i915_selftest@live_evict:
- fi-bsw-kefka:   DMESG-WARN [fdo#107709] -> PASS

  * igt@i915_selftest@live_uncore:
- fi-ivb-3770:DMESG-FAIL [fdo#110210] -> PASS

  * igt@prime_vgem@basic-fence-flip:
- fi-icl-u3:  FAIL [fdo#104008] -> PASS

  
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#104008]: https://bugs.freedesktop.org/show_bug.cgi?id=104008
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107709]: https://bugs.freedesktop.org/show_bug.cgi?id=107709
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#110210]: https://bugs.freedesktop.org/show_bug.cgi?id=110210


Participating hosts (50 -> 42)
--

  Missing(8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-bwr-2160 fi-ctg-p8600 fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5840 -> Patchwork_12641

  CI_DRM_5840: db336fee1090f4207856469e57d04bcf56fe9e3a @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4913: e408d569973b610ba4aafdba016c48b25e563468 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12641: 74365944dd6b06fd27bdd8e9153965e686c39a6f @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

74365944dd6b drm/i915/icl: Fix clockgating issue when using scalers
c6a6b19159ab drm/i915: Fix the inconsistent RMW in WA 827
9041bfaf4bf9 drm/i915: Rename skl_wa_clkgating to the actual WA

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12641/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/guc: Retry GuC load for all load failures (rev2)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/guc: Retry GuC load for all load failures (rev2)
URL   : https://patchwork.freedesktop.org/series/58758/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5840_full -> Patchwork_12639_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_12639_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
- shard-iclb: NOTRUN -> SKIP [fdo#109313]

  * igt@gem_exec_params@no-vebox:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] +83

  * igt@gem_exec_schedule@preempt-other-chain-blt:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] +156

  * igt@gem_mmap_gtt@big-copy:
- shard-iclb: PASS -> TIMEOUT [fdo#109673]

  * igt@gem_ppgtt@blt-vs-render-ctx0:
- shard-iclb: PASS -> INCOMPLETE [fdo#109801]

  * igt@gem_wait@write-busy-bsd2:
- shard-iclb: NOTRUN -> SKIP [fdo#109276] +3

  * igt@i915_pm_rpm@gem-execbuf-stress-extra-wait:
- shard-skl:  PASS -> INCOMPLETE [fdo#107803] / [fdo#107807]

  * igt@kms_atomic_transition@3x-modeset-transitions-fencing:
- shard-iclb: NOTRUN -> SKIP [fdo#109278] +1

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
- shard-skl:  NOTRUN -> DMESG-WARN [fdo#110222] +1

  * igt@kms_busy@extended-modeset-hang-oldfb-render-f:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +7

  * igt@kms_chamelium@dp-hpd-fast:
- shard-iclb: NOTRUN -> SKIP [fdo#109284]

  * igt@kms_chv_cursor_fail@pipe-c-256x256-bottom-edge:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +16

  * igt@kms_cursor_crc@cursor-512x170-onscreen:
- shard-iclb: NOTRUN -> SKIP [fdo#109279]

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-iclb: NOTRUN -> SKIP [fdo#109274] +2

  * igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] +63

  * igt@kms_flip@dpms-vs-vblank-race-interruptible:
- shard-glk:  PASS -> FAIL [fdo#103060]

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-skl:  PASS -> INCOMPLETE [fdo#104108]

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-gtt:
- shard-iclb: PASS -> FAIL [fdo#103167] +9

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-shrfb-draw-mmap-wc:
- shard-iclb: PASS -> FAIL [fdo#109247] +20

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff:
- shard-iclb: NOTRUN -> SKIP [fdo#109280] +5

  * igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes:
- shard-iclb: NOTRUN -> SKIP [fdo#109289]

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-f:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +6

  * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
- shard-skl:  NOTRUN -> FAIL [fdo#107815] / [fdo#108145] +1

  * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
- shard-skl:  NOTRUN -> FAIL [fdo#108145] +3

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl:  PASS -> FAIL [fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
- shard-kbl:  NOTRUN -> FAIL [fdo#108145] +2

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  NOTRUN -> FAIL [fdo#107815]

  * igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping:
- shard-glk:  PASS -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_psr2_su@page_flip:
- shard-iclb: PASS -> SKIP [fdo#109642]

  * igt@kms_psr@psr2_cursor_render:
- shard-iclb: PASS -> SKIP [fdo#109441] +4

  * igt@kms_psr@sprite_mmap_cpu:
- shard-iclb: PASS -> FAIL [fdo#107383] / [fdo#110215] +3

  * igt@kms_setmode@basic:
- shard-iclb: NOTRUN -> FAIL [fdo#99912]
- shard-kbl:  NOTRUN -> FAIL [fdo#99912]
- shard-snb:  NOTRUN -> FAIL [fdo#99912]

  * igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm:
- shard-apl:  PASS -> FAIL [fdo#104894] +2

  * igt@prime_udl:
- shard-iclb: NOTRUN -> SKIP [fdo#109291]

  
 Possible fixes 

  * igt@gem_eio@in-flight-suspend:
- shard-snb:  FAIL [fdo#103375] -> PASS

  * igt@i915_suspend@forcewake:
- shard-skl:  INCOMPLETE [fdo#104108] / [fdo#107773] -> PASS

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic:
- shard-iclb: FAIL [fdo#103355] -> PASS

  * igt@kms_draw_crc@draw-method-xrgb-mmap-cpu-ytiled:
- shard-glk:  FAIL [fdo#107791] -> PASS

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-mmap-gtt:
- shard-iclb: FAIL [fdo#109247] -> PASS +12

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-plflip-blt:
- shard-iclb:  

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Engine relative MMIO (rev3)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: Engine relative MMIO (rev3)
URL   : https://patchwork.freedesktop.org/series/57117/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5840_full -> Patchwork_12640_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_12640_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@debugfs_test@read_all_entries_display_off:
- shard-skl:  NOTRUN -> INCOMPLETE [fdo#104108]

  * igt@gem_ctx_isolation@vecs0-s3:
- shard-apl:  PASS -> DMESG-WARN [fdo#108566]

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
- shard-iclb: NOTRUN -> SKIP [fdo#109313]

  * igt@gem_exec_schedule@preempt-other-chain-blt:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] +111

  * igt@gem_wait@write-busy-bsd2:
- shard-iclb: NOTRUN -> SKIP [fdo#109276] +3

  * igt@i915_pm_rpm@i2c:
- shard-iclb: PASS -> DMESG-WARN [fdo#109982]

  * igt@kms_atomic_transition@3x-modeset-transitions-fencing:
- shard-iclb: NOTRUN -> SKIP [fdo#109278] +1

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
- shard-skl:  NOTRUN -> DMESG-WARN [fdo#110222] +1

  * igt@kms_busy@extended-modeset-hang-oldfb-render-f:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +4

  * igt@kms_chamelium@dp-hpd-fast:
- shard-iclb: NOTRUN -> SKIP [fdo#109284]

  * igt@kms_chv_cursor_fail@pipe-c-256x256-bottom-edge:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +13

  * igt@kms_cursor_crc@cursor-512x170-onscreen:
- shard-iclb: NOTRUN -> SKIP [fdo#109279]

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-iclb: NOTRUN -> SKIP [fdo#109274] +2

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
- shard-glk:  PASS -> FAIL [fdo#104873]

  * igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] +63

  * igt@kms_flip@flip-vs-expired-vblank:
- shard-skl:  PASS -> FAIL [fdo#105363]

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-apl:  PASS -> FAIL [fdo#102887] / [fdo#105363]

  * igt@kms_flip@plain-flip-fb-recreate-interruptible:
- shard-skl:  PASS -> FAIL [fdo#100368]

  * igt@kms_frontbuffer_tracking@fbc-stridechange:
- shard-iclb: PASS -> FAIL [fdo#103167] +4

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-cur-indfb-draw-mmap-cpu:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] +45

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff:
- shard-iclb: NOTRUN -> SKIP [fdo#109280] +5

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-mmap-cpu:
- shard-iclb: PASS -> FAIL [fdo#109247] +14

  * igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes:
- shard-iclb: NOTRUN -> SKIP [fdo#109289]

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-a:
- shard-apl:  PASS -> INCOMPLETE [fdo#103927]

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-f:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +6

  * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
- shard-skl:  NOTRUN -> FAIL [fdo#108145] +2

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl:  PASS -> FAIL [fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-c-alpha-7efc:
- shard-skl:  NOTRUN -> FAIL [fdo#107815] / [fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
- shard-kbl:  NOTRUN -> FAIL [fdo#108145] +2

  * igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping:
- shard-glk:  PASS -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_psr2_su@page_flip:
- shard-iclb: PASS -> SKIP [fdo#109642]

  * igt@kms_psr@no_drrs:
- shard-iclb: PASS -> FAIL [fdo#108341]

  * igt@kms_psr@psr2_cursor_render:
- shard-iclb: PASS -> SKIP [fdo#109441] +4

  * igt@kms_psr@psr2_dpms:
- shard-iclb: NOTRUN -> SKIP [fdo#109441]

  * igt@kms_psr@sprite_plane_onoff:
- shard-iclb: PASS -> FAIL [fdo#107383] / [fdo#110215] +1

  * igt@kms_setmode@basic:
- shard-iclb: NOTRUN -> FAIL [fdo#99912]
- shard-kbl:  NOTRUN -> FAIL [fdo#99912]
- shard-snb:  NOTRUN -> FAIL [fdo#99912]

  * igt@kms_vblank@pipe-a-ts-continuation-dpms-suspend:
- shard-skl:  PASS -> INCOMPLETE [fdo#104108] / [fdo#107773]

  * igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm:
- shard-apl:  PASS -> FAIL [fdo#104894] +1

  * igt@perf@blocking:
- shard-iclb: PASS -> FAIL [fdo#108587]

  * igt@prime_udl:
- shard-iclb: NOTRUN -> SKIP [fdo#109291]

  
 Possible fixes 

  * igt@gem_eio@in-flight-suspend:
- shard-snb:

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/icl: Fix clockgating issue when using scalars (rev5)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/icl: Fix clockgating issue when using scalars (rev5)
URL   : https://patchwork.freedesktop.org/series/58081/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5840_full -> Patchwork_12641_full


Summary
---

  **WARNING**

  Minor unknown changes coming with Patchwork_12641_full need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_12641_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_12641_full:

### IGT changes ###

 Warnings 

  * igt@syncobj_wait@invalid-reset-illegal-handle:
- shard-skl:  PASS -> ( 2 PASS ) +5

  
Known issues


  Here are the changes found in Patchwork_12641_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
- shard-iclb: NOTRUN -> SKIP [fdo#109313]

  * igt@gem_exec_params@no-vebox:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] +65

  * igt@gem_exec_schedule@preempt-other-chain-blt:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] +111

  * igt@gem_exec_schedule@wide-render:
- shard-iclb: PASS -> FAIL [fdo#109633]

  * igt@gem_partial_pwrite_pread@writes-after-reads-uncached:
- shard-iclb: NOTRUN -> TIMEOUT [fdo#109673]

  * igt@gem_tiled_swapping@non-threaded:
- shard-iclb: PASS -> DMESG-WARN [fdo#108686]

  * igt@gem_wait@write-busy-bsd2:
- shard-iclb: NOTRUN -> SKIP [fdo#109276] +3

  * igt@kms_atomic_transition@3x-modeset-transitions-fencing:
- shard-iclb: NOTRUN -> SKIP [fdo#109278] +1

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
- shard-skl:  NOTRUN -> DMESG-WARN [fdo#110222]

  * igt@kms_busy@extended-modeset-hang-oldfb-render-f:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +5

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-e:
- shard-kbl:  NOTRUN -> SKIP [fdo#105602] / [fdo#109271] / 
[fdo#109278]

  * igt@kms_chamelium@dp-hpd-fast:
- shard-iclb: NOTRUN -> SKIP [fdo#109284]

  * igt@kms_chv_cursor_fail@pipe-c-256x256-bottom-edge:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +13

  * igt@kms_color@pipe-b-ctm-negative:
- shard-kbl:  PASS -> DMESG-FAIL [fdo#103558] / [fdo#105602]

  * igt@kms_cursor_crc@cursor-512x170-onscreen:
- shard-iclb: NOTRUN -> SKIP [fdo#109279]

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
- shard-iclb: NOTRUN -> SKIP [fdo#109274] +2

  * igt@kms_fbcon_fbt@fbc:
- shard-iclb: PASS -> DMESG-WARN [fdo#109593]

  * igt@kms_flip@2x-dpms-vs-vblank-race-interruptible:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] +57

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-render:
- shard-kbl:  PASS -> DMESG-WARN [fdo#103558] / [fdo#105602] +28

  * igt@kms_frontbuffer_tracking@fbc-indfb-scaledprimary:
- shard-iclb: PASS -> FAIL [fdo#103167] +7

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-cur-indfb-onoff:
- shard-iclb: NOTRUN -> SKIP [fdo#109280] +5

  * igt@kms_frontbuffer_tracking@fbcpsr-badstride:
- shard-kbl:  NOTRUN -> SKIP [fdo#105602] / [fdo#109271] +5

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-pri-indfb-draw-blt:
- shard-iclb: NOTRUN -> FAIL [fdo#109247] +2

  * igt@kms_frontbuffer_tracking@psr-rgb101010-draw-blt:
- shard-iclb: PASS -> FAIL [fdo#109247] +12

  * igt@kms_pipe_b_c_ivb@enable-pipe-c-while-b-has-3-lanes:
- shard-iclb: NOTRUN -> SKIP [fdo#109289]

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-f:
- shard-kbl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +5

  * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
- shard-skl:  NOTRUN -> FAIL [fdo#107815] / [fdo#108145] +1

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl:  PASS -> FAIL [fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
- shard-kbl:  NOTRUN -> DMESG-FAIL [fdo#103558] / [fdo#105602] / 
[fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-max:
- shard-kbl:  NOTRUN -> FAIL [fdo#108145] +1

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min:
- shard-skl:  NOTRUN -> FAIL [fdo#108145] +2

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  NOTRUN -> FAIL [fdo#107815]

  * igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping:
- shard-glk:  PASS -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_psr2_su@page_flip:
- shard-iclb: PASS -> SKIP [fdo#10964

Re: [Intel-gfx] [PATCH v4 4/8] drm/i915: vgpu context submission pv optimization

2019-03-29 Thread Chris Wilson
Quoting Xiaolin Zhang (2019-03-29 13:32:40)
> It is performance optimization to override the actual submisison backend
> in order to eliminate execlists csb process and reduce mmio trap numbers
> for workload submission without contextswith interrupt by talking with
> GVT via PV submisison notification mechanism between guest and GVT.

> Use PV_SUBMISSION to control this level of pv optimization.
> 
> v0: RFC
> v1: rebase
> v2: added pv ops for pv context submission. to maximize code resuse,
> introduced 2 more ops (submit_ports & preempt_context) instead of 1 op
> (set_default_submission) in engine structure. pv version of
> submit_ports and preempt_context implemented.
> v3:
> 1. to reduce more code duplication, code refactor and replaced 2 ops
> "submit_ports & preempt_contex" from v2 by 1 ops "write_desc"
> in engine structure. pv version of write_des implemented.
> 2. added VGT_G2V_ELSP_SUBMIT for g2v pv notification.
> v4: implemented pv elsp submission tasklet as the backend workload
> submisison by talking to GVT with PV notificaiton mechanism and renamed
> VGT_G2V_ELSP_SUBMIT to VGT_G2V_PV_SUBMISIION.
> 
> Signed-off-by: Xiaolin Zhang 
> ---
>  drivers/gpu/drm/i915/i915_irq.c|   2 +
>  drivers/gpu/drm/i915/i915_pvinfo.h |   1 +
>  drivers/gpu/drm/i915/i915_vgpu.c   | 158 
> -
>  drivers/gpu/drm/i915/i915_vgpu.h   |  10 +++
>  drivers/gpu/drm/i915/intel_lrc.c   |   3 +
>  5 files changed, 173 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 2f78829..28e8ee0 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -37,6 +37,7 @@
>  #include "i915_drv.h"
>  #include "i915_trace.h"
>  #include "intel_drv.h"
> +#include "i915_vgpu.h"
>  
>  /**
>   * DOC: interrupt handling
> @@ -1470,6 +1471,7 @@ gen8_cs_irq_handler(struct intel_engine_cs *engine, u32 
> iir)
> if (iir & GT_RENDER_USER_INTERRUPT) {
> intel_engine_breadcrumbs_irq(engine);
> tasklet |= USES_GUC_SUBMISSION(engine->i915);
> +   tasklet |= USES_PV_SUBMISSION(engine->i915);

You call this an optimisation!
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Finish the GAMMA_LUT stuff

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: Finish the GAMMA_LUT stuff
URL   : https://patchwork.freedesktop.org/series/58698/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_5832_full -> Patchwork_12623_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_12623_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_12623_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_12623_full:

### IGT changes ###

 Possible regressions 

  * igt@kms_color@pipe-b-ctm-green-to-red:
- shard-iclb: PASS -> DMESG-WARN +10

  * igt@kms_color@pipe-c-ctm-0-25:
- shard-iclb: NOTRUN -> DMESG-WARN

  * igt@kms_color@pipe-invalid-lut-sizes:
- shard-snb:  PASS -> FAIL

  
 Warnings 

  * igt@kms_color@pipe-a-degamma:
- shard-iclb: FAIL [fdo#104782] -> DMESG-FAIL +1

  * igt@kms_color@pipe-c-ctm-max:
- shard-iclb: FAIL [fdo#108147] -> DMESG-FAIL +1

  
 Suppressed 

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * {igt@kms_plane@pixel-format-pipe-a-planes}:
- shard-iclb: PASS -> FAIL +5

  
Known issues


  Here are the changes found in Patchwork_12623_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_isolation@bcs0-s3:
- shard-skl:  PASS -> INCOMPLETE [fdo#104108] / [fdo#107773]

  * igt@gem_partial_pwrite_pread@writes-after-reads-snoop:
- shard-iclb: PASS -> TIMEOUT [fdo#109673] +2

  * igt@i915_pm_rpm@i2c:
- shard-skl:  PASS -> INCOMPLETE [fdo#107807]

  * igt@i915_pm_rpm@legacy-planes:
- shard-iclb: PASS -> INCOMPLETE [fdo#108840] / [fdo#109369]

  * igt@i915_pm_rpm@system-suspend-execbuf:
- shard-iclb: PASS -> DMESG-WARN [fdo#109638]

  * igt@kms_atomic_transition@3x-modeset-transitions:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +12

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
- shard-glk:  PASS -> DMESG-WARN [fdo#110222]

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
- shard-skl:  NOTRUN -> DMESG-WARN [fdo#110222] +1

  * igt@kms_chamelium@hdmi-crc-abgr:
- shard-iclb: NOTRUN -> SKIP [fdo#109284]

  * igt@kms_color@pipe-b-legacy-gamma:
- shard-iclb: PASS -> FAIL [fdo#104782] +2

  * igt@kms_cursor_crc@cursor-128x128-dpms:
- shard-skl:  NOTRUN -> FAIL [fdo#103232]

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic:
- shard-iclb: PASS -> FAIL [fdo#103355]

  * igt@kms_flip@flip-vs-expired-vblank:
- shard-skl:  NOTRUN -> FAIL [fdo#105363]

  * igt@kms_flip@flip-vs-suspend-interruptible:
- shard-skl:  NOTRUN -> INCOMPLETE [fdo#109507]

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
- shard-iclb: PASS -> FAIL [fdo#103167] +3

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
- shard-skl:  NOTRUN -> FAIL [fdo#103167]

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu:
- shard-iclb: PASS -> FAIL [fdo#105682] / [fdo#109247]

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt:
- shard-iclb: PASS -> FAIL [fdo#109247] +2

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] +100

  * igt@kms_panel_fitting@legacy:
- shard-skl:  NOTRUN -> FAIL [fdo#105456]

  * igt@kms_pipe_crc_basic@read-crc-pipe-d:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +7

  * igt@kms_plane@plane-panning-bottom-right-pipe-c-planes:
- shard-iclb: PASS -> FAIL [fdo#103166]

  * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
- shard-skl:  NOTRUN -> FAIL [fdo#107815] / [fdo#108145]

  * igt@kms_plane_alpha_blend@pipe-c-alpha-transparant-fb:
- shard-skl:  NOTRUN -> FAIL [fdo#108145]

  * igt@kms_psr@cursor_mmap_cpu:
- shard-iclb: PASS -> FAIL [fdo#107383] / [fdo#110215]

  * igt@kms_psr@psr2_no_drrs:
- shard-iclb: PASS -> SKIP [fdo#109441] +1

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom:
- shard-kbl:  PASS -> DMESG-FAIL [fdo#105763]

  * igt@kms_setmode@basic:
- shard-skl:  NOTRUN -> FAIL [fdo#99912]

  * igt@kms_vblank@pipe-b-ts-continuation-suspend:
- shard-iclb: PASS -> FAIL [fdo#104894]

  * igt@perf@blocking:
- shard-iclb: PASS -> FAIL [fdo#108587] +1

  * igt@perf_pmu@busy-accuracy-50-vcs1:
-

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Move intel_engine_mask_t around for use by i915_request_types.h (rev5)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: Move intel_engine_mask_t around for use by 
i915_request_types.h (rev5)
URL   : https://patchwork.freedesktop.org/series/58052/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5832_full -> Patchwork_12624_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_12624_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_workarounds@suspend-resume:
- shard-skl:  PASS -> INCOMPLETE [fdo#104108] / [fdo#107773]

  * igt@kms_atomic_transition@3x-modeset-transitions:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +8

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
- shard-glk:  PASS -> DMESG-WARN [fdo#110222]

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
- shard-skl:  NOTRUN -> DMESG-WARN [fdo#110222] +1

  * igt@kms_content_protection@legacy:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] +71

  * igt@kms_panel_fitting@legacy:
- shard-skl:  NOTRUN -> FAIL [fdo#105456]

  * igt@kms_pipe_crc_basic@read-crc-pipe-d:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +3

  * igt@kms_plane_alpha_blend@pipe-c-alpha-transparant-fb:
- shard-skl:  NOTRUN -> FAIL [fdo#108145] +1

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom:
- shard-kbl:  PASS -> DMESG-FAIL [fdo#105763]

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
- shard-kbl:  PASS -> FAIL [fdo#109016]

  * igt@kms_setmode@basic:
- shard-skl:  NOTRUN -> FAIL [fdo#99912]

  * igt@perf_pmu@busy-accuracy-50-vcs1:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] +80

  * igt@perf_pmu@busy-hang-vcs1:
- shard-apl:  NOTRUN -> SKIP [fdo#109271]

  
 Possible fixes 

  * igt@kms_cursor_crc@cursor-128x128-suspend:
- shard-skl:  INCOMPLETE [fdo#104108] / [fdo#107773] -> PASS

  * igt@kms_draw_crc@draw-method-xrgb-render-xtiled:
- shard-glk:  FAIL [fdo#107791] -> PASS

  * igt@kms_flip@busy-flip:
- shard-skl:  FAIL [fdo#103257] -> PASS

  * igt@kms_flip@flip-vs-suspend:
- shard-skl:  INCOMPLETE [fdo#109507] -> PASS

  * {igt@kms_plane@pixel-format-pipe-a-planes-source-clamping}:
- shard-glk:  SKIP [fdo#109271] -> PASS +1

  * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min:
- shard-skl:  FAIL [fdo#108145] -> PASS

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  FAIL [fdo#107815] -> PASS

  
  {name}: This element is suppressed. This means it is ignored when computing
  the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103257]: https://bugs.freedesktop.org/show_bug.cgi?id=103257
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#105456]: https://bugs.freedesktop.org/show_bug.cgi?id=105456
  [fdo#105763]: https://bugs.freedesktop.org/show_bug.cgi?id=105763
  [fdo#107773]: https://bugs.freedesktop.org/show_bug.cgi?id=107773
  [fdo#107791]: https://bugs.freedesktop.org/show_bug.cgi?id=107791
  [fdo#107815]: https://bugs.freedesktop.org/show_bug.cgi?id=107815
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109507]: https://bugs.freedesktop.org/show_bug.cgi?id=109507
  [fdo#110222]: https://bugs.freedesktop.org/show_bug.cgi?id=110222
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (10 -> 8)
--

  Missing(2): shard-hsw shard-iclb 


Build changes
-

* Linux: CI_DRM_5832 -> Patchwork_12624

  CI_DRM_5832: f1fc30ad3723a8b6265c2edf50a7f637ecd75a23 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4911: d9fe699ea45406e279b78d1afdb4d57a205a3c99 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12624: bd4fcb4edac9380ff47cc2e9ce17687ec197b755 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ 
git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12624/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/i915: adding state checker for gamma lut values

2019-03-29 Thread Jani Nikula
On Thu, 28 Mar 2019, Matt Roper  wrote:
> I agree with Jani's feedback and have a couple other comments inline below.

Thanks Matt, good stuff here. One naming note below.

> What does the "internal" in this name refer to?  I think just something
> like i9xx_get_gamma_config() would be sufficient
>
> Actually the term "gamma_config" on these functions makes me think we're
> going to be reading out the gamma mode register as well, although that's
> actually done in foo_get_pipe_config().  Maybe just calling this
> something like "i9xx_get_gamma_lut()" or "i9xx_readout_gamma_lut()"
> would be more clear?

I'd like to retain "get" and "config" in the names, just to mentally map
to what's going on. Having "gamma lut" in there is good too to
distinguish from *_get_pipe_config().

BR,
Jani.

-- 
Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 0/4] Device id consolidation

2019-03-29 Thread Tvrtko Ursulin


On 28/03/2019 09:39, Chris Wilson wrote:

Quoting Tvrtko Ursulin (2019-03-28 09:23:24)


On 26/03/2019 07:40, Tvrtko Ursulin wrote:

From: Tvrtko Ursulin 

Series removes device id checks from i915_drv.h macros and consolidates them to
i915_pciids.h as the main "database", while making intel_device_info.c reference
the former, expanding the existing concept of a platform mask by a few low bits
reserved for sub-platform mask.

This has a two-fold positive effect of firstly consolidating the list of device
ids to one location, and secondly removing the if-ladders from every
IS__ call site.

Maintenance burden is not completely removed but should be improved. One case in
point is that I have found some disagreements between device id listed in
i915_pciids.h and i915_drv.h.

At the same time platform mask code is generalized to an array of u32 to
accomodate the addition of EHL and avoid spilling into u64 which would cause a
small code size increase. Downside is that any platforms on the u32 boundary,
like currently ICL and EHL, lose the benefit of optimizing the "IS_ICELAKE ||
IS_ELKHARTLAKE" checks into a single conditional, although at the moment there
aren't any such call-sites.

Before vs after for the whole series:

 textdata bss dec hex filename
1891093   439037424 1942420  1da394 i915.ko.0
1890434   439037424 1941761  1da101 i915.ko.1

add/remove: 12/3 grow/shrink: 92/121 up/down: 1974/-1769 (205)
...
Total: Before=1286293, After=1286498, chg +0.02%


After patch 4 v8:

 textdata bss dec hex filename
1904423   438917424 1955738  1dd79a i915.ko.0
1903354   438917424 1954669  1dd36d i915.ko.1

add/remove: 8/3 grow/shrink: 94/124 up/down: 1623/-1889 (-266)
...
Total: Before=1293823, After=1293557, chg -0.02%


The series is an improvement, both for the reader and for the compiler,

Reviewed-by: Chris Wilson 


Thanks.

Jani, Lucas? Passable? Still some objections?

Regards,

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

[Intel-gfx] [PATCH] drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Daniel Vetter
Interpreting it as a 0.16 fixed point means we can't accurately
represent 1.0. Which is one of the values we really should be able to
represent.

Since most (all?) luts have lower precision this will only affect
rounding of 0x.

Cc: Uma Shankar 
Cc: Ville Syrjälä 
Cc: Shashank Sharma 
Cc: "Kumar, Kiran S" 
Cc: Kausal Malladi 
Cc: Lionel Landwerlin 
Cc: Matt Roper 
Cc: Rob Bradford 
Cc: Daniel Stone 
Cc: Stefan Schake 
Cc: Eric Anholt 
Cc: Maarten Lankhorst 
Cc: Harry Wentland 
Cc: Leo Li 
Cc: amd-...@lists.freedesktop.org
Cc: James (Qian) Wang 
Cc: Liviu Dudau 
Cc: Mali DP Maintainers 
Cc: CK Hu 
Cc: Philipp Zabel 
Cc: Yannick Fertre 
Cc: Philippe Cornu 
Cc: Benjamin Gaignard 
Cc: Vincent Abriou 
Cc: Tomi Valkeinen 
Cc: Boris Brezillon 
Signed-off-by: Daniel Vetter Signed-off-by: Daniel 
Vetter 
---
 include/uapi/drm/drm_mode.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index 09d72966899a..83cd1636b9be 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -621,7 +621,8 @@ struct drm_color_ctm {
 
 struct drm_color_lut {
/*
-* Data is U0.16 fixed point format.
+* Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
+* 0x == 1.0.
 */
__u16 red;
__u16 green;
-- 
2.20.1

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

Re: [Intel-gfx] [PATCH v8 4/4] drm/i915: Introduce concept of a sub-platform

2019-03-29 Thread Jani Nikula
On Wed, 27 Mar 2019, Tvrtko Ursulin  wrote:
> From: Tvrtko Ursulin 
>
> Concept of a sub-platform already exist in our code (like ULX and ULT
> platform variants and similar),implemented via the macros which check a
> list of device ids to determine a match.
>
> With this patch we consolidate device ids checking into a single function
> called during early driver load.
>
> A few low bits in the platform mask are reserved for sub-platform
> identification and defined as a per-platform namespace.
>
> At the same time it future proofs the platform_mask handling by preparing
> the code for easy extending, and tidies the very verbose WARN strings
> generated when IS_PLATFORM macros are embedded into a WARN type
> statements.
>
> v2: Fixed IS_SUBPLATFORM. Updated commit msg.
> v3: Chris was right, there is an ordering problem.
>
> v4:
>  * Catch-up with new sub-platforms.
>  * Rebase for RUNTIME_INFO.
>  * Drop subplatform mask union tricks and convert platform_mask to an
>array for extensibility.
>
> v5:
>  * Fix subplatform check.
>  * Protect against forgetting to expand subplatform bits.
>  * Remove platform enum tallying.
>  * Add subplatform to error state. (Chris)
>  * Drop macros and just use static inlines.
>  * Remove redundant IRONLAKE_M. (Ville)
>
> v6:
>  * Split out Ironlake change.
>  * Optimize subplatform check.
>  * Use __always_inline. (Lucas)
>  * Add platform_mask comment. (Paulo)
>  * Pass stored runtime info in error capture. (Chris)
>
> v7:
>  * Rebased for new AML ULX device id.
>  * Bump platform mask array size for EHL.
>  * Stop mentioning device ids in intel_device_subplatform_init by using
>the trick of splitting macros i915_pciids.h. (Jani)
>  * AML seems to be either a subplatform of KBL or CFL so express it like
>that.
>
> v8:
>  * Use one device id table per subplatform. (Jani)
>
> Signed-off-by: Tvrtko Ursulin 
> Suggested-by: Chris Wilson 
> Cc: Chris Wilson 
> Cc: Jani Nikula 
> Cc: Lucas De Marchi 
> Cc: Jose Souza 
> Cc: Ville Syrjälä 
> Cc: Paulo Zanoni 
> Reviewed-by: Chris Wilson  # v6
> ---
>  drivers/gpu/drm/i915/i915_drv.c  |   8 +-
>  drivers/gpu/drm/i915/i915_drv.h  | 123 ---
>  drivers/gpu/drm/i915/i915_gpu_error.c|   3 +
>  drivers/gpu/drm/i915/i915_pci.c  |   2 +-
>  drivers/gpu/drm/i915/intel_device_info.c |  93 +
>  drivers/gpu/drm/i915/intel_device_info.h |  27 -
>  6 files changed, 214 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index f1334f5d4ead..74734d7661e5 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -868,6 +868,8 @@ static int i915_driver_init_early(struct drm_i915_private 
> *dev_priv)
>   if (i915_inject_load_failure())
>   return -ENODEV;
>  
> + intel_device_info_subplatform_init(dev_priv);
> +
>   spin_lock_init(&dev_priv->irq_lock);
>   spin_lock_init(&dev_priv->gpu_error.lock);
>   mutex_init(&dev_priv->backlight_lock);
> @@ -1718,10 +1720,12 @@ static void i915_welcome_messages(struct 
> drm_i915_private *dev_priv)
>   if (drm_debug & DRM_UT_DRIVER) {
>   struct drm_printer p = drm_debug_printer("i915 device info:");
>  
> - drm_printf(&p, "pciid=0x%04x rev=0x%02x platform=%s gen=%i\n",
> + drm_printf(&p, "pciid=0x%04x rev=0x%02x platform=%s 
> (subplatform=0x%x) gen=%i\n",
>  INTEL_DEVID(dev_priv),
>  INTEL_REVID(dev_priv),
>  intel_platform_name(INTEL_INFO(dev_priv)->platform),
> +intel_subplatform(RUNTIME_INFO(dev_priv),
> +  INTEL_INFO(dev_priv)->platform),
>  INTEL_GEN(dev_priv));
>  
>   intel_device_info_dump_flags(INTEL_INFO(dev_priv), &p);
> @@ -1764,8 +1768,6 @@ i915_driver_create(struct pci_dev *pdev, const struct 
> pci_device_id *ent)
>   memcpy(device_info, match_info, sizeof(*device_info));
>   RUNTIME_INFO(i915)->device_id = pdev->device;
>  
> - BUILD_BUG_ON(INTEL_MAX_PLATFORMS >
> -  BITS_PER_TYPE(device_info->platform_mask));
>   BUG_ON(device_info->gen > BITS_PER_TYPE(device_info->gen_mask));
>  
>   return i915;
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 9d3cab9406e1..b7d3f3a45ed9 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2298,7 +2298,67 @@ static inline unsigned int i915_sg_segment_size(void)
>  #define IS_REVID(p, since, until) \
>   (INTEL_REVID(p) >= (since) && INTEL_REVID(p) <= (until))
>  
> -#define IS_PLATFORM(dev_priv, p) (INTEL_INFO(dev_priv)->platform_mask & 
> BIT(p))
> +static __always_inline unsigned int
> +__platform_mask_index(const struct intel_runtime_info *info,
> +   enum intel_platform p)
> +{
> + const unsigned int

[Intel-gfx] [PATCH i-g-t] i915/gem_exec_schedule: Verify that using HW semaphores doesn't block

2019-03-29 Thread Chris Wilson
We may use HW semaphores to schedule nearly-ready work such that they
are already spinning on the GPU waiting for the completion on another
engine. However, we don't want for that spinning task to actually block
any real work should it be scheduled.

v2: No typeof autos
v3: Don't cheat, check gen8 as well

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
---
 tests/i915/gem_exec_schedule.c | 87 ++
 1 file changed, 87 insertions(+)

diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
index 4f0577b4e..3df319bcc 100644
--- a/tests/i915/gem_exec_schedule.c
+++ b/tests/i915/gem_exec_schedule.c
@@ -48,6 +48,10 @@
 
 #define MAX_CONTEXTS 1024
 
+#define LOCAL_I915_EXEC_BSD_SHIFT  (13)
+#define LOCAL_I915_EXEC_BSD_MASK   (3 << LOCAL_I915_EXEC_BSD_SHIFT)
+#define ENGINE_MASK  (I915_EXEC_RING_MASK | LOCAL_I915_EXEC_BSD_MASK)
+
 IGT_TEST_DESCRIPTION("Check that we can control the order of execution");
 
 static inline
@@ -320,6 +324,86 @@ static void smoketest(int fd, unsigned ring, unsigned 
timeout)
}
 }
 
+static uint32_t __batch_create(int i915, uint32_t offset)
+{
+   const uint32_t bbe = MI_BATCH_BUFFER_END;
+   uint32_t handle;
+
+   handle = gem_create(i915, ALIGN(offset + 4, 4096));
+   gem_write(i915, handle, offset, &bbe, sizeof(bbe));
+
+   return handle;
+}
+
+static uint32_t batch_create(int i915)
+{
+   return __batch_create(i915, 0);
+}
+
+static void semaphore_userlock(int i915)
+{
+   struct drm_i915_gem_exec_object2 obj = {
+   .handle = batch_create(i915),
+   };
+   igt_spin_t *spin = NULL;
+   unsigned int engine;
+   uint32_t scratch;
+
+   igt_require(gem_scheduler_has_semaphores(i915));
+
+   /*
+* Given the use of semaphores to govern parallel submission
+* of nearly-ready work to HW, we still want to run actually
+* ready work immediately. Without semaphores, the dependent
+* work wouldn't be submitted so our ready work will run.
+*/
+
+   scratch = gem_create(i915, 4096);
+   for_each_physical_engine(i915, engine) {
+   if (!spin) {
+   spin = igt_spin_batch_new(i915,
+ .dependency = scratch,
+ .engine = engine);
+   } else {
+   uint64_t saved = spin->execbuf.flags;
+
+   spin->execbuf.flags &= ~ENGINE_MASK;
+   spin->execbuf.flags |= engine;
+
+   gem_execbuf(i915, &spin->execbuf);
+
+   spin->execbuf.flags = saved;
+   }
+   }
+   igt_require(spin);
+   gem_close(i915, scratch);
+
+   /*
+* On all dependent engines, the request may be executing (busywaiting
+* on a HW semaphore) but it should not prevent any real work from
+* taking precedence.
+*/
+   scratch = gem_context_create(i915);
+   for_each_physical_engine(i915, engine) {
+   struct drm_i915_gem_execbuffer2 execbuf = {
+   .buffers_ptr = to_user_pointer(&obj),
+   .buffer_count = 1,
+   .flags = engine,
+   .rsvd1 = scratch,
+   };
+
+   if (engine == (spin->execbuf.flags & ENGINE_MASK))
+   continue;
+
+   gem_execbuf(i915, &execbuf);
+   }
+   gem_context_destroy(i915, scratch);
+   gem_sync(i915, obj.handle); /* to hang unless we can preempt */
+   gem_close(i915, obj.handle);
+
+   igt_spin_batch_free(i915, spin);
+}
+
 static void reorder(int fd, unsigned ring, unsigned flags)
 #define EQUAL 1
 {
@@ -1307,6 +1391,9 @@ igt_main
igt_require(gem_scheduler_has_ctx_priority(fd));
}
 
+   igt_subtest("semaphore-user")
+   semaphore_userlock(fd);
+
igt_subtest("smoketest-all")
smoketest(fd, ALL_ENGINES, 30);
 
-- 
2.20.1

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

Re: [Intel-gfx] [PATCH 4/6] drm/i915: Add 10bit LUT for ilk/snb

2019-03-29 Thread Maarten Lankhorst
Op 28-03-2019 om 22:05 schreef Ville Syrjala:
> From: Ville Syrjälä 
>
> Plop in support for 10bit LUT on ilk/snb.
>
> There is no split gamma mode on these platforms, so we have
> to choose between degamma and gamma. That could be a runtime choice
> but for now let's just advertize the gamma as having 1024 entries.
> We'll also keep the ctm hidden for now.
>
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/i915_pci.c|  4 +++
>  drivers/gpu/drm/i915/i915_reg.h|  9 ++
>  drivers/gpu/drm/i915/intel_color.c | 44 ++
>  3 files changed, 51 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
> index 385056752939..0971eee4a4d1 100644
> --- a/drivers/gpu/drm/i915/i915_pci.c
> +++ b/drivers/gpu/drm/i915/i915_pci.c
> @@ -116,6 +116,8 @@
>   [PIPE_C] = IVB_CURSOR_C_OFFSET, \
>   }
>  
> +#define ILK_COLORS \
> + .color = { .gamma_lut_size = 1024 }
>  #define IVB_COLORS \
>   .color = { .degamma_lut_size = 512, .gamma_lut_size = 512 }
>  #define CHV_COLORS \
> @@ -325,6 +327,7 @@ static const struct intel_device_info intel_gm45_info = {
>   .has_rc6 = 0, \
>   I9XX_PIPE_OFFSETS, \
>   I9XX_CURSOR_OFFSETS, \
> + ILK_COLORS, \
>   GEN_DEFAULT_PAGE_SIZES
>  
>  static const struct intel_device_info intel_ironlake_d_info = {
> @@ -353,6 +356,7 @@ static const struct intel_device_info 
> intel_ironlake_m_info = {
>   .ppgtt_size = 31, \
>   I9XX_PIPE_OFFSETS, \
>   I9XX_CURSOR_OFFSETS, \
> + ILK_COLORS, \
>   GEN_DEFAULT_PAGE_SIZES
>  
>  #define SNB_D_PLATFORM \
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index eb7e93354cfe..f6a5d8f11368 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -7209,6 +7209,15 @@ enum {
>  #define _LGC_PALETTE_B   0x4a800
>  #define LGC_PALETTE(pipe, i) _MMIO(_PIPE(pipe, _LGC_PALETTE_A, 
> _LGC_PALETTE_B) + (i) * 4)
>  
> +/* ilk/snb precision palette */
> +#define _PREC_PALETTE_A   0x4b000
> +#define _PREC_PALETTE_B   0x4c000
> +#define PREC_PALETTE(pipe, i) _MMIO(_PIPE(pipe, _PREC_PALETTE_A, 
> _PREC_PALETTE_B) + (i) * 4)
> +
> +#define  _PREC_PIPEAGCMAX  0x4d000
> +#define  _PREC_PIPEBGCMAX  0x4d010
> +#define PREC_PIPEGCMAX(pipe, i)_MMIO(_PIPE(pipe, _PIPEAGCMAX, 
> _PIPEBGCMAX) + (i) * 4)
> +
>  #define _GAMMA_MODE_A0x4a480
>  #define _GAMMA_MODE_B0x4ac80
>  #define GAMMA_MODE(pipe) _MMIO_PIPE(pipe, _GAMMA_MODE_A, _GAMMA_MODE_B)
> diff --git a/drivers/gpu/drm/i915/intel_color.c 
> b/drivers/gpu/drm/i915/intel_color.c
> index 70a71c92e3e5..8e03f066adf7 100644
> --- a/drivers/gpu/drm/i915/intel_color.c
> +++ b/drivers/gpu/drm/i915/intel_color.c
> @@ -468,6 +468,29 @@ static void skl_color_commit(const struct 
> intel_crtc_state *crtc_state)
>   ilk_load_csc_matrix(crtc_state);
>  }
>  
> +static void ilk_load_lut_10(struct intel_crtc *crtc,
> + const struct drm_property_blob *blob)
> +{
> + struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> + const struct drm_color_lut *lut = blob->data;
> + int i, lut_size = drm_color_lut_size(blob);
> + enum pipe pipe = crtc->pipe;
> +
> + for (i = 0; i < lut_size; i++)
> + I915_WRITE_FW(PREC_PALETTE(pipe, i), ilk_lut_10(&lut[i]));
> +}
> +
> +static void ilk_load_luts(const struct intel_crtc_state *crtc_state)
> +{
> + struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> + const struct drm_property_blob *gamma_lut = crtc_state->base.gamma_lut;
> +
> + if (crtc_state->gamma_mode == GAMMA_MODE_MODE_8BIT)
> + i9xx_load_luts(crtc_state);
> + else
> + ilk_load_lut_10(crtc, gamma_lut);
> +}
> +
>  /*
>   * IVB/HSW Bspec / PAL_PREC_INDEX:
>   * "Restriction : Index auto increment mode is not
> @@ -961,6 +984,15 @@ static int chv_color_check(struct intel_crtc_state 
> *crtc_state)
>   return 0;
>  }
>  
> +static u32 ilk_gamma_mode(const struct intel_crtc_state *crtc_state)
> +{
> + if (!crtc_state->gamma_enable ||
> + crtc_state_is_legacy_gamma(crtc_state))
> + return GAMMA_MODE_MODE_8BIT;
> + else
> + return GAMMA_MODE_MODE_10BIT;
> +}
> +
>  static int ilk_color_check(struct intel_crtc_state *crtc_state)
>  {
>   int ret;
> @@ -980,8 +1012,7 @@ static int ilk_color_check(struct intel_crtc_state 
> *crtc_state)
>*/
>   crtc_state->csc_enable = false;
>  
> - /* We don't expose fancy gamma modes on ilk/snb currently */
> - crtc_state->gamma_mode = GAMMA_MODE_MODE_8BIT;
> + crtc_state->gamma_mode = ilk_gamma_mode(crtc_state);
>  
>   crtc_state->csc_mode = 0;
>  
> @@ -1178,14 +1209,15 @@ void intel_color_init(struct intel_crtc *crtc)
>   else if (INTEL_GEN(dev_priv) >= 7)
>   dev_priv->d

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/gamma: Clarify gamma lut uapi
URL   : https://patchwork.freedesktop.org/series/58718/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5835 -> Patchwork_12626


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58718/revisions/1/mbox/

Known issues


  Here are the changes found in Patchwork_12626 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@gem_exec_gttfill@basic:
- fi-skl-gvtdvm:  NOTRUN -> SKIP [fdo#109271] +41

  * igt@gem_exec_suspend@basic-s3:
- fi-icl-u3:  PASS -> FAIL [fdo#103375]
- fi-blb-e6850:   PASS -> INCOMPLETE [fdo#107718]

  * igt@gem_workarounds@basic-read:
- fi-snb-2600:NOTRUN -> SKIP [fdo#109271] +57

  * igt@i915_selftest@live_execlists:
- fi-apl-guc: PASS -> INCOMPLETE [fdo#103927] / [fdo#109720]

  * igt@kms_busy@basic-flip-a:
- fi-gdg-551: PASS -> FAIL [fdo#103182] +1

  * igt@kms_busy@basic-flip-c:
- fi-snb-2600:NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_chamelium@vga-edid-read:
- fi-hsw-4770r:   NOTRUN -> SKIP [fdo#109271] +45
- fi-skl-6600u:   NOTRUN -> SKIP [fdo#109271] +31

  * igt@kms_frontbuffer_tracking@basic:
- fi-icl-u2:  PASS -> FAIL [fdo#103167]

  * igt@runner@aborted:
- fi-apl-guc: NOTRUN -> FAIL [fdo#108622] / [fdo#109720]

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-skl-6600u:   INCOMPLETE [fdo#104108] / [fdo#107773] -> PASS

  * igt@kms_frontbuffer_tracking@basic:
- fi-byt-clapper: FAIL [fdo#103167] -> PASS

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS

  
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#107773]: https://bugs.freedesktop.org/show_bug.cgi?id=107773
  [fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720


Participating hosts (43 -> 41)
--

  Additional (3): fi-hsw-4770r fi-skl-gvtdvm fi-snb-2600 
  Missing(5): fi-kbl-soraka fi-ilk-m540 fi-bsw-cyan fi-icl-dsi fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5835 -> Patchwork_12626

  CI_DRM_5835: a87cb5da301d892d69d44b106a007caea8386935 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4911: d9fe699ea45406e279b78d1afdb4d57a205a3c99 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12626: eb8630f6603d1dec660988f98aaf839239178405 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

eb8630f6603d drm/gamma: Clarify gamma lut uapi

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12626/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 2/6] drm/i915: Don't use split gamma when we don't have to

2019-03-29 Thread Ville Syrjälä
On Thu, Mar 28, 2019 at 05:16:03PM -0700, Matt Roper wrote:
> On Thu, Mar 28, 2019 at 11:05:01PM +0200, Ville Syrjala wrote:
> > From: Ville Syrjälä 
> > 
> > Using the split gamma mode when we don't have to has the annoying
> > requirement of loading a linear LUT to the unused half. Instead
> > let's make life simpler by switching to the 10bit gamma mode
> > and duplicating each entry.
> > 
> > This also allows us to load the software gamma LUT into the
> > hardware degamma LUT, thus removing some of the buggy
> > configurations we currently allow (YCbCr/limited range RGB
> > + gamma LUT). We do still have other configurations that are
> > also buggy, but those will need more complicated fixes
> > or they just need to be rejected. Sadly GLK doesn't have
> > this flexibility anymore and the degamma and gamma LUTs
> > are very different so no help there.
> > 
> > Signed-off-by: Ville Syrjälä 
> > ---
> >  drivers/gpu/drm/i915/i915_reg.h|   1 +
> >  drivers/gpu/drm/i915/intel_color.c | 159 +++--
> >  2 files changed, 86 insertions(+), 74 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h 
> > b/drivers/gpu/drm/i915/i915_reg.h
> > index c866379a521b..eb7e93354cfe 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -10127,6 +10127,7 @@ enum skl_power_gate {
> >  #define   PAL_PREC_SPLIT_MODE  (1 << 31)
> >  #define   PAL_PREC_AUTO_INCREMENT  (1 << 15)
> >  #define   PAL_PREC_INDEX_VALUE_MASK(0x3ff << 0)
> > +#define   PAL_PREC_INDEX_VALUE(x)  ((x) << 0)
> >  #define _PAL_PREC_DATA_A   0x4A404
> >  #define _PAL_PREC_DATA_B   0x4AC04
> >  #define _PAL_PREC_DATA_C   0x4B404
> > diff --git a/drivers/gpu/drm/i915/intel_color.c 
> > b/drivers/gpu/drm/i915/intel_color.c
> > index d7c38a2bbd8f..ed4bd9bd15f5 100644
> > --- a/drivers/gpu/drm/i915/intel_color.c
> > +++ b/drivers/gpu/drm/i915/intel_color.c
> > @@ -466,72 +466,32 @@ static void skl_color_commit(const struct 
> > intel_crtc_state *crtc_state)
> > ilk_load_csc_matrix(crtc_state);
> >  }
> >  
> > -static void bdw_load_degamma_lut(const struct intel_crtc_state *crtc_state)
> > +static void bdw_load_lut_10(struct intel_crtc *crtc,
> > +   const struct drm_property_blob *blob,
> > +   u32 prec_index, bool duplicate)
> >  {
> > -   struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> > struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> > -   const struct drm_property_blob *degamma_lut = 
> > crtc_state->base.degamma_lut;
> > -   u32 i, lut_size = INTEL_INFO(dev_priv)->color.degamma_lut_size;
> > +   const struct drm_color_lut *lut = blob->data;
> > +   int i, lut_size = drm_color_lut_size(blob);
> > enum pipe pipe = crtc->pipe;
> >  
> > -   I915_WRITE(PREC_PAL_INDEX(pipe),
> > -  PAL_PREC_SPLIT_MODE | PAL_PREC_AUTO_INCREMENT);
> > -
> > -   if (degamma_lut) {
> > -   const struct drm_color_lut *lut = degamma_lut->data;
> > +   I915_WRITE(PREC_PAL_INDEX(pipe), prec_index |
> > +  PAL_PREC_AUTO_INCREMENT);
> >  
> > -   for (i = 0; i < lut_size; i++)
> > -   I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
> > -   } else {
> > +   /*
> > +* We advertize the split gamma sizes. When not using split
> > +* gamma we just duplicate each entry.
> > +*
> > +* TODO: expose the full LUT to userspace
> 
> Any reason not to just do this immediately?  Throwing away half the
> table entries if we decide we need split mode doesn't seem any harder
> than duplicating the entries when we decide we don't.  The color
> management kerneldoc already explicitly recommends this approach for
> hardware that can support multiple gamma modes, so I don't think we need
> any new ABI to handle it.

Hmm. I guess that apporach could be doable. It might be a bit annoying
for userspace though if it expects a direct color visual. But at least
for X we won't use degamma/ctm anyway so seems like it should work out
just fine.

> 
> > +*/
> > +   if (duplicate) {
> > for (i = 0; i < lut_size; i++) {
> > -   u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
> > -
> > -   I915_WRITE(PREC_PAL_DATA(pipe),
> > -  (v << 20) | (v << 10) | v);
> > +   I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
> > +   I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
> > }
> > -   }
> > -}
> > -
> > -static void bdw_load_gamma_lut(const struct intel_crtc_state *crtc_state, 
> > u32 offset)
> > -{
> > -   struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> > -   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> > -   const struct drm_property_blob *gamma_lut = crtc_state->base.gamma_lut;
> > -   u32 i, lut_size = INTEL_INFO(dev_priv)->color.gamma_lut_size;
> > -   enum pipe pipe = crtc->pipe;
> > -
> >

Re: [Intel-gfx] RMW considered harmful (was: Re: [PATCH 2/2] drm/i915/icl: Enable TRANSCODER PORT SYNC for tiled displays across separate ports)

2019-03-29 Thread Jani Nikula
On Thu, 28 Mar 2019, Manasi Navare  wrote:
> On Thu, Mar 28, 2019 at 11:18:56AM +0200, Jani Nikula wrote:
>> On Fri, 22 Mar 2019, Manasi Navare  wrote:
>> > On Fri, Mar 22, 2019 at 09:28:01PM +0200, Jani Nikula wrote:
>> >> On Fri, 22 Mar 2019, Ville Syrjälä  wrote:
>> >> > On Fri, Mar 22, 2019 at 11:44:21AM -0700, Manasi Navare wrote:
>> >> >> On Fri, Mar 22, 2019 at 08:09:50PM +0200, Ville Syrjälä wrote:
>> >> >> > In that case there is no point in doing a rmw.
>> >> >> 
>> >> >> But isnt it always a good idea to do rmw? I mean what if the master
>> >> >> select was set to something else earlier?
>> >> >
>> >> > RMW is the root of many evils. It should be avoided unless there is a
>> >> > really compelling reason to use it.
>> >> 
>> >> Hear, hear!
>> >> 
>> >> We have the software state that we want to write to the hardware. If we
>> >> use RMW to do this, it might all work by coincidence due to the old
>> >> values in the registers, or it might just as well break by coincidence
>> >> due to some garbage in the registers.
>> >> 
>> >> In most cases, there should only be one place that writes a particular
>> >> display register during modeset. Sometimes this isn't possible, and RMW
>> >> is required.
>> >> 
>> >> Some registers also have reserved bits potentially used by the hardware
>> >> that must not be changed, and RMW is required. These are documented in
>> >> bspec.
>> >> 
>> >> BR,
>> >> Jani.
>> >>
>> >
>> > Thanks for the explanation. It does make sense now that we are doing a
>> > full modeset, we should just be then writing the value directly?  The
>> > only concern I have is that say DSI code sets this somewhere els ein
>> > the modeset path, then we would need to modify this to do RMW or
>> > always make sure DSI also uses the same function for writing to this
>> > reg.  What do you suggest doing now?
>> 
>> I think all encoders in a tile group are always of the same type.
>
> Yes all the encoders in  tile group are always same type.
>
>> 
>> If the tile grouping in your patch is based purely on EDID, we may need
>> to enforce this. Surely genlock only works on encoders of the same type?
>>
>
> So all the slaves and their master will always be of same type and yes it is
> based on the EDID tile block parsing.
> But just to double sure I think when i assign the master slave pointers, I 
> should
> check that the connector type is the same.
>  
>> In any case DSI (at least currently) does not use tile groups, and will
>> never be mixed up in non-DSI tile groups. The DSI transcoders are
>> separate from other transcoders, so we're not writing the same registers
>> here.
>> 
>> ---
>> 
>> Looking at the code, I am wondering if this should be pushed to encoder
>> hooks instead of adding into crtc enable.
>
> As per the Bspec sequence, this needs to happen before enabling the
> TRANS_DDI_FUNC_CTL and after the link training, so I put in the
> crtc_enable hook, which encoder hooks are you suggesting adding this?

Maybe go with what you have now first, this can be pushed to encoders
later if needed. (I hope I don't regret this. ;)

BR,
Jani.



>
> Regards
> Manasi
>> 
>> BR,
>> Jani.
>> 
>> 
>> 
>> -- 
>> Jani Nikula, Intel Open Source Graphics Center

-- 
Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Finish the GAMMA_LUT stuff

2019-03-29 Thread Ville Syrjälä
On Fri, Mar 29, 2019 at 08:34:03AM -, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915: Finish the GAMMA_LUT stuff
> URL   : https://patchwork.freedesktop.org/series/58698/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_5832_full -> Patchwork_12623_full
> 
> 
> Summary
> ---
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with Patchwork_12623_full absolutely need to 
> be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in Patchwork_12623_full, please notify your bug team to allow 
> them
>   to document this new failure mode, which will reduce false positives in CI.
> 
>   
> 
> Possible new issues
> ---
> 
>   Here are the unknown changes that may have been introduced in 
> Patchwork_12623_full:
> 
> ### IGT changes ###
> 
>  Possible regressions 
> 
>   * igt@kms_color@pipe-b-ctm-green-to-red:
> - shard-iclb: PASS -> DMESG-WARN +10

<1> [1836.559333] BUG: unable to handle kernel NULL pointer dereference at 
0048
<1> [1836.559337] #PF error: [normal kernel read fault]
<6> [1836.559339] PGD 0 P4D 0 
<4> [1836.559342] Oops:  [#1] PREEMPT SMP NOPTI
<4> [1836.559344] CPU: 6 PID: 4350 Comm: kms_color Tainted: G U
5.1.0-rc2-CI-Patchwork_12623+ #1
<4> [1836.559346] Hardware name: Intel Corporation Ice Lake Client 
Platform/IceLake U DDR4 SODIMM PD RVP, BIOS ICLSFWR1.R00.3087.A00.1902250334 
02/25/2019
<4> [1836.559391] RIP: 0010:bdw_load_lut_10+0x1b/0x130 [i915]

Whoops. Will need to be a bit more careful with gamma_mode on icl.

> 
>   * igt@kms_color@pipe-c-ctm-0-25:
> - shard-iclb: NOTRUN -> DMESG-WARN
> 
>   * igt@kms_color@pipe-invalid-lut-sizes:
> - shard-snb:  PASS -> FAIL
> 
>   
>  Warnings 
> 
>   * igt@kms_color@pipe-a-degamma:
> - shard-iclb: FAIL [fdo#104782] -> DMESG-FAIL +1
> 
>   * igt@kms_color@pipe-c-ctm-max:
> - shard-iclb: FAIL [fdo#108147] -> DMESG-FAIL +1
> 
>   
>  Suppressed 
> 
>   The following results come from untrusted machines, tests, or statuses.
>   They do not affect the overall result.
> 
>   * {igt@kms_plane@pixel-format-pipe-a-planes}:
> - shard-iclb: PASS -> FAIL +5
> 
>   
> Known issues
> 
> 
>   Here are the changes found in Patchwork_12623_full that come from known 
> issues:
> 
> ### IGT changes ###
> 
>  Issues hit 
> 
>   * igt@gem_ctx_isolation@bcs0-s3:
> - shard-skl:  PASS -> INCOMPLETE [fdo#104108] / [fdo#107773]
> 
>   * igt@gem_partial_pwrite_pread@writes-after-reads-snoop:
> - shard-iclb: PASS -> TIMEOUT [fdo#109673] +2
> 
>   * igt@i915_pm_rpm@i2c:
> - shard-skl:  PASS -> INCOMPLETE [fdo#107807]
> 
>   * igt@i915_pm_rpm@legacy-planes:
> - shard-iclb: PASS -> INCOMPLETE [fdo#108840] / [fdo#109369]
> 
>   * igt@i915_pm_rpm@system-suspend-execbuf:
> - shard-iclb: PASS -> DMESG-WARN [fdo#109638]
> 
>   * igt@kms_atomic_transition@3x-modeset-transitions:
> - shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +12
> 
>   * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
> - shard-glk:  PASS -> DMESG-WARN [fdo#110222]
> 
>   * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
> - shard-skl:  NOTRUN -> DMESG-WARN [fdo#110222] +1
> 
>   * igt@kms_chamelium@hdmi-crc-abgr:
> - shard-iclb: NOTRUN -> SKIP [fdo#109284]
> 
>   * igt@kms_color@pipe-b-legacy-gamma:
> - shard-iclb: PASS -> FAIL [fdo#104782] +2
> 
>   * igt@kms_cursor_crc@cursor-128x128-dpms:
> - shard-skl:  NOTRUN -> FAIL [fdo#103232]
> 
>   * igt@kms_cursor_legacy@cursor-vs-flip-atomic:
> - shard-iclb: PASS -> FAIL [fdo#103355]
> 
>   * igt@kms_flip@flip-vs-expired-vblank:
> - shard-skl:  NOTRUN -> FAIL [fdo#105363]
> 
>   * igt@kms_flip@flip-vs-suspend-interruptible:
> - shard-skl:  NOTRUN -> INCOMPLETE [fdo#109507]
> 
>   * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-blt:
> - shard-iclb: PASS -> FAIL [fdo#103167] +3
> 
>   * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-mmap-cpu:
> - shard-skl:  NOTRUN -> FAIL [fdo#103167]
> 
>   * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-mmap-cpu:
> - shard-iclb: PASS -> FAIL [fdo#105682] / [fdo#109247]
> 
>   * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt:
> - shard-iclb: PASS -> FAIL [fdo#109247] +2
> 
>   * igt@kms_frontbuffer_tracking@psr-1p-primscrn-shrfb-pgflip-blt:
> - shard-snb:  NOTRUN -> SKIP [fdo#109271] +100
> 
>   * igt@kms_panel_fitting@legacy:
> - shard-skl:  NOTRUN -> FAIL [fdo#105456]
> 
>   * igt@kms_pipe_crc_basic@read-crc-pipe-d:
> - shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278

Re: [Intel-gfx] [v6 02/13] drm: Parse HDR metadata info from EDID

2019-03-29 Thread Sharma, Shashank


On 3/20/2019 4:18 PM, Uma Shankar wrote:

HDR metadata block is introduced in CEA-861.3 spec.
Parsing the same to get the panel's HDR metadata.

v2: Rebase and added Ville's POC changes to the patch.

v3: No Change

v4: Addressed Shashank's review comments

Signed-off-by: Uma Shankar 
---
  drivers/gpu/drm/drm_edid.c | 49 ++
  1 file changed, 49 insertions(+)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index fa39592..fd8a621a 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -2840,6 +2840,7 @@ static int drm_cvt_modes(struct drm_connector *connector,
  #define VIDEO_BLOCK 0x02
  #define VENDOR_BLOCK0x03
  #define SPEAKER_BLOCK 0x04
+#define HDR_STATIC_METADATA_BLOCK  0x6
  #define USE_EXTENDED_TAG 0x07
  #define EXT_VIDEO_CAPABILITY_BLOCK 0x00
  #define EXT_VIDEO_DATA_BLOCK_420  0x0E
@@ -3587,6 +3588,12 @@ static int add_3d_struct_modes(struct drm_connector 
*connector, u16 structure,
  }
  
  static int

+cea_db_payload_len_ext(const u8 *db)
+{
+   return (db[0] & 0x1f) - 1;
+}
+
+static int
  cea_db_extended_tag(const u8 *db)
  {
return db[1];
@@ -3822,6 +3829,46 @@ static void fixup_detailed_cea_mode_clock(struct 
drm_display_mode *mode)
mode->clock = clock;
  }
  
+static bool cea_db_is_hdmi_hdr_metadata_block(const u8 *db)

+{
+   if (cea_db_tag(db) != USE_EXTENDED_TAG)
+   return false;
+
+   if (db[1] != HDR_STATIC_METADATA_BLOCK)
+   return false;
+
+   return true;
+}
+
+static uint8_t eotf_supported(const u8 *edid_ext)
+{
+   return edid_ext[2] &
+   (BIT(HDMI_EOTF_TRADITIONAL_GAMMA_SDR) |
+BIT(HDMI_EOTF_TRADITIONAL_GAMMA_HDR) |
+BIT(HDMI_EOTF_SMPTE_ST2084));
+}
+
+static uint8_t hdr_metadata_type(const u8 *edid_ext)
+{
+   return edid_ext[3] &
+   BIT(HDMI_STATIC_METADATA_TYPE1);
+}
+
+static void
+drm_parse_hdr_metadata_block(struct drm_connector *connector, const u8 *db)
+{
+   u16 len;
+
+   len = cea_db_payload_len_ext(db);
+   connector->hdr_metadata.eotf = eotf_supported(db);
+   connector->hdr_metadata.metadata_type = hdr_metadata_type(db);
+
+   if (len >= 5)
+   connector->hdr_metadata.max_fall = db[5];
+   if (len >= 4)


Little bike shed, If we pass >=5 we need not to compare >= 4, or we 
should check >=4 first and then >=5 in sequence.


With that change ( and assuming you fixed the checkpatch stuff already), 
please feel free to use:


Reviewed-by: Shashank Sharma 


+   connector->hdr_metadata.max_cll = db[4];
+}
+
  static void
  drm_parse_hdmi_vsdb_audio(struct drm_connector *connector, const u8 *db)
  {
@@ -4449,6 +4496,8 @@ static void drm_parse_cea_ext(struct drm_connector 
*connector,
drm_parse_y420cmdb_bitmap(connector, db);
if (cea_db_is_vcdb(db))
drm_parse_vcdb(connector, db);
+   if (cea_db_is_hdmi_hdr_metadata_block(db))
+   drm_parse_hdr_metadata_block(connector, db);
}
  }
  

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

[Intel-gfx] [PATCH v2] drm: prefix header search paths with $(srctree)/

2019-03-29 Thread Masahiro Yamada
Currently, the Kbuild core manipulates header search paths in a crazy
way [1].

To fix this mess, I want all Makefiles to add explicit $(srctree)/ to
the search paths in the srctree. Some Makefiles are already written in
that way, but not all. The goal of this work is to make the notation
consistent, and finally get rid of the gross hacks.

Having whitespaces after -I does not matter since commit 48f6e3cf5bc6
("kbuild: do not drop -I without parameter").

[1]: https://patchwork.kernel.org/patch/9632347/

Signed-off-by: Masahiro Yamada 
Reviewed-by: Sam Ravnborg 
---

I put all gpu/drm changes into a single patch because
they are trivial conversion.

If you are interested in the big picture of this work,
the full patch set is available at the following URL.

git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git 
build-test


Changes in v2:
  - fix up the new driver komeda
  - Add Sam's Reviewed-by

 drivers/gpu/drm/amd/amdgpu/Makefile | 2 +-
 drivers/gpu/drm/amd/lib/Makefile| 2 +-
 drivers/gpu/drm/arm/display/komeda/Makefile | 4 ++--
 drivers/gpu/drm/i915/gvt/Makefile   | 2 +-
 drivers/gpu/drm/msm/Makefile| 6 +++---
 drivers/gpu/drm/nouveau/Kbuild  | 8 
 6 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile 
b/drivers/gpu/drm/amd/amdgpu/Makefile
index 466da59..62bf9da 100644
--- a/drivers/gpu/drm/amd/amdgpu/Makefile
+++ b/drivers/gpu/drm/amd/amdgpu/Makefile
@@ -23,7 +23,7 @@
 # Makefile for the drm device driver.  This driver provides support for the
 # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
 
-FULL_AMD_PATH=$(src)/..
+FULL_AMD_PATH=$(srctree)/$(src)/..
 DISPLAY_FOLDER_NAME=display
 FULL_AMD_DISPLAY_PATH = $(FULL_AMD_PATH)/$(DISPLAY_FOLDER_NAME)
 
diff --git a/drivers/gpu/drm/amd/lib/Makefile b/drivers/gpu/drm/amd/lib/Makefile
index 6902430..d534992 100644
--- a/drivers/gpu/drm/amd/lib/Makefile
+++ b/drivers/gpu/drm/amd/lib/Makefile
@@ -27,6 +27,6 @@
 # driver components or later moved to kernel/lib for sharing with
 # other drivers.
 
-ccflags-y := -I$(src)/../include
+ccflags-y := -I $(srctree)/$(src)/../include
 
 obj-$(CONFIG_CHASH) += chash.o
diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile 
b/drivers/gpu/drm/arm/display/komeda/Makefile
index 1b875e5..a72e30c 100644
--- a/drivers/gpu/drm/arm/display/komeda/Makefile
+++ b/drivers/gpu/drm/arm/display/komeda/Makefile
@@ -1,8 +1,8 @@
 # SPDX-License-Identifier: GPL-2.0
 
 ccflags-y := \
-   -I$(src)/../include \
-   -I$(src)
+   -I $(srctree)/$(src)/../include \
+   -I $(srctree)/$(src)
 
 komeda-y := \
komeda_drv.o \
diff --git a/drivers/gpu/drm/i915/gvt/Makefile 
b/drivers/gpu/drm/i915/gvt/Makefile
index 271fb46..ea8324a 100644
--- a/drivers/gpu/drm/i915/gvt/Makefile
+++ b/drivers/gpu/drm/i915/gvt/Makefile
@@ -5,5 +5,5 @@ GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o 
trace_points.o firmware.o \
execlist.o scheduler.o sched_policy.o mmio_context.o cmd_parser.o 
debugfs.o \
fb_decoder.o dmabuf.o page_track.o
 
-ccflags-y  += -I$(src) -I$(src)/$(GVT_DIR)
+ccflags-y  += -I $(srctree)/$(src) -I 
$(srctree)/$(src)/$(GVT_DIR)/
 i915-y += $(addprefix $(GVT_DIR)/, 
$(GVT_SOURCE))
diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
index 56a70c7..b7b1ebd 100644
--- a/drivers/gpu/drm/msm/Makefile
+++ b/drivers/gpu/drm/msm/Makefile
@@ -1,7 +1,7 @@
 # SPDX-License-Identifier: GPL-2.0
-ccflags-y := -Idrivers/gpu/drm/msm
-ccflags-y += -Idrivers/gpu/drm/msm/disp/dpu1
-ccflags-$(CONFIG_DRM_MSM_DSI) += -Idrivers/gpu/drm/msm/dsi
+ccflags-y := -I $(srctree)/$(src)
+ccflags-y += -I $(srctree)/$(src)/disp/dpu1
+ccflags-$(CONFIG_DRM_MSM_DSI) += -I $(srctree)/$(src)/dsi
 
 msm-y := \
adreno/adreno_device.o \
diff --git a/drivers/gpu/drm/nouveau/Kbuild b/drivers/gpu/drm/nouveau/Kbuild
index ea3035e..4fae728 100644
--- a/drivers/gpu/drm/nouveau/Kbuild
+++ b/drivers/gpu/drm/nouveau/Kbuild
@@ -1,7 +1,7 @@
-ccflags-y += -I$(src)/include
-ccflags-y += -I$(src)/include/nvkm
-ccflags-y += -I$(src)/nvkm
-ccflags-y += -I$(src)
+ccflags-y += -I $(srctree)/$(src)/include
+ccflags-y += -I $(srctree)/$(src)/include/nvkm
+ccflags-y += -I $(srctree)/$(src)/nvkm
+ccflags-y += -I $(srctree)/$(src)
 
 # NVKM - HW resource manager
 #- code also used by various userspace tools/tests
-- 
2.7.4

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

Re: [Intel-gfx] [v6 07/13] drm/i915: Write HDR infoframe and send to panel

2019-03-29 Thread Sharma, Shashank


On 3/20/2019 4:18 PM, Uma Shankar wrote:

Enable writing of HDR metadata infoframe to panel.
The data will be provid by usersapace compositors, based
on blending policies and passsed to driver through a blob
property.

v2: Rebase

v3: Fixed a warning message

v4: Addressed Shashank's review comments

v5: Rebase. Added infoframe calculation in compute config.

v6: Addressed Shashank's review comment. Added HDR metadata
support from GEN10 onwards as per Shashank's recommendation.

Signed-off-by: Uma Shankar 
---
  drivers/gpu/drm/i915/intel_drv.h  |  1 +
  drivers/gpu/drm/i915/intel_hdmi.c | 41 +++
  2 files changed, 42 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index d9f188e..c6c3cc7 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1043,6 +1043,7 @@ struct intel_crtc_state {
union hdmi_infoframe avi;
union hdmi_infoframe spd;
union hdmi_infoframe hdmi;
+   union hdmi_infoframe drm;
} infoframes;
  
  	/* HDMI scrambling status */

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index 5f06237..e4bc7fc 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -555,6 +555,7 @@ static u32 hsw_infoframes_enabled(struct intel_encoder 
*encoder,
HDMI_INFOFRAME_TYPE_AVI,
HDMI_INFOFRAME_TYPE_SPD,
HDMI_INFOFRAME_TYPE_VENDOR,
+   HDMI_INFOFRAME_TYPE_DRM,
  };
  
  u32 intel_hdmi_infoframe_enable(unsigned int type)

@@ -777,6 +778,30 @@ void intel_read_infoframe(struct intel_encoder *encoder,
return true;
  }
  
+static bool

+intel_hdmi_compute_drm_infoframe(struct intel_encoder *encoder,
+struct intel_crtc_state *crtc_state,
+struct drm_connector_state *conn_state)
+{
+   struct hdmi_drm_infoframe *frame = &crtc_state->infoframes.drm.drm;
+   struct hdr_static_metadata *hdr_metadata;
+   int ret;
+
+   hdr_metadata = (struct hdr_static_metadata *)
+   conn_state->hdr_output_metadata_blob_ptr->data;
+
+   ret = drm_hdmi_infoframe_set_hdr_metadata(frame, hdr_metadata);
+   if (ret < 0) {
+   DRM_ERROR("couldn't set HDR metadata in infoframe\n");
+   return false;
+   }
+
+   crtc_state->infoframes.enable |=
+   intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_DRM);
+
+   return true;
+}
+
  static void g4x_set_infoframes(struct intel_encoder *encoder,
   bool enable,
   const struct intel_crtc_state *crtc_state,
@@ -1175,6 +1200,9 @@ static void hsw_set_infoframes(struct intel_encoder 
*encoder,
intel_write_infoframe(encoder, crtc_state,
  HDMI_INFOFRAME_TYPE_VENDOR,
  &crtc_state->infoframes.hdmi);
+   intel_write_infoframe(encoder, crtc_state,


We should have a GEN check here also, else, there could be case where we 
dint compute infoframes <=10 but wrote it, which will write garbage.


- Shashank


+ HDMI_INFOFRAME_TYPE_DRM,
+ &crtc_state->infoframes.drm);
  }
  
  void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable)

@@ -2381,6 +2409,19 @@ int intel_hdmi_compute_config(struct intel_encoder 
*encoder,
return -EINVAL;
}
  
+	/*

+* Support HDR Metadata from Gen10 onwards
+* ToDo: Gen9 also can support HDR with LSPCON.
+* Support for the same to be enabled later.
+*/
+   if (INTEL_GEN(dev_priv) >= 10) {
+   if (!intel_hdmi_compute_drm_infoframe(encoder, pipe_config,
+ conn_state)) {
+   DRM_DEBUG_KMS("bad DRM infoframe\n");
+   return -EINVAL;
+   }
+   }
+
return 0;
  }
  

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

Re: [Intel-gfx] [PATCH v2] drm: prefix header search paths with $(srctree)/

2019-03-29 Thread james qian wang (Arm Technology China)
On Fri, Mar 29, 2019 at 08:32:41PM +0900, Masahiro Yamada wrote:
> Currently, the Kbuild core manipulates header search paths in a crazy
> way [1].
> 
> To fix this mess, I want all Makefiles to add explicit $(srctree)/ to
> the search paths in the srctree. Some Makefiles are already written in
> that way, but not all. The goal of this work is to make the notation
> consistent, and finally get rid of the gross hacks.
> 
> Having whitespaces after -I does not matter since commit 48f6e3cf5bc6
> ("kbuild: do not drop -I without parameter").
> 
> [1]: https://patchwork.kernel.org/patch/9632347/
> 
> Signed-off-by: Masahiro Yamada 
> Reviewed-by: Sam Ravnborg 
> ---
> 
> I put all gpu/drm changes into a single patch because
> they are trivial conversion.
> 
> If you are interested in the big picture of this work,
> the full patch set is available at the following URL.
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git 
> build-test
> 
> 
> Changes in v2:
>   - fix up the new driver komeda
>   - Add Sam's Reviewed-by
> 
>  drivers/gpu/drm/amd/amdgpu/Makefile | 2 +-
>  drivers/gpu/drm/amd/lib/Makefile| 2 +-
>  drivers/gpu/drm/arm/display/komeda/Makefile | 4 ++--
>  drivers/gpu/drm/i915/gvt/Makefile   | 2 +-
>  drivers/gpu/drm/msm/Makefile| 6 +++---
>  drivers/gpu/drm/nouveau/Kbuild  | 8 
>  6 files changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile 
> b/drivers/gpu/drm/amd/amdgpu/Makefile
> index 466da59..62bf9da 100644
> --- a/drivers/gpu/drm/amd/amdgpu/Makefile
> +++ b/drivers/gpu/drm/amd/amdgpu/Makefile
> @@ -23,7 +23,7 @@
>  # Makefile for the drm device driver.  This driver provides support for the
>  # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
>  
> -FULL_AMD_PATH=$(src)/..
> +FULL_AMD_PATH=$(srctree)/$(src)/..
>  DISPLAY_FOLDER_NAME=display
>  FULL_AMD_DISPLAY_PATH = $(FULL_AMD_PATH)/$(DISPLAY_FOLDER_NAME)
>  
> diff --git a/drivers/gpu/drm/amd/lib/Makefile 
> b/drivers/gpu/drm/amd/lib/Makefile
> index 6902430..d534992 100644
> --- a/drivers/gpu/drm/amd/lib/Makefile
> +++ b/drivers/gpu/drm/amd/lib/Makefile
> @@ -27,6 +27,6 @@
>  # driver components or later moved to kernel/lib for sharing with
>  # other drivers.
>  
> -ccflags-y := -I$(src)/../include
> +ccflags-y := -I $(srctree)/$(src)/../include
>  
>  obj-$(CONFIG_CHASH) += chash.o
> diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile 
> b/drivers/gpu/drm/arm/display/komeda/Makefile
> index 1b875e5..a72e30c 100644
> --- a/drivers/gpu/drm/arm/display/komeda/Makefile
> +++ b/drivers/gpu/drm/arm/display/komeda/Makefile
> @@ -1,8 +1,8 @@
>  # SPDX-License-Identifier: GPL-2.0
>  
>  ccflags-y := \
> - -I$(src)/../include \
> - -I$(src)
> + -I $(srctree)/$(src)/../include \
> + -I $(srctree)/$(src)
>  
>  komeda-y := \
>   komeda_drv.o \
> diff --git a/drivers/gpu/drm/i915/gvt/Makefile 
> b/drivers/gpu/drm/i915/gvt/Makefile
> index 271fb46..ea8324a 100644
> --- a/drivers/gpu/drm/i915/gvt/Makefile
> +++ b/drivers/gpu/drm/i915/gvt/Makefile
> @@ -5,5 +5,5 @@ GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o 
> trace_points.o firmware.o \
>   execlist.o scheduler.o sched_policy.o mmio_context.o cmd_parser.o 
> debugfs.o \
>   fb_decoder.o dmabuf.o page_track.o
>  
> -ccflags-y+= -I$(src) -I$(src)/$(GVT_DIR)
> +ccflags-y+= -I $(srctree)/$(src) -I 
> $(srctree)/$(src)/$(GVT_DIR)/
>  i915-y   += $(addprefix $(GVT_DIR)/, 
> $(GVT_SOURCE))
> diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
> index 56a70c7..b7b1ebd 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -1,7 +1,7 @@
>  # SPDX-License-Identifier: GPL-2.0
> -ccflags-y := -Idrivers/gpu/drm/msm
> -ccflags-y += -Idrivers/gpu/drm/msm/disp/dpu1
> -ccflags-$(CONFIG_DRM_MSM_DSI) += -Idrivers/gpu/drm/msm/dsi
> +ccflags-y := -I $(srctree)/$(src)
> +ccflags-y += -I $(srctree)/$(src)/disp/dpu1
> +ccflags-$(CONFIG_DRM_MSM_DSI) += -I $(srctree)/$(src)/dsi
>  
>  msm-y := \
>   adreno/adreno_device.o \
> diff --git a/drivers/gpu/drm/nouveau/Kbuild b/drivers/gpu/drm/nouveau/Kbuild
> index ea3035e..4fae728 100644
> --- a/drivers/gpu/drm/nouveau/Kbuild
> +++ b/drivers/gpu/drm/nouveau/Kbuild
> @@ -1,7 +1,7 @@
> -ccflags-y += -I$(src)/include
> -ccflags-y += -I$(src)/include/nvkm
> -ccflags-y += -I$(src)/nvkm
> -ccflags-y += -I$(src)
> +ccflags-y += -I $(srctree)/$(src)/include
> +ccflags-y += -I $(srctree)/$(src)/include/nvkm
> +ccflags-y += -I $(srctree)/$(src)/nvkm
> +ccflags-y += -I $(srctree)/$(src)
>  
>  # NVKM - HW resource manager
>  #- code also used by various userspace tools/tests
> -- 
> 2.7.4

-- 
Reviewed-by: James Qian Wang (Arm Technology China) 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.fr

Re: [Intel-gfx] [PATCH v8 4/4] drm/i915: Introduce concept of a sub-platform

2019-03-29 Thread Tvrtko Ursulin


On 29/03/2019 09:54, Jani Nikula wrote:

On Wed, 27 Mar 2019, Tvrtko Ursulin  wrote:

From: Tvrtko Ursulin 

Concept of a sub-platform already exist in our code (like ULX and ULT
platform variants and similar),implemented via the macros which check a
list of device ids to determine a match.

With this patch we consolidate device ids checking into a single function
called during early driver load.

A few low bits in the platform mask are reserved for sub-platform
identification and defined as a per-platform namespace.

At the same time it future proofs the platform_mask handling by preparing
the code for easy extending, and tidies the very verbose WARN strings
generated when IS_PLATFORM macros are embedded into a WARN type
statements.

v2: Fixed IS_SUBPLATFORM. Updated commit msg.
v3: Chris was right, there is an ordering problem.

v4:
  * Catch-up with new sub-platforms.
  * Rebase for RUNTIME_INFO.
  * Drop subplatform mask union tricks and convert platform_mask to an
array for extensibility.

v5:
  * Fix subplatform check.
  * Protect against forgetting to expand subplatform bits.
  * Remove platform enum tallying.
  * Add subplatform to error state. (Chris)
  * Drop macros and just use static inlines.
  * Remove redundant IRONLAKE_M. (Ville)

v6:
  * Split out Ironlake change.
  * Optimize subplatform check.
  * Use __always_inline. (Lucas)
  * Add platform_mask comment. (Paulo)
  * Pass stored runtime info in error capture. (Chris)

v7:
  * Rebased for new AML ULX device id.
  * Bump platform mask array size for EHL.
  * Stop mentioning device ids in intel_device_subplatform_init by using
the trick of splitting macros i915_pciids.h. (Jani)
  * AML seems to be either a subplatform of KBL or CFL so express it like
that.

v8:
  * Use one device id table per subplatform. (Jani)

Signed-off-by: Tvrtko Ursulin 
Suggested-by: Chris Wilson 
Cc: Chris Wilson 
Cc: Jani Nikula 
Cc: Lucas De Marchi 
Cc: Jose Souza 
Cc: Ville Syrjälä 
Cc: Paulo Zanoni 
Reviewed-by: Chris Wilson  # v6
---
  drivers/gpu/drm/i915/i915_drv.c  |   8 +-
  drivers/gpu/drm/i915/i915_drv.h  | 123 ---
  drivers/gpu/drm/i915/i915_gpu_error.c|   3 +
  drivers/gpu/drm/i915/i915_pci.c  |   2 +-
  drivers/gpu/drm/i915/intel_device_info.c |  93 +
  drivers/gpu/drm/i915/intel_device_info.h |  27 -
  6 files changed, 214 insertions(+), 42 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index f1334f5d4ead..74734d7661e5 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -868,6 +868,8 @@ static int i915_driver_init_early(struct drm_i915_private 
*dev_priv)
if (i915_inject_load_failure())
return -ENODEV;
  
+	intel_device_info_subplatform_init(dev_priv);

+
spin_lock_init(&dev_priv->irq_lock);
spin_lock_init(&dev_priv->gpu_error.lock);
mutex_init(&dev_priv->backlight_lock);
@@ -1718,10 +1720,12 @@ static void i915_welcome_messages(struct 
drm_i915_private *dev_priv)
if (drm_debug & DRM_UT_DRIVER) {
struct drm_printer p = drm_debug_printer("i915 device info:");
  
-		drm_printf(&p, "pciid=0x%04x rev=0x%02x platform=%s gen=%i\n",

+   drm_printf(&p, "pciid=0x%04x rev=0x%02x platform=%s 
(subplatform=0x%x) gen=%i\n",
   INTEL_DEVID(dev_priv),
   INTEL_REVID(dev_priv),
   intel_platform_name(INTEL_INFO(dev_priv)->platform),
+  intel_subplatform(RUNTIME_INFO(dev_priv),
+INTEL_INFO(dev_priv)->platform),
   INTEL_GEN(dev_priv));
  
  		intel_device_info_dump_flags(INTEL_INFO(dev_priv), &p);

@@ -1764,8 +1768,6 @@ i915_driver_create(struct pci_dev *pdev, const struct 
pci_device_id *ent)
memcpy(device_info, match_info, sizeof(*device_info));
RUNTIME_INFO(i915)->device_id = pdev->device;
  
-	BUILD_BUG_ON(INTEL_MAX_PLATFORMS >

-BITS_PER_TYPE(device_info->platform_mask));
BUG_ON(device_info->gen > BITS_PER_TYPE(device_info->gen_mask));
  
  	return i915;

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9d3cab9406e1..b7d3f3a45ed9 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2298,7 +2298,67 @@ static inline unsigned int i915_sg_segment_size(void)
  #define IS_REVID(p, since, until) \
(INTEL_REVID(p) >= (since) && INTEL_REVID(p) <= (until))
  
-#define IS_PLATFORM(dev_priv, p) (INTEL_INFO(dev_priv)->platform_mask & BIT(p))

+static __always_inline unsigned int
+__platform_mask_index(const struct intel_runtime_info *info,
+ enum intel_platform p)
+{
+   const unsigned int pbits =
+   BITS_PER_TYPE(info->platform_mask[0]) - INTEL_SUBPLATFORM_BITS;
+
+   /* Expand the platform_mask array if this fa

Re: [Intel-gfx] [v6 12/13] drm/i915: Set Infoframe for non modeset case for HDR

2019-03-29 Thread Sharma, Shashank

On 3/20/2019 4:18 PM, Uma Shankar wrote:

HDR metadata requires a infoframe to be set. Due to fastset,
full modeset is not performed hence adding it to update_pipe
to handle that.

Signed-off-by: Uma Shankar 
---
  drivers/gpu/drm/i915/intel_ddi.c | 13 +
  1 file changed, 13 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 69aa0d1..a27aab9 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -3566,6 +3566,10 @@ static void intel_ddi_update_pipe(struct intel_encoder 
*encoder,
  const struct intel_crtc_state *crtc_state,
  const struct drm_connector_state *conn_state)
  {
+   struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+   struct intel_digital_port *intel_dig_port =
+   enc_to_dig_port(&encoder->base);
+
if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
intel_ddi_update_pipe_dp(encoder, crtc_state, conn_state);
  
@@ -3575,6 +3579,15 @@ static void intel_ddi_update_pipe(struct intel_encoder *encoder,

else if (conn_state->content_protection ==
 DRM_MODE_CONTENT_PROTECTION_UNDESIRED)
intel_hdcp_disable(to_intel_connector(conn_state->connector));
+
+   /* Set the infoframe for NON modeset cases as well */
+   if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
+   if ((INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) &&
+   conn_state->hdr_metadata_changed)
+   intel_dig_port->set_infoframes(encoder,
+  
crtc_state->has_infoframe,
+  crtc_state, conn_state);
+   }
  }
  

Looks good to me,  Please feel free to use:

Reviewed-by: Shashank Sharma 



  static void intel_ddi_set_fia_lane_count(struct intel_encoder *encoder,

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

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm: prefix header search paths with $(srctree)/ (rev2)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm: prefix header search paths with $(srctree)/ (rev2)
URL   : https://patchwork.freedesktop.org/series/56020/
State : warning

== Summary ==

$ dim sparse origin/drm-tip
Sparse version: v0.5.2
Commit: drm: prefix header search paths with $(srctree)/
-
+./arch/x86/include/asm/pgtable_64.h:61:9: warning: cast from non-scalar
+./arch/x86/include/asm/pgtable_64.h:61:9: warning: cast to non-scalar
+drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:193:16: warning: expression using 
sizeof(void)
+drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:271:16: warning: expression using 
sizeof(void)
+drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:347:16: warning: expression using 
sizeof(void)
+drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:390:16: warning: expression using 
sizeof(void)
+drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:585:16: warning: expression using 
sizeof(void)
+drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c:710:24: warning: expression using 
sizeof(void)
+drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c:142:39: warning: expression using 
sizeof(void)
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:184:44: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:283:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:320:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:323:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:326:14: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:329:18: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:330:26: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:338:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:340:38: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:344:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:347:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:350:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:354:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:356:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:361:33: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:375:43: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:379:38: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:382:38: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:385:38: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:390:67: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:391:53: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:394:66: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:405:80: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:411:57: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:418:69: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:419:53: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:422:66: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:430:66: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:439:69: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:440:69: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:489:30: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:492:45: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:493:45: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:500:54: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:52:28: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:53:29: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:54:26: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:547:35: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:549:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:55:27: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:56:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:57:26: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:58:25: warning: cast to 
restricted __le16
+drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c:59:26: warning: cast to 
restr

Re: [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: move the edram detection out of uncore init

2019-03-29 Thread Chris Wilson
Quoting Patchwork (2019-03-29 05:40:25)
> == Series Details ==
> 
> Series: drm/i915: move the edram detection out of uncore init
> URL   : https://patchwork.freedesktop.org/series/58684/
> State : success
> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_5831_full -> Patchwork_12621_full
> 
> 
> Summary
> ---
> 
>   **SUCCESS**
> 
>   No regressions found.

(Question for the audience do we have a gen7 Crystalwell in there?
Hopefully at least one bdw gte, but we definitely do have a kbl gte.)

And pushed. Thanks,
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [v6 13/13] video/hdmi: Add const variants for drm infoframe

2019-03-29 Thread Sharma, Shashank


On 3/20/2019 4:18 PM, Uma Shankar wrote:

Added the const version of infoframe for DRM metadata
for HDR.

Signed-off-by: Uma Shankar 
---
  drivers/video/hdmi.c | 63 ++--
  include/linux/hdmi.h |  5 +
  2 files changed, 66 insertions(+), 2 deletions(-)

diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
index 80bb0ee..f9ca555 100644
--- a/drivers/video/hdmi.c
+++ b/drivers/video/hdmi.c
@@ -668,6 +668,30 @@ int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe 
*frame)
  }
  EXPORT_SYMBOL(hdmi_drm_infoframe_init);
  
+static int hdmi_drm_infoframe_check_only(const struct hdmi_drm_infoframe *frame)

+{
+   if (frame->type != HDMI_INFOFRAME_TYPE_DRM ||
+   frame->version != 1)
+   return -EINVAL;
+
+   return 0;
+}
+
+/**
+ * hdmi_drm_infoframe_check() - check a HDMI DRM infoframe
+ * @frame: HDMI DRM infoframe
+ *
+ * Validates that the infoframe is consistent and updates derived fields
+ * (eg. length) based on other fields.
+ *
This comment doesn't match what's being done in this function, as, 
hdmi_drm_infoframe_check_only() doesn't validate length.

+ * Returns 0 on success or a negative error code on failure.
+ */
+int hdmi_drm_infoframe_check(struct hdmi_drm_infoframe *frame)
+{
+   return hdmi_drm_infoframe_check_only(frame);
+}
+EXPORT_SYMBOL(hdmi_drm_infoframe_check);
+
  /**
   * hdmi_drm_infoframe_pack() - write HDMI DRM infoframe to binary buffer
   * @frame: HDMI DRM infoframe
@@ -682,8 +706,8 @@ int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe 
*frame)
   * Returns the number of bytes packed into the binary buffer or a negative
   * error code on failure.
   */
-ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe *frame, void *buffer,
-   size_t size)
+ssize_t hdmi_drm_infoframe_pack_only(const struct hdmi_drm_infoframe *frame,
+void *buffer, size_t size)
  {
u8 *ptr = buffer;
size_t length;
@@ -736,6 +760,37 @@ ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe 
*frame, void *buffer,
  
  	return length;

  }
+EXPORT_SYMBOL(hdmi_drm_infoframe_pack_only);
+
+/**
+ * hdmi_drm_infoframe_pack() - check a HDMI DRM infoframe,
+ * and write it to binary buffer
+ * @frame: HDMI DRM infoframe
+ * @buffer: destination buffer
+ * @size: size of buffer
+ *
+ * Validates that the infoframe is consistent and updates derived fields
+ * (eg. length) based on other fields, after which it packs the information
+ * contained in the @frame structure into a binary representation that
+ * can be written into the corresponding controller registers. This function
+ * also computes the checksum as required by section 5.3.5 of the HDMI 1.4
+ * specification.
+ *
+ * Returns the number of bytes packed into the binary buffer or a negative
+ * error code on failure.
+ */
+ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe *frame,
+   void *buffer, size_t size)
+{
+   int ret;
+
+   ret = hdmi_drm_infoframe_check(frame);
+   if (ret)
+   return ret;
+
+   return hdmi_drm_infoframe_pack_only(frame, buffer, size);
+}
+EXPORT_SYMBOL(hdmi_drm_infoframe_pack);
  
  /*

   * hdmi_vendor_any_infoframe_check() - check a vendor infoframe
@@ -845,6 +900,10 @@ ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe 
*frame, void *buffer,
length = hdmi_avi_infoframe_pack_only(&frame->avi,
  buffer, size);
break;
+   case HDMI_INFOFRAME_TYPE_DRM:
+   length = hdmi_drm_infoframe_pack_only(&frame->drm,
+ buffer, size);
+   break;
case HDMI_INFOFRAME_TYPE_SPD:
length = hdmi_spd_infoframe_pack_only(&frame->spd,
  buffer, size);
diff --git a/include/linux/hdmi.h b/include/linux/hdmi.h
index 202ed4a..fd8e534 100644
--- a/include/linux/hdmi.h
+++ b/include/linux/hdmi.h
@@ -213,6 +213,11 @@ ssize_t hdmi_avi_infoframe_pack_only(const struct 
hdmi_avi_infoframe *frame,
 void *buffer, size_t size);
  int hdmi_avi_infoframe_check(struct hdmi_avi_infoframe *frame);
  int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe *frame);
+ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe *frame, void *buffer,
+   size_t size);
+ssize_t hdmi_drm_infoframe_pack_only(const struct hdmi_drm_infoframe *frame,
+void *buffer, size_t size);
+int hdmi_drm_infoframe_check(struct hdmi_drm_infoframe *frame);
  
  enum hdmi_spd_sdi {

HDMI_SPD_SDI_UNKNOWN,


With that minor comment related to description fixed, this patch looks 
good to me. Please feel free to use:


Reviewed-by: Shashank Sharma 

- Shashank

___

[Intel-gfx] [PATCH 1/2] drm/i915: Fix GCMAX color register programming

2019-03-29 Thread Uma Shankar
GC MAX register is used to program values from 1.0 to
less than 3.0. A different register was used instead of
the intended one. Fixed the same.

Currently limiting it to 1.0 due to ABI limitations.

Reported-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
---
 drivers/gpu/drm/i915/intel_color.c | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_color.c 
b/drivers/gpu/drm/i915/intel_color.c
index ff910ed..dd179a8 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -518,14 +518,14 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
I915_WRITE(PREC_PAL_DATA(pipe), word);
}
 
-   /* Program the max register to clamp values > 1.0. */
-   i = lut_size - 1;
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 0),
-  drm_color_lut_extract(lut[i].red, 16));
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 1),
-  drm_color_lut_extract(lut[i].green, 16));
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 2),
-  drm_color_lut_extract(lut[i].blue, 16));
+   /*
+* Program the max register to clamp values > 1.0.
+* ToDo: Extend the ABI to be able to program values
+* from 1.0 to 3.0
+*/
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
} else {
for (i = 0; i < lut_size; i++) {
u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
@@ -534,9 +534,9 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
   (v << 20) | (v << 10) | v);
}
 
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 0), (1 << 16) - 1);
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 1), (1 << 16) - 1);
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 2), (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
}
 
/*
-- 
1.9.1

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

[Intel-gfx] [PATCH 0/2] Fixed GC MAX register programming for gamma luts

2019-03-29 Thread Uma Shankar
Register offsets used to program GC max were not correct. This series
fixes the same, also limits the values to accurately clamp at 1.0.
Also added support to program EXT2 GC Max needed for values from 3.0
to 7.0. Limiting it again to 1.0 due to ABI limitations.

Uma Shankar (2):
  drm/i915: Fix GCMAX color register programming
  drm/i915: Program EXT2 GC MAX registers

 drivers/gpu/drm/i915/i915_reg.h|  1 +
 drivers/gpu/drm/i915/intel_color.c | 50 +-
 2 files changed, 40 insertions(+), 11 deletions(-)

-- 
1.9.1

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

[Intel-gfx] [PATCH 2/2] drm/i915: Program EXT2 GC MAX registers

2019-03-29 Thread Uma Shankar
EXT2 GC MAX registers are introduced from Gen10+ to
program values from 3.0 to 7.0. Enabled the same, but
currently limiting it to 1.0 as userspace ABI is limited
at that currently.

Signed-off-by: Uma Shankar 
---
 drivers/gpu/drm/i915/i915_reg.h|  1 +
 drivers/gpu/drm/i915/intel_color.c | 28 
 2 files changed, 29 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index c866379..341f03e 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -10144,6 +10144,7 @@ enum skl_power_gate {
 #define PREC_PAL_DATA(pipe)_MMIO_PIPE(pipe, _PAL_PREC_DATA_A, 
_PAL_PREC_DATA_B)
 #define PREC_PAL_GC_MAX(pipe, i)   _MMIO(_PIPE(pipe, _PAL_PREC_GC_MAX_A, 
_PAL_PREC_GC_MAX_B) + (i) * 4)
 #define PREC_PAL_EXT_GC_MAX(pipe, i)   _MMIO(_PIPE(pipe, 
_PAL_PREC_EXT_GC_MAX_A, _PAL_PREC_EXT_GC_MAX_B) + (i) * 4)
+#define PREC_PAL_EXT2_GC_MAX(pipe, i)  _MMIO(_PIPE(pipe, 
_PAL_PREC_EXT2_GC_MAX_A, _PAL_PREC_EXT2_GC_MAX_B) + (i) * 4)
 
 #define _PRE_CSC_GAMC_INDEX_A  0x4A484
 #define _PRE_CSC_GAMC_INDEX_B  0x4AC84
diff --git a/drivers/gpu/drm/i915/intel_color.c 
b/drivers/gpu/drm/i915/intel_color.c
index dd179a8..84aa5e7 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -526,6 +526,20 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
+
+   /*
+* Program the gc max 2 register to clamp values > 1.0.
+* ToDo: Extend the ABI to be able to program values
+* from 3.0 to 7.0
+*/
+   if (INTEL_GEN(dev_priv) >= 10) {
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0),
+  (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1),
+  (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2),
+  (1 << 16) - 1);
+   }
} else {
for (i = 0; i < lut_size; i++) {
u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
@@ -537,6 +551,20 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
+
+   /*
+* Program the gc max 2 register to clamp values > 1.0.
+* ToDo: Extend the ABI to be able to program values
+* from 3.0 to 7.0
+*/
+   if (INTEL_GEN(dev_priv) >= 10) {
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0),
+  (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1),
+  (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2),
+  (1 << 16) - 1);
+   }
}
 
/*
-- 
1.9.1

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

Re: [Intel-gfx] [PATCH 2/6] drm/i915: Don't use split gamma when we don't have to

2019-03-29 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Friday, March 29, 2019 4:17 PM
>To: Roper, Matthew D 
>Cc: intel-gfx@lists.freedesktop.org; Shankar, Uma 
>Subject: Re: [PATCH 2/6] drm/i915: Don't use split gamma when we don't have to
>
>On Thu, Mar 28, 2019 at 05:16:03PM -0700, Matt Roper wrote:
>> On Thu, Mar 28, 2019 at 11:05:01PM +0200, Ville Syrjala wrote:
>> > From: Ville Syrjälä 
>> >
>> > Using the split gamma mode when we don't have to has the annoying
>> > requirement of loading a linear LUT to the unused half. Instead
>> > let's make life simpler by switching to the 10bit gamma mode and
>> > duplicating each entry.
>> >
>> > This also allows us to load the software gamma LUT into the hardware
>> > degamma LUT, thus removing some of the buggy configurations we
>> > currently allow (YCbCr/limited range RGB
>> > + gamma LUT). We do still have other configurations that are
>> > also buggy, but those will need more complicated fixes or they just
>> > need to be rejected. Sadly GLK doesn't have this flexibility anymore
>> > and the degamma and gamma LUTs are very different so no help there.
>> >
>> > Signed-off-by: Ville Syrjälä 
>> > ---
>> >  drivers/gpu/drm/i915/i915_reg.h|   1 +
>> >  drivers/gpu/drm/i915/intel_color.c | 159
>> > +++--
>> >  2 files changed, 86 insertions(+), 74 deletions(-)
>> >
>> > diff --git a/drivers/gpu/drm/i915/i915_reg.h
>> > b/drivers/gpu/drm/i915/i915_reg.h index c866379a521b..eb7e93354cfe
>> > 100644
>> > --- a/drivers/gpu/drm/i915/i915_reg.h
>> > +++ b/drivers/gpu/drm/i915/i915_reg.h
>> > @@ -10127,6 +10127,7 @@ enum skl_power_gate {
>> >  #define   PAL_PREC_SPLIT_MODE (1 << 31)
>> >  #define   PAL_PREC_AUTO_INCREMENT (1 << 15)
>> >  #define   PAL_PREC_INDEX_VALUE_MASK   (0x3ff << 0)
>> > +#define   PAL_PREC_INDEX_VALUE(x) ((x) << 0)
>> >  #define _PAL_PREC_DATA_A  0x4A404
>> >  #define _PAL_PREC_DATA_B  0x4AC04
>> >  #define _PAL_PREC_DATA_C  0x4B404
>> > diff --git a/drivers/gpu/drm/i915/intel_color.c
>> > b/drivers/gpu/drm/i915/intel_color.c
>> > index d7c38a2bbd8f..ed4bd9bd15f5 100644
>> > --- a/drivers/gpu/drm/i915/intel_color.c
>> > +++ b/drivers/gpu/drm/i915/intel_color.c
>> > @@ -466,72 +466,32 @@ static void skl_color_commit(const struct
>intel_crtc_state *crtc_state)
>> >ilk_load_csc_matrix(crtc_state);
>> >  }
>> >
>> > -static void bdw_load_degamma_lut(const struct intel_crtc_state
>> > *crtc_state)
>> > +static void bdw_load_lut_10(struct intel_crtc *crtc,
>> > +  const struct drm_property_blob *blob,
>> > +  u32 prec_index, bool duplicate)
>> >  {
>> > -  struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
>> >struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
>> > -  const struct drm_property_blob *degamma_lut = crtc_state-
>>base.degamma_lut;
>> > -  u32 i, lut_size = INTEL_INFO(dev_priv)->color.degamma_lut_size;
>> > +  const struct drm_color_lut *lut = blob->data;
>> > +  int i, lut_size = drm_color_lut_size(blob);
>> >enum pipe pipe = crtc->pipe;
>> >
>> > -  I915_WRITE(PREC_PAL_INDEX(pipe),
>> > - PAL_PREC_SPLIT_MODE | PAL_PREC_AUTO_INCREMENT);
>> > -
>> > -  if (degamma_lut) {
>> > -  const struct drm_color_lut *lut = degamma_lut->data;
>> > +  I915_WRITE(PREC_PAL_INDEX(pipe), prec_index |
>> > + PAL_PREC_AUTO_INCREMENT);
>> >
>> > -  for (i = 0; i < lut_size; i++)
>> > -  I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
>> > -  } else {
>> > +  /*
>> > +   * We advertize the split gamma sizes. When not using split
>> > +   * gamma we just duplicate each entry.
>> > +   *
>> > +   * TODO: expose the full LUT to userspace
>>
>> Any reason not to just do this immediately?  Throwing away half the
>> table entries if we decide we need split mode doesn't seem any harder
>> than duplicating the entries when we decide we don't.  The color
>> management kerneldoc already explicitly recommends this approach for
>> hardware that can support multiple gamma modes, so I don't think we
>> need any new ABI to handle it.
>
>Hmm. I guess that apporach could be doable. It might be a bit annoying for 
>userspace
>though if it expects a direct color visual. But at least for X we won't use
>degamma/ctm anyway so seems like it should work out just fine.
>
>>
>> > +   */
>> > +  if (duplicate) {
>> >for (i = 0; i < lut_size; i++) {
>> > -  u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
>> > -
>> > -  I915_WRITE(PREC_PAL_DATA(pipe),
>> > - (v << 20) | (v << 10) | v);
>> > +  I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
>> > +  I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
>> >}
>> > -  }
>> > -}
>> > -
>> > -static void bdw_load_gamma_lut(const struct intel_crtc_state
>> > *crtc_state, u32 offset) -{
>> > -  s

Re: [Intel-gfx] [v6 10/13] drm/i915: Enable infoframes on GLK+ for HDR

2019-03-29 Thread Sharma, Shashank


On 3/20/2019 4:18 PM, Uma Shankar wrote:

From: Ville Syrjälä 

This patch enables infoframes on GLK+ to be
used to send HDR metadata to HDMI sink.

v2: Addressed Shashank's review comment.

Signed-off-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
---
  drivers/gpu/drm/i915/i915_reg.h   |  4 
  drivers/gpu/drm/i915/intel_hdmi.c | 18 +-
  2 files changed, 17 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 31a3020..fe931e7 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -4718,6 +4718,7 @@ enum {
  #define   VIDEO_DIP_FREQ_MASK (3 << 16)
  /* HSW and later: */
  #define   DRM_DIP_ENABLE  (1 << 28)
+#define   VIDEO_DIP_ENABLE_DRM_GLK (1 << 28)
  #define   PSR_VSC_BIT_7_SET   (1 << 27)
  #define   VSC_SELECT_MASK (0x3 << 25)
  #define   VSC_SELECT_SHIFT25
@@ -8156,6 +8157,7 @@ enum {
  #define _HSW_VIDEO_DIP_SPD_DATA_A 0x602A0
  #define _HSW_VIDEO_DIP_GMP_DATA_A 0x602E0
  #define _HSW_VIDEO_DIP_VSC_DATA_A 0x60320
+#define _GLK_VIDEO_DIP_DRM_DATA_A  0x60440
  #define _HSW_VIDEO_DIP_AVI_ECC_A  0x60240
  #define _HSW_VIDEO_DIP_VS_ECC_A   0x60280
  #define _HSW_VIDEO_DIP_SPD_ECC_A  0x602C0
@@ -8169,6 +8171,7 @@ enum {
  #define _HSW_VIDEO_DIP_SPD_DATA_B 0x612A0
  #define _HSW_VIDEO_DIP_GMP_DATA_B 0x612E0
  #define _HSW_VIDEO_DIP_VSC_DATA_B 0x61320
+#define _GLK_VIDEO_DIP_DRM_DATA_B  0x61440
  #define _HSW_VIDEO_DIP_BVI_ECC_B  0x61240
  #define _HSW_VIDEO_DIP_VS_ECC_B   0x61280
  #define _HSW_VIDEO_DIP_SPD_ECC_B  0x612C0
@@ -8194,6 +8197,7 @@ enum {
  #define HSW_TVIDEO_DIP_SPD_DATA(trans, i) _MMIO_TRANS2(trans, 
_HSW_VIDEO_DIP_SPD_DATA_A + (i) * 4)
  #define HSW_TVIDEO_DIP_GMP_DATA(trans, i) _MMIO_TRANS2(trans, 
_HSW_VIDEO_DIP_GMP_DATA_A + (i) * 4)
  #define HSW_TVIDEO_DIP_VSC_DATA(trans, i) _MMIO_TRANS2(trans, 
_HSW_VIDEO_DIP_VSC_DATA_A + (i) * 4)
+#define GLK_TVIDEO_DIP_DRM_DATA(trans, i)  _MMIO_TRANS2(trans, 
_GLK_VIDEO_DIP_DRM_DATA_A + (i) * 4)
  #define ICL_VIDEO_DIP_PPS_DATA(trans, i)  _MMIO_TRANS2(trans, 
_ICL_VIDEO_DIP_PPS_DATA_A + (i) * 4)
  #define ICL_VIDEO_DIP_PPS_ECC(trans, i)   _MMIO_TRANS2(trans, 
_ICL_VIDEO_DIP_PPS_ECC_A + (i) * 4)
  
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c b/drivers/gpu/drm/i915/intel_hdmi.c

index e4bc7fc..8decafd 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -134,6 +134,8 @@ static u32 hsw_infoframe_enable(unsigned int type)
return VIDEO_DIP_ENABLE_SPD_HSW;
case HDMI_INFOFRAME_TYPE_VENDOR:
return VIDEO_DIP_ENABLE_VS_HSW;
+   case HDMI_INFOFRAME_TYPE_DRM:
+   return VIDEO_DIP_ENABLE_DRM_GLK;
default:
MISSING_CASE(type);
return 0;
@@ -159,6 +161,8 @@ static u32 hsw_infoframe_enable(unsigned int type)
return HSW_TVIDEO_DIP_SPD_DATA(cpu_transcoder, i);
case HDMI_INFOFRAME_TYPE_VENDOR:
return HSW_TVIDEO_DIP_VS_DATA(cpu_transcoder, i);
+   case HDMI_INFOFRAME_TYPE_DRM:
+   return GLK_TVIDEO_DIP_DRM_DATA(cpu_transcoder, i);
default:
MISSING_CASE(type);
return INVALID_MMIO_REG;
@@ -545,7 +549,8 @@ static u32 hsw_infoframes_enabled(struct intel_encoder 
*encoder,
  
  	return val & (VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |

  VIDEO_DIP_ENABLE_GCP_HSW | VIDEO_DIP_ENABLE_VS_HSW |
- VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW);
+ VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW |
+ VIDEO_DIP_ENABLE_DRM_GLK);
I think this should also be GEN check protected, as 
hsw_infoframes_enabled will be called by many platforms, and before GLK 
they cant support DRM_IF.

  }
  
  static const u8 infoframe_type_to_idx[] = {

@@ -1177,7 +1182,8 @@ static void hsw_set_infoframes(struct intel_encoder 
*encoder,
  
  	val &= ~(VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |

 VIDEO_DIP_ENABLE_GCP_HSW | VIDEO_DIP_ENABLE_VS_HSW |
-VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW);
+VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW |
+VIDEO_DIP_ENABLE_DRM_GLK);


Same here.

- Shashank

  
  	if (!enable) {

I915_WRITE(reg, val);
@@ -1200,9 +1206,11 @@ static void hsw_set_infoframes(struct intel_encoder 
*encoder,
intel_write_infoframe(encoder, crtc_state,
  HDMI_INFOFRAME_TYPE_VENDOR,
  &crtc_state->infoframes.hdmi);
-   intel_write_infoframe(encoder, crtc_state,
- HDMI_INFOFRAME_TYPE_DRM,
- &crtc_state->infoframes.drm);
+   if ((INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/gamma: Clarify gamma lut uapi
URL   : https://patchwork.freedesktop.org/series/58718/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5835_full -> Patchwork_12626_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_12626_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_bad_reloc@negative-reloc-lut-bsd1:
- shard-glk:  NOTRUN -> SKIP [fdo#109271] +3

  * igt@gem_ctx_isolation@vcs1-reset:
- shard-iclb: NOTRUN -> SKIP [fdo#109276] +2

  * igt@gem_exec_params@no-blt:
- shard-iclb: NOTRUN -> SKIP [fdo#109283]

  * igt@gem_exec_store@cachelines-bsd1:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] +42

  * igt@gem_mocs_settings@mocs-rc6-dirty-render:
- shard-iclb: NOTRUN -> SKIP [fdo#110206]

  * igt@gem_ppgtt@blt-vs-render-ctx0:
- shard-iclb: PASS -> INCOMPLETE [fdo#109801]

  * igt@gem_ppgtt@blt-vs-render-ctxn:
- shard-iclb: NOTRUN -> INCOMPLETE [fdo#109801]

  * igt@gem_pread@stolen-snoop:
- shard-iclb: NOTRUN -> SKIP [fdo#109277]

  * igt@gem_pwrite@huge-gtt-fbr:
- shard-iclb: NOTRUN -> SKIP [fdo#109290]

  * igt@i915_pm_rpm@basic-pci-d3-state:
- shard-skl:  PASS -> INCOMPLETE [fdo#107807]

  * igt@i915_pm_rpm@system-suspend-modeset:
- shard-skl:  NOTRUN -> INCOMPLETE [fdo#104108] / [fdo#107807]

  * igt@kms_busy@extended-modeset-hang-oldfb-with-reset-render-f:
- shard-iclb: NOTRUN -> SKIP [fdo#109278]

  * igt@kms_busy@extended-pageflip-hang-oldfb-render-e:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278]

  * igt@kms_chamelium@dp-hpd-fast:
- shard-skl:  NOTRUN -> SKIP [fdo#109271] +20

  * igt@kms_chamelium@hdmi-cmp-nv12:
- shard-iclb: NOTRUN -> SKIP [fdo#109284] +1

  * igt@kms_cursor_legacy@cursor-vs-flip-atomic-transitions:
- shard-iclb: PASS -> FAIL [fdo#103355] +2

  * igt@kms_draw_crc@draw-method-xrgb-render-xtiled:
- shard-glk:  PASS -> FAIL [fdo#107791]

  * igt@kms_flip@flip-vs-suspend-interruptible:
- shard-snb:  PASS -> INCOMPLETE [fdo#105411]

  * igt@kms_flip@modeset-vs-vblank-race-interruptible:
- shard-kbl:  PASS -> FAIL [fdo#103060]

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-pwrite:
- shard-iclb: PASS -> FAIL [fdo#103167] +6

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-cpu:
- shard-iclb: NOTRUN -> SKIP [fdo#109280] +5

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-offscren-pri-indfb-draw-pwrite:
- shard-iclb: PASS -> FAIL [fdo#109247] +14

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-f:
- shard-snb:  NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +2

  * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
- shard-skl:  NOTRUN -> FAIL [fdo#108145]

  * igt@kms_psr@cursor_blt:
- shard-iclb: PASS -> FAIL [fdo#107383] / [fdo#110215] +1

  * igt@kms_psr@cursor_render:
- shard-iclb: PASS -> DMESG-WARN [fdo#110025]

  * igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: PASS -> SKIP [fdo#109441] +2

  * igt@prime_nv_test@nv_write_i915_gtt_mmap_read:
- shard-iclb: NOTRUN -> SKIP [fdo#109291]

  
 Possible fixes 

  * igt@drm_import_export@prime:
- shard-glk:  INCOMPLETE [fdo#103359] / [k.org#198133] -> PASS

  * igt@i915_pm_rpm@i2c:
- shard-iclb: DMESG-WARN [fdo#109982] -> PASS
- shard-skl:  INCOMPLETE [fdo#107807] -> PASS +1

  * igt@kms_flip@2x-flip-vs-expired-vblank-interruptible:
- shard-glk:  FAIL [fdo#105363] -> PASS

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-glk:  FAIL [fdo#100368] -> PASS

  * igt@kms_flip@flip-vs-expired-vblank:
- shard-skl:  FAIL [fdo#105363] -> PASS
- shard-kbl:  FAIL [fdo#102887] / [fdo#105363] -> PASS

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-cur-indfb-draw-mmap-gtt:
- shard-iclb: FAIL [fdo#103167] -> PASS +8

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-pwrite:
- shard-iclb: FAIL [fdo#105682] / [fdo#109247] -> PASS +1

  * igt@kms_frontbuffer_tracking@psr-1p-offscren-pri-indfb-draw-blt:
- shard-skl:  FAIL [fdo#103167] -> PASS

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-indfb-msflip-blt:
- shard-iclb: FAIL [fdo#109247] -> PASS +14

  * {igt@kms_plane@pixel-format-pipe-c-planes}:
- shard-glk:  SKIP [fdo#109271] -> PASS

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  FAIL [fdo#107815] -> PASS

  * igt@kms_plane_scaling@pipe-b-scaler-with-clipping-clamping:
- shard-glk:  SKIP [fdo#109271] / [fdo#109278] -> PASS +1

  * igt@kms_psr

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Fixed GC MAX register programming for gamma luts

2019-03-29 Thread Patchwork
== Series Details ==

Series: Fixed GC MAX register programming for gamma luts
URL   : https://patchwork.freedesktop.org/series/58734/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
ecab4c425422 drm/i915: Fix GCMAX color register programming
ca881c02da68 drm/i915: Program EXT2 GC MAX registers
-:21: WARNING:LONG_LINE: line over 100 characters
#21: FILE: drivers/gpu/drm/i915/i915_reg.h:10147:
+#define PREC_PAL_EXT2_GC_MAX(pipe, i)  _MMIO(_PIPE(pipe, 
_PAL_PREC_EXT2_GC_MAX_A, _PAL_PREC_EXT2_GC_MAX_B) + (i) * 4)

total: 0 errors, 1 warnings, 0 checks, 47 lines checked

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

[Intel-gfx] ✓ Fi.CI.BAT: success for drm: prefix header search paths with $(srctree)/ (rev2)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm: prefix header search paths with $(srctree)/ (rev2)
URL   : https://patchwork.freedesktop.org/series/56020/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5837 -> Patchwork_12627


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/56020/revisions/2/mbox/

Known issues


  Here are the changes found in Patchwork_12627 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@amdgpu/amd_basic@cs-compute:
- fi-kbl-8809g:   NOTRUN -> FAIL [fdo#108094]

  * igt@kms_chamelium@vga-edid-read:
- fi-hsw-4770r:   NOTRUN -> SKIP [fdo#109271] +45

  
 Possible fixes 

  * igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g:   DMESG-WARN [fdo#108965] -> PASS

  * igt@kms_frontbuffer_tracking@basic:
- fi-byt-clapper: FAIL [fdo#103167] -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS

  * igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: FAIL [fdo#103182] -> PASS +1

  
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
  [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271


Participating hosts (46 -> 40)
--

  Additional (1): fi-hsw-4770r 
  Missing(7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-apl-guc fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5837 -> Patchwork_12627

  CI_DRM_5837: 1a35af6fa0d612425e325024cbac10e6fa9a9cd5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4912: 66deae8b6fa69540f069d6551cd22013f5343948 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12627: aea6edcde250fe5ca661940207b2ed56f2cb32c3 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

aea6edcde250 drm: prefix header search paths with $(srctree)/

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12627/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [v6 11/13] drm/i915:Enabled Modeset when HDR Infoframe changes

2019-03-29 Thread Sharma, Shashank


On 3/20/2019 4:18 PM, Uma Shankar wrote:

This patch enables modeset whenever HDR metadata
needs to be updated to sink.

Signed-off-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
---
  drivers/gpu/drm/i915/intel_atomic.c | 15 ++-
  drivers/gpu/drm/i915/intel_hdmi.c   |  4 
  2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_atomic.c 
b/drivers/gpu/drm/i915/intel_atomic.c
index b844e88..4ff6042 100644
--- a/drivers/gpu/drm/i915/intel_atomic.c
+++ b/drivers/gpu/drm/i915/intel_atomic.c
@@ -102,6 +102,16 @@ int intel_digital_connector_atomic_set_property(struct 
drm_connector *connector,
return -EINVAL;
  }
  
+static bool blob_equal(const struct drm_property_blob *a,

+  const struct drm_property_blob *b)
+{
+   if (a && b)
+   return a->length == b->length &&
+   !memcmp(a->data, b->data, a->length);
+
+   return !a == !b;
+}
+
  int intel_digital_connector_atomic_check(struct drm_connector *conn,
 struct drm_connector_state *new_state)
  {
@@ -129,7 +139,10 @@ int intel_digital_connector_atomic_check(struct 
drm_connector *conn,
new_conn_state->base.colorspace != old_conn_state->base.colorspace 
||
new_conn_state->base.picture_aspect_ratio != 
old_conn_state->base.picture_aspect_ratio ||
new_conn_state->base.content_type != 
old_conn_state->base.content_type ||
-   new_conn_state->base.scaling_mode != 
old_conn_state->base.scaling_mode)
+   new_conn_state->base.scaling_mode !=
+   old_conn_state->base.scaling_mode ||
+   !blob_equal(new_conn_state->base.hdr_output_metadata_blob_ptr,
If you are keeping this line ahead of the upper one due to 80 char 
limit, please pull that one also two tabs back, right now this is not 
even looking good.

+   old_conn_state->base.hdr_output_metadata_blob_ptr))
crtc_state->mode_changed = true;
  
  	return 0;

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index 8decafd..4d06734 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -792,6 +792,10 @@ void intel_read_infoframe(struct intel_encoder *encoder,
struct hdr_static_metadata *hdr_metadata;
int ret;
  
+	if (!conn_state->hdr_output_metadata_blob_ptr ||

+   conn_state->hdr_output_metadata_blob_ptr->length == 0)
+   return true;
+


This patch needs a rebase on the latest code, as this is definitely not 
where we want this code :-)


- Shashank


hdr_metadata = (struct hdr_static_metadata *)
conn_state->hdr_output_metadata_blob_ptr->data;
  

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

[Intel-gfx] ✓ Fi.CI.BAT: success for Fixed GC MAX register programming for gamma luts

2019-03-29 Thread Patchwork
== Series Details ==

Series: Fixed GC MAX register programming for gamma luts
URL   : https://patchwork.freedesktop.org/series/58734/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5837 -> Patchwork_12628


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58734/revisions/1/mbox/

Known issues


  Here are the changes found in Patchwork_12628 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@amdgpu/amd_basic@cs-compute:
- fi-kbl-8809g:   NOTRUN -> FAIL [fdo#108094]

  * igt@amdgpu/amd_basic@semaphore:
- fi-kbl-7500u:   NOTRUN -> SKIP [fdo#109271] +28

  * igt@gem_exec_store@basic-bsd1:
- fi-kbl-r:   NOTRUN -> SKIP [fdo#109271] +41

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-kbl-7500u:   PASS -> DMESG-WARN [fdo#105128] / [fdo#107139]

  * igt@i915_selftest@live_hangcheck:
- fi-icl-u3:  PASS -> INCOMPLETE [fdo#108569]

  * igt@kms_busy@basic-flip-a:
- fi-gdg-551: PASS -> FAIL [fdo#103182]

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-kbl-7500u:   NOTRUN -> DMESG-WARN [fdo#102505] / [fdo#103558] / 
[fdo#105079] / [fdo#105602]

  * igt@kms_chamelium@vga-edid-read:
- fi-hsw-4770r:   NOTRUN -> SKIP [fdo#109271] +45

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
- fi-byt-clapper: PASS -> FAIL [fdo#103191] / [fdo#107362]

  
 Possible fixes 

  * igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g:   DMESG-WARN [fdo#108965] -> PASS

  * igt@i915_selftest@live_uncore:
- fi-ivb-3770:DMESG-FAIL [fdo#110210] -> PASS

  * igt@kms_chamelium@dp-crc-fast:
- fi-kbl-7500u:   DMESG-WARN [fdo#103841] -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +2

  * igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: FAIL [fdo#103182] -> PASS

  
  [fdo#102505]: https://bugs.freedesktop.org/show_bug.cgi?id=102505
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103558]: https://bugs.freedesktop.org/show_bug.cgi?id=103558
  [fdo#103841]: https://bugs.freedesktop.org/show_bug.cgi?id=103841
  [fdo#105079]: https://bugs.freedesktop.org/show_bug.cgi?id=105079
  [fdo#105128]: https://bugs.freedesktop.org/show_bug.cgi?id=105128
  [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
  [fdo#107139]: https://bugs.freedesktop.org/show_bug.cgi?id=107139
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#110210]: https://bugs.freedesktop.org/show_bug.cgi?id=110210


Participating hosts (46 -> 42)
--

  Additional (2): fi-hsw-4770r fi-kbl-r 
  Missing(6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5837 -> Patchwork_12628

  CI_DRM_5837: 1a35af6fa0d612425e325024cbac10e6fa9a9cd5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4912: 66deae8b6fa69540f069d6551cd22013f5343948 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12628: ca881c02da6850d30d460ac48aa7ffe065bf0237 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

ca881c02da68 drm/i915: Program EXT2 GC MAX registers
ecab4c425422 drm/i915: Fix GCMAX color register programming

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12628/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v8 4/4] drm/i915: Introduce concept of a sub-platform

2019-03-29 Thread Jani Nikula
On Fri, 29 Mar 2019, Tvrtko Ursulin  wrote:
> On 29/03/2019 09:54, Jani Nikula wrote:
>> On Wed, 27 Mar 2019, Tvrtko Ursulin  wrote:
>>> From: Tvrtko Ursulin 
>>>
>>> Concept of a sub-platform already exist in our code (like ULX and ULT
>>> platform variants and similar),implemented via the macros which check a
>>> list of device ids to determine a match.
>>>
>>> With this patch we consolidate device ids checking into a single function
>>> called during early driver load.
>>>
>>> A few low bits in the platform mask are reserved for sub-platform
>>> identification and defined as a per-platform namespace.
>>>
>>> At the same time it future proofs the platform_mask handling by preparing
>>> the code for easy extending, and tidies the very verbose WARN strings
>>> generated when IS_PLATFORM macros are embedded into a WARN type
>>> statements.
>>>
>>> v2: Fixed IS_SUBPLATFORM. Updated commit msg.
>>> v3: Chris was right, there is an ordering problem.
>>>
>>> v4:
>>>   * Catch-up with new sub-platforms.
>>>   * Rebase for RUNTIME_INFO.
>>>   * Drop subplatform mask union tricks and convert platform_mask to an
>>> array for extensibility.
>>>
>>> v5:
>>>   * Fix subplatform check.
>>>   * Protect against forgetting to expand subplatform bits.
>>>   * Remove platform enum tallying.
>>>   * Add subplatform to error state. (Chris)
>>>   * Drop macros and just use static inlines.
>>>   * Remove redundant IRONLAKE_M. (Ville)
>>>
>>> v6:
>>>   * Split out Ironlake change.
>>>   * Optimize subplatform check.
>>>   * Use __always_inline. (Lucas)
>>>   * Add platform_mask comment. (Paulo)
>>>   * Pass stored runtime info in error capture. (Chris)
>>>
>>> v7:
>>>   * Rebased for new AML ULX device id.
>>>   * Bump platform mask array size for EHL.
>>>   * Stop mentioning device ids in intel_device_subplatform_init by using
>>> the trick of splitting macros i915_pciids.h. (Jani)
>>>   * AML seems to be either a subplatform of KBL or CFL so express it like
>>> that.
>>>
>>> v8:
>>>   * Use one device id table per subplatform. (Jani)
>>>
>>> Signed-off-by: Tvrtko Ursulin 
>>> Suggested-by: Chris Wilson 
>>> Cc: Chris Wilson 
>>> Cc: Jani Nikula 
>>> Cc: Lucas De Marchi 
>>> Cc: Jose Souza 
>>> Cc: Ville Syrjälä 
>>> Cc: Paulo Zanoni 
>>> Reviewed-by: Chris Wilson  # v6
>>> ---
>>>   drivers/gpu/drm/i915/i915_drv.c  |   8 +-
>>>   drivers/gpu/drm/i915/i915_drv.h  | 123 ---
>>>   drivers/gpu/drm/i915/i915_gpu_error.c|   3 +
>>>   drivers/gpu/drm/i915/i915_pci.c  |   2 +-
>>>   drivers/gpu/drm/i915/intel_device_info.c |  93 +
>>>   drivers/gpu/drm/i915/intel_device_info.h |  27 -
>>>   6 files changed, 214 insertions(+), 42 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/i915_drv.c 
>>> b/drivers/gpu/drm/i915/i915_drv.c
>>> index f1334f5d4ead..74734d7661e5 100644
>>> --- a/drivers/gpu/drm/i915/i915_drv.c
>>> +++ b/drivers/gpu/drm/i915/i915_drv.c
>>> @@ -868,6 +868,8 @@ static int i915_driver_init_early(struct 
>>> drm_i915_private *dev_priv)
>>> if (i915_inject_load_failure())
>>> return -ENODEV;
>>>   
>>> +   intel_device_info_subplatform_init(dev_priv);
>>> +
>>> spin_lock_init(&dev_priv->irq_lock);
>>> spin_lock_init(&dev_priv->gpu_error.lock);
>>> mutex_init(&dev_priv->backlight_lock);
>>> @@ -1718,10 +1720,12 @@ static void i915_welcome_messages(struct 
>>> drm_i915_private *dev_priv)
>>> if (drm_debug & DRM_UT_DRIVER) {
>>> struct drm_printer p = drm_debug_printer("i915 device info:");
>>>   
>>> -   drm_printf(&p, "pciid=0x%04x rev=0x%02x platform=%s gen=%i\n",
>>> +   drm_printf(&p, "pciid=0x%04x rev=0x%02x platform=%s 
>>> (subplatform=0x%x) gen=%i\n",
>>>INTEL_DEVID(dev_priv),
>>>INTEL_REVID(dev_priv),
>>>intel_platform_name(INTEL_INFO(dev_priv)->platform),
>>> +  intel_subplatform(RUNTIME_INFO(dev_priv),
>>> +INTEL_INFO(dev_priv)->platform),
>>>INTEL_GEN(dev_priv));
>>>   
>>> intel_device_info_dump_flags(INTEL_INFO(dev_priv), &p);
>>> @@ -1764,8 +1768,6 @@ i915_driver_create(struct pci_dev *pdev, const struct 
>>> pci_device_id *ent)
>>> memcpy(device_info, match_info, sizeof(*device_info));
>>> RUNTIME_INFO(i915)->device_id = pdev->device;
>>>   
>>> -   BUILD_BUG_ON(INTEL_MAX_PLATFORMS >
>>> -BITS_PER_TYPE(device_info->platform_mask));
>>> BUG_ON(device_info->gen > BITS_PER_TYPE(device_info->gen_mask));
>>>   
>>> return i915;
>>> diff --git a/drivers/gpu/drm/i915/i915_drv.h 
>>> b/drivers/gpu/drm/i915/i915_drv.h
>>> index 9d3cab9406e1..b7d3f3a45ed9 100644
>>> --- a/drivers/gpu/drm/i915/i915_drv.h
>>> +++ b/drivers/gpu/drm/i915/i915_drv.h
>>> @@ -2298,7 +2298,67 @@ static inline unsigned int i915_sg_segment_size(void)
>>>   #define IS_REVID(p, since, until) \
>>> (INTEL

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Fix GCMAX color register programming

2019-03-29 Thread Ville Syrjälä
On Fri, Mar 29, 2019 at 06:19:18PM +0530, Uma Shankar wrote:
> GC MAX register is used to program values from 1.0 to
> less than 3.0. A different register was used instead of
> the intended one. Fixed the same.
> 
> Currently limiting it to 1.0 due to ABI limitations.
> 
> Reported-by: Ville Syrjälä 
> Signed-off-by: Uma Shankar 
> ---
>  drivers/gpu/drm/i915/intel_color.c | 22 +++---
>  1 file changed, 11 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_color.c 
> b/drivers/gpu/drm/i915/intel_color.c
> index ff910ed..dd179a8 100644
> --- a/drivers/gpu/drm/i915/intel_color.c
> +++ b/drivers/gpu/drm/i915/intel_color.c
> @@ -518,14 +518,14 @@ static void bdw_load_gamma_lut(const struct 
> intel_crtc_state *crtc_state, u32 of
>   I915_WRITE(PREC_PAL_DATA(pipe), word);
>   }
>  
> - /* Program the max register to clamp values > 1.0. */
> - i = lut_size - 1;
> - I915_WRITE(PREC_PAL_GC_MAX(pipe, 0),
> -drm_color_lut_extract(lut[i].red, 16));
> - I915_WRITE(PREC_PAL_GC_MAX(pipe, 1),
> -drm_color_lut_extract(lut[i].green, 16));
> - I915_WRITE(PREC_PAL_GC_MAX(pipe, 2),
> -drm_color_lut_extract(lut[i].blue, 16));
> + /*
> +  * Program the max register to clamp values > 1.0.
> +  * ToDo: Extend the ABI to be able to program values
> +  * from 1.0 to 3.0
> +  */
> + I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);

Maybe we want these to be just 1<<16 to match how we set up the glk+
degamma?

>   } else {
>   for (i = 0; i < lut_size; i++) {
>   u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
> @@ -534,9 +534,9 @@ static void bdw_load_gamma_lut(const struct 
> intel_crtc_state *crtc_state, u32 of
>  (v << 20) | (v << 10) | v);
>   }
>  
> - I915_WRITE(PREC_PAL_GC_MAX(pipe, 0), (1 << 16) - 1);
> - I915_WRITE(PREC_PAL_GC_MAX(pipe, 1), (1 << 16) - 1);
> - I915_WRITE(PREC_PAL_GC_MAX(pipe, 2), (1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
>   }
>  
>   /*
> -- 
> 1.9.1
> 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 2/2] drm/i915: Program EXT2 GC MAX registers

2019-03-29 Thread Ville Syrjälä
On Fri, Mar 29, 2019 at 06:19:19PM +0530, Uma Shankar wrote:
> EXT2 GC MAX registers are introduced from Gen10+ to
> program values from 3.0 to 7.0. Enabled the same, but
> currently limiting it to 1.0 as userspace ABI is limited
> at that currently.
> 
> Signed-off-by: Uma Shankar 
> ---
>  drivers/gpu/drm/i915/i915_reg.h|  1 +
>  drivers/gpu/drm/i915/intel_color.c | 28 
>  2 files changed, 29 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
> index c866379..341f03e 100644
> --- a/drivers/gpu/drm/i915/i915_reg.h
> +++ b/drivers/gpu/drm/i915/i915_reg.h
> @@ -10144,6 +10144,7 @@ enum skl_power_gate {
>  #define PREC_PAL_DATA(pipe)  _MMIO_PIPE(pipe, _PAL_PREC_DATA_A, 
> _PAL_PREC_DATA_B)
>  #define PREC_PAL_GC_MAX(pipe, i) _MMIO(_PIPE(pipe, _PAL_PREC_GC_MAX_A, 
> _PAL_PREC_GC_MAX_B) + (i) * 4)
>  #define PREC_PAL_EXT_GC_MAX(pipe, i) _MMIO(_PIPE(pipe, 
> _PAL_PREC_EXT_GC_MAX_A, _PAL_PREC_EXT_GC_MAX_B) + (i) * 4)
> +#define PREC_PAL_EXT2_GC_MAX(pipe, i)_MMIO(_PIPE(pipe, 
> _PAL_PREC_EXT2_GC_MAX_A, _PAL_PREC_EXT2_GC_MAX_B) + (i) * 4)
>  
>  #define _PRE_CSC_GAMC_INDEX_A0x4A484
>  #define _PRE_CSC_GAMC_INDEX_B0x4AC84
> diff --git a/drivers/gpu/drm/i915/intel_color.c 
> b/drivers/gpu/drm/i915/intel_color.c
> index dd179a8..84aa5e7 100644
> --- a/drivers/gpu/drm/i915/intel_color.c
> +++ b/drivers/gpu/drm/i915/intel_color.c
> @@ -526,6 +526,20 @@ static void bdw_load_gamma_lut(const struct 
> intel_crtc_state *crtc_state, u32 of
>   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
>   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
>   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
> +
> + /*
> +  * Program the gc max 2 register to clamp values > 1.0.
> +  * ToDo: Extend the ABI to be able to program values
> +  * from 3.0 to 7.0
> +  */
> + if (INTEL_GEN(dev_priv) >= 10) {

|| IS_GEMINILAKE

> + I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0),
> +(1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1),
> +(1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2),
> +(1 << 16) - 1);
> + }
>   } else {
>   for (i = 0; i < lut_size; i++) {
>   u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
> @@ -537,6 +551,20 @@ static void bdw_load_gamma_lut(const struct 
> intel_crtc_state *crtc_state, u32 of
>   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
>   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
>   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
> +
> + /*
> +  * Program the gc max 2 register to clamp values > 1.0.
> +  * ToDo: Extend the ABI to be able to program values
> +  * from 3.0 to 7.0
> +  */
> + if (INTEL_GEN(dev_priv) >= 10) {

same

> + I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0),
> +(1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1),
> +(1 << 16) - 1);
> + I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2),
> +(1 << 16) - 1);
> + }
>   }
>  
>   /*
> -- 
> 1.9.1
> 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] [PATCH] drm/i915/execlists: Enable coarse preemption boundaries for gen8

2019-03-29 Thread Chris Wilson
When we introduced preemption, we chose to keep it disabled for gen8 as
supporting preemption inside GPGPU user batches required various w/a in
userspace. Since then, the desire to preempt long queues of requests
between batches (e.g. within busywaiting semaphores) has grown. So allow
arbitration within the busywaits and between requests, but disable
arbitration within user batches so that we can preempt between requests
and not risk breaking GPGPU.

However, since this preemption is much coarser and doesn't interfere
with userspace, we decline to include it amongst the scheduler
capabilities. (This is also required for us to skip over the preemption
selftests that expect to be able to preempt user batches.)

Testcase: igt/gem_exec_scheduler/semaphore-user
References: beecec901790 ("drm/i915/execlists: Preemption!")
Fixes: e88619646971 ("drm/i915: Use HW semaphores for inter-engine 
synchronisation on gen8+")
Signed-off-by: Chris Wilson 
Cc: Michal Winiarski 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/i915_gem_context.c|   2 +-
 drivers/gpu/drm/i915/intel_lrc.c   |  49 --
 drivers/gpu/drm/i915/selftests/intel_lrc.c | 180 +
 3 files changed, 217 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_context.c 
b/drivers/gpu/drm/i915/i915_gem_context.c
index 662da485e15f..92993db38aad 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -562,7 +562,7 @@ static void init_contexts(struct drm_i915_private *i915)
 
 static bool needs_preempt_context(struct drm_i915_private *i915)
 {
-   return HAS_LOGICAL_RING_PREEMPTION(i915);
+   return HAS_EXECLISTS(i915);
 }
 
 int i915_gem_contexts_init(struct drm_i915_private *dev_priv)
diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
index bec232acc8d7..b380688a0c1c 100644
--- a/drivers/gpu/drm/i915/intel_lrc.c
+++ b/drivers/gpu/drm/i915/intel_lrc.c
@@ -233,7 +233,7 @@ static inline bool need_preempt(const struct 
intel_engine_cs *engine,
 {
int last_prio;
 
-   if (!intel_engine_has_preemption(engine))
+   if (!engine->preempt_context)
return false;
 
if (i915_request_completed(rq))
@@ -2035,7 +2035,7 @@ static int gen8_emit_bb_start(struct i915_request *rq,
 {
u32 *cs;
 
-   cs = intel_ring_begin(rq, 6);
+   cs = intel_ring_begin(rq, 4);
if (IS_ERR(cs))
return PTR_ERR(cs);
 
@@ -2046,16 +2046,35 @@ static int gen8_emit_bb_start(struct i915_request *rq,
 * particular all the gen that do not need the w/a at all!), if we
 * took care to make sure that on every switch into this context
 * (both ordinary and for preemption) that arbitrartion was enabled
-* we would be fine. However, there doesn't seem to be a downside to
-* being paranoid and making sure it is set before each batch and
-* every context-switch.
-*
-* Note that if we fail to enable arbitration before the request
-* is complete, then we do not see the context-switch interrupt and
-* the engine hangs (with RING_HEAD == RING_TAIL).
-*
-* That satisfies both the GPGPU w/a and our heavy-handed paranoia.
+* we would be fine.  However, for gen8 there is another w/a that
+* requires us to not preempt inside GPGPU execution, so we keep
+* arbitration disabled for gen8 batches. Arbitration will be
+* re-enabled before we close the request
+* (engine->emit_fini_breadcrumb).
 */
+   *cs++ = MI_ARB_ON_OFF | MI_ARB_DISABLE;
+
+   /* FIXME(BDW): Address space and security selectors. */
+   *cs++ = MI_BATCH_BUFFER_START_GEN8 |
+   (flags & I915_DISPATCH_SECURE ? 0 : BIT(8));
+   *cs++ = lower_32_bits(offset);
+   *cs++ = upper_32_bits(offset);
+
+   intel_ring_advance(rq, cs);
+
+   return 0;
+}
+
+static int gen9_emit_bb_start(struct i915_request *rq,
+ u64 offset, u32 len,
+ const unsigned int flags)
+{
+   u32 *cs;
+
+   cs = intel_ring_begin(rq, 6);
+   if (IS_ERR(cs))
+   return PTR_ERR(cs);
+
*cs++ = MI_ARB_ON_OFF | MI_ARB_ENABLE;
 
/* FIXME(BDW): Address space and security selectors. */
@@ -2316,7 +2335,8 @@ void intel_execlists_set_default_submission(struct 
intel_engine_cs *engine)
engine->flags |= I915_ENGINE_SUPPORTS_STATS;
if (!intel_vgpu_active(engine->i915))
engine->flags |= I915_ENGINE_HAS_SEMAPHORES;
-   if (engine->preempt_context)
+   if (engine->preempt_context &&
+   HAS_LOGICAL_RING_PREEMPTION(engine->i915))
engine->flags |= I915_ENGINE_HAS_PREEMPTION;
 }
 
@@ -2350,7 +2370,10 @@ logical_ring_default_vfuncs(struct intel_engine_cs 
*engine)
 * until a more refined solution exists.
 */
}
-   engine->emi

Re: [Intel-gfx] [PATCH 2/6] drm/i915: Don't use split gamma when we don't have to

2019-03-29 Thread Ville Syrjälä
On Fri, Mar 29, 2019 at 12:47:02PM +0200, Ville Syrjälä wrote:
> On Thu, Mar 28, 2019 at 05:16:03PM -0700, Matt Roper wrote:
> > On Thu, Mar 28, 2019 at 11:05:01PM +0200, Ville Syrjala wrote:
> > > From: Ville Syrjälä 
> > > 
> > > Using the split gamma mode when we don't have to has the annoying
> > > requirement of loading a linear LUT to the unused half. Instead
> > > let's make life simpler by switching to the 10bit gamma mode
> > > and duplicating each entry.
> > > 
> > > This also allows us to load the software gamma LUT into the
> > > hardware degamma LUT, thus removing some of the buggy
> > > configurations we currently allow (YCbCr/limited range RGB
> > > + gamma LUT). We do still have other configurations that are
> > > also buggy, but those will need more complicated fixes
> > > or they just need to be rejected. Sadly GLK doesn't have
> > > this flexibility anymore and the degamma and gamma LUTs
> > > are very different so no help there.
> > > 
> > > Signed-off-by: Ville Syrjälä 
> > > ---
> > >  drivers/gpu/drm/i915/i915_reg.h|   1 +
> > >  drivers/gpu/drm/i915/intel_color.c | 159 +++--
> > >  2 files changed, 86 insertions(+), 74 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_reg.h 
> > > b/drivers/gpu/drm/i915/i915_reg.h
> > > index c866379a521b..eb7e93354cfe 100644
> > > --- a/drivers/gpu/drm/i915/i915_reg.h
> > > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > > @@ -10127,6 +10127,7 @@ enum skl_power_gate {
> > >  #define   PAL_PREC_SPLIT_MODE(1 << 31)
> > >  #define   PAL_PREC_AUTO_INCREMENT(1 << 15)
> > >  #define   PAL_PREC_INDEX_VALUE_MASK  (0x3ff << 0)
> > > +#define   PAL_PREC_INDEX_VALUE(x)((x) << 0)
> > >  #define _PAL_PREC_DATA_A 0x4A404
> > >  #define _PAL_PREC_DATA_B 0x4AC04
> > >  #define _PAL_PREC_DATA_C 0x4B404
> > > diff --git a/drivers/gpu/drm/i915/intel_color.c 
> > > b/drivers/gpu/drm/i915/intel_color.c
> > > index d7c38a2bbd8f..ed4bd9bd15f5 100644
> > > --- a/drivers/gpu/drm/i915/intel_color.c
> > > +++ b/drivers/gpu/drm/i915/intel_color.c
> > > @@ -466,72 +466,32 @@ static void skl_color_commit(const struct 
> > > intel_crtc_state *crtc_state)
> > >   ilk_load_csc_matrix(crtc_state);
> > >  }
> > >  
> > > -static void bdw_load_degamma_lut(const struct intel_crtc_state 
> > > *crtc_state)
> > > +static void bdw_load_lut_10(struct intel_crtc *crtc,
> > > + const struct drm_property_blob *blob,
> > > + u32 prec_index, bool duplicate)
> > >  {
> > > - struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
> > >   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> > > - const struct drm_property_blob *degamma_lut = 
> > > crtc_state->base.degamma_lut;
> > > - u32 i, lut_size = INTEL_INFO(dev_priv)->color.degamma_lut_size;
> > > + const struct drm_color_lut *lut = blob->data;
> > > + int i, lut_size = drm_color_lut_size(blob);
> > >   enum pipe pipe = crtc->pipe;
> > >  
> > > - I915_WRITE(PREC_PAL_INDEX(pipe),
> > > -PAL_PREC_SPLIT_MODE | PAL_PREC_AUTO_INCREMENT);
> > > -
> > > - if (degamma_lut) {
> > > - const struct drm_color_lut *lut = degamma_lut->data;
> > > + I915_WRITE(PREC_PAL_INDEX(pipe), prec_index |
> > > +PAL_PREC_AUTO_INCREMENT);
> > >  
> > > - for (i = 0; i < lut_size; i++)
> > > - I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
> > > - } else {
> > > + /*
> > > +  * We advertize the split gamma sizes. When not using split
> > > +  * gamma we just duplicate each entry.
> > > +  *
> > > +  * TODO: expose the full LUT to userspace
> > 
> > Any reason not to just do this immediately?  Throwing away half the
> > table entries if we decide we need split mode doesn't seem any harder
> > than duplicating the entries when we decide we don't.  The color
> > management kerneldoc already explicitly recommends this approach for
> > hardware that can support multiple gamma modes, so I don't think we need
> > any new ABI to handle it.
> 
> Hmm. I guess that apporach could be doable. It might be a bit annoying
> for userspace though if it expects a direct color visual. But at least
> for X we won't use degamma/ctm anyway so seems like it should work out
> just fine.

As usual this needs a bit of care when picking the LUT entries we
use. I think I'll send that as a followup.

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Fix GCMAX color register programming

2019-03-29 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Friday, March 29, 2019 6:40 PM
>To: Shankar, Uma 
>Cc: intel-gfx@lists.freedesktop.org; Syrjala, Ville ; 
>Lankhorst,
>Maarten 
>Subject: Re: [Intel-gfx] [PATCH 1/2] drm/i915: Fix GCMAX color register 
>programming
>
>On Fri, Mar 29, 2019 at 06:19:18PM +0530, Uma Shankar wrote:
>> GC MAX register is used to program values from 1.0 to less than 3.0. A
>> different register was used instead of the intended one. Fixed the
>> same.
>>
>> Currently limiting it to 1.0 due to ABI limitations.
>>
>> Reported-by: Ville Syrjälä 
>> Signed-off-by: Uma Shankar 
>> ---
>>  drivers/gpu/drm/i915/intel_color.c | 22 +++---
>>  1 file changed, 11 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_color.c
>> b/drivers/gpu/drm/i915/intel_color.c
>> index ff910ed..dd179a8 100644
>> --- a/drivers/gpu/drm/i915/intel_color.c
>> +++ b/drivers/gpu/drm/i915/intel_color.c
>> @@ -518,14 +518,14 @@ static void bdw_load_gamma_lut(const struct
>intel_crtc_state *crtc_state, u32 of
>>  I915_WRITE(PREC_PAL_DATA(pipe), word);
>>  }
>>
>> -/* Program the max register to clamp values > 1.0. */
>> -i = lut_size - 1;
>> -I915_WRITE(PREC_PAL_GC_MAX(pipe, 0),
>> -   drm_color_lut_extract(lut[i].red, 16));
>> -I915_WRITE(PREC_PAL_GC_MAX(pipe, 1),
>> -   drm_color_lut_extract(lut[i].green, 16));
>> -I915_WRITE(PREC_PAL_GC_MAX(pipe, 2),
>> -   drm_color_lut_extract(lut[i].blue, 16));
>> +/*
>> + * Program the max register to clamp values > 1.0.
>> + * ToDo: Extend the ABI to be able to program values
>> + * from 1.0 to 3.0
>> + */
>> +I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
>
>Maybe we want these to be just 1<<16 to match how we set up the glk+ degamma?

Sure, will update it.

>>  } else {
>>  for (i = 0; i < lut_size; i++) {
>>  u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1); @@ 
>> -534,9 +534,9
>> @@ static void bdw_load_gamma_lut(const struct intel_crtc_state *crtc_state, 
>> u32
>of
>> (v << 20) | (v << 10) | v);
>>  }
>>
>> -I915_WRITE(PREC_PAL_GC_MAX(pipe, 0), (1 << 16) - 1);
>> -I915_WRITE(PREC_PAL_GC_MAX(pipe, 1), (1 << 16) - 1);
>> -I915_WRITE(PREC_PAL_GC_MAX(pipe, 2), (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
>>  }
>>
>>  /*
>> --
>> 1.9.1
>>
>> ___
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>--
>Ville Syrjälä
>Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 2/2] drm/i915: Program EXT2 GC MAX registers

2019-03-29 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Friday, March 29, 2019 6:41 PM
>To: Shankar, Uma 
>Cc: intel-gfx@lists.freedesktop.org; Syrjala, Ville ; 
>Lankhorst,
>Maarten 
>Subject: Re: [Intel-gfx] [PATCH 2/2] drm/i915: Program EXT2 GC MAX registers
>
>On Fri, Mar 29, 2019 at 06:19:19PM +0530, Uma Shankar wrote:
>> EXT2 GC MAX registers are introduced from Gen10+ to program values
>> from 3.0 to 7.0. Enabled the same, but currently limiting it to 1.0 as
>> userspace ABI is limited at that currently.
>>
>> Signed-off-by: Uma Shankar 
>> ---
>>  drivers/gpu/drm/i915/i915_reg.h|  1 +
>>  drivers/gpu/drm/i915/intel_color.c | 28 
>>  2 files changed, 29 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_reg.h
>> b/drivers/gpu/drm/i915/i915_reg.h index c866379..341f03e 100644
>> --- a/drivers/gpu/drm/i915/i915_reg.h
>> +++ b/drivers/gpu/drm/i915/i915_reg.h
>> @@ -10144,6 +10144,7 @@ enum skl_power_gate {
>>  #define PREC_PAL_DATA(pipe) _MMIO_PIPE(pipe,
>_PAL_PREC_DATA_A, _PAL_PREC_DATA_B)
>>  #define PREC_PAL_GC_MAX(pipe, i)_MMIO(_PIPE(pipe, _PAL_PREC_GC_MAX_A,
>_PAL_PREC_GC_MAX_B) + (i) * 4)
>>  #define PREC_PAL_EXT_GC_MAX(pipe, i)_MMIO(_PIPE(pipe,
>_PAL_PREC_EXT_GC_MAX_A, _PAL_PREC_EXT_GC_MAX_B) + (i) * 4)
>> +#define PREC_PAL_EXT2_GC_MAX(pipe, i)   _MMIO(_PIPE(pipe,
>_PAL_PREC_EXT2_GC_MAX_A, _PAL_PREC_EXT2_GC_MAX_B) + (i) * 4)
>>
>>  #define _PRE_CSC_GAMC_INDEX_A   0x4A484
>>  #define _PRE_CSC_GAMC_INDEX_B   0x4AC84
>> diff --git a/drivers/gpu/drm/i915/intel_color.c
>> b/drivers/gpu/drm/i915/intel_color.c
>> index dd179a8..84aa5e7 100644
>> --- a/drivers/gpu/drm/i915/intel_color.c
>> +++ b/drivers/gpu/drm/i915/intel_color.c
>> @@ -526,6 +526,20 @@ static void bdw_load_gamma_lut(const struct
>intel_crtc_state *crtc_state, u32 of
>>  I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
>>  I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
>>  I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
>> +
>> +/*
>> + * Program the gc max 2 register to clamp values > 1.0.
>> + * ToDo: Extend the ABI to be able to program values
>> + * from 3.0 to 7.0
>> + */
>> +if (INTEL_GEN(dev_priv) >= 10) {
>
>|| IS_GEMINILAKE

Yeah, GLK needs to be added here. Will update it.

>> +I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0),
>> +   (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1),
>> +   (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2),
>> +   (1 << 16) - 1);
>> +}
>>  } else {
>>  for (i = 0; i < lut_size; i++) {
>>  u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1); @@ 
>> -537,6 +551,20
>> @@ static void bdw_load_gamma_lut(const struct intel_crtc_state *crtc_state, 
>> u32
>of
>>  I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16) - 1);
>>  I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16) - 1);
>>  I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16) - 1);
>> +
>> +/*
>> + * Program the gc max 2 register to clamp values > 1.0.
>> + * ToDo: Extend the ABI to be able to program values
>> + * from 3.0 to 7.0
>> + */
>> +if (INTEL_GEN(dev_priv) >= 10) {
>
>same
>
>> +I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0),
>> +   (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1),
>> +   (1 << 16) - 1);
>> +I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2),
>> +   (1 << 16) - 1);
>> +}
>>  }
>>
>>  /*
>> --
>> 1.9.1
>>
>> ___
>> Intel-gfx mailing list
>> Intel-gfx@lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
>--
>Ville Syrjälä
>Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/execlists: Enable coarse preemption boundaries for gen8

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/execlists: Enable coarse preemption boundaries for gen8
URL   : https://patchwork.freedesktop.org/series/58738/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
678a3d72d2b3 drm/i915/execlists: Enable coarse preemption boundaries for gen8
-:21: ERROR:GIT_COMMIT_ID: Please use git commit description style 'commit <12+ 
chars of sha1> ("")' - ie: 'commit beecec901790 
("drm/i915/execlists: Preemption!")'
#21: 
References: beecec901790 ("drm/i915/execlists: Preemption!")

total: 1 errors, 0 warnings, 0 checks, 280 lines checked

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

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for drm/i915/execlists: Enable coarse preemption boundaries for gen8

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/execlists: Enable coarse preemption boundaries for gen8
URL   : https://patchwork.freedesktop.org/series/58738/
State : warning

== Summary ==

$ dim sparse origin/drm-tip
Sparse version: v0.5.2
Commit: drm/i915/execlists: Enable coarse preemption boundaries for gen8
+drivers/gpu/drm/i915/selftests/intel_lrc.c:121:54: warning: Using plain 
integer as NULL pointer

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

[Intel-gfx] [v2 1/2] drm/i915: Fix GCMAX color register programming

2019-03-29 Thread Uma Shankar
GC MAX register is used to program values from 1.0 to
less than 3.0. A different register was used instead of
the intended one. Fixed the same.

Currently limiting it to 1.0 due to ABI limitations.

v2: Updated the 1.0 programming and aligned as per GLK, based
on Ville's feedback.

Reported-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
---
 drivers/gpu/drm/i915/intel_color.c | 22 +++---
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_color.c 
b/drivers/gpu/drm/i915/intel_color.c
index ff910ed..c776159 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -518,14 +518,14 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
I915_WRITE(PREC_PAL_DATA(pipe), word);
}
 
-   /* Program the max register to clamp values > 1.0. */
-   i = lut_size - 1;
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 0),
-  drm_color_lut_extract(lut[i].red, 16));
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 1),
-  drm_color_lut_extract(lut[i].green, 16));
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 2),
-  drm_color_lut_extract(lut[i].blue, 16));
+   /*
+* Program the max register to clamp values > 1.0.
+* ToDo: Extend the ABI to be able to program values
+* from 1.0 to 3.0
+*/
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16));
} else {
for (i = 0; i < lut_size; i++) {
u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
@@ -534,9 +534,9 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
   (v << 20) | (v << 10) | v);
}
 
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 0), (1 << 16) - 1);
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 1), (1 << 16) - 1);
-   I915_WRITE(PREC_PAL_GC_MAX(pipe, 2), (1 << 16) - 1);
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16));
}
 
/*
-- 
1.9.1

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

[Intel-gfx] [v2 2/2] drm/i915: Program EXT2 GC MAX registers

2019-03-29 Thread Uma Shankar
EXT2 GC MAX registers are introduced from Gen10+ to
program values from 3.0 to 7.0. Enabled the same, but
currently limiting it to 1.0 as userspace ABI is limited
at that currently.

v2: Updated the 1.0 programming and aligned as per GLK, also added
GLK along with GEN10+ check, as per Ville's feedback.

Signed-off-by: Uma Shankar 
---
 drivers/gpu/drm/i915/i915_reg.h|  1 +
 drivers/gpu/drm/i915/intel_color.c | 22 ++
 2 files changed, 23 insertions(+)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index c866379..341f03e 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -10144,6 +10144,7 @@ enum skl_power_gate {
 #define PREC_PAL_DATA(pipe)_MMIO_PIPE(pipe, _PAL_PREC_DATA_A, 
_PAL_PREC_DATA_B)
 #define PREC_PAL_GC_MAX(pipe, i)   _MMIO(_PIPE(pipe, _PAL_PREC_GC_MAX_A, 
_PAL_PREC_GC_MAX_B) + (i) * 4)
 #define PREC_PAL_EXT_GC_MAX(pipe, i)   _MMIO(_PIPE(pipe, 
_PAL_PREC_EXT_GC_MAX_A, _PAL_PREC_EXT_GC_MAX_B) + (i) * 4)
+#define PREC_PAL_EXT2_GC_MAX(pipe, i)  _MMIO(_PIPE(pipe, 
_PAL_PREC_EXT2_GC_MAX_A, _PAL_PREC_EXT2_GC_MAX_B) + (i) * 4)
 
 #define _PRE_CSC_GAMC_INDEX_A  0x4A484
 #define _PRE_CSC_GAMC_INDEX_B  0x4AC84
diff --git a/drivers/gpu/drm/i915/intel_color.c 
b/drivers/gpu/drm/i915/intel_color.c
index c776159..f2907cf 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -526,6 +526,17 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16));
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16));
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16));
+
+   /*
+* Program the gc max 2 register to clamp values > 1.0.
+* ToDo: Extend the ABI to be able to program values
+* from 3.0 to 7.0
+*/
+   if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) {
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2), (1 << 16));
+   }
} else {
for (i = 0; i < lut_size; i++) {
u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
@@ -537,6 +548,17 @@ static void bdw_load_gamma_lut(const struct 
intel_crtc_state *crtc_state, u32 of
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 0), (1 << 16));
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 1), (1 << 16));
I915_WRITE(PREC_PAL_EXT_GC_MAX(pipe, 2), (1 << 16));
+
+   /*
+* Program the gc max 2 register to clamp values > 1.0.
+* ToDo: Extend the ABI to be able to program values
+* from 3.0 to 7.0
+*/
+   if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) {
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 0), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 1), (1 << 16));
+   I915_WRITE(PREC_PAL_EXT2_GC_MAX(pipe, 2), (1 << 16));
+   }
}
 
/*
-- 
1.9.1

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

[Intel-gfx] [v2 0/2] Fixed GC MAX register programming for gamma luts

2019-03-29 Thread Uma Shankar
Register offsets used to program GC max were not correct. This series
fixes the same, also limits the values to accurately clamp at 1.0.
Also added support to program EXT2 GC Max needed for values from 3.0
to 7.0. Limiting it again to 1.0 due to ABI limitations.

v2: Addressed Ville's review comments.

Uma Shankar (2):
  drm/i915: Fix GCMAX color register programming
  drm/i915: Program EXT2 GC MAX registers

 drivers/gpu/drm/i915/i915_reg.h|  1 +
 drivers/gpu/drm/i915/intel_color.c | 44 --
 2 files changed, 34 insertions(+), 11 deletions(-)

-- 
1.9.1

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

Re: [Intel-gfx] [v6 12/13] drm/i915: Set Infoframe for non modeset case for HDR

2019-03-29 Thread Ville Syrjälä
On Wed, Mar 20, 2019 at 04:18:25PM +0530, Uma Shankar wrote:
> HDR metadata requires a infoframe to be set. Due to fastset,
> full modeset is not performed hence adding it to update_pipe
> to handle that.
> 
> Signed-off-by: Uma Shankar 
> ---
>  drivers/gpu/drm/i915/intel_ddi.c | 13 +
>  1 file changed, 13 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_ddi.c 
> b/drivers/gpu/drm/i915/intel_ddi.c
> index 69aa0d1..a27aab9 100644
> --- a/drivers/gpu/drm/i915/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/intel_ddi.c
> @@ -3566,6 +3566,10 @@ static void intel_ddi_update_pipe(struct intel_encoder 
> *encoder,
> const struct intel_crtc_state *crtc_state,
> const struct drm_connector_state *conn_state)
>  {
> + struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> + struct intel_digital_port *intel_dig_port =
> + enc_to_dig_port(&encoder->base);
> +
>   if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
>   intel_ddi_update_pipe_dp(encoder, crtc_state, conn_state);
>  
> @@ -3575,6 +3579,15 @@ static void intel_ddi_update_pipe(struct intel_encoder 
> *encoder,
>   else if (conn_state->content_protection ==
>DRM_MODE_CONTENT_PROTECTION_UNDESIRED)
>   intel_hdcp_disable(to_intel_connector(conn_state->connector));
> +
> + /* Set the infoframe for NON modeset cases as well */
> + if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
> + if ((INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)) &&
> + conn_state->hdr_metadata_changed)
> + intel_dig_port->set_infoframes(encoder,
> +
> crtc_state->has_infoframe,
> +crtc_state, conn_state);

I don't think this should be tied to the drm infoframe. It should
be totally generic. IIRC there is also some magic dance we may have
to perform when updating infoframes with the port enabled. But the
details escape right now.

> + }
>  }
>  
>  static void intel_ddi_set_fia_lane_count(struct intel_encoder *encoder,
> -- 
> 1.9.1
> 
> ___
> dri-devel mailing list
> dri-de...@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] [PATCH v2 2/6] drm/i915: Don't use split gamma when we don't have to

2019-03-29 Thread Ville Syrjala
From: Ville Syrjälä 

Using the split gamma mode when we don't have to has the annoying
requirement of loading a linear LUT to the unused half. Instead
let's make life simpler by switching to the 10bit gamma mode
and duplicating each entry.

This also allows us to load the software gamma LUT into the
hardware degamma LUT, thus removing some of the buggy
configurations we currently allow (YCbCr/limited range RGB
+ gamma LUT). We do still have other configurations that are
also buggy, but those will need more complicated fixes
or they just need to be rejected. Sadly GLK doesn't have
this flexibility anymore and the degamma and gamma LUTs
are very different so no help there.

v2: Apply a mask when checking gamma_mode on icl since it
contains more bits than just the gamma mode

Signed-off-by: Ville Syrjälä 
---
 drivers/gpu/drm/i915/i915_reg.h|   2 +
 drivers/gpu/drm/i915/intel_color.c | 160 -
 2 files changed, 88 insertions(+), 74 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index c866379a521b..863ba687226c 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -7214,6 +7214,7 @@ enum {
 #define GAMMA_MODE(pipe) _MMIO_PIPE(pipe, _GAMMA_MODE_A, _GAMMA_MODE_B)
 #define  PRE_CSC_GAMMA_ENABLE  (1 << 31)
 #define  POST_CSC_GAMMA_ENABLE (1 << 30)
+#define  GAMMA_MODE_MODE_MASK  (3 << 0)
 #define  GAMMA_MODE_MODE_8BIT  (0 << 0)
 #define  GAMMA_MODE_MODE_10BIT (1 << 0)
 #define  GAMMA_MODE_MODE_12BIT (2 << 0)
@@ -10127,6 +10128,7 @@ enum skl_power_gate {
 #define   PAL_PREC_SPLIT_MODE  (1 << 31)
 #define   PAL_PREC_AUTO_INCREMENT  (1 << 15)
 #define   PAL_PREC_INDEX_VALUE_MASK(0x3ff << 0)
+#define   PAL_PREC_INDEX_VALUE(x)  ((x) << 0)
 #define _PAL_PREC_DATA_A   0x4A404
 #define _PAL_PREC_DATA_B   0x4AC04
 #define _PAL_PREC_DATA_C   0x4B404
diff --git a/drivers/gpu/drm/i915/intel_color.c 
b/drivers/gpu/drm/i915/intel_color.c
index d7c38a2bbd8f..f789a9fd9ba2 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -466,72 +466,32 @@ static void skl_color_commit(const struct 
intel_crtc_state *crtc_state)
ilk_load_csc_matrix(crtc_state);
 }
 
-static void bdw_load_degamma_lut(const struct intel_crtc_state *crtc_state)
+static void bdw_load_lut_10(struct intel_crtc *crtc,
+   const struct drm_property_blob *blob,
+   u32 prec_index, bool duplicate)
 {
-   struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
-   const struct drm_property_blob *degamma_lut = 
crtc_state->base.degamma_lut;
-   u32 i, lut_size = INTEL_INFO(dev_priv)->color.degamma_lut_size;
+   const struct drm_color_lut *lut = blob->data;
+   int i, lut_size = drm_color_lut_size(blob);
enum pipe pipe = crtc->pipe;
 
-   I915_WRITE(PREC_PAL_INDEX(pipe),
-  PAL_PREC_SPLIT_MODE | PAL_PREC_AUTO_INCREMENT);
-
-   if (degamma_lut) {
-   const struct drm_color_lut *lut = degamma_lut->data;
+   I915_WRITE(PREC_PAL_INDEX(pipe), prec_index |
+  PAL_PREC_AUTO_INCREMENT);
 
-   for (i = 0; i < lut_size; i++)
-   I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
-   } else {
+   /*
+* We advertize the split gamma sizes. When not using split
+* gamma we just duplicate each entry.
+*
+* TODO: expose the full LUT to userspace
+*/
+   if (duplicate) {
for (i = 0; i < lut_size; i++) {
-   u32 v = (i * ((1 << 10) - 1)) / (lut_size - 1);
-
-   I915_WRITE(PREC_PAL_DATA(pipe),
-  (v << 20) | (v << 10) | v);
+   I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
+   I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
}
-   }
-}
-
-static void bdw_load_gamma_lut(const struct intel_crtc_state *crtc_state, u32 
offset)
-{
-   struct intel_crtc *crtc = to_intel_crtc(crtc_state->base.crtc);
-   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
-   const struct drm_property_blob *gamma_lut = crtc_state->base.gamma_lut;
-   u32 i, lut_size = INTEL_INFO(dev_priv)->color.gamma_lut_size;
-   enum pipe pipe = crtc->pipe;
-
-   WARN_ON(offset & ~PAL_PREC_INDEX_VALUE_MASK);
-
-   I915_WRITE(PREC_PAL_INDEX(pipe),
-  (offset ? PAL_PREC_SPLIT_MODE : 0) |
-  PAL_PREC_AUTO_INCREMENT |
-  offset);
-
-   if (gamma_lut) {
-   const struct drm_color_lut *lut = gamma_lut->data;
-
+   } else {
for (i = 0; i < lut_size; i++)
I915_WRITE(PREC_PAL_DATA(pipe), ilk_lut_10(&lut[i]));
-
-   /* Program the max regist

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/execlists: Enable coarse preemption boundaries for gen8

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915/execlists: Enable coarse preemption boundaries for gen8
URL   : https://patchwork.freedesktop.org/series/58738/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5837 -> Patchwork_12629


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58738/revisions/1/mbox/

Known issues


  Here are the changes found in Patchwork_12629 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@amdgpu/amd_basic@cs-compute:
- fi-kbl-8809g:   NOTRUN -> FAIL [fdo#108094]

  * igt@gem_exec_store@basic-bsd1:
- fi-kbl-r:   NOTRUN -> SKIP [fdo#109271] +41

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  PASS -> DMESG-FAIL [fdo#110235 ]

  * igt@i915_selftest@live_execlists:
- fi-apl-guc: PASS -> INCOMPLETE [fdo#103927] / [fdo#109720]

  * igt@kms_chamelium@vga-edid-read:
- fi-hsw-4770r:   NOTRUN -> SKIP [fdo#109271] +45

  * igt@runner@aborted:
- fi-apl-guc: NOTRUN -> FAIL [fdo#108622] / [fdo#109720]

  
 Possible fixes 

  * igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g:   DMESG-WARN [fdo#108965] -> PASS

  * igt@i915_selftest@live_uncore:
- fi-ivb-3770:DMESG-FAIL [fdo#110210] -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +2

  
  {name}: This element is suppressed. This means it is ignored when computing
  the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
  [fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622
  [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109513]: https://bugs.freedesktop.org/show_bug.cgi?id=109513
  [fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720
  [fdo#110210]: https://bugs.freedesktop.org/show_bug.cgi?id=110210
  [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 


Participating hosts (46 -> 37)
--

  Additional (2): fi-hsw-4770r fi-kbl-r 
  Missing(11): fi-kbl-soraka fi-ilk-m540 fi-bxt-dsi fi-hsw-4200u 
fi-byt-squawks fi-icl-u2 fi-bsw-cyan fi-gdg-551 fi-icl-u3 fi-bsw-kefka 
fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5837 -> Patchwork_12629

  CI_DRM_5837: 1a35af6fa0d612425e325024cbac10e6fa9a9cd5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4912: 66deae8b6fa69540f069d6551cd22013f5343948 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12629: 678a3d72d2b39d0f1ade4d219e49dc746e60e9a8 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

678a3d72d2b3 drm/i915/execlists: Enable coarse preemption boundaries for gen8

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12629/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/execlists: Enable coarse preemption boundaries for gen8

2019-03-29 Thread Chris Wilson
Quoting Patchwork (2019-03-29 14:16:21)
> == Series Details ==
> 
> Series: drm/i915/execlists: Enable coarse preemption boundaries for gen8
> URL   : https://patchwork.freedesktop.org/series/58738/
> State : success
> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_5837 -> Patchwork_12629
> 
> 
> Summary
> ---
> 
>   **SUCCESS**

* wipes brow with relief

> Participating hosts (46 -> 37)
> --
> 
>   Additional (2): fi-hsw-4770r fi-kbl-r 
>   Missing(11): fi-kbl-soraka fi-ilk-m540 fi-bxt-dsi fi-hsw-4200u 
> fi-byt-squawks fi-icl-u2 fi-bsw-cyan fi-gdg-551 fi-icl-u3 fi-bsw-kefka 
> fi-bdw-samus 

But all icls were on vacation, so missing a tiny bit of HW coverage.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v2] drm: prefix header search paths with $(srctree)/

2019-03-29 Thread Liviu Dudau
On Fri, Mar 29, 2019 at 08:32:41PM +0900, Masahiro Yamada wrote:
> Currently, the Kbuild core manipulates header search paths in a crazy
> way [1].
> 
> To fix this mess, I want all Makefiles to add explicit $(srctree)/ to
> the search paths in the srctree. Some Makefiles are already written in
> that way, but not all. The goal of this work is to make the notation
> consistent, and finally get rid of the gross hacks.
> 
> Having whitespaces after -I does not matter since commit 48f6e3cf5bc6
> ("kbuild: do not drop -I without parameter").
> 
> [1]: https://patchwork.kernel.org/patch/9632347/
> 
> Signed-off-by: Masahiro Yamada 
> Reviewed-by: Sam Ravnborg 
> ---
> 
> I put all gpu/drm changes into a single patch because
> they are trivial conversion.
> 
> If you are interested in the big picture of this work,
> the full patch set is available at the following URL.
> 
> git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild.git 
> build-test
> 
> 
> Changes in v2:
>   - fix up the new driver komeda
>   - Add Sam's Reviewed-by
> 
>  drivers/gpu/drm/amd/amdgpu/Makefile | 2 +-
>  drivers/gpu/drm/amd/lib/Makefile| 2 +-
>  drivers/gpu/drm/arm/display/komeda/Makefile | 4 ++--
>  drivers/gpu/drm/i915/gvt/Makefile   | 2 +-
>  drivers/gpu/drm/msm/Makefile| 6 +++---
>  drivers/gpu/drm/nouveau/Kbuild  | 8 
>  6 files changed, 12 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/Makefile 
> b/drivers/gpu/drm/amd/amdgpu/Makefile
> index 466da59..62bf9da 100644
> --- a/drivers/gpu/drm/amd/amdgpu/Makefile
> +++ b/drivers/gpu/drm/amd/amdgpu/Makefile
> @@ -23,7 +23,7 @@
>  # Makefile for the drm device driver.  This driver provides support for the
>  # Direct Rendering Infrastructure (DRI) in XFree86 4.1.0 and higher.
>  
> -FULL_AMD_PATH=$(src)/..
> +FULL_AMD_PATH=$(srctree)/$(src)/..
>  DISPLAY_FOLDER_NAME=display
>  FULL_AMD_DISPLAY_PATH = $(FULL_AMD_PATH)/$(DISPLAY_FOLDER_NAME)
>  
> diff --git a/drivers/gpu/drm/amd/lib/Makefile 
> b/drivers/gpu/drm/amd/lib/Makefile
> index 6902430..d534992 100644
> --- a/drivers/gpu/drm/amd/lib/Makefile
> +++ b/drivers/gpu/drm/amd/lib/Makefile
> @@ -27,6 +27,6 @@
>  # driver components or later moved to kernel/lib for sharing with
>  # other drivers.
>  
> -ccflags-y := -I$(src)/../include
> +ccflags-y := -I $(srctree)/$(src)/../include
>  
>  obj-$(CONFIG_CHASH) += chash.o
> diff --git a/drivers/gpu/drm/arm/display/komeda/Makefile 
> b/drivers/gpu/drm/arm/display/komeda/Makefile
> index 1b875e5..a72e30c 100644
> --- a/drivers/gpu/drm/arm/display/komeda/Makefile
> +++ b/drivers/gpu/drm/arm/display/komeda/Makefile
> @@ -1,8 +1,8 @@
>  # SPDX-License-Identifier: GPL-2.0
>  
>  ccflags-y := \
> - -I$(src)/../include \
> - -I$(src)
> + -I $(srctree)/$(src)/../include \
> + -I $(srctree)/$(src)
>  
>  komeda-y := \
>   komeda_drv.o \

For komeda:

Acked-by: Liviu Dudau 

I'm assuming the series in going to be merged into one go, so I don't
have to take the individual patch in my tree, but if I'm wrong please
let me know.

Best regards,
Liviu

> diff --git a/drivers/gpu/drm/i915/gvt/Makefile 
> b/drivers/gpu/drm/i915/gvt/Makefile
> index 271fb46..ea8324a 100644
> --- a/drivers/gpu/drm/i915/gvt/Makefile
> +++ b/drivers/gpu/drm/i915/gvt/Makefile
> @@ -5,5 +5,5 @@ GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o 
> trace_points.o firmware.o \
>   execlist.o scheduler.o sched_policy.o mmio_context.o cmd_parser.o 
> debugfs.o \
>   fb_decoder.o dmabuf.o page_track.o
>  
> -ccflags-y+= -I$(src) -I$(src)/$(GVT_DIR)
> +ccflags-y+= -I $(srctree)/$(src) -I 
> $(srctree)/$(src)/$(GVT_DIR)/
>  i915-y   += $(addprefix $(GVT_DIR)/, 
> $(GVT_SOURCE))
> diff --git a/drivers/gpu/drm/msm/Makefile b/drivers/gpu/drm/msm/Makefile
> index 56a70c7..b7b1ebd 100644
> --- a/drivers/gpu/drm/msm/Makefile
> +++ b/drivers/gpu/drm/msm/Makefile
> @@ -1,7 +1,7 @@
>  # SPDX-License-Identifier: GPL-2.0
> -ccflags-y := -Idrivers/gpu/drm/msm
> -ccflags-y += -Idrivers/gpu/drm/msm/disp/dpu1
> -ccflags-$(CONFIG_DRM_MSM_DSI) += -Idrivers/gpu/drm/msm/dsi
> +ccflags-y := -I $(srctree)/$(src)
> +ccflags-y += -I $(srctree)/$(src)/disp/dpu1
> +ccflags-$(CONFIG_DRM_MSM_DSI) += -I $(srctree)/$(src)/dsi
>  
>  msm-y := \
>   adreno/adreno_device.o \
> diff --git a/drivers/gpu/drm/nouveau/Kbuild b/drivers/gpu/drm/nouveau/Kbuild
> index ea3035e..4fae728 100644
> --- a/drivers/gpu/drm/nouveau/Kbuild
> +++ b/drivers/gpu/drm/nouveau/Kbuild
> @@ -1,7 +1,7 @@
> -ccflags-y += -I$(src)/include
> -ccflags-y += -I$(src)/include/nvkm
> -ccflags-y += -I$(src)/nvkm
> -ccflags-y += -I$(src)
> +ccflags-y += -I $(srctree)/$(src)/include
> +ccflags-y += -I $(srctree)/$(src)/include/nvkm
> +ccflags-y += -I $(srctree)/$(src)/nvkm
> +ccflags-y += -I $(srctree)/$(src)
>  
>  # NVKM - HW resource manager
>  #- code also used by various 

Re: [Intel-gfx] [PATCH] drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Liviu Dudau
On Fri, Mar 29, 2019 at 10:20:27AM +0100, Daniel Vetter wrote:
> Interpreting it as a 0.16 fixed point means we can't accurately
> represent 1.0. Which is one of the values we really should be able to
> represent.
> 
> Since most (all?) luts have lower precision this will only affect
> rounding of 0x.
> 
> Cc: Uma Shankar 
> Cc: Ville Syrjälä 
> Cc: Shashank Sharma 
> Cc: "Kumar, Kiran S" 
> Cc: Kausal Malladi 
> Cc: Lionel Landwerlin 
> Cc: Matt Roper 
> Cc: Rob Bradford 
> Cc: Daniel Stone 
> Cc: Stefan Schake 
> Cc: Eric Anholt 
> Cc: Maarten Lankhorst 
> Cc: Harry Wentland 
> Cc: Leo Li 
> Cc: amd-...@lists.freedesktop.org
> Cc: James (Qian) Wang 
> Cc: Liviu Dudau 
> Cc: Mali DP Maintainers 
> Cc: CK Hu 
> Cc: Philipp Zabel 
> Cc: Yannick Fertre 
> Cc: Philippe Cornu 
> Cc: Benjamin Gaignard 
> Cc: Vincent Abriou 
> Cc: Tomi Valkeinen 
> Cc: Boris Brezillon 
> Signed-off-by: Daniel Vetter Signed-off-by: Daniel 
> Vetter 

Acked-by: Liviu Dudau 

Best regards,
Liviu

> ---
>  include/uapi/drm/drm_mode.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index 09d72966899a..83cd1636b9be 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -621,7 +621,8 @@ struct drm_color_ctm {
>  
>  struct drm_color_lut {
>   /*
> -  * Data is U0.16 fixed point format.
> +  * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
> +  * 0x == 1.0.
>*/
>   __u16 red;
>   __u16 green;
> -- 
> 2.20.1
> 

-- 

| I would like to |
| fix the world,  |
| but they're not |
| giving me the   |
 \ source code!  /
  ---
¯\_(ツ)_/¯
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH] drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Lionel Landwerlin

On 29/03/2019 09:20, Daniel Vetter wrote:

Interpreting it as a 0.16 fixed point means we can't accurately
represent 1.0. Which is one of the values we really should be able to
represent.

Since most (all?) luts have lower precision this will only affect
rounding of 0x.

Cc: Uma Shankar 
Cc: Ville Syrjälä 
Cc: Shashank Sharma 
Cc: "Kumar, Kiran S" 
Cc: Kausal Malladi 
Cc: Lionel Landwerlin 
Cc: Matt Roper 
Cc: Rob Bradford 
Cc: Daniel Stone 
Cc: Stefan Schake 
Cc: Eric Anholt 
Cc: Maarten Lankhorst 
Cc: Harry Wentland 
Cc: Leo Li 
Cc: amd-...@lists.freedesktop.org
Cc: James (Qian) Wang 
Cc: Liviu Dudau 
Cc: Mali DP Maintainers 
Cc: CK Hu 
Cc: Philipp Zabel 
Cc: Yannick Fertre 
Cc: Philippe Cornu 
Cc: Benjamin Gaignard 
Cc: Vincent Abriou 
Cc: Tomi Valkeinen 
Cc: Boris Brezillon 
Signed-off-by: Daniel Vetter Signed-off-by: Daniel Vetter 

---
  include/uapi/drm/drm_mode.h | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
index 09d72966899a..83cd1636b9be 100644
--- a/include/uapi/drm/drm_mode.h
+++ b/include/uapi/drm/drm_mode.h
@@ -621,7 +621,8 @@ struct drm_color_ctm {
  
  struct drm_color_lut {

/*
-* Data is U0.16 fixed point format.
+* Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
+* 0x == 1.0.
 */
__u16 red;
__u16 green;



Thanks, that was the intention when it was introduced.


Acked-by: Lionel Landwerlin 

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

Re: [Intel-gfx] [v2 0/2] Fixed GC MAX register programming for gamma luts

2019-03-29 Thread Lionel Landwerlin

On 29/03/2019 14:29, Uma Shankar wrote:

Register offsets used to program GC max were not correct. This series
fixes the same, also limits the values to accurately clamp at 1.0.
Also added support to program EXT2 GC Max needed for values from 3.0
to 7.0. Limiting it again to 1.0 due to ABI limitations.

v2: Addressed Ville's review comments.

Uma Shankar (2):
   drm/i915: Fix GCMAX color register programming
   drm/i915: Program EXT2 GC MAX registers

  drivers/gpu/drm/i915/i915_reg.h|  1 +
  drivers/gpu/drm/i915/intel_color.c | 44 --
  2 files changed, 34 insertions(+), 11 deletions(-)

Curious about whether that fixed some of the issues you were seeing with 
the igt tests? :)



-Lionel

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

Re: [Intel-gfx] [PATCH] drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Ville Syrjälä
On Fri, Mar 29, 2019 at 10:20:27AM +0100, Daniel Vetter wrote:
> Interpreting it as a 0.16 fixed point means we can't accurately
> represent 1.0. Which is one of the values we really should be able to
> represent.
> 
> Since most (all?) luts have lower precision this will only affect
> rounding of 0x.
> 
> Cc: Uma Shankar 
> Cc: Ville Syrjälä 
> Cc: Shashank Sharma 
> Cc: "Kumar, Kiran S" 
> Cc: Kausal Malladi 
> Cc: Lionel Landwerlin 
> Cc: Matt Roper 
> Cc: Rob Bradford 
> Cc: Daniel Stone 
> Cc: Stefan Schake 
> Cc: Eric Anholt 
> Cc: Maarten Lankhorst 
> Cc: Harry Wentland 
> Cc: Leo Li 
> Cc: amd-...@lists.freedesktop.org
> Cc: James (Qian) Wang 
> Cc: Liviu Dudau 
> Cc: Mali DP Maintainers 
> Cc: CK Hu 
> Cc: Philipp Zabel 
> Cc: Yannick Fertre 
> Cc: Philippe Cornu 
> Cc: Benjamin Gaignard 
> Cc: Vincent Abriou 
> Cc: Tomi Valkeinen 
> Cc: Boris Brezillon 
> Signed-off-by: Daniel Vetter Signed-off-by: Daniel 
> Vetter 
> ---
>  include/uapi/drm/drm_mode.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index 09d72966899a..83cd1636b9be 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -621,7 +621,8 @@ struct drm_color_ctm {
>  
>  struct drm_color_lut {
>   /*
> -  * Data is U0.16 fixed point format.
> +  * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
> +  * 0x == 1.0.
>*/

Reviewed-by: Ville Syrjälä 

>   __u16 red;
>   __u16 green;
> -- 
> 2.20.1

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Fixed GC MAX register programming for gamma luts (rev2)

2019-03-29 Thread Patchwork
== Series Details ==

Series: Fixed GC MAX register programming for gamma luts (rev2)
URL   : https://patchwork.freedesktop.org/series/58734/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
88164253880f drm/i915: Fix GCMAX color register programming
cad25ef86aee drm/i915: Program EXT2 GC MAX registers
-:24: WARNING:LONG_LINE: line over 100 characters
#24: FILE: drivers/gpu/drm/i915/i915_reg.h:10147:
+#define PREC_PAL_EXT2_GC_MAX(pipe, i)  _MMIO(_PIPE(pipe, 
_PAL_PREC_EXT2_GC_MAX_A, _PAL_PREC_EXT2_GC_MAX_B) + (i) * 4)

total: 0 errors, 1 warnings, 0 checks, 41 lines checked

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

Re: [Intel-gfx] [v2 0/2] Fixed GC MAX register programming for gamma luts

2019-03-29 Thread Shankar, Uma


>-Original Message-
>From: Landwerlin, Lionel G
>Sent: Friday, March 29, 2019 8:00 PM
>To: Shankar, Uma ; intel-gfx@lists.freedesktop.org
>Cc: Syrjala, Ville ; Lankhorst, Maarten
>
>Subject: Re: [Intel-gfx] [v2 0/2] Fixed GC MAX register programming for gamma 
>luts
>
>On 29/03/2019 14:29, Uma Shankar wrote:
>> Register offsets used to program GC max were not correct. This series
>> fixes the same, also limits the values to accurately clamp at 1.0.
>> Also added support to program EXT2 GC Max needed for values from 3.0
>> to 7.0. Limiting it again to 1.0 due to ABI limitations.
>>
>> v2: Addressed Ville's review comments.
>>
>> Uma Shankar (2):
>>drm/i915: Fix GCMAX color register programming
>>drm/i915: Program EXT2 GC MAX registers
>>
>>   drivers/gpu/drm/i915/i915_reg.h|  1 +
>>   drivers/gpu/drm/i915/intel_color.c | 44 
>> --
>>   2 files changed, 34 insertions(+), 11 deletions(-)
>>
>Curious about whether that fixed some of the issues you were seeing with the 
>igt
>tests? :)

Unfortunately No Lionel,  the test results are still the same :(

>
>
>-Lionel

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

[Intel-gfx] ✓ Fi.CI.BAT: success for Fixed GC MAX register programming for gamma luts (rev2)

2019-03-29 Thread Patchwork
== Series Details ==

Series: Fixed GC MAX register programming for gamma luts (rev2)
URL   : https://patchwork.freedesktop.org/series/58734/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5837 -> Patchwork_12630


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58734/revisions/2/mbox/

Known issues


  Here are the changes found in Patchwork_12630 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@amdgpu/amd_basic@cs-compute:
- fi-kbl-8809g:   NOTRUN -> FAIL [fdo#108094]

  * igt@gem_exec_store@basic-bsd1:
- fi-kbl-r:   NOTRUN -> SKIP [fdo#109271] +41

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-blb-e6850:   PASS -> INCOMPLETE [fdo#107718]

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  PASS -> DMESG-FAIL [fdo#110235 ]

  * igt@i915_selftest@live_uncore:
- fi-skl-gvtdvm:  PASS -> DMESG-FAIL [fdo#110210]

  * igt@kms_chamelium@vga-edid-read:
- fi-hsw-4770r:   NOTRUN -> SKIP [fdo#109271] +45

  
 Possible fixes 

  * igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g:   DMESG-WARN [fdo#108965] -> PASS

  * igt@i915_selftest@live_uncore:
- fi-ivb-3770:DMESG-FAIL [fdo#110210] -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +2

  * igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: FAIL [fdo#103182] -> PASS +1

  
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
  [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#110210]: https://bugs.freedesktop.org/show_bug.cgi?id=110210
  [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 


Participating hosts (46 -> 40)
--

  Additional (2): fi-hsw-4770r fi-kbl-r 
  Missing(8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-icl-u2 fi-bwr-2160 fi-bsw-cyan fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5837 -> Patchwork_12630

  CI_DRM_5837: 1a35af6fa0d612425e325024cbac10e6fa9a9cd5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4912: 66deae8b6fa69540f069d6551cd22013f5343948 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12630: cad25ef86aeec8f53dca8f9267402a8cf7ee705f @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

cad25ef86aee drm/i915: Program EXT2 GC MAX registers
88164253880f drm/i915: Fix GCMAX color register programming

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12630/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] linux-next: Tree for Mar 29 (i915, no ACPI)

2019-03-29 Thread Randy Dunlap
On 3/28/19 8:18 PM, Stephen Rothwell wrote:
> Hi all,
> 
> Changes since 20190328:
> 
> The pidfd tree lost its build failures.
> 

on x86_64, when # CONFIG_ACPI is not set/enabled:

ld: drivers/gpu/drm/i915/intel_panel.o: in function 
`intel_backlight_device_register':
intel_panel.c:(.text+0x2c49): undefined reference to `backlight_device_register'
ld: drivers/gpu/drm/i915/intel_panel.o: in function 
`intel_backlight_device_unregister':
intel_panel.c:(.text+0x2d01): undefined reference to 
`backlight_device_unregister'



Full randconfig file is attached.

-- 
~Randy
#
# Automatically generated file; DO NOT EDIT.
# Linux/x86_64 5.1.0-rc2 Kernel Configuration
#

#
# Compiler: gcc (SUSE Linux) 4.8.5
#
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=40805
CONFIG_CLANG_VERSION=0
CONFIG_CC_HAS_ASM_GOTO=y
CONFIG_CC_HAS_WARN_MAYBE_UNINITIALIZED=y
CONFIG_CC_DISABLE_WARN_MAYBE_UNINITIALIZED=y
CONFIG_IRQ_WORK=y
CONFIG_BUILDTIME_EXTABLE_SORT=y
CONFIG_THREAD_INFO_IN_TASK=y

#
# General setup
#
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
# CONFIG_COMPILE_TEST is not set
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_BUILD_SALT=""
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_BZIP2=y
CONFIG_HAVE_KERNEL_LZMA=y
CONFIG_HAVE_KERNEL_XZ=y
CONFIG_HAVE_KERNEL_LZO=y
CONFIG_HAVE_KERNEL_LZ4=y
CONFIG_KERNEL_GZIP=y
# CONFIG_KERNEL_BZIP2 is not set
# CONFIG_KERNEL_LZMA is not set
# CONFIG_KERNEL_XZ is not set
# CONFIG_KERNEL_LZO is not set
# CONFIG_KERNEL_LZ4 is not set
CONFIG_DEFAULT_HOSTNAME="(none)"
CONFIG_SYSVIPC=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_CROSS_MEMORY_ATTACH is not set
CONFIG_USELIB=y
# CONFIG_AUDIT is not set
CONFIG_HAVE_ARCH_AUDITSYSCALL=y

#
# IRQ subsystem
#
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_GENERIC_IRQ_SHOW=y
CONFIG_GENERIC_IRQ_CHIP=y
CONFIG_IRQ_DOMAIN=y
CONFIG_IRQ_DOMAIN_HIERARCHY=y
CONFIG_GENERIC_MSI_IRQ=y
CONFIG_GENERIC_MSI_IRQ_DOMAIN=y
CONFIG_GENERIC_IRQ_MATRIX_ALLOCATOR=y
CONFIG_GENERIC_IRQ_RESERVATION_MODE=y
CONFIG_IRQ_FORCED_THREADING=y
CONFIG_SPARSE_IRQ=y
# CONFIG_GENERIC_IRQ_DEBUGFS is not set
CONFIG_CLOCKSOURCE_WATCHDOG=y
CONFIG_ARCH_CLOCKSOURCE_DATA=y
CONFIG_ARCH_CLOCKSOURCE_INIT=y
CONFIG_CLOCKSOURCE_VALIDATE_LAST_CYCLE=y
CONFIG_GENERIC_TIME_VSYSCALL=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y
CONFIG_GENERIC_CLOCKEVENTS_MIN_ADJUST=y
CONFIG_GENERIC_CMOS_UPDATE=y

#
# Timers subsystem
#
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y
# CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y

#
# CPU/Task time and stats accounting
#
CONFIG_TICK_CPU_ACCOUNTING=y
# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
# CONFIG_IRQ_TIME_ACCOUNTING is not set
# CONFIG_PSI is not set

#
# RCU Subsystem
#
CONFIG_PREEMPT_RCU=y
# CONFIG_RCU_EXPERT is not set
CONFIG_SRCU=y
CONFIG_TREE_SRCU=y
CONFIG_TASKS_RCU=y
CONFIG_RCU_STALL_COMMON=y
CONFIG_RCU_NEED_SEGCBLIST=y
CONFIG_BUILD_BIN2C=y
CONFIG_IKCONFIG=m
CONFIG_LOG_BUF_SHIFT=17
CONFIG_PRINTK_SAFE_LOG_BUF_SHIFT=13
CONFIG_HAVE_UNSTABLE_SCHED_CLOCK=y
CONFIG_ARCH_SUPPORTS_NUMA_BALANCING=y
CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH=y
CONFIG_ARCH_SUPPORTS_INT128=y
CONFIG_CGROUPS=y
CONFIG_PAGE_COUNTER=y
CONFIG_MEMCG=y
CONFIG_MEMCG_KMEM=y
CONFIG_CGROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_CFS_BANDWIDTH is not set
CONFIG_RT_GROUP_SCHED=y
CONFIG_CGROUP_PIDS=y
# CONFIG_CGROUP_RDMA is not set
CONFIG_CGROUP_FREEZER=y
# CONFIG_CGROUP_HUGETLB is not set
# CONFIG_CGROUP_DEVICE is not set
CONFIG_CGROUP_CPUACCT=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_BPF=y
# CONFIG_CGROUP_DEBUG is not set
CONFIG_SOCK_CGROUP_DATA=y
CONFIG_CHECKPOINT_RESTORE=y
CONFIG_SCHED_AUTOGROUP=y
# CONFIG_SYSFS_DEPRECATED is not set
CONFIG_RELAY=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE=""
CONFIG_RD_GZIP=y
CONFIG_RD_BZIP2=y
# CONFIG_RD_LZMA is not set
# CONFIG_RD_XZ is not set
# CONFIG_RD_LZO is not set
# CONFIG_RD_LZ4 is not set
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_ANON_INODES=y
CONFIG_SYSCTL_EXCEPTION_TRACE=y
CONFIG_HAVE_PCSPKR_PLATFORM=y
CONFIG_BPF=y
CONFIG_EXPERT=y
# CONFIG_MULTIUSER is not set
# CONFIG_SGETMASK_SYSCALL is not set
CONFIG_SYSFS_SYSCALL=y
CONFIG_FHANDLE=y
CONFIG_POSIX_TIMERS=y
CONFIG_PRINTK=y
CONFIG_PRINTK_NMI=y
CONFIG_BUG=y
CONFIG_PCSPKR_PLATFORM=y
# CONFIG_BASE_FULL is not set
# CONFIG_FUTEX is not set
# CONFIG_EPOLL is not set
CONFIG_SIGNALFD=y
CONFIG_TIMERFD=y
CONFIG_EVENTFD=y
CONFIG_SHMEM=y
# CONFIG_AIO is not set
CONFIG_IO_URING=y
CONFIG_ADVISE_SYSCALLS=y
CONFIG_MEMBARRIER=y
CONFIG_KALLSYMS=y
CONFIG_KALLSYMS_ALL=y
CONFIG_KALLSYMS_BASE_RELATIVE=y
CONFIG_BPF_SYSCALL=y
# CONFIG_USERFAULTFD is not set
CONFIG_ARCH_HAS_MEMBARRIER_SYNC_CORE=y
CONFIG_RSEQ=y
CONFIG_DEBUG_RSEQ=y
CONFIG_EMBEDDED=y
CONFIG_HAVE_PERF_EVENTS=y
CONFIG_PERF_USE_VMALLOC=y
# CONFIG_PC104 is not set

#
# Kernel Performance Events And Counters
#
CONFIG_PERF_EVENTS=y
CONFIG_

Re: [Intel-gfx] [PATCH] drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Matt Roper
On Fri, Mar 29, 2019 at 10:20:27AM +0100, Daniel Vetter wrote:
> Interpreting it as a 0.16 fixed point means we can't accurately
> represent 1.0. Which is one of the values we really should be able to
> represent.
> 
> Since most (all?) luts have lower precision this will only affect
> rounding of 0x.
> 
> Cc: Uma Shankar 
> Cc: Ville Syrjälä 
> Cc: Shashank Sharma 
> Cc: "Kumar, Kiran S" 
> Cc: Kausal Malladi 
> Cc: Lionel Landwerlin 
> Cc: Matt Roper 
> Cc: Rob Bradford 
> Cc: Daniel Stone 
> Cc: Stefan Schake 
> Cc: Eric Anholt 
> Cc: Maarten Lankhorst 
> Cc: Harry Wentland 
> Cc: Leo Li 
> Cc: amd-...@lists.freedesktop.org
> Cc: James (Qian) Wang 
> Cc: Liviu Dudau 
> Cc: Mali DP Maintainers 
> Cc: CK Hu 
> Cc: Philipp Zabel 
> Cc: Yannick Fertre 
> Cc: Philippe Cornu 
> Cc: Benjamin Gaignard 
> Cc: Vincent Abriou 
> Cc: Tomi Valkeinen 
> Cc: Boris Brezillon 
> Signed-off-by: Daniel Vetter Signed-off-by: Daniel 
> Vetter 

Looks like you're missing a newline between your two s-o-b's.  But the
patch is

Reviewed-by: Matt Roper 

> ---
>  include/uapi/drm/drm_mode.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index 09d72966899a..83cd1636b9be 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -621,7 +621,8 @@ struct drm_color_ctm {
>  
>  struct drm_color_lut {
>   /*
> -  * Data is U0.16 fixed point format.
> +  * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
> +  * 0x == 1.0.
>*/
>   __u16 red;
>   __u16 green;
> -- 
> 2.20.1
> 

-- 
Matt Roper
Graphics Software Engineer
IoTG Platform Enabling & Development
Intel Corporation
(916) 356-2795
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Finish the GAMMA_LUT stuff (rev2)

2019-03-29 Thread Patchwork
== Series Details ==

Series: drm/i915: Finish the GAMMA_LUT stuff (rev2)
URL   : https://patchwork.freedesktop.org/series/58698/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5837 -> Patchwork_12631


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://patchwork.freedesktop.org/api/1.0/series/58698/revisions/2/mbox/

Known issues


  Here are the changes found in Patchwork_12631 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@amdgpu/amd_basic@cs-compute:
- fi-kbl-8809g:   NOTRUN -> FAIL [fdo#108094]

  * igt@gem_exec_store@basic-bsd1:
- fi-kbl-r:   NOTRUN -> SKIP [fdo#109271] +41

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  PASS -> DMESG-FAIL [fdo#110235 ]

  * igt@i915_selftest@live_execlists:
- fi-apl-guc: PASS -> INCOMPLETE [fdo#103927] / [fdo#109720]

  * igt@i915_selftest@live_hangcheck:
- fi-skl-iommu:   PASS -> INCOMPLETE [fdo#108602] / [fdo#108744]

  * igt@kms_busy@basic-flip-a:
- fi-gdg-551: PASS -> FAIL [fdo#103182]

  * igt@kms_chamelium@vga-edid-read:
- fi-hsw-4770r:   NOTRUN -> SKIP [fdo#109271] +45

  * igt@kms_pipe_crc_basic@read-crc-pipe-a:
- fi-byt-clapper: PASS -> FAIL [fdo#107362]

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-blb-e6850:   PASS -> INCOMPLETE [fdo#107718]

  * igt@runner@aborted:
- fi-skl-iommu:   NOTRUN -> FAIL [fdo#104108] / [fdo#108602]
- fi-apl-guc: NOTRUN -> FAIL [fdo#108622] / [fdo#109720]

  
 Possible fixes 

  * igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g:   DMESG-WARN [fdo#108965] -> PASS

  * igt@i915_selftest@live_uncore:
- fi-ivb-3770:DMESG-FAIL [fdo#110210] -> PASS

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- fi-byt-clapper: FAIL [fdo#103191] / [fdo#107362] -> PASS +2

  * igt@prime_vgem@basic-fence-flip:
- fi-gdg-551: FAIL [fdo#103182] -> PASS

  
  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104108]: https://bugs.freedesktop.org/show_bug.cgi?id=104108
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108094]: https://bugs.freedesktop.org/show_bug.cgi?id=108094
  [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602
  [fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622
  [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744
  [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720
  [fdo#110210]: https://bugs.freedesktop.org/show_bug.cgi?id=110210
  [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 


Participating hosts (46 -> 40)
--

  Additional (2): fi-hsw-4770r fi-kbl-r 
  Missing(8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-icl-u2 fi-bsw-cyan fi-byt-n2820 fi-bdw-samus 


Build changes
-

* Linux: CI_DRM_5837 -> Patchwork_12631

  CI_DRM_5837: 1a35af6fa0d612425e325024cbac10e6fa9a9cd5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4912: 66deae8b6fa69540f069d6551cd22013f5343948 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_12631: b44543b6b7646b03ab01690656847bcb18b5e033 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

b44543b6b764 drm/i915: Expose the legacy LUT via the GAMMA_LUT/GAMMA_LUT_SIZE 
props on gen2/3
07bfd29fc7f8 drm/i915: Add "10.6" LUT mode for i965+
5c7693fa7681 drm/i915: Add 10bit LUT for ilk/snb
60c673dde0b6 drm/i915: Implement split/10bit gamma for ivb/hsw
f4ad2738a70b drm/i915: Don't use split gamma when we don't have to
f87bd1be9aa8 drm/i915: Extract ilk_lut_10()

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_12631/
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v4 4/8] drm/i915: vgpu context submission pv optimization

2019-03-29 Thread Chris Wilson
Quoting Xiaolin Zhang (2019-03-29 13:32:40)
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 2f78829..28e8ee0 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -37,6 +37,7 @@
>  #include "i915_drv.h"
>  #include "i915_trace.h"
>  #include "intel_drv.h"
> +#include "i915_vgpu.h"
>  
>  /**
>   * DOC: interrupt handling
> @@ -1470,6 +1471,7 @@ gen8_cs_irq_handler(struct intel_engine_cs *engine, u32 
> iir)
> if (iir & GT_RENDER_USER_INTERRUPT) {
> intel_engine_breadcrumbs_irq(engine);
> tasklet |= USES_GUC_SUBMISSION(engine->i915);
> +   tasklet |= USES_PV_SUBMISSION(engine->i915);

We should move this to an engine->flag.

> }
>  
> if (tasklet)
> +static void vgpu_pv_set_default_submission(struct intel_engine_cs *engine)
> +{
> +   /*
> +* We inherit a bunch of functions from execlists that we'd like
> +* to keep using:
> +*
> +*engine->submit_request = execlists_submit_request;
> +*engine->cancel_requests = execlists_cancel_requests;
> +*engine->schedule = execlists_schedule;
> +*
> +* But we need to override the actual submission backend in order
> +* to talk to the GVT with PV notification message.
> +*/
> +   intel_execlists_set_default_submission(engine);
> +
> +   engine->execlists.tasklet.func = vgpu_pv_submission_tasklet;

You need to pin the breadcrumbs irq, or it will not fire on every
request.

I'd push for this to live in intel_pv_submission.c or
intel_vgpu_submission.c

> @@ -401,6 +551,12 @@ void intel_vgpu_config_pv_caps(struct drm_i915_private 
> *dev_priv,
> ppgtt->vm.insert_entries = gen8_ppgtt_insert_4lvl_pv;
> ppgtt->vm.clear_range = gen8_ppgtt_clear_4lvl_pv;
> }
> +
> +   if (cap == PV_SUBMISSION) {
> +   engine = (struct intel_engine_cs *)data;
> +   engine->set_default_submission = 
> vgpu_pv_set_default_submission;
> +   engine->set_default_submission(engine);
> +   }
>  }

> diff --git a/drivers/gpu/drm/i915/intel_lrc.c 
> b/drivers/gpu/drm/i915/intel_lrc.c
> index c1b9780..0a66714 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -2352,6 +2352,9 @@ logical_ring_default_vfuncs(struct intel_engine_cs 
> *engine)
>  */
> }
> engine->emit_bb_start = gen8_emit_bb_start;
> +
> +   if (intel_vgpu_active(engine->i915))
> +   intel_vgpu_config_pv_caps(engine->i915, PV_SUBMISSION, 
> engine);

That pair is ugly. Should clean up the engine initialisation so that it
doesn't involve placing a chunk of code in a foreign class.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] [PATCH] drm/i915: Move the decision to use the breadcrumb tasklet to the backend

2019-03-29 Thread Chris Wilson
Use the engine->flags to store whether we want to kick the submission
tasklet on receipt of a breadcrumb interrupt, so that this decision can
be made by the submission backend and not dependent on a limited feature
test within the interrupt handler. This should make it easier to adapt
different submission backends.

Signed-off-by: Chris Wilson 
Cc: Michal Wajdeczko 
Cc: Xiaolin Zhang 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/i915_irq.c | 2 +-
 drivers/gpu/drm/i915/intel_engine_types.h   | 7 +++
 drivers/gpu/drm/i915/intel_guc_submission.c | 2 ++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 455b2bf691b5..aa107a78cb36 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1470,7 +1470,7 @@ gen8_cs_irq_handler(struct intel_engine_cs *engine, u32 
iir)
 
if (iir & GT_RENDER_USER_INTERRUPT) {
intel_engine_breadcrumbs_irq(engine);
-   tasklet |= USES_GUC_SUBMISSION(engine->i915);
+   tasklet |= intel_engine_needs_breadcrumb_tasklet(engine);
}
 
if (tasklet)
diff --git a/drivers/gpu/drm/i915/intel_engine_types.h 
b/drivers/gpu/drm/i915/intel_engine_types.h
index b3249bf6a65f..5c3f567a7a20 100644
--- a/drivers/gpu/drm/i915/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/intel_engine_types.h
@@ -425,6 +425,7 @@ struct intel_engine_cs {
 #define I915_ENGINE_SUPPORTS_STATS   BIT(1)
 #define I915_ENGINE_HAS_PREEMPTION   BIT(2)
 #define I915_ENGINE_HAS_SEMAPHORES   BIT(3)
+#define I915_ENGINE_NEEDS_BREADCRUMB_TASKLET BIT(4)
unsigned int flags;
 
/*
@@ -508,6 +509,12 @@ intel_engine_has_semaphores(const struct intel_engine_cs 
*engine)
return engine->flags & I915_ENGINE_HAS_SEMAPHORES;
 }
 
+static inline bool
+intel_engine_needs_breadcrumb_tasklet(const struct intel_engine_cs *engine)
+{
+   return engine->flags & I915_ENGINE_NEEDS_BREADCRUMB_TASKLET;
+}
+
 #define instdone_slice_mask(dev_priv__) \
(IS_GEN(dev_priv__, 7) ? \
 1 : RUNTIME_INFO(dev_priv__)->sseu.slice_mask)
diff --git a/drivers/gpu/drm/i915/intel_guc_submission.c 
b/drivers/gpu/drm/i915/intel_guc_submission.c
index c4ad73980988..c5896d47 100644
--- a/drivers/gpu/drm/i915/intel_guc_submission.c
+++ b/drivers/gpu/drm/i915/intel_guc_submission.c
@@ -1262,10 +1262,12 @@ static void guc_interrupts_release(struct 
drm_i915_private *dev_priv)
 static void guc_submission_park(struct intel_engine_cs *engine)
 {
intel_engine_unpin_breadcrumbs_irq(engine);
+   engine->flags &= ~I915_ENGINE_NEEDS_BREADCRUMB_TASKLET;
 }
 
 static void guc_submission_unpark(struct intel_engine_cs *engine)
 {
+   engine->flags |= I915_ENGINE_NEEDS_BREADCRUMB_TASKLET;
intel_engine_pin_breadcrumbs_irq(engine);
 }
 
-- 
2.20.1

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

Re: [Intel-gfx] [PATCH] drm/gamma: Clarify gamma lut uapi

2019-03-29 Thread Philippe CORNU


On 3/29/19 10:20 AM, Daniel Vetter wrote:
> Interpreting it as a 0.16 fixed point means we can't accurately
> represent 1.0. Which is one of the values we really should be able to
> represent.
> 
> Since most (all?) luts have lower precision this will only affect
> rounding of 0x.
> 
> Cc: Uma Shankar 
> Cc: Ville Syrjälä 
> Cc: Shashank Sharma 
> Cc: "Kumar, Kiran S" 
> Cc: Kausal Malladi 
> Cc: Lionel Landwerlin 
> Cc: Matt Roper 
> Cc: Rob Bradford 
> Cc: Daniel Stone 
> Cc: Stefan Schake 
> Cc: Eric Anholt 
> Cc: Maarten Lankhorst 
> Cc: Harry Wentland 
> Cc: Leo Li 
> Cc: amd-...@lists.freedesktop.org
> Cc: James (Qian) Wang 
> Cc: Liviu Dudau 
> Cc: Mali DP Maintainers 
> Cc: CK Hu 
> Cc: Philipp Zabel 
> Cc: Yannick Fertre 
> Cc: Philippe Cornu 
> Cc: Benjamin Gaignard 
> Cc: Vincent Abriou 
> Cc: Tomi Valkeinen 
> Cc: Boris Brezillon 
> Signed-off-by: Daniel Vetter Signed-off-by: Daniel 
> Vetter 
> ---
>   include/uapi/drm/drm_mode.h | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h
> index 09d72966899a..83cd1636b9be 100644
> --- a/include/uapi/drm/drm_mode.h
> +++ b/include/uapi/drm/drm_mode.h
> @@ -621,7 +621,8 @@ struct drm_color_ctm {
>   
>   struct drm_color_lut {
>   /*
> -  * Data is U0.16 fixed point format.
> +  * Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
> +  * 0x == 1.0.

for stm,
Reviewed-by: Philippe Cornu 
Many thanks
Philippe :-)

>*/
>   __u16 red;
>   __u16 green;
> 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v4 0/8] i915 vgpu PV to improve vgpu performance

2019-03-29 Thread Chris Wilson
Quoting Xiaolin Zhang (2019-03-29 13:32:36)
> To improve vgpu performance, it could implement some PV optimization
> such as to reduce the mmio access trap numbers or eliminate certain piece
> of HW emulation within guest driver to reduce vm exit/vm enter cost.

Where's the CI for this patchset? The lack of interrupts to drive
submission should have shown up, and if not, we need some testcases to
make sure it doesn't happen again. Everytime I see a gvt patch, I ask if
we can get some coverage in intel-gfx-ci :)
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  1   2   >