All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] tpm: Handle failure mode of backend device better
@ 2017-11-11  3:39 Stefan Berger
  2017-11-11  3:39 ` [Qemu-devel] [PATCH 1/2] tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure Stefan Berger
  2017-11-11  3:39 ` [Qemu-devel] [PATCH 2/2] tpm_tis: Return 0 for every register in case of failure mode Stefan Berger
  0 siblings, 2 replies; 7+ messages in thread
From: Stefan Berger @ 2017-11-11  3:39 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau; +Cc: amarnath.valluri, Stefan Berger

The following two patches fix the case that the backend device, e.g.,
tpm_emulator, could not be initialized and the TIS frontend needs to
go into failure mode.

   Stefan

Stefan Berger (2):
  tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure
  tpm_tis: Return 0 for every register in case of failure mode

 hw/tpm/tpm_tis.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

-- 
2.5.5

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH 1/2] tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure
  2017-11-11  3:39 [Qemu-devel] [PATCH 0/2] tpm: Handle failure mode of backend device better Stefan Berger
@ 2017-11-11  3:39 ` Stefan Berger
  2017-12-13 10:23   ` Marc-André Lureau
  2017-11-11  3:39 ` [Qemu-devel] [PATCH 2/2] tpm_tis: Return 0 for every register in case of failure mode Stefan Berger
  1 sibling, 1 reply; 7+ messages in thread
From: Stefan Berger @ 2017-11-11  3:39 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau; +Cc: amarnath.valluri, Stefan Berger

In case the backend has a failure, such as the tpm_emulator's CMD_INIT
failing, the TIS goes into failure mode and does not respond to reads
or writes to MMIO registers. In this case we need to prevent the ACPI
table from being added and the straight-forward way is to indicate that
there's no known TPM version being used.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
---
 hw/tpm/tpm_tis.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
index c0a0204..eca3374 100644
--- a/hw/tpm/tpm_tis.c
+++ b/hw/tpm/tpm_tis.c
@@ -970,6 +970,10 @@ static enum TPMVersion tpm_tis_get_tpm_version(TPMIf *ti)
 {
     TPMState *s = TPM(ti);
 
+    if (tpm_backend_had_startup_error(s->be_driver)) {
+        return TPM_VERSION_UNSPEC;
+    }
+
     return tpm_backend_get_tpm_version(s->be_driver);
 }
 
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [Qemu-devel] [PATCH 2/2] tpm_tis: Return 0 for every register in case of failure mode
  2017-11-11  3:39 [Qemu-devel] [PATCH 0/2] tpm: Handle failure mode of backend device better Stefan Berger
  2017-11-11  3:39 ` [Qemu-devel] [PATCH 1/2] tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure Stefan Berger
@ 2017-11-11  3:39 ` Stefan Berger
  2017-12-13 10:26   ` Marc-André Lureau
  1 sibling, 1 reply; 7+ messages in thread
From: Stefan Berger @ 2017-11-11  3:39 UTC (permalink / raw)
  To: qemu-devel, marcandre.lureau; +Cc: amarnath.valluri, Stefan Berger

Rather than returning ~0, return 0 for every register in case of
failure mode. The '0' is better to indicate that there's no device
there.

Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
---
 hw/tpm/tpm_tis.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
index eca3374..d0bdd96 100644
--- a/hw/tpm/tpm_tis.c
+++ b/hw/tpm/tpm_tis.c
@@ -519,7 +519,7 @@ static uint64_t tpm_tis_mmio_read(void *opaque, hwaddr addr,
     uint8_t v;
 
     if (tpm_backend_had_startup_error(s->be_driver)) {
-        return val;
+        return 0;
     }
 
     switch (offset) {
-- 
2.5.5

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure
  2017-11-11  3:39 ` [Qemu-devel] [PATCH 1/2] tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure Stefan Berger
@ 2017-12-13 10:23   ` Marc-André Lureau
  2017-12-13 11:54     ` Stefan Berger
  0 siblings, 1 reply; 7+ messages in thread
From: Marc-André Lureau @ 2017-12-13 10:23 UTC (permalink / raw)
  To: Stefan Berger; +Cc: QEMU, Amarnath Valluri

On Sat, Nov 11, 2017 at 4:39 AM, Stefan Berger
<stefanb@linux.vnet.ibm.com> wrote:
> In case the backend has a failure, such as the tpm_emulator's CMD_INIT
> failing, the TIS goes into failure mode and does not respond to reads
> or writes to MMIO registers. In this case we need to prevent the ACPI
> table from being added and the straight-forward way is to indicate that
> there's no known TPM version being used.
>
> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


> ---
>  hw/tpm/tpm_tis.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
> index c0a0204..eca3374 100644
> --- a/hw/tpm/tpm_tis.c
> +++ b/hw/tpm/tpm_tis.c
> @@ -970,6 +970,10 @@ static enum TPMVersion tpm_tis_get_tpm_version(TPMIf *ti)
>  {
>      TPMState *s = TPM(ti);
>
> +    if (tpm_backend_had_startup_error(s->be_driver)) {
> +        return TPM_VERSION_UNSPEC;
> +    }
> +
>      return tpm_backend_get_tpm_version(s->be_driver);
>  }
>
> --
> 2.5.5
>
>



-- 
Marc-André Lureau

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH 2/2] tpm_tis: Return 0 for every register in case of failure mode
  2017-11-11  3:39 ` [Qemu-devel] [PATCH 2/2] tpm_tis: Return 0 for every register in case of failure mode Stefan Berger
@ 2017-12-13 10:26   ` Marc-André Lureau
  2017-12-13 11:57     ` Stefan Berger
  0 siblings, 1 reply; 7+ messages in thread
From: Marc-André Lureau @ 2017-12-13 10:26 UTC (permalink / raw)
  To: Stefan Berger; +Cc: QEMU, Amarnath Valluri

Hi Stefan

On Sat, Nov 11, 2017 at 4:39 AM, Stefan Berger
<stefanb@linux.vnet.ibm.com> wrote:
> Rather than returning ~0, return 0 for every register in case of
> failure mode. The '0' is better to indicate that there's no device
> there.
>
> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> ---
>  hw/tpm/tpm_tis.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
> index eca3374..d0bdd96 100644
> --- a/hw/tpm/tpm_tis.c
> +++ b/hw/tpm/tpm_tis.c
> @@ -519,7 +519,7 @@ static uint64_t tpm_tis_mmio_read(void *opaque, hwaddr addr,
>      uint8_t v;
>
>      if (tpm_backend_had_startup_error(s->be_driver)) {
> -        return val;
> +        return 0;
>      }

it's not obvious to me why it's better. Could you detail a bit more the reason?

why not change the initialization of val instead?

>
>      switch (offset) {
> --
> 2.5.5
>
>



-- 
Marc-André Lureau

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure
  2017-12-13 10:23   ` Marc-André Lureau
@ 2017-12-13 11:54     ` Stefan Berger
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Berger @ 2017-12-13 11:54 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: Amarnath Valluri, QEMU

On 12/13/2017 05:23 AM, Marc-André Lureau wrote:
> On Sat, Nov 11, 2017 at 4:39 AM, Stefan Berger
> <stefanb@linux.vnet.ibm.com> wrote:
>> In case the backend has a failure, such as the tpm_emulator's CMD_INIT
>> failing, the TIS goes into failure mode and does not respond to reads
>> or writes to MMIO registers. In this case we need to prevent the ACPI
>> table from being added and the straight-forward way is to indicate that
>> there's no known TPM version being used.
>>
>> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Resending an old response?

https://patchwork.kernel.org/patch/10058405/

>
>
>> ---
>>   hw/tpm/tpm_tis.c | 4 ++++
>>   1 file changed, 4 insertions(+)
>>
>> diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
>> index c0a0204..eca3374 100644
>> --- a/hw/tpm/tpm_tis.c
>> +++ b/hw/tpm/tpm_tis.c
>> @@ -970,6 +970,10 @@ static enum TPMVersion tpm_tis_get_tpm_version(TPMIf *ti)
>>   {
>>       TPMState *s = TPM(ti);
>>
>> +    if (tpm_backend_had_startup_error(s->be_driver)) {
>> +        return TPM_VERSION_UNSPEC;
>> +    }
>> +
>>       return tpm_backend_get_tpm_version(s->be_driver);
>>   }
>>
>> --
>> 2.5.5
>>
>>
>
>

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] [PATCH 2/2] tpm_tis: Return 0 for every register in case of failure mode
  2017-12-13 10:26   ` Marc-André Lureau
@ 2017-12-13 11:57     ` Stefan Berger
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Berger @ 2017-12-13 11:57 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: Amarnath Valluri, QEMU

On 12/13/2017 05:26 AM, Marc-André Lureau wrote:
> Hi Stefan
>
> On Sat, Nov 11, 2017 at 4:39 AM, Stefan Berger
> <stefanb@linux.vnet.ibm.com> wrote:
>> Rather than returning ~0, return 0 for every register in case of
>> failure mode. The '0' is better to indicate that there's no device
>> there.
>>
>> Signed-off-by: Stefan Berger <stefanb@linux.vnet.ibm.com>
>> ---
>>   hw/tpm/tpm_tis.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/hw/tpm/tpm_tis.c b/hw/tpm/tpm_tis.c
>> index eca3374..d0bdd96 100644
>> --- a/hw/tpm/tpm_tis.c
>> +++ b/hw/tpm/tpm_tis.c
>> @@ -519,7 +519,7 @@ static uint64_t tpm_tis_mmio_read(void *opaque, hwaddr addr,
>>       uint8_t v;
>>
>>       if (tpm_backend_had_startup_error(s->be_driver)) {
>> -        return val;
>> +        return 0;
>>       }
> it's not obvious to me why it's better. Could you detail a bit more the reason?
>
> why not change the initialization of val instead?

http://patchwork.ozlabs.org/patch/838042/

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2017-12-13 11:57 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-11-11  3:39 [Qemu-devel] [PATCH 0/2] tpm: Handle failure mode of backend device better Stefan Berger
2017-11-11  3:39 ` [Qemu-devel] [PATCH 1/2] tpm_tis: Return TPM_VERSION_UNSPEC in case of BE failure Stefan Berger
2017-12-13 10:23   ` Marc-André Lureau
2017-12-13 11:54     ` Stefan Berger
2017-11-11  3:39 ` [Qemu-devel] [PATCH 2/2] tpm_tis: Return 0 for every register in case of failure mode Stefan Berger
2017-12-13 10:26   ` Marc-André Lureau
2017-12-13 11:57     ` Stefan Berger

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.