linux/drivers/char/tpm
Rafael J. Wysocki f759546498 ACPI / TPM: Fix resume regression on Chromebooks
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 1569a4c4ce (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: 1569a4c4ce (ACPI / TPM: detect PPI features by checking availability of _DSM functions)
References: https://bugzilla.kernel.org/show_bug.cgi?id=74021
Reported-by: James Duley <jagduley@gmail.com>
Reported-by: Phillip Dixon <phil@dixon.gen.nz>
Tested-by: Brandon Casey <drafnel@gmail.com>
Cc: 3.14+ <stable@vger.kernel.org> # 3.14+
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2014-05-12 01:13:28 +02:00
..
Kconfig Kconfig: rename HAS_IOPORT to HAS_IOPORT_MAP 2014-04-07 16:36:11 -07:00
Makefile tpm: Move sysfs functions from tpm-interface to tpm-sysfs 2014-01-06 14:37:24 +01:00
tpm_acpi.c ACPI: Clean up inclusions of ACPI header files 2013-12-07 01:03:14 +01:00
tpm_atmel.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_atmel.h tpmdd maintainers 2007-08-22 19:52:44 -07:00
tpm_eventlog.c tpm: Merge the tpm-bios module with tpm.o 2013-10-22 19:43:01 +02:00
tpm_eventlog.h drivers/char/tpm: Add securityfs support for event log 2012-08-22 16:22:47 -05:00
tpm_i2c_atmel.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_i2c_infineon.c drivers/char: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
tpm_i2c_nuvoton.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_i2c_stm_st33.c drivers/char: delete non-required instances of include <linux/init.h> 2014-02-07 15:10:19 -08:00
tpm_i2c_stm_st33.h tpm_i2c_stm_st33: fix oops when i2c client is unavailable 2013-02-05 09:38:24 -06:00
tpm_ibmvtpm.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_ibmvtpm.h drivers/char/tpm: remove tasklet and cleanup 2012-11-01 15:23:14 -05:00
tpm_infineon.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_nsc.c tpm: Create a tpm_class_ops structure and use it in the drivers 2014-01-06 14:37:25 +01:00
tpm_of.c drivers/char/tpm: Add securityfs support for event log 2012-08-22 16:22:47 -05:00
tpm_ppi.c ACPI / TPM: Fix resume regression on Chromebooks 2014-05-12 01:13:28 +02:00
tpm_tis.c tpm: tpm_tis: Fix compile problems with CONFIG_PM_SLEEP/CONFIG_PNP 2014-01-06 14:37:25 +01:00
tpm-dev.c tpm: Make tpm-dev allocate a per-file structure 2014-01-06 14:37:25 +01:00
tpm-interface.c tpm: Use the ops structure instead of a copy in tpm_vendor_specific 2014-01-06 14:37:25 +01:00
tpm-sysfs.c tpm/tpm-sysfs: active_show() can be static 2014-01-06 14:37:25 +01:00
tpm.h tpm: Make tpm-dev allocate a per-file structure 2014-01-06 14:37:25 +01:00
xen-tpmfront.c Features: 2014-01-22 22:00:18 -08:00