From ac61248974b43862da1c55bb30c5cf83521e6db5 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 4 Dec 2017 14:59:32 +0100 Subject: [PATCH] 3.18-stable patches added patches: drm-i915-don-t-try-indexed-reads-to-alternate-slave-addresses.patch drm-i915-prevent-zero-length-index-write.patch --- ...d-reads-to-alternate-slave-addresses.patch | 42 ++++++++++++++++++ ...i915-prevent-zero-length-index-write.patch | 44 +++++++++++++++++++ queue-3.18/series | 2 + 3 files changed, 88 insertions(+) create mode 100644 queue-3.18/drm-i915-don-t-try-indexed-reads-to-alternate-slave-addresses.patch create mode 100644 queue-3.18/drm-i915-prevent-zero-length-index-write.patch diff --git a/queue-3.18/drm-i915-don-t-try-indexed-reads-to-alternate-slave-addresses.patch b/queue-3.18/drm-i915-don-t-try-indexed-reads-to-alternate-slave-addresses.patch new file mode 100644 index 00000000000..580524357b8 --- /dev/null +++ b/queue-3.18/drm-i915-don-t-try-indexed-reads-to-alternate-slave-addresses.patch @@ -0,0 +1,42 @@ +From ae5c631e605a452a5a0e73205a92810c01ed954b Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= +Date: Thu, 23 Nov 2017 21:41:56 +0200 +Subject: drm/i915: Don't try indexed reads to alternate slave addresses +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Ville Syrjälä + +commit ae5c631e605a452a5a0e73205a92810c01ed954b upstream. + +We can only specify the one slave address to indexed reads/writes. +Make sure the messages we check are destined to the same slave +address before deciding to do an indexed transfer. + +Cc: Daniel Kurtz +Cc: Chris Wilson +Cc: Daniel Vetter +Cc: Sean Paul +Fixes: 56f9eac05489 ("drm/i915/intel_i2c: use INDEX cycles for i2c read transactions") +Signed-off-by: Ville Syrjälä +Link: https://patchwork.freedesktop.org/patch/msgid/20171123194157.25367-2-ville.syrjala@linux.intel.com +Reviewed-by: Chris Wilson +(cherry picked from commit c4deb62d7821672265b87952bcd1c808f3bf3e8f) +Signed-off-by: Joonas Lahtinen +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_i2c.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/gpu/drm/i915/intel_i2c.c ++++ b/drivers/gpu/drm/i915/intel_i2c.c +@@ -394,6 +394,7 @@ static bool + gmbus_is_index_read(struct i2c_msg *msgs, int i, int num) + { + return (i + 1 < num && ++ msgs[i].addr == msgs[i + 1].addr && + !(msgs[i].flags & I2C_M_RD) && msgs[i].len <= 2 && + (msgs[i + 1].flags & I2C_M_RD)); + } diff --git a/queue-3.18/drm-i915-prevent-zero-length-index-write.patch b/queue-3.18/drm-i915-prevent-zero-length-index-write.patch new file mode 100644 index 00000000000..91b7183f072 --- /dev/null +++ b/queue-3.18/drm-i915-prevent-zero-length-index-write.patch @@ -0,0 +1,44 @@ +From 56350fb8978bbf4aafe08f21234e161dd128b417 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ville=20Syrj=C3=A4l=C3=A4?= +Date: Thu, 23 Nov 2017 21:41:57 +0200 +Subject: drm/i915: Prevent zero length "index" write +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Ville Syrjälä + +commit 56350fb8978bbf4aafe08f21234e161dd128b417 upstream. + +The hardware always writes one or two bytes in the index portion of +an indexed transfer. Make sure the message we send as the index +doesn't have a zero length. + +Cc: Daniel Kurtz +Cc: Chris Wilson +Cc: Daniel Vetter +Cc: Sean Paul +Fixes: 56f9eac05489 ("drm/i915/intel_i2c: use INDEX cycles for i2c read transactions") +Signed-off-by: Ville Syrjälä +Link: https://patchwork.freedesktop.org/patch/msgid/20171123194157.25367-3-ville.syrjala@linux.intel.com +Reviewed-by: Chris Wilson +(cherry picked from commit bb9e0d4bca50f429152e74a459160b41f3d60fb2) +Signed-off-by: Joonas Lahtinen +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/i915/intel_i2c.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/gpu/drm/i915/intel_i2c.c ++++ b/drivers/gpu/drm/i915/intel_i2c.c +@@ -395,7 +395,8 @@ gmbus_is_index_read(struct i2c_msg *msgs + { + return (i + 1 < num && + msgs[i].addr == msgs[i + 1].addr && +- !(msgs[i].flags & I2C_M_RD) && msgs[i].len <= 2 && ++ !(msgs[i].flags & I2C_M_RD) && ++ (msgs[i].len == 1 || msgs[i].len == 2) && + (msgs[i + 1].flags & I2C_M_RD)); + } + diff --git a/queue-3.18/series b/queue-3.18/series index c2e7778a3ee..b251dd41da0 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -8,3 +8,5 @@ kvm-x86-inject-exceptions-produced-by-x86_decode_insn.patch eeprom-at24-check-at24_read-write-arguments.patch drm-panel-simple-add-missing-panel_simple_unprepare-calls.patch nfs-revalidate-.-etc-correctly-on-open.patch +drm-i915-don-t-try-indexed-reads-to-alternate-slave-addresses.patch +drm-i915-prevent-zero-length-index-write.patch -- 2.47.3