• Even Xu's avatar
    HID: Intel-ish-hid: Ishtp: Fix sensor reads after ACPI S3 suspend · bdab6c94
    Even Xu authored
    After legacy suspend/resume via ACPI S3, sensor read operation fails
    with timeout. Also, it will cause delay in resume operation as there
    will be retries on failure.
    
    This is caused by commit f645a90e ("HID: intel-ish-hid:
    ishtp-hid-client: use helper functions for connection"), which used
    helper functions to simplify connect, reset and disconnect process.
    Also avoid freeing and allocating client buffers again during reconnect
    process.
    
    But there is a case, when ISH firmware resets after ACPI S3 suspend,
    ishtp bus driver frees client buffers. Since there is no realloc again
    during reconnect, there are no client buffers available to send connection
    requests to the firmware. Without successful connection to the firmware,
    subsequent sensor reads will timeout.
    
    To address this issue, ishtp bus driver does not free client buffers on
    warm reset after S3 resume. Simply add the buffers from the read list
    to free list of buffers.
    
    Fixes: f645a90e ("HID: intel-ish-hid: ishtp-hid-client: use helper functions for connection")
    Closes: https://bugzilla.kernel.org/show_bug.cgi?id=218442Signed-off-by: default avatarEven Xu <even.xu@intel.com>
    Acked-by: default avatarSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.com>
    bdab6c94
bus.c 23.5 KB