From: Nayna <nayna@linux.vnet.ibm.com>
To: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
Cc: tpmdd-devel@lists.sourceforge.net, peterhuewe@gmx.de,
tpmdd@selhorst.net, jgunthorpe@obsidianresearch.com,
linux-security-module@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v6 1/2] tpm: enhance read_log_of() to support Physical TPM event log
Date: Tue, 29 Nov 2016 15:07:53 +0530 [thread overview]
Message-ID: <583D4C71.9070201@linux.vnet.ibm.com> (raw)
In-Reply-To: <20161126161522.umra77n3yqbpwn5u@intel.com>
On 11/26/2016 09:45 PM, Jarkko Sakkinen wrote:
> On Sat, Nov 26, 2016 at 07:45:38AM -0500, Nayna Jain wrote:
>> Physical TPMs use Open Firmware Device Tree bindings that are similar
>> to the IBM Power virtual TPM to support event log. However, these
>> properties store the values in different endianness for Physical
>> and Virtual TPM.
>>
>> This patch fixes the endianness issue by doing appropriate conversion
>> based on Physical or Virtual TPM.
>>
>> Signed-off-by: Nayna Jain <nayna@linux.vnet.ibm.com>
>> ---
>> drivers/char/tpm/tpm_of.c | 27 +++++++++++++++++++++++----
>> 1 file changed, 23 insertions(+), 4 deletions(-)
>>
>> diff --git a/drivers/char/tpm/tpm_of.c b/drivers/char/tpm/tpm_of.c
>> index 7dee42d7..4b0d5e6 100644
>> --- a/drivers/char/tpm/tpm_of.c
>> +++ b/drivers/char/tpm/tpm_of.c
>> @@ -27,6 +27,8 @@ int tpm_read_log_of(struct tpm_chip *chip)
>> const u32 *sizep;
>> const u64 *basep;
>> struct tpm_bios_log *log;
>> + u32 log_size;
>> + u64 log_base;
>
> Maybe just base and size?
Hmm.. okay to keep names short, I can change to base/size. And since
they are used within log function, probably it is implicit that, these
refer to Log base address and size.
>
>>
>> log = &chip->log;
>> if (chip->dev.parent && chip->dev.parent->of_node)
>> @@ -41,18 +43,35 @@ int tpm_read_log_of(struct tpm_chip *chip)
>> if (sizep == NULL || basep == NULL)
>> return -EIO;
>>
>> - if (*sizep == 0) {
>> + /*
>> + * For both vtpm/tpm, firmware has log addr and log size in big
>> + * endian format. But in case of vtpm, there is a method called
>> + * sml-handover which is run during kernel init even before
>> + * device tree is setup. This sml-handover function takes care
>> + * of endianness and writes to sml-base and sml-size in little
>> + * endian format. For this reason, vtpm doesn't need conversion
>> + * but physical tpm needs the conversion.
>> + */
>> + if (of_property_match_string(np, "compatible", "IBM,vtpm") < 0) {
>> + log_size = be32_to_cpup(sizep);
>> + log_base = be64_to_cpup(basep);
>> + } else {
>> + log_size = *sizep;
>> + log_base = *basep;
>> + }
>> +
>> + if (log_size == 0) {
>> dev_warn(&chip->dev, "%s: Event log area empty\n", __func__);
>> return -EIO;
>> }
>>
>> - log->bios_event_log = kmalloc(*sizep, GFP_KERNEL);
>> + log->bios_event_log = kmalloc(log_size, GFP_KERNEL);
>> if (!log->bios_event_log)
>> return -ENOMEM;
>>
>> - log->bios_event_log_end = log->bios_event_log + *sizep;
>> + log->bios_event_log_end = log->bios_event_log + log_size;
>>
>> - memcpy(log->bios_event_log, __va(*basep), *sizep);
>> + memcpy(chip->log.bios_event_log, __va(log_base), log_size);
>
> Why did you change the first parameter?
Hmm.. yeah..shouldn't be. Sorry, I think while redoing, I mixed up with
my previous versions. Will change it.
Thanks for noticing it.
Thanks & Regards,
- Nayna
>
>>
>> return 0;
>> }
>> --
>> 2.5.0
>>
>
> /Jarkko
>
next prev parent reply other threads:[~2016-11-29 9:39 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-26 12:45 [PATCH v6 0/2] securityfs support for TPM 2.0 firmware event log Nayna Jain
2016-11-26 12:45 ` [PATCH v6 1/2] tpm: enhance read_log_of() to support Physical TPM " Nayna Jain
2016-11-26 16:15 ` Jarkko Sakkinen
2016-11-29 9:37 ` Nayna [this message]
2016-11-26 12:45 ` [PATCH v6 2/2] tpm: add securityfs support for TPM 2.0 firmware " Nayna Jain
2016-11-26 15:47 ` Jarkko Sakkinen
2016-11-30 16:59 ` Nayna
2016-12-01 11:43 ` Jarkko Sakkinen
2016-12-02 9:31 ` Nayna
2016-12-06 10:23 ` [tpmdd-devel] " Nayna
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=583D4C71.9070201@linux.vnet.ibm.com \
--to=nayna@linux.vnet.ibm.com \
--cc=jarkko.sakkinen@linux.intel.com \
--cc=jgunthorpe@obsidianresearch.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).