All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
To: "Winkler, Tomas" <tomas.winkler@intel.com>
Cc: "tpmdd-devel@lists.sourceforge.net" 
	<tpmdd-devel@lists.sourceforge.net>,
	open list <linux-kernel@vger.kernel.org>
Subject: Re: [tpmdd-devel] [PATCH] tpm, tpm_crb: remove redundant CRB_FL_CRB_START flag
Date: Thu, 20 Oct 2016 16:59:06 +0300	[thread overview]
Message-ID: <20161020135906.ah4rjympz3wq6g3t@intel.com> (raw)
In-Reply-To: <20161019160928.n5fswy25t2ppdh73@intel.com>

On Wed, Oct 19, 2016 at 07:09:28PM +0300, Jarkko Sakkinen wrote:
> On Wed, Oct 19, 2016 at 10:28:29AM +0000, Winkler, Tomas wrote:
> > 
> > 
> > > 
> > > On Mon, Oct 17, 2016 at 11:42:24PM +0300, Jarkko Sakkinen wrote:
> > > > Because all the existing hardware have HID MSFT0101 we end up always
> > > > setting CRB_FL_CRB_START flag as a workaround for 4th Gen Core CPUs.
> > > > Even if ACPI start is used, the driver will always issue also CRB start.
> > 
> > Do you have some more historical data about this fix, I was wondering
> > about this quirk before, when restructuring the start method parsing.
> > The description is ' in practice seems to require both'  sounds not
> > certain about the root cause of this.
> 
> I have a 4th Gen Core NUC where I experienced this issue. It reported
> requiring only ACPI start but actually required ACPI + CRB start. The
> comment could have been better.

With the latest master branch if I remove the workaround:

[  395.161155] tpm_crb: module verification failed: signature and/or required key missing - tainting kernel
[  480.087136] tpm tpm0: A TPM error (323) occurred continue selftest
[  480.087141] tpm tpm0: TPM self test failed

jsakkine at jsakkine-tpm1 in ~/devel/linux-tpmdd (master●●) 
$ git --no-pager diff
diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
index 65040d7..5b186e0 100644
--- a/drivers/char/tpm/tpm_crb.c
+++ b/drivers/char/tpm/tpm_crb.c
@@ -407,14 +407,6 @@ static int crb_acpi_add(struct acpi_device *device)
 	if (!priv)
 		return -ENOMEM;
 
-	/* The reason for the extra quirk is that the PTT in 4th Gen Core CPUs
-	 * report only ACPI start but in practice seems to require both
-	 * ACPI start and CRB start.
-	 */
-	if (sm == ACPI_TPM2_COMMAND_BUFFER || sm == ACPI_TPM2_MEMORY_MAPPED ||
-	    !strcmp(acpi_device_hid(device), "MSFT0101"))
-		priv->flags |= CRB_FL_CRB_START;
-
 	if (sm == ACPI_TPM2_START_METHOD ||
 	    sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD)
 		priv->flags |= CRB_FL_ACPI_START;

jsakkine at jsakkine-tpm1 in ~/devel/linux-tpmdd (master●●) 
$ sudo dmidecode -t bios -q
BIOS Information
	Vendor: Intel Corp.
	Version: WYLPT10H.86A.0033.2014.1201.0940
	Release Date: 12/01/2014
	Address: 0xF0000
	Runtime Size: 64 kB
	ROM Size: 6656 kB
	Characteristics:
		PCI is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		BIOS ROM is socketed
		EDD is supported
		5.25"/1.2 MB floppy services are supported (int 13h)
		3.5"/720 kB floppy services are supported (int 13h)
		3.5"/2.88 MB floppy services are supported (int 13h)
		Print screen service is supported (int 5h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		BIOS boot specification is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 4.6

BIOS Language Information
	Language Description Format: Long
	Installable Languages: 1
		en|US|iso8859-1
	Currently Installed Language: en|US|iso8859-1

jsakkine at jsakkine-tpm1 in ~/tmp (master) 
$ cat ~/tmp/tpm2.dsl 
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20140214-64 [Mar 29 2014]
 * Copyright (c) 2000 - 2014 Intel Corporation
 * 
 * Disassembly of tpm2.dat, Wed Jun  1 16:26:49 2016
 *
 * ACPI Data Table [TPM2]
 *
 * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
 */

[000h 0000   4]                    Signature : "TPM2"    [Trusted Platform Module hardware interface table]
[004h 0004   4]                 Table Length : 00000034
[008h 0008   1]                     Revision : 03
[009h 0009   1]                     Checksum : 31
[00Ah 0010   6]                       Oem ID : "INTEL "
[010h 0016   8]                 Oem Table ID : "D34010WY"
[018h 0024   4]                 Oem Revision : 00000021
[01Ch 0028   4]              Asl Compiler ID : ""
[020h 0032   4]        Asl Compiler Revision : 00000000

[024h 0036   4]                        Flags : 00000000
[028h 0040   8]              Control Address : 00000000DBFFF000
[030h 0048   4]                 Start Method : 00000002

Raw Table Data: Length 52 (0x34)

  0000: 54 50 4D 32 34 00 00 00 03 31 49 4E 54 45 4C 20  TPM24....1INTEL 
  0010: 44 33 34 30 31 30 57 59 21 00 00 00 00 00 00 00  D34010WY!.......
  0020: 00 00 00 00 00 00 00 00 00 F0 FF DB 00 00 00 00  ................
  0030: 02 00 00 00                                      ....

Obviously I'm going to keep the work around because I don't want to risk
breaking machines in the field. Because as a side effect for any machine
the driver always invokes CRB start I will definitely want to simplify
the state of the driver.

/Jarkko

WARNING: multiple messages have this Message-ID (diff)
From: Jarkko Sakkinen <jarkko.sakkinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: "Winkler, Tomas" <tomas.winkler-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
Cc: "tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org"
	<tpmdd-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
	open list <linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>
Subject: Re: [PATCH] tpm, tpm_crb: remove redundant CRB_FL_CRB_START flag
Date: Thu, 20 Oct 2016 16:59:06 +0300	[thread overview]
Message-ID: <20161020135906.ah4rjympz3wq6g3t@intel.com> (raw)
In-Reply-To: <20161019160928.n5fswy25t2ppdh73-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>

On Wed, Oct 19, 2016 at 07:09:28PM +0300, Jarkko Sakkinen wrote:
> On Wed, Oct 19, 2016 at 10:28:29AM +0000, Winkler, Tomas wrote:
> > 
> > 
> > > 
> > > On Mon, Oct 17, 2016 at 11:42:24PM +0300, Jarkko Sakkinen wrote:
> > > > Because all the existing hardware have HID MSFT0101 we end up always
> > > > setting CRB_FL_CRB_START flag as a workaround for 4th Gen Core CPUs.
> > > > Even if ACPI start is used, the driver will always issue also CRB start.
> > 
> > Do you have some more historical data about this fix, I was wondering
> > about this quirk before, when restructuring the start method parsing.
> > The description is ' in practice seems to require both'  sounds not
> > certain about the root cause of this.
> 
> I have a 4th Gen Core NUC where I experienced this issue. It reported
> requiring only ACPI start but actually required ACPI + CRB start. The
> comment could have been better.

With the latest master branch if I remove the workaround:

[  395.161155] tpm_crb: module verification failed: signature and/or required key missing - tainting kernel
[  480.087136] tpm tpm0: A TPM error (323) occurred continue selftest
[  480.087141] tpm tpm0: TPM self test failed

jsakkine at jsakkine-tpm1 in ~/devel/linux-tpmdd (master●●) 
$ git --no-pager diff
diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c
index 65040d7..5b186e0 100644
--- a/drivers/char/tpm/tpm_crb.c
+++ b/drivers/char/tpm/tpm_crb.c
@@ -407,14 +407,6 @@ static int crb_acpi_add(struct acpi_device *device)
 	if (!priv)
 		return -ENOMEM;
 
-	/* The reason for the extra quirk is that the PTT in 4th Gen Core CPUs
-	 * report only ACPI start but in practice seems to require both
-	 * ACPI start and CRB start.
-	 */
-	if (sm == ACPI_TPM2_COMMAND_BUFFER || sm == ACPI_TPM2_MEMORY_MAPPED ||
-	    !strcmp(acpi_device_hid(device), "MSFT0101"))
-		priv->flags |= CRB_FL_CRB_START;
-
 	if (sm == ACPI_TPM2_START_METHOD ||
 	    sm == ACPI_TPM2_COMMAND_BUFFER_WITH_START_METHOD)
 		priv->flags |= CRB_FL_ACPI_START;

jsakkine at jsakkine-tpm1 in ~/devel/linux-tpmdd (master●●) 
$ sudo dmidecode -t bios -q
BIOS Information
	Vendor: Intel Corp.
	Version: WYLPT10H.86A.0033.2014.1201.0940
	Release Date: 12/01/2014
	Address: 0xF0000
	Runtime Size: 64 kB
	ROM Size: 6656 kB
	Characteristics:
		PCI is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		BIOS ROM is socketed
		EDD is supported
		5.25"/1.2 MB floppy services are supported (int 13h)
		3.5"/720 kB floppy services are supported (int 13h)
		3.5"/2.88 MB floppy services are supported (int 13h)
		Print screen service is supported (int 5h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		BIOS boot specification is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 4.6

BIOS Language Information
	Language Description Format: Long
	Installable Languages: 1
		en|US|iso8859-1
	Currently Installed Language: en|US|iso8859-1

jsakkine at jsakkine-tpm1 in ~/tmp (master) 
$ cat ~/tmp/tpm2.dsl 
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20140214-64 [Mar 29 2014]
 * Copyright (c) 2000 - 2014 Intel Corporation
 * 
 * Disassembly of tpm2.dat, Wed Jun  1 16:26:49 2016
 *
 * ACPI Data Table [TPM2]
 *
 * Format: [HexOffset DecimalOffset ByteLength]  FieldName : FieldValue
 */

[000h 0000   4]                    Signature : "TPM2"    [Trusted Platform Module hardware interface table]
[004h 0004   4]                 Table Length : 00000034
[008h 0008   1]                     Revision : 03
[009h 0009   1]                     Checksum : 31
[00Ah 0010   6]                       Oem ID : "INTEL "
[010h 0016   8]                 Oem Table ID : "D34010WY"
[018h 0024   4]                 Oem Revision : 00000021
[01Ch 0028   4]              Asl Compiler ID : ""
[020h 0032   4]        Asl Compiler Revision : 00000000

[024h 0036   4]                        Flags : 00000000
[028h 0040   8]              Control Address : 00000000DBFFF000
[030h 0048   4]                 Start Method : 00000002

Raw Table Data: Length 52 (0x34)

  0000: 54 50 4D 32 34 00 00 00 03 31 49 4E 54 45 4C 20  TPM24....1INTEL 
  0010: 44 33 34 30 31 30 57 59 21 00 00 00 00 00 00 00  D34010WY!.......
  0020: 00 00 00 00 00 00 00 00 00 F0 FF DB 00 00 00 00  ................
  0030: 02 00 00 00                                      ....

Obviously I'm going to keep the work around because I don't want to risk
breaking machines in the field. Because as a side effect for any machine
the driver always invokes CRB start I will definitely want to simplify
the state of the driver.

/Jarkko

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
tpmdd-devel mailing list
tpmdd-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tpmdd-devel

  reply	other threads:[~2016-10-20 13:59 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-17 20:42 [PATCH] tpm, tpm_crb: remove redundant CRB_FL_CRB_START flag Jarkko Sakkinen
2016-10-17 20:42 ` Jarkko Sakkinen
2016-10-17 22:51 ` Jarkko Sakkinen
2016-10-19 10:28   ` [tpmdd-devel] " Winkler, Tomas
2016-10-19 10:28     ` Winkler, Tomas
2016-10-19 16:09     ` [tpmdd-devel] " Jarkko Sakkinen
2016-10-19 16:09       ` Jarkko Sakkinen
2016-10-20 13:59       ` Jarkko Sakkinen [this message]
2016-10-20 13:59         ` Jarkko Sakkinen
2016-10-20 14:00         ` [tpmdd-devel] " Jarkko Sakkinen
2016-10-20 14:00           ` Jarkko Sakkinen
2016-10-20 20:24           ` Jason Gunthorpe
2016-10-20 20:24             ` Jason Gunthorpe
2016-10-21 15:11             ` [tpmdd-devel] " Jarkko Sakkinen
2016-10-21 15:11               ` Jarkko Sakkinen
2016-10-25 20:31               ` Jarkko Sakkinen
2016-10-25 20:31                 ` Jarkko Sakkinen

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=20161020135906.ah4rjympz3wq6g3t@intel.com \
    --to=jarkko.sakkinen@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tomas.winkler@intel.com \
    --cc=tpmdd-devel@lists.sourceforge.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.