On Tue, Oct 18, 2016 at 08:49:43PM -0400, Nayna Jain wrote:
> Currently, read_log() has two implementations: one for ACPI platforms
> and the other for device tree(OF) based platforms. The proper one is
> selected at compile time using Kconfig and #ifdef in the Makefile,
> which is not the recommended approach.
> 
> This patch removes the #ifdef in the Makefile by defining a single
> read_log() method, which checks for ACPI/OF event log properties at
> runtime.
> 
> Suggested-by: Jason Gunthorpe <jguntho...@obsidianresearch.com>
> Signed-off-by: Nayna Jain <na...@linux.vnet.ibm.com>
> Reviewed-by: Jason Gunthorpe <jguntho...@obsidianresearch.com>

Do we have situation where we need a compiled kernel image that is
both DT and ACPI enabled?

/Jarkko

> ---
>  drivers/char/tpm/Makefile       | 14 ++++----------
>  drivers/char/tpm/tpm_acpi.c     |  9 ++-------
>  drivers/char/tpm/tpm_eventlog.c | 18 ++++++++++++++++++
>  drivers/char/tpm/tpm_eventlog.h | 22 +++++++++++++---------
>  drivers/char/tpm/tpm_of.c       |  8 ++------
>  5 files changed, 39 insertions(+), 32 deletions(-)
> 
> diff --git a/drivers/char/tpm/Makefile b/drivers/char/tpm/Makefile
> index a385fb8..a05b1eb 100644
> --- a/drivers/char/tpm/Makefile
> +++ b/drivers/char/tpm/Makefile
> @@ -2,16 +2,10 @@
>  # Makefile for the kernel tpm device drivers.
>  #
>  obj-$(CONFIG_TCG_TPM) += tpm.o
> -tpm-y := tpm-interface.o tpm-dev.o tpm-sysfs.o tpm-chip.o tpm2-cmd.o
> -tpm-$(CONFIG_ACPI) += tpm_ppi.o
> -
> -ifdef CONFIG_ACPI
> -     tpm-y += tpm_eventlog.o tpm_acpi.o
> -else
> -ifdef CONFIG_TCG_IBMVTPM
> -     tpm-y += tpm_eventlog.o tpm_of.o
> -endif
> -endif
> +tpm-y := tpm-interface.o tpm-dev.o tpm-sysfs.o tpm-chip.o tpm2-cmd.o \
> +             tpm_eventlog.o
> +tpm-$(CONFIG_ACPI) += tpm_ppi.o tpm_acpi.o
> +tpm-$(CONFIG_OF) += tpm_of.o
>  obj-$(CONFIG_TCG_TIS_CORE) += tpm_tis_core.o
>  obj-$(CONFIG_TCG_TIS) += tpm_tis.o
>  obj-$(CONFIG_TCG_TIS_SPI) += tpm_tis_spi.o
> diff --git a/drivers/char/tpm/tpm_acpi.c b/drivers/char/tpm/tpm_acpi.c
> index 4d6c2d7..859bdba 100644
> --- a/drivers/char/tpm/tpm_acpi.c
> +++ b/drivers/char/tpm/tpm_acpi.c
> @@ -6,6 +6,7 @@
>   *   Stefan Berger <stef...@us.ibm.com>
>   *   Reiner Sailer <sai...@watson.ibm.com>
>   *   Kylene Hall <kjh...@us.ibm.com>
> + *   Nayna Jain <na...@linux.vnet.ibm.com>
>   *
>   * Maintained by: <tpmdd-devel@lists.sourceforge.net>
>   *
> @@ -45,7 +46,7 @@ struct acpi_tcpa {
>  };
>  
>  /* read binary bios log */
> -int read_log(struct tpm_chip *chip)
> +int read_log_acpi(struct tpm_chip *chip)
>  {
>       struct acpi_tcpa *buff;
>       acpi_status status;
> @@ -54,12 +55,6 @@ int read_log(struct tpm_chip *chip)
>       struct tpm_bios_log *log;
>  
>       log = &chip->log;
> -     if (log->bios_event_log != NULL) {
> -             printk(KERN_ERR
> -                    "%s: ERROR - Eventlog already initialized\n",
> -                    __func__);
> -             return -EFAULT;
> -     }
>  
>       /* Find TCPA entry in RSDT (ACPI_LOGICAL_ADDRESSING) */
>       status = acpi_get_table(ACPI_SIG_TCPA, 1,
> diff --git a/drivers/char/tpm/tpm_eventlog.c b/drivers/char/tpm/tpm_eventlog.c
> index bb142f2..b60c028 100644
> --- a/drivers/char/tpm/tpm_eventlog.c
> +++ b/drivers/char/tpm/tpm_eventlog.c
> @@ -365,6 +365,24 @@ static int is_bad(void *p)
>       return 0;
>  }
>  
> +int read_log(struct tpm_chip *chip)
> +{
> +     int rc;
> +
> +     if (chip->log.bios_event_log != NULL) {
> +             dev_dbg(&chip->dev, "%s: ERROR - Eventlog already 
> initialized\n",
> +                     __func__);
> +             return -EFAULT;
> +     }
> +
> +     rc = read_log_acpi(chip);
> +     if ((rc == 0) || (rc == -ENOMEM))
> +             return rc;
> +     rc = read_log_of(chip);
> +     return rc;
> +
> +}
> +
>  int tpm_bios_log_setup(struct tpm_chip *chip)
>  {
>       const char *name = dev_name(&chip->dev);
> diff --git a/drivers/char/tpm/tpm_eventlog.h b/drivers/char/tpm/tpm_eventlog.h
> index 6df2f8e..be529ad 100644
> --- a/drivers/char/tpm/tpm_eventlog.h
> +++ b/drivers/char/tpm/tpm_eventlog.h
> @@ -73,20 +73,24 @@ enum tcpa_pc_event_ids {
>       HOST_TABLE_OF_DEVICES,
>  };
>  
> -int read_log(struct tpm_chip *chip);
> -
> -#if defined(CONFIG_TCG_IBMVTPM) || defined(CONFIG_TCG_IBMVTPM_MODULE) || \
> -     defined(CONFIG_ACPI)
> -extern int tpm_bios_log_setup(struct tpm_chip *chip);
> -extern void tpm_bios_log_teardown(struct tpm_chip *chip);
> +#if defined(CONFIG_ACPI)
> +int read_log_acpi(struct tpm_chip *chip);
>  #else
> -static inline int tpm_bios_log_setup(struct tpm_chip *chip)
> +static inline int read_log_acpi(struct tpm_chip *chip)
>  {
> -     return 0;
> +     return -ENODEV;
>  }
> -static inline void tpm_bios_log_teardown(struct tpm_chip *chip)
> +#endif
> +#if defined(CONFIG_OF)
> +int read_log_of(struct tpm_chip *chip);
> +#else
> +static inline int read_log_of(struct tpm_chip *chip)
>  {
> +     return -ENODEV;
>  }
>  #endif
>  
> +int tpm_bios_log_setup(struct tpm_chip *chip);
> +void tpm_bios_log_teardown(struct tpm_chip *chip);
> +
>  #endif
> diff --git a/drivers/char/tpm/tpm_of.c b/drivers/char/tpm/tpm_of.c
> index 68d891a..7c30752 100644
> --- a/drivers/char/tpm/tpm_of.c
> +++ b/drivers/char/tpm/tpm_of.c
> @@ -2,6 +2,7 @@
>   * Copyright 2012 IBM Corporation
>   *
>   * Author: Ashley Lai <ashleyd...@gmail.com>
> + *         Nayna Jain <na...@linux.vnet.ibm.com>
>   *
>   * Maintained by: <tpmdd-devel@lists.sourceforge.net>
>   *
> @@ -20,7 +21,7 @@
>  #include "tpm.h"
>  #include "tpm_eventlog.h"
>  
> -int read_log(struct tpm_chip *chip)
> +int read_log_of(struct tpm_chip *chip)
>  {
>       struct device_node *np;
>       const u32 *sizep;
> @@ -28,11 +29,6 @@ int read_log(struct tpm_chip *chip)
>       struct tpm_bios_log *log;
>  
>       log = &chip->log;
> -     if (log->bios_event_log != NULL) {
> -             pr_err("%s: ERROR - Eventlog already initialized\n", __func__);
> -             return -EFAULT;
> -     }
> -
>       np = of_find_node_by_name(NULL, "vtpm");
>       if (!np) {
>               pr_err("%s: ERROR - IBMVTPM not supported\n", __func__);
> -- 
> 2.5.0
> 

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
tpmdd-devel mailing list
tpmdd-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tpmdd-devel

Reply via email to