diff mbox series

[RFC,V1,1/3] acpi: Eliminate all TPM related code if CONFIG_TPM is not set

Message ID 20210612012102.1820063-2-stefanb@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series tpm: Eliminate TPM related code if CONFIG_TPM is not set | expand

Commit Message

Stefan Berger June 12, 2021, 1:21 a.m. UTC
Cc: M: Michael S. Tsirkin <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
---
 hw/acpi/aml-build.c      |  2 ++
 hw/arm/virt-acpi-build.c |  2 ++
 hw/i386/acpi-build.c     | 20 ++++++++++++++++++++
 include/hw/acpi/tpm.h    |  4 ++++
 stubs/tpm.c              |  4 ----
 5 files changed, 28 insertions(+), 4 deletions(-)

Comments

Markus Armbruster June 14, 2021, 8:09 a.m. UTC | #1
Stefan Berger <stefanb@linux.ibm.com> writes:

> Cc: M: Michael S. Tsirkin <mst@redhat.com>

Pasto; drop the "M: ".

> Cc: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Philippe Mathieu-Daudé June 14, 2021, 9:53 a.m. UTC | #2
On 6/12/21 3:21 AM, Stefan Berger wrote:
> Cc: M: Michael S. Tsirkin <mst@redhat.com>
> Cc: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
> ---
>  hw/acpi/aml-build.c      |  2 ++
>  hw/arm/virt-acpi-build.c |  2 ++
>  hw/i386/acpi-build.c     | 20 ++++++++++++++++++++
>  include/hw/acpi/tpm.h    |  4 ++++
>  stubs/tpm.c              |  4 ----
>  5 files changed, 28 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> index f0035d2b4a..d5103e6d7b 100644
> --- a/hw/acpi/aml-build.c
> +++ b/hw/acpi/aml-build.c
> @@ -2044,6 +2044,7 @@ build_hdr:
>                   "FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_id);
>  }
>  
> +#ifdef CONFIG_TPM
>  /*
>   * build_tpm2 - Build the TPM2 table as specified in
>   * table 7: TCG Hardware Interface Description Table Format for TPM 2.0
> @@ -2101,6 +2102,7 @@ void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
>                   (void *)(table_data->data + tpm2_start),
>                   "TPM2", table_data->len - tpm2_start, 4, oem_id, oem_table_id);
>  }
> +#endif

This makes the ARM virt machine build to fail for missing
the build_tpm2() symbol.

You probably need to split the patch in 2 and rearrange the
series:

1/ hw/i386    (current 1)
2/ hw/arm     (current 2)
3/ hw/acpi    (current 1)
4/ sysemu/tpm (current 3)

> diff --git a/include/hw/acpi/tpm.h b/include/hw/acpi/tpm.h
> index 1a2a57a21f..559ba6906c 100644
> --- a/include/hw/acpi/tpm.h
> +++ b/include/hw/acpi/tpm.h
> @@ -21,6 +21,8 @@
>  #include "hw/acpi/aml-build.h"
>  #include "sysemu/tpm.h"
>  
> +#ifdef CONFIG_TPM
> +
>  #define TPM_TIS_ADDR_BASE           0xFED40000
>  #define TPM_TIS_ADDR_SIZE           0x5000
>  
> @@ -209,4 +211,6 @@ REG32(CRB_DATA_BUFFER, 0x80)
>  
>  void tpm_build_ppi_acpi(TPMIf *tpm, Aml *dev);
>  
> +#endif /* CONFIG_TPM */
> +
>  #endif /* HW_ACPI_TPM_H */
Stefan Berger June 14, 2021, 6:12 p.m. UTC | #3
On 6/14/21 5:53 AM, Philippe Mathieu-Daudé wrote:
> On 6/12/21 3:21 AM, Stefan Berger wrote:
>> Cc: M: Michael S. Tsirkin <mst@redhat.com>
>> Cc: Igor Mammedov <imammedo@redhat.com>
>> Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
>> ---
>>   hw/acpi/aml-build.c      |  2 ++
>>   hw/arm/virt-acpi-build.c |  2 ++
>>   hw/i386/acpi-build.c     | 20 ++++++++++++++++++++
>>   include/hw/acpi/tpm.h    |  4 ++++
>>   stubs/tpm.c              |  4 ----
>>   5 files changed, 28 insertions(+), 4 deletions(-)
>>
>> diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
>> index f0035d2b4a..d5103e6d7b 100644
>> --- a/hw/acpi/aml-build.c
>> +++ b/hw/acpi/aml-build.c
>> @@ -2044,6 +2044,7 @@ build_hdr:
>>                    "FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_id);
>>   }
>>   
>> +#ifdef CONFIG_TPM
>>   /*
>>    * build_tpm2 - Build the TPM2 table as specified in
>>    * table 7: TCG Hardware Interface Description Table Format for TPM 2.0
>> @@ -2101,6 +2102,7 @@ void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
>>                    (void *)(table_data->data + tpm2_start),
>>                    "TPM2", table_data->len - tpm2_start, 4, oem_id, oem_table_id);
>>   }
>> +#endif
> This makes the ARM virt machine build to fail for missing
> the build_tpm2() symbol.
>
> You probably need to split the patch in 2 and rearrange the
> series:
>
> 1/ hw/i386    (current 1)
> 2/ hw/arm     (current 2)
> 3/ hw/acpi    (current 1)
> 4/ sysemu/tpm (current 3)


I took a bottom-up approach where I also eliminated all callers. So from 
what I can see build_tpm2() symbol has been eliminated by both i386 and 
aarch64, but ok, I will change it to a top-down approach.
diff mbox series

Patch

diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index f0035d2b4a..d5103e6d7b 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -2044,6 +2044,7 @@  build_hdr:
                  "FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_id);
 }
 
+#ifdef CONFIG_TPM
 /*
  * build_tpm2 - Build the TPM2 table as specified in
  * table 7: TCG Hardware Interface Description Table Format for TPM 2.0
@@ -2101,6 +2102,7 @@  void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
                  (void *)(table_data->data + tpm2_start),
                  "TPM2", table_data->len - tpm2_start, 4, oem_id, oem_table_id);
 }
+#endif
 
 Aml *build_crs(PCIHostState *host, CrsRangeSet *range_set, uint32_t io_offset,
                uint32_t mmio32_offset, uint64_t mmio64_offset,
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index 60fe2e65a7..6b3c1fdb0a 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -745,11 +745,13 @@  void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
         build_iort(tables_blob, tables->linker, vms);
     }
 
+#ifdef CONFIG_TPM
     if (tpm_get_version(tpm_find()) == TPM_VERSION_2_0) {
         acpi_add_table(table_offsets, tables_blob);
         build_tpm2(tables_blob, tables->linker, tables->tcpalog, vms->oem_id,
                    vms->oem_table_id);
     }
+#endif
 
     /* XSDT is pointed to by RSDP */
     xsdt = tables_blob->len;
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
index 80bee00da6..796ffc6f5c 100644
--- a/hw/i386/acpi-build.c
+++ b/hw/i386/acpi-build.c
@@ -107,7 +107,9 @@  typedef struct AcpiPmInfo {
 typedef struct AcpiMiscInfo {
     bool is_piix4;
     bool has_hpet;
+#ifdef CONFIG_TPM
     TPMVersion tpm_version;
+#endif
     const unsigned char *dsdt_code;
     unsigned dsdt_size;
     uint16_t pvpanic_port;
@@ -286,7 +288,9 @@  static void acpi_get_misc_info(AcpiMiscInfo *info)
     }
 
     info->has_hpet = hpet_find();
+#ifdef CONFIG_TPM
     info->tpm_version = tpm_get_version(tpm_find());
+#endif
     info->pvpanic_port = pvpanic_port();
     info->applesmc_io_base = applesmc_port();
 }
@@ -1371,7 +1375,9 @@  build_dsdt(GArray *table_data, BIOSLinker *linker,
     uint32_t nr_mem = machine->ram_slots;
     int root_bus_limit = 0xFF;
     PCIBus *bus = NULL;
+#ifdef CONFIG_TPM
     TPMIf *tpm = tpm_find();
+#endif
     int i;
     VMBusBridge *vmbus_bridge = vmbus_bridge_find();
 
@@ -1604,10 +1610,12 @@  build_dsdt(GArray *table_data, BIOSLinker *linker,
         }
     }
 
+#ifdef CONFIG_TPM
     if (TPM_IS_TIS_ISA(tpm_find())) {
         aml_append(crs, aml_memory32_fixed(TPM_TIS_ADDR_BASE,
                    TPM_TIS_ADDR_SIZE, AML_READ_WRITE));
     }
+#endif
     aml_append(scope, aml_name_decl("_CRS", crs));
 
     /* reserve GPE0 block resources */
@@ -1753,6 +1761,7 @@  build_dsdt(GArray *table_data, BIOSLinker *linker,
             /* Scan all PCI buses. Generate tables to support hotplug. */
             build_append_pci_bus_devices(scope, bus, pm->pcihp_bridge_en);
 
+#ifdef CONFIG_TPM
             if (TPM_IS_TIS_ISA(tpm)) {
                 if (misc->tpm_version == TPM_VERSION_2_0) {
                     dev = aml_device("TPM");
@@ -1780,11 +1789,13 @@  build_dsdt(GArray *table_data, BIOSLinker *linker,
 
                 aml_append(scope, dev);
             }
+#endif
 
             aml_append(sb_scope, scope);
         }
     }
 
+#ifdef CONFIG_TPM
     if (TPM_IS_CRB(tpm)) {
         dev = aml_device("TPM");
         aml_append(dev, aml_name_decl("_HID", aml_string("MSFT0101")));
@@ -1799,6 +1810,7 @@  build_dsdt(GArray *table_data, BIOSLinker *linker,
 
         aml_append(sb_scope, dev);
     }
+#endif
 
     aml_append(dsdt, sb_scope);
 
@@ -1828,6 +1840,7 @@  build_hpet(GArray *table_data, BIOSLinker *linker, const char *oem_id,
                  "HPET", sizeof(*hpet), 1, oem_id, oem_table_id);
 }
 
+#ifdef CONFIG_TPM
 static void
 build_tpm_tcpa(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
                const char *oem_id, const char *oem_table_id)
@@ -1854,6 +1867,7 @@  build_tpm_tcpa(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
                  (void *)(table_data->data + tcpa_start),
                  "TCPA", sizeof(*tcpa), 2, oem_id, oem_table_id);
 }
+#endif
 
 #define HOLE_640K_START  (640 * KiB)
 #define HOLE_640K_END   (1 * MiB)
@@ -2403,6 +2417,7 @@  void acpi_build(AcpiBuildTables *tables, MachineState *machine)
         build_hpet(tables_blob, tables->linker, x86ms->oem_id,
                    x86ms->oem_table_id);
     }
+#ifdef CONFIG_TPM
     if (misc.tpm_version != TPM_VERSION_UNSPEC) {
         if (misc.tpm_version == TPM_VERSION_1_2) {
             acpi_add_table(table_offsets, tables_blob);
@@ -2414,6 +2429,7 @@  void acpi_build(AcpiBuildTables *tables, MachineState *machine)
                        x86ms->oem_id, x86ms->oem_table_id);
         }
     }
+#endif
     if (pcms->numa_nodes) {
         acpi_add_table(table_offsets, tables_blob);
         build_srat(tables_blob, tables->linker, machine);
@@ -2605,8 +2621,10 @@  void acpi_setup(void)
     AcpiBuildTables tables;
     AcpiBuildState *build_state;
     Object *vmgenid_dev;
+#ifdef CONFIG_TPM
     TPMIf *tpm;
     static FwCfgTPMConfig tpm_config;
+#endif
 
     if (!x86ms->fw_cfg) {
         ACPI_BUILD_DPRINTF("No fw cfg. Bailing out.\n");
@@ -2638,6 +2656,7 @@  void acpi_setup(void)
         acpi_add_rom_blob(acpi_build_update, build_state,
                           tables.linker->cmd_blob, ACPI_BUILD_LOADER_FILE);
 
+#ifdef CONFIG_TPM
     fw_cfg_add_file(x86ms->fw_cfg, ACPI_BUILD_TPMLOG_FILE,
                     tables.tcpalog->data, acpi_data_len(tables.tcpalog));
 
@@ -2651,6 +2670,7 @@  void acpi_setup(void)
         fw_cfg_add_file(x86ms->fw_cfg, "etc/tpm/config",
                         &tpm_config, sizeof tpm_config);
     }
+#endif
 
     vmgenid_dev = find_vmgenid_dev();
     if (vmgenid_dev) {
diff --git a/include/hw/acpi/tpm.h b/include/hw/acpi/tpm.h
index 1a2a57a21f..559ba6906c 100644
--- a/include/hw/acpi/tpm.h
+++ b/include/hw/acpi/tpm.h
@@ -21,6 +21,8 @@ 
 #include "hw/acpi/aml-build.h"
 #include "sysemu/tpm.h"
 
+#ifdef CONFIG_TPM
+
 #define TPM_TIS_ADDR_BASE           0xFED40000
 #define TPM_TIS_ADDR_SIZE           0x5000
 
@@ -209,4 +211,6 @@  REG32(CRB_DATA_BUFFER, 0x80)
 
 void tpm_build_ppi_acpi(TPMIf *tpm, Aml *dev);
 
+#endif /* CONFIG_TPM */
+
 #endif /* HW_ACPI_TPM_H */
diff --git a/stubs/tpm.c b/stubs/tpm.c
index b1dc6370a5..524e534cb1 100644
--- a/stubs/tpm.c
+++ b/stubs/tpm.c
@@ -17,7 +17,3 @@  int tpm_init(void)
 void tpm_cleanup(void)
 {
 }
-
-void tpm_build_ppi_acpi(TPMIf *tpm, Aml *dev)
-{
-}