qemu/hw/tpm/tpm_ppi.h
Marc-André Lureau ffab1be706 tpm: clear RAM when "memory overwrite" requested
Note: the "Platform Reset Attack Mitigation" specification isn't
explicit about NVDIMM, since they could have different usages. It uses
the term "system memory" generally (and also "volatile memory RAM" in
its introduction). For initial support, I propose to consider
non-volatile memory as not being subject to the memory clear. There is
an on-going discussion in the TCG "pcclientwg" working group for
future revisions.

CPU cache clearing is done unconditionally in edk2 since commit
d20ae95a13e851 (edk2-stable201811).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Tested-by: Stefan Berger <stefanb@linux.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2019-01-17 21:10:57 -05:00

47 lines
1.1 KiB
C

/*
* TPM Physical Presence Interface
*
* Copyright (C) 2018 IBM Corporation
*
* Authors:
* Stefan Berger <stefanb@us.ibm.com>
*
* This work is licensed under the terms of the GNU GPL, version 2 or later.
* See the COPYING file in the top-level directory.
*/
#ifndef TPM_TPM_PPI_H
#define TPM_TPM_PPI_H
#include "hw/acpi/tpm.h"
#include "exec/address-spaces.h"
typedef struct TPMPPI {
MemoryRegion ram;
uint8_t *buf;
} TPMPPI;
/**
* tpm_ppi_init:
* @tpmppi: a TPMPPI
* @m: the address-space / MemoryRegion to use
* @addr: the address of the PPI region
* @obj: the owner object
*
* Register the TPM PPI memory region at @addr on the given address
* space for the object @obj.
**/
void tpm_ppi_init(TPMPPI *tpmppi, struct MemoryRegion *m,
hwaddr addr, Object *obj);
/**
* tpm_ppi_reset:
* @tpmppi: a TPMPPI
*
* Function to call on machine reset. It will check if the "Memory
* overwrite" variable is set, and perform a memory clear on volatile
* memory if requested.
**/
void tpm_ppi_reset(TPMPPI *tpmppi);
#endif /* TPM_TPM_PPI_H */