• Jarkko Nikula's avatar
    i2c: i801: Fix interrupt storm from SMB_ALERT signal · 03a976c9
    Jarkko Nikula authored
    Currently interrupt storm will occur from i2c-i801 after first
    transaction if SMB_ALERT signal is enabled and ever asserted. It is
    enough if the signal is asserted once even before the driver is loaded
    and does not recover because that interrupt is not acknowledged.
    
    This fix aims to fix it by two ways:
    - Add acknowledging for the SMB_ALERT interrupt status
    - Disable the SMB_ALERT interrupt on platforms where possible since the
      driver currently does not make use for it
    
    Acknowledging resets the SMB_ALERT interrupt status on all platforms and
    also should help to avoid interrupt storm on older platforms where the
    SMB_ALERT interrupt disabling is not available.
    
    For simplicity this fix reuses the host notify feature for disabling and
    restoring original register value.
    
    Link: https://bugzilla.kernel.org/show_bug.cgi?id=177311
    Reported-by: ck+kernelbugzilla@bl4ckb0x.de
    Reported-by: stephane.poignant@protonmail.com
    Signed-off-by: default avatarJarkko Nikula <jarkko.nikula@linux.intel.com>
    Reviewed-by: default avatarJean Delvare <jdelvare@suse.de>
    Tested-by: default avatarJean Delvare <jdelvare@suse.de>
    Signed-off-by: default avatarWolfram Sang <wsa@kernel.org>
    03a976c9
i2c-i801.c 58.6 KB