Message ID | 20200331214949.883781-1-stefanb@linux.vnet.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v3] acpi: Extend TPM2 ACPI table with missing log fields | expand |
On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: > From: Stefan Berger <stefanb@linux.ibm.com> > > Recent extensions of the TPM2 ACPI table added 3 more fields > including 12 bytes of start method specific parameters and Log Area > Minimum Length (u32) and Log Area Start Address (u64). So, we extend > the existing structure with these fields to allow non-UEFI systems > to access the TPM2's log. > > The specification that has the new fields is the following: > TCG ACPI Specification > Family "1.2" and "2.0" > Version 1.2, Revision 8 > > Adapt all existing table size calculations to use > offsetof(struct acpi_table_tpm2, start_method_specific) > [where start_method_specific is a newly added field] > rather than sizeof(struct acpi_table_tpm2) so that the addition > of the new fields does not affect current systems that may not > have them. > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > Cc: linux-acpi@vger.kernel.org I think I'm cool with this but needs an ack from ACPI maintainer. Rafael, given that this not an intrusive change in any possible means, can I pick this patch and put it to my next pull request? /Jarkko
On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> wrote: > > On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: > > From: Stefan Berger <stefanb@linux.ibm.com> > > > > Recent extensions of the TPM2 ACPI table added 3 more fields > > including 12 bytes of start method specific parameters and Log Area > > Minimum Length (u32) and Log Area Start Address (u64). So, we extend > > the existing structure with these fields to allow non-UEFI systems > > to access the TPM2's log. > > > > The specification that has the new fields is the following: > > TCG ACPI Specification > > Family "1.2" and "2.0" > > Version 1.2, Revision 8 > > > > Adapt all existing table size calculations to use > > offsetof(struct acpi_table_tpm2, start_method_specific) > > [where start_method_specific is a newly added field] > > rather than sizeof(struct acpi_table_tpm2) so that the addition > > of the new fields does not affect current systems that may not > > have them. > > > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > > Cc: linux-acpi@vger.kernel.org > > I think I'm cool with this but needs an ack from ACPI maintainer. > > Rafael, given that this not an intrusive change in any possible means, > can I pick this patch and put it to my next pull request? Yes, please. Thanks!
On Wed, Apr 01, 2020 at 11:05:36AM +0200, Rafael J. Wysocki wrote: > On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen > <jarkko.sakkinen@linux.intel.com> wrote: > > > > On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: > > > From: Stefan Berger <stefanb@linux.ibm.com> > > > > > > Recent extensions of the TPM2 ACPI table added 3 more fields > > > including 12 bytes of start method specific parameters and Log Area > > > Minimum Length (u32) and Log Area Start Address (u64). So, we extend > > > the existing structure with these fields to allow non-UEFI systems > > > to access the TPM2's log. > > > > > > The specification that has the new fields is the following: > > > TCG ACPI Specification > > > Family "1.2" and "2.0" > > > Version 1.2, Revision 8 > > > > > > Adapt all existing table size calculations to use > > > offsetof(struct acpi_table_tpm2, start_method_specific) > > > [where start_method_specific is a newly added field] > > > rather than sizeof(struct acpi_table_tpm2) so that the addition > > > of the new fields does not affect current systems that may not > > > have them. > > > > > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > > > Cc: linux-acpi@vger.kernel.org > > > > I think I'm cool with this but needs an ack from ACPI maintainer. > > > > Rafael, given that this not an intrusive change in any possible means, > > can I pick this patch and put it to my next pull request? > > Yes, please. > > Thanks! Great, thanks Rafael. Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> Do you mind if I add your ack to the commit? /Jarkko
On 4/2/20 3:21 PM, Jarkko Sakkinen wrote: > On Wed, Apr 01, 2020 at 11:05:36AM +0200, Rafael J. Wysocki wrote: >> On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen >> <jarkko.sakkinen@linux.intel.com> wrote: >>> On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: >>>> From: Stefan Berger <stefanb@linux.ibm.com> >>>> >>>> Recent extensions of the TPM2 ACPI table added 3 more fields >>>> including 12 bytes of start method specific parameters and Log Area >>>> Minimum Length (u32) and Log Area Start Address (u64). So, we extend >>>> the existing structure with these fields to allow non-UEFI systems >>>> to access the TPM2's log. >>>> >>>> The specification that has the new fields is the following: >>>> TCG ACPI Specification >>>> Family "1.2" and "2.0" >>>> Version 1.2, Revision 8 >>>> >>>> Adapt all existing table size calculations to use >>>> offsetof(struct acpi_table_tpm2, start_method_specific) >>>> [where start_method_specific is a newly added field] >>>> rather than sizeof(struct acpi_table_tpm2) so that the addition >>>> of the new fields does not affect current systems that may not >>>> have them. >>>> >>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> >>>> Cc: linux-acpi@vger.kernel.org >>> I think I'm cool with this but needs an ack from ACPI maintainer. >>> >>> Rafael, given that this not an intrusive change in any possible means, >>> can I pick this patch and put it to my next pull request? >> Yes, please. >> >> Thanks! > Great, thanks Rafael. > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > Do you mind if I add your ack to the commit? Any chance to get v4 applied? > > /Jarkko
On Fri, Jun 19, 2020 at 5:14 PM Stefan Berger <stefanb@linux.ibm.com> wrote: > > On 4/2/20 3:21 PM, Jarkko Sakkinen wrote: > > On Wed, Apr 01, 2020 at 11:05:36AM +0200, Rafael J. Wysocki wrote: > >> On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen > >> <jarkko.sakkinen@linux.intel.com> wrote: > >>> On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: > >>>> From: Stefan Berger <stefanb@linux.ibm.com> > >>>> > >>>> Recent extensions of the TPM2 ACPI table added 3 more fields > >>>> including 12 bytes of start method specific parameters and Log Area > >>>> Minimum Length (u32) and Log Area Start Address (u64). So, we extend > >>>> the existing structure with these fields to allow non-UEFI systems > >>>> to access the TPM2's log. > >>>> > >>>> The specification that has the new fields is the following: > >>>> TCG ACPI Specification > >>>> Family "1.2" and "2.0" > >>>> Version 1.2, Revision 8 > >>>> > >>>> Adapt all existing table size calculations to use > >>>> offsetof(struct acpi_table_tpm2, start_method_specific) > >>>> [where start_method_specific is a newly added field] > >>>> rather than sizeof(struct acpi_table_tpm2) so that the addition > >>>> of the new fields does not affect current systems that may not > >>>> have them. > >>>> > >>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > >>>> Cc: linux-acpi@vger.kernel.org > >>> I think I'm cool with this but needs an ack from ACPI maintainer. > >>> > >>> Rafael, given that this not an intrusive change in any possible means, > >>> can I pick this patch and put it to my next pull request? > >> Yes, please. > >> > >> Thanks! > > Great, thanks Rafael. > > > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > > > Do you mind if I add your ack to the commit? > It looks like I missed the previous message from Jarkko. Yes, please, feel free to add my ACK to the patch, thanks!
On Fri, Jun 19, 2020 at 11:14:20AM -0400, Stefan Berger wrote: > On 4/2/20 3:21 PM, Jarkko Sakkinen wrote: > > On Wed, Apr 01, 2020 at 11:05:36AM +0200, Rafael J. Wysocki wrote: > > > On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen > > > <jarkko.sakkinen@linux.intel.com> wrote: > > > > On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: > > > > > From: Stefan Berger <stefanb@linux.ibm.com> > > > > > > > > > > Recent extensions of the TPM2 ACPI table added 3 more fields > > > > > including 12 bytes of start method specific parameters and Log Area > > > > > Minimum Length (u32) and Log Area Start Address (u64). So, we extend > > > > > the existing structure with these fields to allow non-UEFI systems > > > > > to access the TPM2's log. > > > > > > > > > > The specification that has the new fields is the following: > > > > > TCG ACPI Specification > > > > > Family "1.2" and "2.0" > > > > > Version 1.2, Revision 8 > > > > > > > > > > Adapt all existing table size calculations to use > > > > > offsetof(struct acpi_table_tpm2, start_method_specific) > > > > > [where start_method_specific is a newly added field] > > > > > rather than sizeof(struct acpi_table_tpm2) so that the addition > > > > > of the new fields does not affect current systems that may not > > > > > have them. > > > > > > > > > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > > > > > Cc: linux-acpi@vger.kernel.org > > > > I think I'm cool with this but needs an ack from ACPI maintainer. > > > > > > > > Rafael, given that this not an intrusive change in any possible means, > > > > can I pick this patch and put it to my next pull request? > > > Yes, please. > > > > > > Thanks! > > Great, thanks Rafael. > > > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > > > Do you mind if I add your ack to the commit? > > > Any chance to get v4 applied? You should split the actbl3.h change to a separate patch and add 'Cc:' tag to Rafael to the commit message. /Jarkko
On Fri, Jun 19, 2020 at 05:55:19PM +0200, Rafael J. Wysocki wrote: > On Fri, Jun 19, 2020 at 5:14 PM Stefan Berger <stefanb@linux.ibm.com> wrote: > > > > On 4/2/20 3:21 PM, Jarkko Sakkinen wrote: > > > On Wed, Apr 01, 2020 at 11:05:36AM +0200, Rafael J. Wysocki wrote: > > >> On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen > > >> <jarkko.sakkinen@linux.intel.com> wrote: > > >>> On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: > > >>>> From: Stefan Berger <stefanb@linux.ibm.com> > > >>>> > > >>>> Recent extensions of the TPM2 ACPI table added 3 more fields > > >>>> including 12 bytes of start method specific parameters and Log Area > > >>>> Minimum Length (u32) and Log Area Start Address (u64). So, we extend > > >>>> the existing structure with these fields to allow non-UEFI systems > > >>>> to access the TPM2's log. > > >>>> > > >>>> The specification that has the new fields is the following: > > >>>> TCG ACPI Specification > > >>>> Family "1.2" and "2.0" > > >>>> Version 1.2, Revision 8 > > >>>> > > >>>> Adapt all existing table size calculations to use > > >>>> offsetof(struct acpi_table_tpm2, start_method_specific) > > >>>> [where start_method_specific is a newly added field] > > >>>> rather than sizeof(struct acpi_table_tpm2) so that the addition > > >>>> of the new fields does not affect current systems that may not > > >>>> have them. > > >>>> > > >>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > > >>>> Cc: linux-acpi@vger.kernel.org > > >>> I think I'm cool with this but needs an ack from ACPI maintainer. > > >>> > > >>> Rafael, given that this not an intrusive change in any possible means, > > >>> can I pick this patch and put it to my next pull request? > > >> Yes, please. > > >> > > >> Thanks! > > > Great, thanks Rafael. > > > > > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > > > > > Do you mind if I add your ack to the commit? > > > > It looks like I missed the previous message from Jarkko. > > Yes, please, feel free to add my ACK to the patch, thanks! OK, this is great, thanks. I'll pick it to my tree then. /Jarkko
On Tue, Jun 23, 2020 at 03:56:53AM +0300, Jarkko Sakkinen wrote: > On Fri, Jun 19, 2020 at 11:14:20AM -0400, Stefan Berger wrote: > > On 4/2/20 3:21 PM, Jarkko Sakkinen wrote: > > > On Wed, Apr 01, 2020 at 11:05:36AM +0200, Rafael J. Wysocki wrote: > > > > On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen > > > > <jarkko.sakkinen@linux.intel.com> wrote: > > > > > On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: > > > > > > From: Stefan Berger <stefanb@linux.ibm.com> > > > > > > > > > > > > Recent extensions of the TPM2 ACPI table added 3 more fields > > > > > > including 12 bytes of start method specific parameters and Log Area > > > > > > Minimum Length (u32) and Log Area Start Address (u64). So, we extend > > > > > > the existing structure with these fields to allow non-UEFI systems > > > > > > to access the TPM2's log. > > > > > > > > > > > > The specification that has the new fields is the following: > > > > > > TCG ACPI Specification > > > > > > Family "1.2" and "2.0" > > > > > > Version 1.2, Revision 8 > > > > > > > > > > > > Adapt all existing table size calculations to use > > > > > > offsetof(struct acpi_table_tpm2, start_method_specific) > > > > > > [where start_method_specific is a newly added field] > > > > > > rather than sizeof(struct acpi_table_tpm2) so that the addition > > > > > > of the new fields does not affect current systems that may not > > > > > > have them. > > > > > > > > > > > > Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> > > > > > > Cc: linux-acpi@vger.kernel.org > > > > > I think I'm cool with this but needs an ack from ACPI maintainer. > > > > > > > > > > Rafael, given that this not an intrusive change in any possible means, > > > > > can I pick this patch and put it to my next pull request? > > > > Yes, please. > > > > > > > > Thanks! > > > Great, thanks Rafael. > > > > > > Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> > > > > > > Do you mind if I add your ack to the commit? > > > > > > Any chance to get v4 applied? > > You should split the actbl3.h change to a separate patch and add 'Cc:' > tag to Rafael to the commit message. Send v5 with Rafael's ack (no need to split anymore). /Jarkko
On 6/22/20 8:56 PM, Jarkko Sakkinen wrote: > On Fri, Jun 19, 2020 at 11:14:20AM -0400, Stefan Berger wrote: >> On 4/2/20 3:21 PM, Jarkko Sakkinen wrote: >>> On Wed, Apr 01, 2020 at 11:05:36AM +0200, Rafael J. Wysocki wrote: >>>> On Wed, Apr 1, 2020 at 10:37 AM Jarkko Sakkinen >>>> <jarkko.sakkinen@linux.intel.com> wrote: >>>>> On Tue, Mar 31, 2020 at 05:49:49PM -0400, Stefan Berger wrote: >>>>>> From: Stefan Berger <stefanb@linux.ibm.com> >>>>>> >>>>>> Recent extensions of the TPM2 ACPI table added 3 more fields >>>>>> including 12 bytes of start method specific parameters and Log Area >>>>>> Minimum Length (u32) and Log Area Start Address (u64). So, we extend >>>>>> the existing structure with these fields to allow non-UEFI systems >>>>>> to access the TPM2's log. >>>>>> >>>>>> The specification that has the new fields is the following: >>>>>> TCG ACPI Specification >>>>>> Family "1.2" and "2.0" >>>>>> Version 1.2, Revision 8 >>>>>> >>>>>> Adapt all existing table size calculations to use >>>>>> offsetof(struct acpi_table_tpm2, start_method_specific) >>>>>> [where start_method_specific is a newly added field] >>>>>> rather than sizeof(struct acpi_table_tpm2) so that the addition >>>>>> of the new fields does not affect current systems that may not >>>>>> have them. >>>>>> >>>>>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> >>>>>> Cc: linux-acpi@vger.kernel.org >>>>> I think I'm cool with this but needs an ack from ACPI maintainer. >>>>> >>>>> Rafael, given that this not an intrusive change in any possible means, >>>>> can I pick this patch and put it to my next pull request? >>>> Yes, please. >>>> >>>> Thanks! >>> Great, thanks Rafael. >>> >>> Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com> >>> >>> Do you mind if I add your ack to the commit? >> >> Any chance to get v4 applied? > You should split the actbl3.h change to a separate patch and add 'Cc:' > tag to Rafael to the commit message. I did this in one patch because it seems like a mistake to extend the structure and not modify the size checks. Stefan > > /Jarkko
diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c index a9dcf31eadd2..0565aa5482f9 100644 --- a/drivers/char/tpm/tpm_crb.c +++ b/drivers/char/tpm/tpm_crb.c @@ -669,7 +669,9 @@ static int crb_acpi_add(struct acpi_device *device) status = acpi_get_table(ACPI_SIG_TPM2, 1, (struct acpi_table_header **) &buf); - if (ACPI_FAILURE(status) || buf->header.length < sizeof(*buf)) { + if (ACPI_FAILURE(status) || buf->header.length < + offsetof(struct acpi_table_tpm2, + start_method_specific)) { dev_err(dev, FW_BUG "failed to get TPM2 ACPI table\n"); return -EINVAL; } @@ -684,14 +686,19 @@ static int crb_acpi_add(struct acpi_device *device) return -ENOMEM; if (sm == ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC) { - if (buf->header.length < (sizeof(*buf) + sizeof(*crb_smc))) { + if (buf->header.length < + (offsetof(struct acpi_table_tpm2, + start_method_specific) + + sizeof(*crb_smc))) { dev_err(dev, FW_BUG "TPM2 ACPI table has wrong size %u for start method type %d\n", buf->header.length, ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC); return -EINVAL; } - crb_smc = ACPI_ADD_PTR(struct tpm2_crb_smc, buf, sizeof(*buf)); + crb_smc = ACPI_ADD_PTR(struct tpm2_crb_smc, buf, + offsetof(struct acpi_table_tpm2, + start_method_specific)); priv->smc_func_id = crb_smc->smc_func_id; } diff --git a/drivers/char/tpm/tpm_tis.c b/drivers/char/tpm/tpm_tis.c index e7df342a317d..a80f36860bac 100644 --- a/drivers/char/tpm/tpm_tis.c +++ b/drivers/char/tpm/tpm_tis.c @@ -111,7 +111,9 @@ static int check_acpi_tpm2(struct device *dev) */ st = acpi_get_table(ACPI_SIG_TPM2, 1, (struct acpi_table_header **)&tbl); - if (ACPI_FAILURE(st) || tbl->header.length < sizeof(*tbl)) { + if (ACPI_FAILURE(st) || tbl->header.length < + offsetof(struct acpi_table_tpm2, + start_method_specific)) { dev_err(dev, FW_BUG "failed to get TPM2 ACPI table\n"); return -EINVAL; } diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h index 2bf3baf819bb..b6118c67af0c 100644 --- a/include/acpi/actbl3.h +++ b/include/acpi/actbl3.h @@ -411,8 +411,9 @@ struct acpi_table_tpm2 { u16 reserved; u64 control_address; u32 start_method; - - /* Platform-specific data follows */ + u8 start_method_specific[12]; + u32 log_area_minimum_length; /* optional */ + u64 log_area_start_address; /* optional */ }; /* Values for start_method above */