• Rafael J. Wysocki's avatar
    ACPI / TPM: Fix resume regression on Chromebooks · f7595464
    Rafael J. Wysocki authored
    Chromebooks (at least Acer C720 and Pixel) implement an ACPI object
    for TPM, but don't implement the _DSM method to support PPI.  As
    a result, the TPM driver fails to load on those machines after
    commit 1569a4c4 (ACPI / TPM: detect PPI features by checking
    availability of _DSM functions) which causes them to fail to
    resume from system suspend, becuase they require the TPM hardware
    to be put into the right state during resume and the TPM driver
    is necessary for that.
    
    Fix the problem by making tpm_add_ppi() return 0 when tpm_ppi_handle
    is still NULL after walking the ACPI namespace in search for the PPI
    _DSM, which allows the TPM driver to load and operate the hardware
    (during system resume in particular), but avoid creating the PPI
    sysfs group in that case.
    
    This change is based on a prototype patch from Jiang Liu.
    
    Fixes: 1569a4c4 (ACPI / TPM: detect PPI features by checking availability of _DSM functions)
    References: https://bugzilla.kernel.org/show_bug.cgi?id=74021Reported-by: default avatarJames Duley <jagduley@gmail.com>
    Reported-by: default avatarPhillip Dixon <phil@dixon.gen.nz>
    Tested-by: default avatarBrandon Casey <drafnel@gmail.com>
    Cc: 3.14+ <stable@vger.kernel.org> # 3.14+
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    f7595464
tpm_ppi.c 8.89 KB