Message ID | 20200615142327.671546-2-stefanb@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | tpm: Enable usage of TPM TIS with interrupts | expand |
Hi On Mon, Jun 15, 2020 at 6:23 PM Stefan Berger <stefanb@linux.vnet.ibm.com> wrote: > > From: Stefan Berger <stefanb@linux.ibm.com> > > This patch fixes a bug that occurs when using interrupts. It > allows to lower the IRQ also when a locality is not active. > Can you quote the specification, or is it purely based on testing (Windows & Linux) or checking expected behaviour from Linux code? > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > --- > hw/tpm/tpm_tis_common.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c > index 1af4bce139..0f42696f1f 100644 > --- a/hw/tpm/tpm_tis_common.c > +++ b/hw/tpm/tpm_tis_common.c > @@ -601,10 +601,6 @@ static void tpm_tis_mmio_write(void *opaque, hwaddr addr, > /* hard wired -- ignore */ > break; > case TPM_TIS_REG_INT_STATUS: > - if (s->active_locty != locty) { > - break; > - } > - > /* clearing of interrupt flags */ > if (((val & TPM_TIS_INTERRUPTS_SUPPORTED)) && > (s->loc[locty].ints & TPM_TIS_INTERRUPTS_SUPPORTED)) { > -- > 2.24.1 >
On 6/15/20 11:06 AM, Marc-André Lureau wrote: > Hi > > On Mon, Jun 15, 2020 at 6:23 PM Stefan Berger > <stefanb@linux.vnet.ibm.com> wrote: >> From: Stefan Berger <stefanb@linux.ibm.com> >> >> This patch fixes a bug that occurs when using interrupts. It >> allows to lower the IRQ also when a locality is not active. >> > Can you quote the specification, or is it purely based on testing > (Windows & Linux) or checking expected behaviour from Linux code? There's no spec for this detail. It's purely based on testing. also: Linux 5.x had interrupt support for a short while but this was removed due to some laptops receiving an interrupt storm following enablement: https://www.spinics.net/lists/linux-integrity/msg11870.html [ reason seems to be misconfiguration of some GPIO pin] I tested it with this patch: https://lkml.org/lkml/2019/8/20/421 5.4 kernel: https://elixir.bootlin.com/linux/v5.4/source/drivers/char/tpm/tpm_tis_core.c#L983 Stefan > >> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> >> --- >> hw/tpm/tpm_tis_common.c | 4 ---- >> 1 file changed, 4 deletions(-) >> >> diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c >> index 1af4bce139..0f42696f1f 100644 >> --- a/hw/tpm/tpm_tis_common.c >> +++ b/hw/tpm/tpm_tis_common.c >> @@ -601,10 +601,6 @@ static void tpm_tis_mmio_write(void *opaque, hwaddr addr, >> /* hard wired -- ignore */ >> break; >> case TPM_TIS_REG_INT_STATUS: >> - if (s->active_locty != locty) { >> - break; >> - } >> - >> /* clearing of interrupt flags */ >> if (((val & TPM_TIS_INTERRUPTS_SUPPORTED)) && >> (s->loc[locty].ints & TPM_TIS_INTERRUPTS_SUPPORTED)) { >> -- >> 2.24.1 >>
Hi Stefan, On 6/15/20 4:23 PM, Stefan Berger wrote: > From: Stefan Berger <stefanb@linux.ibm.com> > > This patch fixes a bug that occurs when using interrupts. It > allows to lower the IRQ also when a locality is not active. > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> Reviewed-by: Eric Auger <eric.auger@redhat.com> Thanks Eric > --- > hw/tpm/tpm_tis_common.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c > index 1af4bce139..0f42696f1f 100644 > --- a/hw/tpm/tpm_tis_common.c > +++ b/hw/tpm/tpm_tis_common.c > @@ -601,10 +601,6 @@ static void tpm_tis_mmio_write(void *opaque, hwaddr addr, > /* hard wired -- ignore */ > break; > case TPM_TIS_REG_INT_STATUS: > - if (s->active_locty != locty) { > - break; > - } > - > /* clearing of interrupt flags */ > if (((val & TPM_TIS_INTERRUPTS_SUPPORTED)) && > (s->loc[locty].ints & TPM_TIS_INTERRUPTS_SUPPORTED)) { >
diff --git a/hw/tpm/tpm_tis_common.c b/hw/tpm/tpm_tis_common.c index 1af4bce139..0f42696f1f 100644 --- a/hw/tpm/tpm_tis_common.c +++ b/hw/tpm/tpm_tis_common.c @@ -601,10 +601,6 @@ static void tpm_tis_mmio_write(void *opaque, hwaddr addr, /* hard wired -- ignore */ break; case TPM_TIS_REG_INT_STATUS: - if (s->active_locty != locty) { - break; - } - /* clearing of interrupt flags */ if (((val & TPM_TIS_INTERRUPTS_SUPPORTED)) && (s->loc[locty].ints & TPM_TIS_INTERRUPTS_SUPPORTED)) {