Skip to content

Commit b1c1b98

Browse files
valentindavidjarkkojs
authored andcommitted
tpm: Do not remap from ACPI resources again for Pluton TPM
For Pluton TPM devices, it was assumed that there was no ACPI memory regions. This is not true for ASUS ROG Ally. ACPI advertises 0xfd500000-0xfd5fffff. Since remapping is already done in `crb_map_pluton`, remapping again in `crb_map_io` causes EBUSY error: [ 3.510453] tpm_crb MSFT0101:00: can't request region for resource [mem 0xfd500000-0xfd5fffff] [ 3.510463] tpm_crb: probe of MSFT0101:00 failed with error -16 Cc: stable@vger.kernel.org # v6.3+ Fixes: 4d27328 ("tpm_crb: Add support for CRB devices based on Pluton") Signed-off-by: Valentin David <valentin.david@gmail.com> Reviewed-by: Jarkko Sakkinen <jarkko@kernel.org> Signed-off-by: Jarkko Sakkinen <jarkko@kernel.org>
1 parent bc825e8 commit b1c1b98

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

drivers/char/tpm/tpm_crb.c

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -563,15 +563,18 @@ static int crb_map_io(struct acpi_device *device, struct crb_priv *priv,
563563
u32 rsp_size;
564564
int ret;
565565

566-
INIT_LIST_HEAD(&acpi_resource_list);
567-
ret = acpi_dev_get_resources(device, &acpi_resource_list,
568-
crb_check_resource, iores_array);
569-
if (ret < 0)
570-
return ret;
571-
acpi_dev_free_resource_list(&acpi_resource_list);
572-
573-
/* Pluton doesn't appear to define ACPI memory regions */
566+
/*
567+
* Pluton sometimes does not define ACPI memory regions.
568+
* Mapping is then done in crb_map_pluton
569+
*/
574570
if (priv->sm != ACPI_TPM2_COMMAND_BUFFER_WITH_PLUTON) {
571+
INIT_LIST_HEAD(&acpi_resource_list);
572+
ret = acpi_dev_get_resources(device, &acpi_resource_list,
573+
crb_check_resource, iores_array);
574+
if (ret < 0)
575+
return ret;
576+
acpi_dev_free_resource_list(&acpi_resource_list);
577+
575578
if (resource_type(iores_array) != IORESOURCE_MEM) {
576579
dev_err(dev, FW_BUG "TPM2 ACPI table does not define a memory resource\n");
577580
return -EINVAL;

0 commit comments

Comments
 (0)