Re: [tpmdd-devel] [PATCH v9 2/2] tpm: add securityfs support, for TPM 2.0 firmware event log

2017-01-31 Thread Jarkko Sakkinen
On Wed, Jan 25, 2017 at 04:22:45PM -0500, Ken Goldman wrote:
> > You do not need to send a new patch set version as long as this
> > one gets peer tested. And it needs to be tested without hacks
> > like plumbing TCPA with TPM 2.0 in QEMU. OF code paths needs to
> > be peer tested to be more specific.
> >
> > For me the code itself looks good but I simply cannot take it in
> > in the current situation.
> >
> > /Jarkko
> 
> Tested-by: Kenneth Goldman 

Thanks. This explains it. I got Naynas response before I got this one.
That's why it went unnoticed.

/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


Re: [tpmdd-devel] [PATCH v9 2/2] tpm: add securityfs support, for TPM 2.0 firmware event log

2017-01-30 Thread Ken Goldman
> You do not need to send a new patch set version as long as this
> one gets peer tested. And it needs to be tested without hacks
> like plumbing TCPA with TPM 2.0 in QEMU. OF code paths needs to
> be peer tested to be more specific.
>
> For me the code itself looks good but I simply cannot take it in
> in the current situation.
>
> /Jarkko

Tested-by: Kenneth Goldman 

I validated a firmware event log taken from a Power 8 against PCR 0-7 
values for the SHA-1 and SHA-256 banks from a Nuvoton TPM 2.0 chip on 
that same platform.


--
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


Re: [tpmdd-devel] [PATCH v9 2/2] tpm: add securityfs support, for TPM 2.0 firmware event log

2017-01-25 Thread Jarkko Sakkinen
On Wed, Jan 25, 2017 at 04:22:45PM -0500, Ken Goldman wrote:
> > You do not need to send a new patch set version as long as this
> > one gets peer tested. And it needs to be tested without hacks
> > like plumbing TCPA with TPM 2.0 in QEMU. OF code paths needs to
> > be peer tested to be more specific.
> > 
> > For me the code itself looks good but I simply cannot take it in
> > in the current situation.
> > 
> > /Jarkko
> 
> Tested-by: Kenneth Goldman 
> 
> I validated a firmware event log taken from a Power 8 against PCR 0-7 values
> for the SHA-1 and SHA-256 banks from a Nuvoton TPM 2.0 chip on that same
> platform.

Thank you! I'll add this to the commit.

/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


Re: [tpmdd-devel] [PATCH v9 2/2] tpm: add securityfs support for TPM 2.0 firmware event log

2017-01-25 Thread Jarkko Sakkinen
On Tue, Jan 24, 2017 at 03:41:22PM +0530, Nayna wrote:
> 
> 
> On 01/23/2017 08:43 PM, Jarkko Sakkinen wrote:
> > On Mon, Jan 23, 2017 at 02:26:27AM -0500, Nayna Jain wrote:
> > > Unlike the device driver support for TPM 1.2, the TPM 2.0 does
> > > not support the securityfs pseudo files for displaying the
> > > firmware event log.
> > > 
> > > This patch enables support for providing the TPM 2.0 event log in
> > > binary form. TPM 2.0 event log supports a crypto agile format that
> > > records multiple digests, which is different from TPM 1.2. This
> > > patch enables the tpm_bios_log_setup for TPM 2.0  and adds the
> > > event log parser which understand the TPM 2.0 crypto agile format.
> > > 
> > > Signed-off-by: Nayna Jain 
> > > ---
> > >   drivers/char/tpm/Makefile  |   2 +-
> > >   .../char/tpm/{tpm_eventlog.c => tpm1_eventlog.c}   |  35 ++--
> > >   drivers/char/tpm/tpm2_eventlog.c   | 203 
> > > +
> > >   drivers/char/tpm/tpm_acpi.c|   3 +
> > >   drivers/char/tpm/tpm_eventlog.h|  59 ++
> > >   5 files changed, 287 insertions(+), 15 deletions(-)
> > >   rename drivers/char/tpm/{tpm_eventlog.c => tpm1_eventlog.c} (95%)
> > >   create mode 100644 drivers/char/tpm/tpm2_eventlog.c
> > > 
> > > diff --git a/drivers/char/tpm/Makefile b/drivers/char/tpm/Makefile
> > > index a05b1eb..3d386a8 100644
> > > --- a/drivers/char/tpm/Makefile
> > > +++ b/drivers/char/tpm/Makefile
> > > @@ -3,7 +3,7 @@
> > >   #
> > >   obj-$(CONFIG_TCG_TPM) += tpm.o
> > >   tpm-y := tpm-interface.o tpm-dev.o tpm-sysfs.o tpm-chip.o tpm2-cmd.o \
> > > - tpm_eventlog.o
> > > + tpm1_eventlog.o tpm2_eventlog.o
> > >   tpm-$(CONFIG_ACPI) += tpm_ppi.o tpm_acpi.o
> > >   tpm-$(CONFIG_OF) += tpm_of.o
> > >   obj-$(CONFIG_TCG_TIS_CORE) += tpm_tis_core.o
> > > diff --git a/drivers/char/tpm/tpm_eventlog.c 
> > > b/drivers/char/tpm/tpm1_eventlog.c
> > > similarity index 95%
> > > rename from drivers/char/tpm/tpm_eventlog.c
> > > rename to drivers/char/tpm/tpm1_eventlog.c
> > > index 11bb113..9a8605e 100644
> > > --- a/drivers/char/tpm/tpm_eventlog.c
> > > +++ b/drivers/char/tpm/tpm1_eventlog.c
> > > @@ -390,9 +390,6 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
> > >   unsigned int cnt;
> > >   int rc = 0;
> > > 
> > > - if (chip->flags & TPM_CHIP_FLAG_TPM2)
> > > - return 0;
> > > -
> > >   rc = tpm_read_log(chip);
> > >   if (rc)
> > >   return rc;
> > > @@ -407,7 +404,13 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
> > >   cnt++;
> > > 
> > >   chip->bin_log_seqops.chip = chip;
> > > - chip->bin_log_seqops.seqops = _binary_b_measurements_seqops;
> > > + if (chip->flags & TPM_CHIP_FLAG_TPM2)
> > > + chip->bin_log_seqops.seqops =
> > > + _binary_b_measurements_seqops;
> > > + else
> > > + chip->bin_log_seqops.seqops =
> > > + _binary_b_measurements_seqops;
> > > +
> > > 
> > >   chip->bios_dir[cnt] =
> > >   securityfs_create_file("binary_bios_measurements",
> > > @@ -418,17 +421,21 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
> > >   goto err;
> > >   cnt++;
> > > 
> > > - chip->ascii_log_seqops.chip = chip;
> > > - chip->ascii_log_seqops.seqops = _ascii_b_measurements_seqops;
> > > + if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
> > > 
> > > - chip->bios_dir[cnt] =
> > > - securityfs_create_file("ascii_bios_measurements",
> > > -0440, chip->bios_dir[0],
> > > -(void *)>ascii_log_seqops,
> > > -_bios_measurements_ops);
> > > - if (IS_ERR(chip->bios_dir[cnt]))
> > > - goto err;
> > > - cnt++;
> > > + chip->ascii_log_seqops.chip = chip;
> > > + chip->ascii_log_seqops.seqops =
> > > + _ascii_b_measurements_seqops;
> > > +
> > > + chip->bios_dir[cnt] =
> > > + securityfs_create_file("ascii_bios_measurements",
> > > +0440, chip->bios_dir[0],
> > > +(void *)>ascii_log_seqops,
> > > +_bios_measurements_ops);
> > > + if (IS_ERR(chip->bios_dir[cnt]))
> > > + goto err;
> > > + cnt++;
> > > + }
> > > 
> > >   return 0;
> > > 
> > > diff --git a/drivers/char/tpm/tpm2_eventlog.c 
> > > b/drivers/char/tpm/tpm2_eventlog.c
> > > new file mode 100644
> > > index 000..513897c
> > > --- /dev/null
> > > +++ b/drivers/char/tpm/tpm2_eventlog.c
> > > @@ -0,0 +1,203 @@
> > > +/*
> > > + * Copyright (C) 2016 IBM Corporation
> > > + *
> > > + * Authors:
> > > + *  Nayna Jain 
> > > + *
> > > + * Access to TPM 2.0 event log as written by Firmware.
> > > + * It assumes that writer of event log has followed TCG 

Re: [tpmdd-devel] [PATCH v9 2/2] tpm: add securityfs support for TPM 2.0 firmware event log

2017-01-24 Thread Nayna


On 01/23/2017 08:43 PM, Jarkko Sakkinen wrote:
> On Mon, Jan 23, 2017 at 02:26:27AM -0500, Nayna Jain wrote:
>> Unlike the device driver support for TPM 1.2, the TPM 2.0 does
>> not support the securityfs pseudo files for displaying the
>> firmware event log.
>>
>> This patch enables support for providing the TPM 2.0 event log in
>> binary form. TPM 2.0 event log supports a crypto agile format that
>> records multiple digests, which is different from TPM 1.2. This
>> patch enables the tpm_bios_log_setup for TPM 2.0  and adds the
>> event log parser which understand the TPM 2.0 crypto agile format.
>>
>> Signed-off-by: Nayna Jain 
>> ---
>>   drivers/char/tpm/Makefile  |   2 +-
>>   .../char/tpm/{tpm_eventlog.c => tpm1_eventlog.c}   |  35 ++--
>>   drivers/char/tpm/tpm2_eventlog.c   | 203 
>> +
>>   drivers/char/tpm/tpm_acpi.c|   3 +
>>   drivers/char/tpm/tpm_eventlog.h|  59 ++
>>   5 files changed, 287 insertions(+), 15 deletions(-)
>>   rename drivers/char/tpm/{tpm_eventlog.c => tpm1_eventlog.c} (95%)
>>   create mode 100644 drivers/char/tpm/tpm2_eventlog.c
>>
>> diff --git a/drivers/char/tpm/Makefile b/drivers/char/tpm/Makefile
>> index a05b1eb..3d386a8 100644
>> --- a/drivers/char/tpm/Makefile
>> +++ b/drivers/char/tpm/Makefile
>> @@ -3,7 +3,7 @@
>>   #
>>   obj-$(CONFIG_TCG_TPM) += tpm.o
>>   tpm-y := tpm-interface.o tpm-dev.o tpm-sysfs.o tpm-chip.o tpm2-cmd.o \
>> -tpm_eventlog.o
>> +tpm1_eventlog.o tpm2_eventlog.o
>>   tpm-$(CONFIG_ACPI) += tpm_ppi.o tpm_acpi.o
>>   tpm-$(CONFIG_OF) += tpm_of.o
>>   obj-$(CONFIG_TCG_TIS_CORE) += tpm_tis_core.o
>> diff --git a/drivers/char/tpm/tpm_eventlog.c 
>> b/drivers/char/tpm/tpm1_eventlog.c
>> similarity index 95%
>> rename from drivers/char/tpm/tpm_eventlog.c
>> rename to drivers/char/tpm/tpm1_eventlog.c
>> index 11bb113..9a8605e 100644
>> --- a/drivers/char/tpm/tpm_eventlog.c
>> +++ b/drivers/char/tpm/tpm1_eventlog.c
>> @@ -390,9 +390,6 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
>>  unsigned int cnt;
>>  int rc = 0;
>>
>> -if (chip->flags & TPM_CHIP_FLAG_TPM2)
>> -return 0;
>> -
>>  rc = tpm_read_log(chip);
>>  if (rc)
>>  return rc;
>> @@ -407,7 +404,13 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
>>  cnt++;
>>
>>  chip->bin_log_seqops.chip = chip;
>> -chip->bin_log_seqops.seqops = _binary_b_measurements_seqops;
>> +if (chip->flags & TPM_CHIP_FLAG_TPM2)
>> +chip->bin_log_seqops.seqops =
>> +_binary_b_measurements_seqops;
>> +else
>> +chip->bin_log_seqops.seqops =
>> +_binary_b_measurements_seqops;
>> +
>>
>>  chip->bios_dir[cnt] =
>>  securityfs_create_file("binary_bios_measurements",
>> @@ -418,17 +421,21 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
>>  goto err;
>>  cnt++;
>>
>> -chip->ascii_log_seqops.chip = chip;
>> -chip->ascii_log_seqops.seqops = _ascii_b_measurements_seqops;
>> +if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
>>
>> -chip->bios_dir[cnt] =
>> -securityfs_create_file("ascii_bios_measurements",
>> -   0440, chip->bios_dir[0],
>> -   (void *)>ascii_log_seqops,
>> -   _bios_measurements_ops);
>> -if (IS_ERR(chip->bios_dir[cnt]))
>> -goto err;
>> -cnt++;
>> +chip->ascii_log_seqops.chip = chip;
>> +chip->ascii_log_seqops.seqops =
>> +_ascii_b_measurements_seqops;
>> +
>> +chip->bios_dir[cnt] =
>> +securityfs_create_file("ascii_bios_measurements",
>> +   0440, chip->bios_dir[0],
>> +   (void *)>ascii_log_seqops,
>> +   _bios_measurements_ops);
>> +if (IS_ERR(chip->bios_dir[cnt]))
>> +goto err;
>> +cnt++;
>> +}
>>
>>  return 0;
>>
>> diff --git a/drivers/char/tpm/tpm2_eventlog.c 
>> b/drivers/char/tpm/tpm2_eventlog.c
>> new file mode 100644
>> index 000..513897c
>> --- /dev/null
>> +++ b/drivers/char/tpm/tpm2_eventlog.c
>> @@ -0,0 +1,203 @@
>> +/*
>> + * Copyright (C) 2016 IBM Corporation
>> + *
>> + * Authors:
>> + *  Nayna Jain 
>> + *
>> + * Access to TPM 2.0 event log as written by Firmware.
>> + * It assumes that writer of event log has followed TCG Specification
>> + * for Family "2.0" and written the event data in little endian.
>> + * With that, it doesn't need any endian conversion for structure
>> + * content.
>> + *
>> + * This program is free software; you can redistribute it and/or
>> + * modify it under the terms of the GNU General Public License
>> + * as published by the Free Software Foundation; either 

Re: [tpmdd-devel] [PATCH v9 2/2] tpm: add securityfs support for TPM 2.0 firmware event log

2017-01-23 Thread Jarkko Sakkinen
On Mon, Jan 23, 2017 at 02:26:27AM -0500, Nayna Jain wrote:
> Unlike the device driver support for TPM 1.2, the TPM 2.0 does
> not support the securityfs pseudo files for displaying the
> firmware event log.
> 
> This patch enables support for providing the TPM 2.0 event log in
> binary form. TPM 2.0 event log supports a crypto agile format that
> records multiple digests, which is different from TPM 1.2. This
> patch enables the tpm_bios_log_setup for TPM 2.0  and adds the
> event log parser which understand the TPM 2.0 crypto agile format.
> 
> Signed-off-by: Nayna Jain 
> ---
>  drivers/char/tpm/Makefile  |   2 +-
>  .../char/tpm/{tpm_eventlog.c => tpm1_eventlog.c}   |  35 ++--
>  drivers/char/tpm/tpm2_eventlog.c   | 203 
> +
>  drivers/char/tpm/tpm_acpi.c|   3 +
>  drivers/char/tpm/tpm_eventlog.h|  59 ++
>  5 files changed, 287 insertions(+), 15 deletions(-)
>  rename drivers/char/tpm/{tpm_eventlog.c => tpm1_eventlog.c} (95%)
>  create mode 100644 drivers/char/tpm/tpm2_eventlog.c
> 
> diff --git a/drivers/char/tpm/Makefile b/drivers/char/tpm/Makefile
> index a05b1eb..3d386a8 100644
> --- a/drivers/char/tpm/Makefile
> +++ b/drivers/char/tpm/Makefile
> @@ -3,7 +3,7 @@
>  #
>  obj-$(CONFIG_TCG_TPM) += tpm.o
>  tpm-y := tpm-interface.o tpm-dev.o tpm-sysfs.o tpm-chip.o tpm2-cmd.o \
> - tpm_eventlog.o
> + tpm1_eventlog.o tpm2_eventlog.o
>  tpm-$(CONFIG_ACPI) += tpm_ppi.o tpm_acpi.o
>  tpm-$(CONFIG_OF) += tpm_of.o
>  obj-$(CONFIG_TCG_TIS_CORE) += tpm_tis_core.o
> diff --git a/drivers/char/tpm/tpm_eventlog.c 
> b/drivers/char/tpm/tpm1_eventlog.c
> similarity index 95%
> rename from drivers/char/tpm/tpm_eventlog.c
> rename to drivers/char/tpm/tpm1_eventlog.c
> index 11bb113..9a8605e 100644
> --- a/drivers/char/tpm/tpm_eventlog.c
> +++ b/drivers/char/tpm/tpm1_eventlog.c
> @@ -390,9 +390,6 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
>   unsigned int cnt;
>   int rc = 0;
>  
> - if (chip->flags & TPM_CHIP_FLAG_TPM2)
> - return 0;
> -
>   rc = tpm_read_log(chip);
>   if (rc)
>   return rc;
> @@ -407,7 +404,13 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
>   cnt++;
>  
>   chip->bin_log_seqops.chip = chip;
> - chip->bin_log_seqops.seqops = _binary_b_measurements_seqops;
> + if (chip->flags & TPM_CHIP_FLAG_TPM2)
> + chip->bin_log_seqops.seqops =
> + _binary_b_measurements_seqops;
> + else
> + chip->bin_log_seqops.seqops =
> + _binary_b_measurements_seqops;
> +
>  
>   chip->bios_dir[cnt] =
>   securityfs_create_file("binary_bios_measurements",
> @@ -418,17 +421,21 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
>   goto err;
>   cnt++;
>  
> - chip->ascii_log_seqops.chip = chip;
> - chip->ascii_log_seqops.seqops = _ascii_b_measurements_seqops;
> + if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
>  
> - chip->bios_dir[cnt] =
> - securityfs_create_file("ascii_bios_measurements",
> -0440, chip->bios_dir[0],
> -(void *)>ascii_log_seqops,
> -_bios_measurements_ops);
> - if (IS_ERR(chip->bios_dir[cnt]))
> - goto err;
> - cnt++;
> + chip->ascii_log_seqops.chip = chip;
> + chip->ascii_log_seqops.seqops =
> + _ascii_b_measurements_seqops;
> +
> + chip->bios_dir[cnt] =
> + securityfs_create_file("ascii_bios_measurements",
> +0440, chip->bios_dir[0],
> +(void *)>ascii_log_seqops,
> +_bios_measurements_ops);
> + if (IS_ERR(chip->bios_dir[cnt]))
> + goto err;
> + cnt++;
> + }
>  
>   return 0;
>  
> diff --git a/drivers/char/tpm/tpm2_eventlog.c 
> b/drivers/char/tpm/tpm2_eventlog.c
> new file mode 100644
> index 000..513897c
> --- /dev/null
> +++ b/drivers/char/tpm/tpm2_eventlog.c
> @@ -0,0 +1,203 @@
> +/*
> + * Copyright (C) 2016 IBM Corporation
> + *
> + * Authors:
> + *  Nayna Jain 
> + *
> + * Access to TPM 2.0 event log as written by Firmware.
> + * It assumes that writer of event log has followed TCG Specification
> + * for Family "2.0" and written the event data in little endian.
> + * With that, it doesn't need any endian conversion for structure
> + * content.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version
> + * 2 of the License, or (at your option) any later version.
> + */
> +
> +#include 
> +#include 
> +#include 
> 

[tpmdd-devel] [PATCH v9 2/2] tpm: add securityfs support for TPM 2.0 firmware event log

2017-01-22 Thread Nayna Jain
Unlike the device driver support for TPM 1.2, the TPM 2.0 does
not support the securityfs pseudo files for displaying the
firmware event log.

This patch enables support for providing the TPM 2.0 event log in
binary form. TPM 2.0 event log supports a crypto agile format that
records multiple digests, which is different from TPM 1.2. This
patch enables the tpm_bios_log_setup for TPM 2.0  and adds the
event log parser which understand the TPM 2.0 crypto agile format.

Signed-off-by: Nayna Jain 
---
 drivers/char/tpm/Makefile  |   2 +-
 .../char/tpm/{tpm_eventlog.c => tpm1_eventlog.c}   |  35 ++--
 drivers/char/tpm/tpm2_eventlog.c   | 203 +
 drivers/char/tpm/tpm_acpi.c|   3 +
 drivers/char/tpm/tpm_eventlog.h|  59 ++
 5 files changed, 287 insertions(+), 15 deletions(-)
 rename drivers/char/tpm/{tpm_eventlog.c => tpm1_eventlog.c} (95%)
 create mode 100644 drivers/char/tpm/tpm2_eventlog.c

diff --git a/drivers/char/tpm/Makefile b/drivers/char/tpm/Makefile
index a05b1eb..3d386a8 100644
--- a/drivers/char/tpm/Makefile
+++ b/drivers/char/tpm/Makefile
@@ -3,7 +3,7 @@
 #
 obj-$(CONFIG_TCG_TPM) += tpm.o
 tpm-y := tpm-interface.o tpm-dev.o tpm-sysfs.o tpm-chip.o tpm2-cmd.o \
-   tpm_eventlog.o
+   tpm1_eventlog.o tpm2_eventlog.o
 tpm-$(CONFIG_ACPI) += tpm_ppi.o tpm_acpi.o
 tpm-$(CONFIG_OF) += tpm_of.o
 obj-$(CONFIG_TCG_TIS_CORE) += tpm_tis_core.o
diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm1_eventlog.c
similarity index 95%
rename from drivers/char/tpm/tpm_eventlog.c
rename to drivers/char/tpm/tpm1_eventlog.c
index 11bb113..9a8605e 100644
--- a/drivers/char/tpm/tpm_eventlog.c
+++ b/drivers/char/tpm/tpm1_eventlog.c
@@ -390,9 +390,6 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
unsigned int cnt;
int rc = 0;
 
-   if (chip->flags & TPM_CHIP_FLAG_TPM2)
-   return 0;
-
rc = tpm_read_log(chip);
if (rc)
return rc;
@@ -407,7 +404,13 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
cnt++;
 
chip->bin_log_seqops.chip = chip;
-   chip->bin_log_seqops.seqops = _binary_b_measurements_seqops;
+   if (chip->flags & TPM_CHIP_FLAG_TPM2)
+   chip->bin_log_seqops.seqops =
+   _binary_b_measurements_seqops;
+   else
+   chip->bin_log_seqops.seqops =
+   _binary_b_measurements_seqops;
+
 
chip->bios_dir[cnt] =
securityfs_create_file("binary_bios_measurements",
@@ -418,17 +421,21 @@ int tpm_bios_log_setup(struct tpm_chip *chip)
goto err;
cnt++;
 
-   chip->ascii_log_seqops.chip = chip;
-   chip->ascii_log_seqops.seqops = _ascii_b_measurements_seqops;
+   if (!(chip->flags & TPM_CHIP_FLAG_TPM2)) {
 
-   chip->bios_dir[cnt] =
-   securityfs_create_file("ascii_bios_measurements",
-  0440, chip->bios_dir[0],
-  (void *)>ascii_log_seqops,
-  _bios_measurements_ops);
-   if (IS_ERR(chip->bios_dir[cnt]))
-   goto err;
-   cnt++;
+   chip->ascii_log_seqops.chip = chip;
+   chip->ascii_log_seqops.seqops =
+   _ascii_b_measurements_seqops;
+
+   chip->bios_dir[cnt] =
+   securityfs_create_file("ascii_bios_measurements",
+  0440, chip->bios_dir[0],
+  (void *)>ascii_log_seqops,
+  _bios_measurements_ops);
+   if (IS_ERR(chip->bios_dir[cnt]))
+   goto err;
+   cnt++;
+   }
 
return 0;
 
diff --git a/drivers/char/tpm/tpm2_eventlog.c b/drivers/char/tpm/tpm2_eventlog.c
new file mode 100644
index 000..513897c
--- /dev/null
+++ b/drivers/char/tpm/tpm2_eventlog.c
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2016 IBM Corporation
+ *
+ * Authors:
+ *  Nayna Jain 
+ *
+ * Access to TPM 2.0 event log as written by Firmware.
+ * It assumes that writer of event log has followed TCG Specification
+ * for Family "2.0" and written the event data in little endian.
+ * With that, it doesn't need any endian conversion for structure
+ * content.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version
+ * 2 of the License, or (at your option) any later version.
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#include "tpm.h"
+#include "tpm_eventlog.h"
+
+/*
+ * calc_tpm2_event_size() - calculate the event size, where event
+ * is an entry in the TPM 2.0 event log. The event is of type Crypto
+ * Agile Log Entry