mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 20:42:29 -04:00
drm/i915/gmbus: fix spurious timeout on 512-byte burst reads
When reading exactly 512 bytes with burst read enabled, the extra_byte_added path breaks out of the inner do-while without decrementing len. The outer while(len) then re-enters and gmbus_wait() times out since all data has been delivered. Decrement len before the break so the outer loop terminates correctly. Fixes:d5dc0f43f2("drm/i915/gmbus: Enable burst read") Signed-off-by: Samasth Norway Ananda <samasth.norway.ananda@oracle.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Link: https://patch.msgid.link/20260316231920.135438-2-samasth.norway.ananda@oracle.com Signed-off-by: Jani Nikula <jani.nikula@intel.com> (cherry picked from commit4ab0f09ee7) Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
This commit is contained in:
committed by
Joonas Lahtinen
parent
c369299895
commit
08441f10f4
@@ -496,8 +496,10 @@ gmbus_xfer_read_chunk(struct intel_display *display,
|
||||
|
||||
val = intel_de_read_fw(display, GMBUS3(display));
|
||||
do {
|
||||
if (extra_byte_added && len == 1)
|
||||
if (extra_byte_added && len == 1) {
|
||||
len--;
|
||||
break;
|
||||
}
|
||||
|
||||
*buf++ = val & 0xff;
|
||||
val >>= 8;
|
||||
|
||||
Reference in New Issue
Block a user