From: Stefan Berger <stefanb@linux.ibm.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>,
Michael Ellerman <mpe@ellerman.id.au>,
regressions@lists.linux.dev
Cc: linux-kernel@vger.kernel.org, naveen.n.rao@linux.ibm.com,
linux-integrity@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
jarkko@kernel.org
Subject: Re: [PATCH] tpm: ibmvtpm: Call tpm2_sessions_init() to initialize session support
Date: Fri, 28 Jun 2024 13:21:54 -0400 [thread overview]
Message-ID: <1bca15c7-1e76-49bc-aa6c-368d2bbf2e5c@linux.ibm.com> (raw)
In-Reply-To: <4108938158d888cc6ec371bb151e7ac35d3b4cb0.camel@HansenPartnership.com>
On 6/28/24 12:39, James Bottomley wrote:
> On Fri, 2024-06-28 at 10:54 +1000, Michael Ellerman wrote:
>> Stefan Berger <stefanb@linux.ibm.com> writes:
>>> Fix the following type of error message caused by a missing call to
>>> tpm2_sessions_init() in the IBM vTPM driver:
>>>
>>> [ 2.987131] tpm tpm0: tpm2_load_context: failed with a TPM error
>>> 0x01C4
>>> [ 2.987140] ima: Error Communicating to TPM chip, result: -14
>>>
>>> Fixes: d2add27cf2b8 ("tpm: Add NULL primary creation")
>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
>>> ---
>>> drivers/char/tpm/tpm_ibmvtpm.c | 4 ++++
>>> 1 file changed, 4 insertions(+)
>>>
>>> diff --git a/drivers/char/tpm/tpm_ibmvtpm.c
>>> b/drivers/char/tpm/tpm_ibmvtpm.c
>>> index d3989b257f42..1e5b107d1f3b 100644
>>> --- a/drivers/char/tpm/tpm_ibmvtpm.c
>>> +++ b/drivers/char/tpm/tpm_ibmvtpm.c
>>> @@ -698,6 +698,10 @@ static int tpm_ibmvtpm_probe(struct vio_dev
>>> *vio_dev,
>>> rc = tpm2_get_cc_attrs_tbl(chip);
>>> if (rc)
>>> goto init_irq_cleanup;
>>> +
>>> + rc = tpm2_sessions_init(chip);
>>> + if (rc)
>>> + goto init_irq_cleanup;
>>> }
>>>
>>> return tpm_chip_register(chip);
>>
>> #regzbot ^introduced: d2add27cf2b8
>
> Could you please test out the patch I proposed for this:
>
> https://lore.kernel.org/linux-integrity/1302b413a2d7bf3b275133e7fdb04b44bfe2d5e3.camel@HansenPartnership.com/
>
> Because it's not just tmp_ibmvtpm that doesn't call autostart. From
> inspection xen-tpmfront, tmp_nsc, tpm_infineon and tpm_atmel also
afaik tpm_infineon is a TPM 1.2 driver; same holds for tpm_atmel and
tpm_ns. Neither needs this new call from what I understand. The new TPM2
drivers have the TPM_OPS_AUTO_STARTUP flag set.
$ grep -r AUTO drivers/char/tpm/*.c | grep =
drivers/char/tpm/tpm_crb.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_ftpm_tee.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_i2c_atmel.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_i2c_infineon.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_i2c_nuvoton.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_ibmvtpm.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_tis_core.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_tis_i2c_cr50.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_vtpm_proxy.c: .flags = TPM_OPS_AUTO_STARTUP,
With xen-tpmfront I am not sure where something like chip->flags |=
TPM_CHIP_FLAG_TPM2 is done -- tpm2-cmd.c::tpm2_probe is not called from
this driver but only from tpm_tis_core.c::tpm_tis_core_init and
otherwise driver set it themselves.
$ grep -r TPM_CHIP_FLAG_TPM2 drivers/char/tpm/*.c | grep =
drivers/char/tpm/tpm2-cmd.c: chip->flags |=
TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm-chip.c: rc = (chip->flags & TPM_CHIP_FLAG_TPM2) ?
drivers/char/tpm/tpm_crb.c: chip->flags = TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_ftpm_tee.c: pvt_data->chip->flags |=
TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_i2c_nuvoton.c: chip->flags |=
TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_ibmvtpm.c: chip->flags |= TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm-interface.c: rc = (chip->flags &
TPM_CHIP_FLAG_TPM2) != 0;
drivers/char/tpm/tpm_tis_i2c_cr50.c: chip->flags |= TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_vtpm_proxy.c: proxy_dev->chip->flags
|= TPM_CHIP_FLAG_TPM2;
> don't, so it would be better to fix this for everyone rather than just
> for you and have to do a separate fix for each of them.
I am not sure whether any one of the mentioned drivers actually need
this call and if they need it they should probably move towards setting
TPM_OPS_AUTO_STARTUP.
Stefan
>
> James
>
>
WARNING: multiple messages have this Message-ID (diff)
From: Stefan Berger <stefanb@linux.ibm.com>
To: James Bottomley <James.Bottomley@HansenPartnership.com>,
Michael Ellerman <mpe@ellerman.id.au>,
regressions@lists.linux.dev
Cc: naveen.n.rao@linux.ibm.com, jarkko@kernel.org,
linux-integrity@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tpm: ibmvtpm: Call tpm2_sessions_init() to initialize session support
Date: Fri, 28 Jun 2024 13:21:54 -0400 [thread overview]
Message-ID: <1bca15c7-1e76-49bc-aa6c-368d2bbf2e5c@linux.ibm.com> (raw)
In-Reply-To: <4108938158d888cc6ec371bb151e7ac35d3b4cb0.camel@HansenPartnership.com>
On 6/28/24 12:39, James Bottomley wrote:
> On Fri, 2024-06-28 at 10:54 +1000, Michael Ellerman wrote:
>> Stefan Berger <stefanb@linux.ibm.com> writes:
>>> Fix the following type of error message caused by a missing call to
>>> tpm2_sessions_init() in the IBM vTPM driver:
>>>
>>> [ 2.987131] tpm tpm0: tpm2_load_context: failed with a TPM error
>>> 0x01C4
>>> [ 2.987140] ima: Error Communicating to TPM chip, result: -14
>>>
>>> Fixes: d2add27cf2b8 ("tpm: Add NULL primary creation")
>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
>>> ---
>>> drivers/char/tpm/tpm_ibmvtpm.c | 4 ++++
>>> 1 file changed, 4 insertions(+)
>>>
>>> diff --git a/drivers/char/tpm/tpm_ibmvtpm.c
>>> b/drivers/char/tpm/tpm_ibmvtpm.c
>>> index d3989b257f42..1e5b107d1f3b 100644
>>> --- a/drivers/char/tpm/tpm_ibmvtpm.c
>>> +++ b/drivers/char/tpm/tpm_ibmvtpm.c
>>> @@ -698,6 +698,10 @@ static int tpm_ibmvtpm_probe(struct vio_dev
>>> *vio_dev,
>>> rc = tpm2_get_cc_attrs_tbl(chip);
>>> if (rc)
>>> goto init_irq_cleanup;
>>> +
>>> + rc = tpm2_sessions_init(chip);
>>> + if (rc)
>>> + goto init_irq_cleanup;
>>> }
>>>
>>> return tpm_chip_register(chip);
>>
>> #regzbot ^introduced: d2add27cf2b8
>
> Could you please test out the patch I proposed for this:
>
> https://lore.kernel.org/linux-integrity/1302b413a2d7bf3b275133e7fdb04b44bfe2d5e3.camel@HansenPartnership.com/
>
> Because it's not just tmp_ibmvtpm that doesn't call autostart. From
> inspection xen-tpmfront, tmp_nsc, tpm_infineon and tpm_atmel also
afaik tpm_infineon is a TPM 1.2 driver; same holds for tpm_atmel and
tpm_ns. Neither needs this new call from what I understand. The new TPM2
drivers have the TPM_OPS_AUTO_STARTUP flag set.
$ grep -r AUTO drivers/char/tpm/*.c | grep =
drivers/char/tpm/tpm_crb.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_ftpm_tee.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_i2c_atmel.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_i2c_infineon.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_i2c_nuvoton.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_ibmvtpm.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_tis_core.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_tis_i2c_cr50.c: .flags = TPM_OPS_AUTO_STARTUP,
drivers/char/tpm/tpm_vtpm_proxy.c: .flags = TPM_OPS_AUTO_STARTUP,
With xen-tpmfront I am not sure where something like chip->flags |=
TPM_CHIP_FLAG_TPM2 is done -- tpm2-cmd.c::tpm2_probe is not called from
this driver but only from tpm_tis_core.c::tpm_tis_core_init and
otherwise driver set it themselves.
$ grep -r TPM_CHIP_FLAG_TPM2 drivers/char/tpm/*.c | grep =
drivers/char/tpm/tpm2-cmd.c: chip->flags |=
TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm-chip.c: rc = (chip->flags & TPM_CHIP_FLAG_TPM2) ?
drivers/char/tpm/tpm_crb.c: chip->flags = TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_ftpm_tee.c: pvt_data->chip->flags |=
TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_i2c_nuvoton.c: chip->flags |=
TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_ibmvtpm.c: chip->flags |= TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm-interface.c: rc = (chip->flags &
TPM_CHIP_FLAG_TPM2) != 0;
drivers/char/tpm/tpm_tis_i2c_cr50.c: chip->flags |= TPM_CHIP_FLAG_TPM2;
drivers/char/tpm/tpm_vtpm_proxy.c: proxy_dev->chip->flags
|= TPM_CHIP_FLAG_TPM2;
> don't, so it would be better to fix this for everyone rather than just
> for you and have to do a separate fix for each of them.
I am not sure whether any one of the mentioned drivers actually need
this call and if they need it they should probably move towards setting
TPM_OPS_AUTO_STARTUP.
Stefan
>
> James
>
>
next prev parent reply other threads:[~2024-06-28 17:26 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-17 19:34 [PATCH] tpm: ibmvtpm: Call tpm2_sessions_init() to initialize session support Stefan Berger
2024-06-17 19:34 ` Stefan Berger
2024-06-17 19:42 ` James Bottomley
2024-06-17 19:42 ` James Bottomley
2024-06-17 19:56 ` Stefan Berger
2024-06-17 19:56 ` Stefan Berger
2024-06-17 20:05 ` James Bottomley
2024-06-17 20:05 ` James Bottomley
2024-06-17 20:17 ` Stefan Berger
2024-06-17 20:17 ` Stefan Berger
2024-06-19 22:34 ` Stefan Berger
2024-06-19 22:34 ` Stefan Berger
2024-06-28 15:00 ` Linux regression tracking (Thorsten Leemhuis)
2024-06-28 15:00 ` Linux regression tracking (Thorsten Leemhuis)
2024-07-01 15:22 ` Jarkko Sakkinen
2024-07-01 15:22 ` Jarkko Sakkinen
2024-07-01 18:29 ` Stefan Berger
2024-07-01 18:29 ` Stefan Berger
2024-07-01 19:01 ` Jarkko Sakkinen
2024-07-01 19:01 ` Jarkko Sakkinen
2024-07-01 19:14 ` Stefan Berger
2024-07-01 19:14 ` Stefan Berger
2024-07-02 23:48 ` Jarkko Sakkinen
2024-07-02 23:48 ` Jarkko Sakkinen
2024-07-02 23:57 ` Jarkko Sakkinen
2024-07-02 23:57 ` Jarkko Sakkinen
2024-07-03 0:34 ` Jarkko Sakkinen
2024-07-03 0:34 ` Jarkko Sakkinen
2024-07-03 0:48 ` Jarkko Sakkinen
2024-07-03 0:48 ` Jarkko Sakkinen
2024-07-03 1:00 ` Jarkko Sakkinen
2024-07-03 1:00 ` Jarkko Sakkinen
2024-07-01 14:53 ` Jarkko Sakkinen
2024-07-01 14:53 ` Jarkko Sakkinen
2024-06-28 0:54 ` Michael Ellerman
2024-06-28 0:54 ` Michael Ellerman
2024-06-28 16:39 ` James Bottomley
2024-06-28 16:39 ` James Bottomley
2024-06-28 17:21 ` Stefan Berger [this message]
2024-06-28 17:21 ` Stefan Berger
2024-07-02 0:19 ` Michael Ellerman
2024-07-02 0:19 ` Michael Ellerman
2024-07-01 14:52 ` Jarkko Sakkinen
2024-07-01 14:52 ` Jarkko Sakkinen
-- strict thread matches above, loose matches on Subject: below --
2024-08-29 13:47 Qianqiang Liu
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=1bca15c7-1e76-49bc-aa6c-368d2bbf2e5c@linux.ibm.com \
--to=stefanb@linux.ibm.com \
--cc=James.Bottomley@HansenPartnership.com \
--cc=jarkko@kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=naveen.n.rao@linux.ibm.com \
--cc=regressions@lists.linux.dev \
/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.