All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
To: tpmdd-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org
Cc: peterhuewe@gmx.de, gregkh@linuxfoundation.org,
	jgunthorpe@obsidianresearch.com, dhowells@redhat.com,
	artem.bityutskiy@linux.intel.com,
	Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>,
	Marcel Selhorst <tpmdd@selhorst.net>
Subject: [PATCH 01/10] tpm, tpm_crb: fix unaligned read of the command buffer address
Date: Fri, 16 Oct 2015 21:40:20 +0300	[thread overview]
Message-ID: <1445020843-9382-2-git-send-email-jarkko.sakkinen@linux.intel.com> (raw)
In-Reply-To: <1445020843-9382-1-git-send-email-jarkko.sakkinen@linux.intel.com>

The command buffer address must be read with exactly two 32-bit reads.
Otherwise, on some HW platforms, it seems that HW will abort the read
operation, which causes CPU to fill the read bytes with 1's. Therefore,
we cannot rely on memcpy_fromio() but must call ioread32() two times
instead.

Also, this matches the PC Client Platform TPM Profile specification,
which defines command buffer address with two 32-bit fields.

Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
---
 drivers/char/tpm/tpm_crb.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
index 1267322..623fc0a 100644
--- a/drivers/char/tpm/tpm_crb.c
+++ b/drivers/char/tpm/tpm_crb.c
@@ -74,7 +74,8 @@ struct crb_control_area {
 	u32 int_enable;
 	u32 int_sts;
 	u32 cmd_size;
-	u64 cmd_pa;
+	u32 cmd_pa_low;
+	u32 cmd_pa_high;
 	u32 rsp_size;
 	u64 rsp_pa;
 } __packed;
@@ -273,8 +274,8 @@ static int crb_acpi_add(struct acpi_device *device)
 		return -ENOMEM;
 	}
 
-	memcpy_fromio(&pa, &priv->cca->cmd_pa, 8);
-	pa = le64_to_cpu(pa);
+	pa = ((u64) le32_to_cpu(ioread32(&priv->cca->cmd_pa_high)) << 32) +
+		(u64) le32_to_cpu(ioread32(&priv->cca->cmd_pa_low));
 	priv->cmd = devm_ioremap_nocache(dev, pa,
 					 ioread32(&priv->cca->cmd_size));
 	if (!priv->cmd) {
-- 
2.5.0


  reply	other threads:[~2015-10-16 18:41 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-16 18:40 [PATCH 00/10] TPM2 updates for 4.4 Jarkko Sakkinen
2015-10-16 18:40 ` Jarkko Sakkinen
2015-10-16 18:40 ` Jarkko Sakkinen [this message]
2015-10-18  3:02   ` [PATCH 01/10] tpm, tpm_crb: fix unaligned read of the command buffer address Peter Hüwe
2015-10-18 11:15     ` Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 02/10] tpm, tpm_tis: fix tpm_tis ACPI detection issue with TPM 2.0 Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 03/10] sysfs: added __compat_only_sysfs_link_entry_to_kobj() Jarkko Sakkinen
2015-10-18  1:37   ` Peter Hüwe
2015-10-18 11:21     ` Jarkko Sakkinen
2015-11-07  0:23   ` Jeremiah Mahler
2015-11-09 22:32     ` Jason Gunthorpe
2015-11-07  2:55   ` [BUG, PATCH " Jeremiah Mahler
2015-11-07 10:55     ` Jarkko Sakkinen
2015-11-07 11:41       ` Jarkko Sakkinen
2015-11-07 18:08         ` Jeremiah Mahler
2015-11-07 22:31           ` Jarkko Sakkinen
2015-11-07 23:11             ` Jeremiah Mahler
2015-11-08  0:49               ` Jarkko Sakkinen
2015-11-08  3:04                 ` Jeremiah Mahler
2015-11-08  7:46                   ` Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 04/10] tpm: move the PPI attributes to character device directory Jarkko Sakkinen
2015-11-04 18:17   ` [BUG, bisect, PATCH " Jeremiah Mahler
2015-11-05  9:22     ` Jarkko Sakkinen
2015-11-05 11:05       ` [tpmdd-devel] " Jarkko Sakkinen
2015-11-05 16:47         ` Jeremiah Mahler
2015-11-05 17:46           ` Jarkko Sakkinen
2015-11-05 18:17             ` Jeremiah Mahler
2015-11-06 13:45               ` Jarkko Sakkinen
2015-11-07  2:54     ` Jeremiah Mahler
2015-10-16 18:40 ` [PATCH 05/10] tpm: update PPI documentation to address the location change Jarkko Sakkinen
2015-10-16 18:40   ` Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 06/10] tpm: introduce tpm_buf Jarkko Sakkinen
2015-10-18  2:57   ` Peter Hüwe
2015-10-18 11:19     ` Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 07/10] keys, trusted: move struct trusted_key_options to trusted-type.h Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 08/10] tpm: seal/unseal for TPM 2.0 Jarkko Sakkinen
2015-11-07 18:58   ` Jeremiah Mahler
2015-11-07 21:39     ` Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 09/10] keys, trusted: seal/unseal with TPM 2.0 chips Jarkko Sakkinen
2015-10-16 18:40 ` [PATCH 10/10] MAINTAINERS: add new maintainer for TPM DEVICE DRIVER Jarkko Sakkinen
2015-10-16 19:06 ` [tpmdd-devel] [PATCH 00/10] TPM2 updates for 4.4 Kevin Strasser
2015-10-16 19:06   ` Kevin Strasser

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1445020843-9382-2-git-send-email-jarkko.sakkinen@linux.intel.com \
    --to=jarkko.sakkinen@linux.intel.com \
    --cc=artem.bityutskiy@linux.intel.com \
    --cc=dhowells@redhat.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jgunthorpe@obsidianresearch.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peterhuewe@gmx.de \
    --cc=tpmdd-devel@lists.sourceforge.net \
    --cc=tpmdd@selhorst.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.