diff mbox series

[v6,3/3] tpm: ibmvtpm: Add support for TPM2

Message ID 20200304132243.179402-4-stefanb@linux.vnet.ibm.com (mailing list archive)
State New, archived
Headers show
Series Enable vTPM 2.0 for the IBM vTPM driver | expand

Commit Message

Stefan Berger March 4, 2020, 1:22 p.m. UTC
From: Stefan Berger <stefanb@linux.ibm.com>

Support TPM2 in the IBM vTPM driver. The hypervisor tells us what
version of TPM is connected through the vio_device_id.

In case a TPM2 device is found, we set the TPM_CHIP_FLAG_TPM2 flag
and get the command codes attributes table. The driver does
not need the timeouts and durations, though.

Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
---
 drivers/char/tpm/tpm.h         | 1 +
 drivers/char/tpm/tpm2-cmd.c    | 2 +-
 drivers/char/tpm/tpm_ibmvtpm.c | 8 ++++++++
 3 files changed, 10 insertions(+), 1 deletion(-)

Comments

Jarkko Sakkinen March 5, 2020, 11:21 a.m. UTC | #1
On Wed, 2020-03-04 at 08:22 -0500, Stefan Berger wrote:
> From: Stefan Berger <stefanb@linux.ibm.com>
> 
> Support TPM2 in the IBM vTPM driver. The hypervisor tells us what
> version of TPM is connected through the vio_device_id.
> 
> In case a TPM2 device is found, we set the TPM_CHIP_FLAG_TPM2 flag
> and get the command codes attributes table. The driver does
> not need the timeouts and durations, though.
> 
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>

There is huge bunch of people in the cc-list and these patches
have total zero tested-by's. Why is that?

/Jarkko
Stefan Berger March 5, 2020, 1:58 p.m. UTC | #2
On 3/5/20 6:21 AM, Jarkko Sakkinen wrote:
> On Wed, 2020-03-04 at 08:22 -0500, Stefan Berger wrote:
>> From: Stefan Berger <stefanb@linux.ibm.com>
>>
>> Support TPM2 in the IBM vTPM driver. The hypervisor tells us what
>> version of TPM is connected through the vio_device_id.
>>
>> In case a TPM2 device is found, we set the TPM_CHIP_FLAG_TPM2 flag
>> and get the command codes attributes table. The driver does
>> not need the timeouts and durations, though.
>>
>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
> There is huge bunch of people in the cc-list and these patches
> have total zero tested-by's. Why is that?


I cc'ed them because of their involvement in other layers. That's all I 
can say.

   Stefan

>
> /Jarkko
>
Jarkko Sakkinen March 6, 2020, 6:33 p.m. UTC | #3
On Thu, Mar 05, 2020 at 08:58:15AM -0500, Stefan Berger wrote:
> On 3/5/20 6:21 AM, Jarkko Sakkinen wrote:
> > On Wed, 2020-03-04 at 08:22 -0500, Stefan Berger wrote:
> > > From: Stefan Berger <stefanb@linux.ibm.com>
> > > 
> > > Support TPM2 in the IBM vTPM driver. The hypervisor tells us what
> > > version of TPM is connected through the vio_device_id.
> > > 
> > > In case a TPM2 device is found, we set the TPM_CHIP_FLAG_TPM2 flag
> > > and get the command codes attributes table. The driver does
> > > not need the timeouts and durations, though.
> > > 
> > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
> > There is huge bunch of people in the cc-list and these patches
> > have total zero tested-by's. Why is that?
> 
> 
> I cc'ed them because of their involvement in other layers. That's all I can
> say.

OK, so there is no one who can test this?

/Jarkko
Stefan Berger March 6, 2020, 6:51 p.m. UTC | #4
On 3/6/20 1:33 PM, Jarkko Sakkinen wrote:
> On Thu, Mar 05, 2020 at 08:58:15AM -0500, Stefan Berger wrote:
>> On 3/5/20 6:21 AM, Jarkko Sakkinen wrote:
>>> On Wed, 2020-03-04 at 08:22 -0500, Stefan Berger wrote:
>>>> From: Stefan Berger <stefanb@linux.ibm.com>
>>>>
>>>> Support TPM2 in the IBM vTPM driver. The hypervisor tells us what
>>>> version of TPM is connected through the vio_device_id.
>>>>
>>>> In case a TPM2 device is found, we set the TPM_CHIP_FLAG_TPM2 flag
>>>> and get the command codes attributes table. The driver does
>>>> not need the timeouts and durations, though.
>>>>
>>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
>>> There is huge bunch of people in the cc-list and these patches
>>> have total zero tested-by's. Why is that?
>>
>> I cc'ed them because of their involvement in other layers. That's all I can
>> say.
> OK, so there is no one who can test this?

Nayna said she will test it next week.


    Stefan



>
> /Jarkko
Jarkko Sakkinen March 7, 2020, 11:09 a.m. UTC | #5
On Fri, Mar 06, 2020 at 01:51:30PM -0500, Stefan Berger wrote:
> On 3/6/20 1:33 PM, Jarkko Sakkinen wrote:
> > On Thu, Mar 05, 2020 at 08:58:15AM -0500, Stefan Berger wrote:
> > > On 3/5/20 6:21 AM, Jarkko Sakkinen wrote:
> > > > On Wed, 2020-03-04 at 08:22 -0500, Stefan Berger wrote:
> > > > > From: Stefan Berger <stefanb@linux.ibm.com>
> > > > > 
> > > > > Support TPM2 in the IBM vTPM driver. The hypervisor tells us what
> > > > > version of TPM is connected through the vio_device_id.
> > > > > 
> > > > > In case a TPM2 device is found, we set the TPM_CHIP_FLAG_TPM2 flag
> > > > > and get the command codes attributes table. The driver does
> > > > > not need the timeouts and durations, though.
> > > > > 
> > > > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
> > > > There is huge bunch of people in the cc-list and these patches
> > > > have total zero tested-by's. Why is that?
> > > 
> > > I cc'ed them because of their involvement in other layers. That's all I can
> > > say.
> > OK, so there is no one who can test this?
> 
> Nayna said she will test it next week.

That'd be great. Otherwise, I have no issues pulling the patches.

/Jarkko
Nayna March 10, 2020, 9:16 p.m. UTC | #6
On 3/7/20 6:09 AM, Jarkko Sakkinen wrote:
> On Fri, Mar 06, 2020 at 01:51:30PM -0500, Stefan Berger wrote:
>> On 3/6/20 1:33 PM, Jarkko Sakkinen wrote:
>>> On Thu, Mar 05, 2020 at 08:58:15AM -0500, Stefan Berger wrote:
>>>> On 3/5/20 6:21 AM, Jarkko Sakkinen wrote:
>>>>> On Wed, 2020-03-04 at 08:22 -0500, Stefan Berger wrote:
>>>>>> From: Stefan Berger <stefanb@linux.ibm.com>
>>>>>>
>>>>>> Support TPM2 in the IBM vTPM driver. The hypervisor tells us what
>>>>>> version of TPM is connected through the vio_device_id.
>>>>>>
>>>>>> In case a TPM2 device is found, we set the TPM_CHIP_FLAG_TPM2 flag
>>>>>> and get the command codes attributes table. The driver does
>>>>>> not need the timeouts and durations, though.
>>>>>>
>>>>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
>>>>> There is huge bunch of people in the cc-list and these patches
>>>>> have total zero tested-by's. Why is that?
>>>> I cc'ed them because of their involvement in other layers. That's all I can
>>>> say.
>>> OK, so there is no one who can test this?
>> Nayna said she will test it next week.
> That'd be great. Otherwise, I have no issues pulling the patches.
>
> /Jarkko


I tested the patches, except testing of bugfix for vtpm1.2.

Here are my Ack-by/Tested-by for the patchset:

Acked-by: Nayna Jain <nayna@linux.ibm.com>

Tested-by: Nayna Jain <nayna@linux.ibm.com>

Thanks & Regards,

      - Nayna
diff mbox series

Patch

diff --git a/drivers/char/tpm/tpm.h b/drivers/char/tpm/tpm.h
index 2b2c225e1190..0fbcede241ea 100644
--- a/drivers/char/tpm/tpm.h
+++ b/drivers/char/tpm/tpm.h
@@ -226,6 +226,7 @@  int tpm2_auto_startup(struct tpm_chip *chip);
 void tpm2_shutdown(struct tpm_chip *chip, u16 shutdown_type);
 unsigned long tpm2_calc_ordinal_duration(struct tpm_chip *chip, u32 ordinal);
 int tpm2_probe(struct tpm_chip *chip);
+int tpm2_get_cc_attrs_tbl(struct tpm_chip *chip);
 int tpm2_find_cc(struct tpm_chip *chip, u32 cc);
 int tpm2_init_space(struct tpm_space *space);
 void tpm2_del_space(struct tpm_chip *chip, struct tpm_space *space);
diff --git a/drivers/char/tpm/tpm2-cmd.c b/drivers/char/tpm/tpm2-cmd.c
index 760329598b99..76f67b155bd5 100644
--- a/drivers/char/tpm/tpm2-cmd.c
+++ b/drivers/char/tpm/tpm2-cmd.c
@@ -615,7 +615,7 @@  ssize_t tpm2_get_pcr_allocation(struct tpm_chip *chip)
 	return rc;
 }
 
-static int tpm2_get_cc_attrs_tbl(struct tpm_chip *chip)
+int tpm2_get_cc_attrs_tbl(struct tpm_chip *chip)
 {
 	struct tpm_buf buf;
 	u32 nr_commands;
diff --git a/drivers/char/tpm/tpm_ibmvtpm.c b/drivers/char/tpm/tpm_ibmvtpm.c
index cfe40e7b1ba4..1a49db9e108e 100644
--- a/drivers/char/tpm/tpm_ibmvtpm.c
+++ b/drivers/char/tpm/tpm_ibmvtpm.c
@@ -29,6 +29,7 @@  static const char tpm_ibmvtpm_driver_name[] = "tpm_ibmvtpm";
 
 static const struct vio_device_id tpm_ibmvtpm_device_table[] = {
 	{ "IBM,vtpm", "IBM,vtpm"},
+	{ "IBM,vtpm", "IBM,vtpm20"},
 	{ "", "" }
 };
 MODULE_DEVICE_TABLE(vio, tpm_ibmvtpm_device_table);
@@ -672,6 +673,13 @@  static int tpm_ibmvtpm_probe(struct vio_dev *vio_dev,
 	if (rc)
 		goto init_irq_cleanup;
 
+	if (!strcmp(id->compat, "IBM,vtpm20")) {
+		chip->flags |= TPM_CHIP_FLAG_TPM2;
+		rc = tpm2_get_cc_attrs_tbl(chip);
+		if (rc)
+			goto init_irq_cleanup;
+	}
+
 	if (!wait_event_timeout(ibmvtpm->crq_queue.wq,
 				ibmvtpm->rtce_buf != NULL,
 				HZ)) {